These generic hook functions are called whenever a grid grob is drawn. They provide an opportunity for customising the drawing of a new class derived from grob (or gTree).
drawDetails(x, recording)
preDrawDetails(x)
postDrawDetails(x)A grid grob.
A logical value indicating whether a grob is being added to the display list or redrawn from the display list.
None of these functions are expected to return a value.
These functions are called by the grid.draw methods for grobs
  and gTrees.
preDrawDetails is called first during the drawing of a grob.
  This is where any additional viewports should be pushed (see,
  for example, grid:::preDrawDetails.frame).  Note that
  the default behaviour for grobs is to push any viewports in the
  vp slot, and for gTrees is to also push and up any viewports in the
  childrenvp slot so there is typically nothing to do here.
drawDetails is called next and is where any additional
  calculations and graphical output should occur (see, for example,
  grid:::drawDetails.xaxis).  Note that the default behaviour
  for gTrees is to draw all grobs in the children slot
  so there is typically nothing to do here.
postDrawDetails is called last and should reverse anything
  done in preDrawDetails (i.e., pop or up any viewports that were
  pushed;  again, see,
  for example, grid:::postDrawDetails.frame).  Note that the
  default behaviour for grobs is to pop any viewports that were pushed
  so there is typically nothing to do here.
Note that preDrawDetails and postDrawDetails are
  also called in the calculation of "grobwidth" and
  "grobheight" units.