protected void processPage(final LogicalPageBox rootBox)
{
final StrictBounds pageBounds = drawArea;
startProcessing(rootBox.getWatermarkArea());
final BlockRenderBox headerArea = rootBox.getHeaderArea();
final BlockRenderBox footerArea = rootBox.getFooterArea();
final StrictBounds headerBounds = new StrictBounds(headerArea.getX(), headerArea.getY(), headerArea.getWidth(),
headerArea.getHeight());
final StrictBounds footerBounds = new StrictBounds(footerArea.getX(), footerArea.getY(), footerArea.getWidth(),
footerArea.getHeight());
final StrictBounds contentBounds = new StrictBounds
(rootBox.getX(), headerArea.getY() + headerArea.getHeight(),
rootBox.getWidth(), footerArea.getY() - headerArea.getHeight());
this.drawArea = headerBounds;
startProcessing(headerArea);
this.drawArea = contentBounds;
processBoxChilds(rootBox);
this.drawArea = footerBounds;