c.getGraphics().translate( margin.left + border.left + padding.left, margin.top + border.top + padding.top );
    public static void paintTable( Context c, TableBox table, boolean restyle ) {        restyle = restyle || table.restyle;        table.restyle = false;        c.getGraphics().translate( table.x, table.y );        Border border = c.getCurrentStyle().getBorderWidth( c.getBlockFormattingContext().getWidth(), c.getBlockFormattingContext().getHeight() );        Border margin = c.getCurrentStyle().getMarginWidth( c.getBlockFormattingContext().getWidth(), c.getBlockFormattingContext().getHeight() );        Border padding = c.getCurrentStyle().getPaddingWidth( c.getBlockFormattingContext().getWidth(), c.getBlockFormattingContext().getHeight() );        c.getGraphics().translate( margin.left + border.left + padding.left,                margin.top + border.top + padding.top );        // loop over the rows        for ( int i = 0; i < table.rows.size(); i++ ) {            RowBox row = (RowBox)table.rows.get( i );            // save the old extents            Rectangle oe = c.getExtents();            // move origin by row.Xx and row.y            c.setExtents( new Rectangle( oe.x + row.x, oe.y + row.y, oe.width,                    oe.height ) );            c.getGraphics().translate( row.x, row.y );            // paint the row            paintRow( c, row, restyle );            // restore the old extents and translate            c.getGraphics().translate( -row.x, -row.y );            c.setExtents( oe );        }        c.getGraphics().translate( -margin.left - border.left - padding.left,                -margin.top - border.top - padding.top );        c.getGraphics().translate( -table.x, -table.y );    }