org.apache.fop.render.java2d

## Class Java2DRenderer

- java.lang.Object
- - org.apache.fop.render.AbstractRenderer
  - - org.apache.fop.render.PrintRenderer
    - - org.apache.fop.render.AbstractPathOrientedRenderer
      - - org.apache.fop.render.java2d.Java2DRenderer

- All Implemented Interfaces:
    java.awt.print.Printable, Constants, Renderer
  Direct Known Subclasses:
    AWTRenderer, PageableRenderer, PNGRenderer, TIFFRenderer

      public abstract class Java2DRenderer
      extends AbstractPathOrientedRenderer
      implements java.awt.print.Printable

  The `Java2DRenderer` class provides the abstract technical foundation for all rendering with the Java2D API. Renderers like `AWTRenderer` subclass it and provide the concrete output paths.

  A lot of the logic is performed by `AbstractRenderer`. The class-variables `currentIPPosition` and `currentBPPosition` hold the position of the currently rendered area.

  `Java2DGraphicsState state` holds the `Graphics2D`, which is used along the whole rendering. `state` also acts as a stack (`state.push()` and `state.pop()`).

  The rendering process is basically always the same:

  `void renderXXXXX(Area area) { //calculate the currentPosition state.updateFont(name, size, null); state.updateColor(ct, false, null); state.getGraph.draw(new Shape(args)); }`

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected boolean` | `antialiasing` true if anti-aliasing is set
    `protected int` | `pageHeight` The page height in pixels
    `protected java.util.List` | `pageViewportList` List of Viewports
    `protected int` | `pageWidth` The page width in pixels
    `protected boolean` | `qualityRendering` true if qualityRendering is set
    `protected double` | `scaleFactor` The scale factor for the image size, values: ]0 ; 1]
    `protected Java2DGraphicsState` | `state` The current state, holds a Graphics2D and its context
    `protected boolean` | `transparentPageBackground` false: paints a non-transparent white background, true: for a transparent background

    - ### Fields inherited from class org.apache.fop.render.AbstractPathOrientedRenderer

      `FOX_TRANSFORM`

    - ### Fields inherited from class org.apache.fop.render.PrintRenderer

      `embedFontInfoList, fontInfo`

    - ### Fields inherited from class org.apache.fop.render.AbstractRenderer

      `bindingOnEndEdge, bindingOnStartEdge, blockProgressionDirection, columnCount, columnEndIPPosition, columnGap, columnIndex, columnLeftIPPosition, columnRightIPPosition, columnStartIPPosition, columnWidth, containingBPPosition, containingIPPosition, currentBPPosition, currentIPPosition, currentPageViewport, inlineProgressionDirection, log, userAgent`

    - ### Fields inherited from interface java.awt.print.Printable

      `NO_SUCH_PAGE, PAGE_EXISTS`

    - ### Fields inherited from interface org.apache.fop.render.Renderer

      `ROLE`

    - ### Fields inherited from interface org.apache.fop.fo.Constants

      `COMPOUND_COUNT, COMPOUND_MASK, COMPOUND_SHIFT, CP_BLOCK_PROGRESSION_DIRECTION, CP_CONDITIONALITY, CP_INLINE_PROGRESSION_DIRECTION, CP_LENGTH, CP_MAXIMUM, CP_MINIMUM, CP_OPTIMUM, CP_PRECEDENCE, CP_WITHIN_COLUMN, CP_WITHIN_LINE, CP_WITHIN_PAGE, EN_100, EN_200, EN_300, EN_400, EN_500, EN_600, EN_700, EN_800, EN_900, EN_ABSOLUTE, EN_ABSOLUTE_COLORMETRIC, EN_AFTER, EN_AFTER_EDGE, EN_ALL, EN_ALPHABETIC, EN_ALTERNATE, EN_ALWAYS, EN_ANY, EN_AUTO, EN_AUTO_EVEN, EN_AUTO_ODD, EN_AVOID, EN_BACKSLANT, EN_BASELINE, EN_BEFORE, EN_BEFORE_EDGE, EN_BIDI_OVERRIDE, EN_BLANK, EN_BLINK, EN_BLOCK, EN_BOLDER, EN_BOTH, EN_BOTTOM, EN_BOUNDED_IN_ONE_DIMENSION, EN_BT, EN_CAPITALIZE, EN_CAPTION, EN_CENTER, EN_CENTRAL, EN_CHARACTER_BY_CHARACTER, EN_COLLAPSE, EN_COLLAPSE_WITH_PRECEDENCE, EN_COLUMN, EN_CONDENSED, EN_CONSIDER_SHIFTS, EN_DASHED, EN_DISCARD, EN_DISREGARD_SHIFTS, EN_DOCUMENT, EN_DOTS, EN_DOTTED, EN_DOUBLE, EN_EMBED, EN_END, EN_END_ON_EVEN, EN_END_ON_ODD, EN_ERROR_IF_OVERFLOW, EN_EVEN, EN_EVEN_PAGE, EN_EXPANDED, EN_EXTRA_CONDENSED, EN_EXTRA_EXPANDED, EN_FALSE, EN_FIC, EN_FIRST, EN_FIRST_INCLUDING_CARRYOVER, EN_FIRST_STARTING, EN_FIXED, EN_FONT_HEIGHT, EN_FORCE, EN_FSWP, EN_GROOVE, EN_HANGING, EN_HIDDEN, EN_HIDE, EN_ICON, EN_IDEOGRAPHIC, EN_IGNORE, EN_IGNORE_IF_AFTER_LINEFEED, EN_IGNORE_IF_BEFORE_LINEFEED, EN_IGNORE_IF_SURROUNDING_LINEFEED, EN_INDEFINITE, EN_INDENT, EN_INHERIT, EN_INSET, EN_INSIDE, EN_INTEGER_PIXELS, EN_ITALIC, EN_JUSTIFY, EN_LARGER, EN_LAST, EN_LAST_ENDING, EN_LAST_STARTING, EN_LEAVE_SEPARATE, EN_LEFT, EN_LEWP, EN_LIGHTER, EN_LINE, EN_LINE_HEIGHT, EN_LINE_THROUGH, EN_LINK, EN_LOWERCASE, EN_LR, EN_LR_TB, EN_LSWP, EN_LTR, EN_MATHEMATICAL, EN_MAX_HEIGHT, EN_MENU, EN_MERGE, EN_MESSAGE_BOX, EN_MIDDLE, EN_NARROWER, EN_NEW, EN_NO_BLINK, EN_NO_CHANGE, EN_NO_FORCE, EN_NO_LIMIT, EN_NO_LINE_THROUGH, EN_NO_LINK, EN_NO_OVERLINE, EN_NO_UNDERLINE, EN_NO_WRAP, EN_NON_UNIFORM, EN_NONE, EN_NOREPEAT, EN_NORMAL, EN_NOT_BLANK, EN_OBLIQUE, EN_ODD, EN_ODD_PAGE, EN_ONLY, EN_OUTSET, EN_OUTSIDE, EN_OVERLINE, EN_PAGE, EN_PAGE_SEQUENCE, EN_PAGINATE, EN_PERCEPTUAL, EN_PRE, EN_PRESERVE, EN_REFERENCE_AREA, EN_RELATIVE, EN_RELATIVE_COLOMETRIC, EN_REPEAT, EN_REPEATX, EN_REPEATY, EN_REPLACE, EN_RESAMPLE_ANY_METHOD, EN_RESET_SIZE, EN_REST, EN_RETAIN, EN_RIDGE, EN_RIGHT, EN_RL, EN_RL_TB, EN_RTL, EN_RULE, EN_SATURATION, EN_SCALE_DOWN_TO_FIT, EN_SCALE_TO_FIT, EN_SCALE_UP_TO_FIT, EN_SCROLL, EN_SELECT_FIRST_FITTING, EN_SEMI_CONDENSED, EN_SEMI_EXPANDED, EN_SEPARATE, EN_SHOW, EN_SMALL_CAPS, EN_SMALL_CAPTION, EN_SMALLER, EN_SOLID, EN_SPACE, EN_START, EN_STATIC, EN_STATUS_BAR, EN_SUB, EN_SUPER, EN_SUPPRESS, EN_TABLE, EN_TABLE_FRAGMENT, EN_TB, EN_TB_LR, EN_TB_RL, EN_TEXT_AFTER_EDGE, EN_TEXT_BEFORE_EDGE, EN_TEXT_BOTTOM, EN_TEXT_TOP, EN_TOP, EN_TRADITIONAL, EN_TREAT_AS_SPACE, EN_TREAT_AS_ZERO_WIDTH_SPACE, EN_TRUE, EN_ULTRA_CONDENSED, EN_ULTRA_EXPANDED, EN_UNBOUNDED, EN_UNDERLINE, EN_UNIFORM, EN_UPPERCASE, EN_USE_FONT_METRICS, EN_USE_SCRIPT, EN_USECONTENT, EN_VISIBLE, EN_WIDER, EN_WRAP, ENUM_COUNT, FO_BASIC_LINK, FO_BIDI_OVERRIDE, FO_BLOCK, FO_BLOCK_CONTAINER, FO_BOOKMARK, FO_BOOKMARK_TITLE, FO_BOOKMARK_TREE, FO_CHANGE_BAR_BEGIN, FO_CHANGE_BAR_END, FO_CHARACTER, FO_COLOR_PROFILE, FO_CONDITIONAL_PAGE_MASTER_REFERENCE, FO_DECLARATIONS, FO_EXTERNAL_GRAPHIC, FO_FLOAT, FO_FLOW, FO_FLOW_ASSIGNMENT, FO_FLOW_MAP, FO_FLOW_NAME_SPECIFIER, FO_FLOW_SOURCE_LIST, FO_FLOW_TARGET_LIST, FO_FOLIO_PREFIX, FO_FOLIO_SUFFIX, FO_FOOTNOTE, FO_FOOTNOTE_BODY, FO_INDEX_KEY_REFERENCE, FO_INDEX_PAGE_CITATION_LIST, FO_INDEX_PAGE_CITATION_LIST_SEPARATOR, FO_INDEX_PAGE_CITATION_RANGE_SEPARATOR, FO_INDEX_PAGE_NUMBER_PREFIX, FO_INDEX_PAGE_NUMBER_SUFFIX, FO_INDEX_RANGE_BEGIN, FO_INDEX_RANGE_END, FO_INITIAL_PROPERTY_SET, FO_INLINE, FO_INLINE_CONTAINER, FO_INSTREAM_FOREIGN_OBJECT, FO_LAYOUT_MASTER_SET, FO_LEADER, FO_LIST_BLOCK, FO_LIST_ITEM, FO_LIST_ITEM_BODY, FO_LIST_ITEM_LABEL, FO_MARKER, FO_MULTI_CASE, FO_MULTI_PROPERTIES, FO_MULTI_PROPERTY_SET, FO_MULTI_SWITCH, FO_MULTI_TOGGLE, FO_PAGE_NUMBER, FO_PAGE_NUMBER_CITATION, FO_PAGE_NUMBER_CITATION_LAST, FO_PAGE_SEQUENCE, FO_PAGE_SEQUENCE_MASTER, FO_PAGE_SEQUENCE_WRAPPER, FO_REGION_AFTER, FO_REGION_BEFORE, FO_REGION_BODY, FO_REGION_END, FO_REGION_NAME_SPECIFIER, FO_REGION_START, FO_REPEATABLE_PAGE_MASTER_ALTERNATIVES, FO_REPEATABLE_PAGE_MASTER_REFERENCE, FO_RETRIEVE_MARKER, FO_RETRIEVE_TABLE_MARKER, FO_ROOT, FO_SCALING_VALUE_CITATION, FO_SIMPLE_PAGE_MASTER, FO_SINGLE_PAGE_MASTER_REFERENCE, FO_STATIC_CONTENT, FO_TABLE, FO_TABLE_AND_CAPTION, FO_TABLE_BODY, FO_TABLE_CAPTION, FO_TABLE_CELL, FO_TABLE_COLUMN, FO_TABLE_FOOTER, FO_TABLE_HEADER, FO_TABLE_ROW, FO_TITLE, FO_UNKNOWN_NODE, FO_WRAPPER, FRM_OBJ_COUNT, NOT_SET, PR_ABSOLUTE_POSITION, PR_ACTIVE_STATE, PR_ALIGNMENT_ADJUST, PR_ALIGNMENT_BASELINE, PR_AUTO_RESTORE, PR_AZIMUTH, PR_BACKGROUND, PR_BACKGROUND_ATTACHMENT, PR_BACKGROUND_COLOR, PR_BACKGROUND_IMAGE, PR_BACKGROUND_POSITION, PR_BACKGROUND_POSITION_HORIZONTAL, PR_BACKGROUND_POSITION_VERTICAL, PR_BACKGROUND_REPEAT, PR_BASELINE_SHIFT, PR_BLANK_OR_NOT_BLANK, PR_BLOCK_PROGRESSION_DIMENSION, PR_BORDER, PR_BORDER_AFTER_COLOR, PR_BORDER_AFTER_PRECEDENCE, PR_BORDER_AFTER_STYLE, PR_BORDER_AFTER_WIDTH, PR_BORDER_BEFORE_COLOR, PR_BORDER_BEFORE_PRECEDENCE, PR_BORDER_BEFORE_STYLE, PR_BORDER_BEFORE_WIDTH, PR_BORDER_BOTTOM, PR_BORDER_BOTTOM_COLOR, PR_BORDER_BOTTOM_STYLE, PR_BORDER_BOTTOM_WIDTH, PR_BORDER_COLLAPSE, PR_BORDER_COLOR, PR_BORDER_END_COLOR, PR_BORDER_END_PRECEDENCE, PR_BORDER_END_STYLE, PR_BORDER_END_WIDTH, PR_BORDER_LEFT, PR_BORDER_LEFT_COLOR, PR_BORDER_LEFT_STYLE, PR_BORDER_LEFT_WIDTH, PR_BORDER_RIGHT, PR_BORDER_RIGHT_COLOR, PR_BORDER_RIGHT_STYLE, PR_BORDER_RIGHT_WIDTH, PR_BORDER_SEPARATION, PR_BORDER_SPACING, PR_BORDER_START_COLOR, PR_BORDER_START_PRECEDENCE, PR_BORDER_START_STYLE, PR_BORDER_START_WIDTH, PR_BORDER_STYLE, PR_BORDER_TOP, PR_BORDER_TOP_COLOR, PR_BORDER_TOP_STYLE, PR_BORDER_TOP_WIDTH, PR_BORDER_WIDTH, PR_BOTTOM, PR_BREAK_AFTER, PR_BREAK_BEFORE, PR_CAPTION_SIDE, PR_CASE_NAME, PR_CASE_TITLE, PR_CHANGE_BAR_CLASS, PR_CHANGE_BAR_COLOR, PR_CHANGE_BAR_OFFSET, PR_CHANGE_BAR_PLACEMENT, PR_CHANGE_BAR_STYLE, PR_CHANGE_BAR_WIDTH, PR_CHARACTER, PR_CLEAR, PR_CLIP, PR_COLOR, PR_COLOR_PROFILE_NAME, PR_COLUMN_COUNT, PR_COLUMN_GAP, PR_COLUMN_NUMBER, PR_COLUMN_WIDTH, PR_CONTENT_HEIGHT, PR_CONTENT_TYPE, PR_CONTENT_WIDTH, PR_COUNTRY, PR_CUE, PR_CUE_AFTER, PR_CUE_BEFORE, PR_DESTINATION_PLACEMENT_OFFSET, PR_DIRECTION, PR_DISPLAY_ALIGN, PR_DOMINANT_BASELINE, PR_ELEVATION, PR_EMPTY_CELLS, PR_END_INDENT, PR_ENDS_ROW, PR_EXTENT, PR_EXTERNAL_DESTINATION, PR_FLOAT, PR_FLOW_MAP_NAME, PR_FLOW_MAP_REFERENCE, PR_FLOW_NAME, PR_FLOW_NAME_REFERENCE, PR_FONT, PR_FONT_FAMILY, PR_FONT_SELECTION_STRATEGY, PR_FONT_SIZE, PR_FONT_SIZE_ADJUST, PR_FONT_STRETCH, PR_FONT_STYLE, PR_FONT_VARIANT, PR_FONT_WEIGHT, PR_FORCE_PAGE_COUNT, PR_FORMAT, PR_GLYPH_ORIENTATION_HORIZONTAL, PR_GLYPH_ORIENTATION_VERTICAL, PR_GROUPING_SEPARATOR, PR_GROUPING_SIZE, PR_HEIGHT, PR_HYPHENATE, PR_HYPHENATION_CHARACTER, PR_HYPHENATION_KEEP, PR_HYPHENATION_LADDER_COUNT, PR_HYPHENATION_PUSH_CHARACTER_COUNT, PR_HYPHENATION_REMAIN_CHARACTER_COUNT, PR_ID, PR_INDEX_CLASS, PR_INDEX_KEY, PR_INDICATE_DESTINATION, PR_INITIAL_PAGE_NUMBER, PR_INLINE_PROGRESSION_DIMENSION, PR_INTERNAL_DESTINATION, PR_INTRINSIC_SCALE_VALUE, PR_INTRUSION_DISPLACE, PR_KEEP_TOGETHER, PR_KEEP_WITH_NEXT, PR_KEEP_WITH_PREVIOUS, PR_LANGUAGE, PR_LAST_LINE_END_INDENT, PR_LEADER_ALIGNMENT, PR_LEADER_LENGTH, PR_LEADER_PATTERN, PR_LEADER_PATTERN_WIDTH, PR_LEFT, PR_LETTER_SPACING, PR_LETTER_VALUE, PR_LINE_HEIGHT, PR_LINE_HEIGHT_SHIFT_ADJUSTMENT, PR_LINE_STACKING_STRATEGY, PR_LINEFEED_TREATMENT, PR_MARGIN, PR_MARGIN_BOTTOM, PR_MARGIN_LEFT, PR_MARGIN_RIGHT, PR_MARGIN_TOP, PR_MARKER_CLASS_NAME, PR_MASTER_NAME, PR_MASTER_REFERENCE, PR_MAX_HEIGHT, PR_MAX_WIDTH, PR_MAXIMUM_REPEATS, PR_MEDIA_USAGE, PR_MERGE_PAGES_ACROSS_INDEX_KEY_REFERENCES, PR_MERGE_RANGES_ACROSS_INDEX_KEY_REFERENCES, PR_MERGE_SEQUENTIAL_PAGE_NUMBERS, PR_MIN_HEIGHT, PR_MIN_WIDTH, PR_NUMBER_COLUMNS_REPEATED, PR_NUMBER_COLUMNS_SPANNED, PR_NUMBER_ROWS_SPANNED, PR_ODD_OR_EVEN, PR_ORPHANS, PR_OVERFLOW, PR_PADDING, PR_PADDING_AFTER, PR_PADDING_BEFORE, PR_PADDING_BOTTOM, PR_PADDING_END, PR_PADDING_LEFT, PR_PADDING_RIGHT, PR_PADDING_START, PR_PADDING_TOP, PR_PAGE_BREAK_AFTER, PR_PAGE_BREAK_BEFORE, PR_PAGE_BREAK_INSIDE, PR_PAGE_CITATION_STRATEGY, PR_PAGE_HEIGHT, PR_PAGE_NUMBER_TREATMENT, PR_PAGE_POSITION, PR_PAGE_WIDTH, PR_PAUSE, PR_PAUSE_AFTER, PR_PAUSE_BEFORE, PR_PITCH, PR_PITCH_RANGE, PR_PLAY_DURING, PR_POSITION, PR_PRECEDENCE, PR_PROVISIONAL_DISTANCE_BETWEEN_STARTS, PR_PROVISIONAL_LABEL_SEPARATION, PR_REF_ID, PR_REF_INDEX_KEY, PR_REFERENCE_ORIENTATION, PR_REGION_NAME, PR_REGION_NAME_REFERENCE, PR_RELATIVE_ALIGN, PR_RELATIVE_POSITION, PR_RENDERING_INTENT, PR_RETRIEVE_BOUNDARY, PR_RETRIEVE_BOUNDARY_WITHIN_TABLE, PR_RETRIEVE_CLASS_NAME, PR_RETRIEVE_POSITION, PR_RETRIEVE_POSITION_WITHIN_TABLE, PR_RICHNESS, PR_RIGHT, PR_ROLE, PR_RULE_STYLE, PR_RULE_THICKNESS, PR_SCALING, PR_SCALING_METHOD, PR_SCORE_SPACES, PR_SCRIPT, PR_SHOW_DESTINATION, PR_SIZE, PR_SOURCE_DOCUMENT, PR_SPACE_AFTER, PR_SPACE_BEFORE, PR_SPACE_END, PR_SPACE_START, PR_SPAN, PR_SPEAK, PR_SPEAK_HEADER, PR_SPEAK_NUMERAL, PR_SPEAK_PUNCTUATION, PR_SPEECH_RATE, PR_SRC, PR_START_INDENT, PR_STARTING_STATE, PR_STARTS_ROW, PR_STRESS, PR_SUPPRESS_AT_LINE_BREAK, PR_SWITCH_TO, PR_TABLE_LAYOUT, PR_TABLE_OMIT_FOOTER_AT_BREAK, PR_TABLE_OMIT_HEADER_AT_BREAK, PR_TARGET_PRESENTATION_CONTEXT, PR_TARGET_PROCESSING_CONTEXT, PR_TARGET_STYLESHEET, PR_TEXT_ALIGN, PR_TEXT_ALIGN_LAST, PR_TEXT_ALTITUDE, PR_TEXT_DECORATION, PR_TEXT_DEPTH, PR_TEXT_INDENT, PR_TEXT_SHADOW, PR_TEXT_TRANSFORM, PR_TOP, PR_TREAT_AS_WORD_SPACE, PR_UNICODE_BIDI, PR_VERTICAL_ALIGN, PR_VISIBILITY, PR_VOICE_FAMILY, PR_VOLUME, PR_WHITE_SPACE, PR_WHITE_SPACE_COLLAPSE, PR_WHITE_SPACE_TREATMENT, PR_WIDOWS, PR_WIDTH, PR_WORD_SPACING, PR_WRAP_OPTION, PR_WRITING_MODE, PR_X_ABBREVIATION, PR_X_ALT_TEXT, PR_X_AUTO_TOGGLE, PR_X_BACKGROUND_IMAGE_HEIGHT, PR_X_BACKGROUND_IMAGE_WIDTH, PR_X_BORDER_AFTER_END_RADIUS, PR_X_BORDER_AFTER_RADIUS_END, PR_X_BORDER_AFTER_RADIUS_START, PR_X_BORDER_AFTER_START_RADIUS, PR_X_BORDER_BEFORE_END_RADIUS, PR_X_BORDER_BEFORE_RADIUS_END, PR_X_BORDER_BEFORE_RADIUS_START, PR_X_BORDER_BEFORE_START_RADIUS, PR_X_BORDER_END_RADIUS_AFTER, PR_X_BORDER_END_RADIUS_BEFORE, PR_X_BORDER_RADIUS, PR_X_BORDER_START_RADIUS_AFTER, PR_X_BORDER_START_RADIUS_BEFORE, PR_X_DISABLE_COLUMN_BALANCING, PR_X_HEADER_COLUMN, PR_X_LAYER, PR_X_NUMBER_CONVERSION_FEATURES, PR_X_ORPHAN_CONTENT_LIMIT, PR_X_WIDOW_CONTENT_LIMIT, PR_X_XML_BASE, PR_XML_LANG, PR_Z_INDEX, PROPERTY_COUNT, PROPERTY_MASK`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Java2DRenderer(FOUserAgent userAgent)` Default constructor

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `beginTextObject()` Indicates the beginning of a text object.
    `protected java.util.List` | `breakOutOfStateStack()` Breaks out of the state stack to handle fixed block-containers.
    `void` | `clearViewportList()` Clears the ViewportList.
    `protected void` | `clip()` Clip using the current path.
    `protected void` | `clipRect(float x, float y, float width, float height)` Clip using a rectangular area.
    `protected void` | `closePath()` Closes the current subpath by appending a straight line segment from the current point to the starting point of the subpath.
    `protected void` | `concatenateTransformationMatrix(java.awt.geom.AffineTransform at)` Concatenates the current transformation matrix with the given one, therefore establishing a new coordinate system.
    `protected RendererContext` | `createRendererContext(int x, int y, int width, int height, java.util.Map foreignAttributes)` Creates a RendererContext for an image.
    `protected void` | `drawBorderLine(float x1, float y1, float x2, float y2, boolean horz, boolean startOrBefore, int style, java.awt.Color col)` Draw a border segment of an XSL-FO style border.
    `static void` | `drawBorderLine(java.awt.geom.Rectangle2D.Float lineRect, boolean horz, boolean startOrBefore, int style, java.awt.Color col, java.awt.Graphics2D g2d)` Draw a border segment of an XSL-FO style border.
    `protected void` | `drawImage(java.lang.String uri, java.awt.geom.Rectangle2D pos, java.util.Map foreignAttributes)` Draw an image at the indicated location.
    `protected void` | `endLayer()` Finish current optional content group layer.
    `protected void` | `endTextObject()` Indicates the end of a text object.
    `protected void` | `endVParea()` Signals exit from a viewport area.
    `protected void` | `fillRect(float x, float y, float width, float height)` Fill a rectangular area.
    `protected java.awt.image.BufferedImage` | `getBufferedImage(int bitmapWidth, int bitmapHeight)` Returns a specific `BufferedImage` to paint a page image on.
    `int` | `getCurrentPageNumber()`
    `Graphics2DAdapter` | `getGraphics2DAdapter()`
    `int` | `getNumberOfPages()` Returns the number of pages available.
    `java.awt.image.BufferedImage` | `getPageImage(int pageNum)` Generates a desired page from the renderer's page viewport list.
    `java.awt.image.BufferedImage` | `getPageImage(PageViewport pageViewport)` Generates a desired page from the renderer's page viewport list.
    `PageViewport` | `getPageViewport(int pageIndex)` Returns a page viewport.
    `double` | `getScaleFactor()`
    `FOUserAgent` | `getUserAgent()` Returns the associated user agent.
    `boolean` | `isRenderingDone()`
    `protected void` | `lineTo(float x, float y)` Appends a straight line segment from the current point to (x, y).
    `protected void` | `moveTo(float x, float y)` Moves the current point to (x, y), omitting any connecting line segment.
    `int` | `print(java.awt.Graphics g, java.awt.print.PageFormat pageFormat, int pageIndex)`
    `protected void` | `rememberPage(PageViewport pageViewport)` Stores the pageViewport in a list of page viewports so they can be rendered later.
    `void` | `renderImage(Image image, java.awt.geom.Rectangle2D pos)` Renders an image area.
    `void` | `renderLeader(Leader area)` Render leader area.
    `void` | `renderPage(PageViewport pageViewport)` This method override only stores the PageViewport in a List.
    `void` | `renderText(TextArea text)` Render the given TextArea.
    `static void` | `renderText(TextArea text, java.awt.Graphics2D g2d, Font font, FontInfo fontInfo)` Renders a TextArea to a Graphics2D instance.
    `protected void` | `restoreGraphicsState()` Restores the last graphics state of the rendering engine.
    `protected void` | `restoreStateStackAfterBreakOut(java.util.List breakOutList)` Restores the state stack after a break out.
    `protected void` | `saveGraphicsState()` Saves the graphics state of the rendering engine.
    `void` | `setCurrentPageNumber(int c)`
    `void` | `setScaleFactor(double newScaleFactor)` Sets the new scale factor.
    `void` | `setTransparentPageBackground(boolean transparentPageBackground)` Controls the page background.
    `void` | `setupFontInfo(FontInfo inFontInfo)` Set up the given FontInfo.
    `protected void` | `startLayer(java.lang.String layer)` Establish new optional content group layer.
    `void` | `startRenderer(java.io.OutputStream out)` Initiates the rendering phase.
    `protected void` | `startVParea(CTM ctm, java.awt.Rectangle clippingRect)` Establishes a new viewport area.
    `void` | `stopRenderer()` Signals the end of the rendering phase.
    `protected void` | `updateColor(java.awt.Color col, boolean fill)` Establishes a new foreground or fill color.

    - ### Methods inherited from class org.apache.fop.render.AbstractPathOrientedRenderer

      `clipBackground, drawBackAndBorders, drawBackAndBorders, drawBackground, drawBackground, drawBorders, drawBorders, drawImage, establishTransformationMatrix, handleBlockTraits, handleRegionTraits, renderBlockViewport, renderFlow, renderForeignObject, renderInlineAreaBackAndBorders, renderInlineViewport, renderReferenceArea, renderTextDecoration`

    - ### Methods inherited from class org.apache.fop.render.PrintRenderer

      `addFontList, getFontFromArea, getFontInfo, getFontList, getInternalFontNameForArea, instantiateRendererContext, renderDocument, setFontList`

    - ### Methods inherited from class org.apache.fop.render.AbstractRenderer

      `convertTitleToString, drawChangeBars, getBeginOffset, getCurrentPageViewport, getImageAdapter, maybeEndLayer, maybeStartLayer, mptToPt, preparePage, processOffDocumentItem, ptToMpt, renderBeforeFloat, renderBlock, renderBlocks, renderBodyRegion, renderContainer, renderFootnote, renderInlineArea, renderInlineBlock, renderInlineBlockParent, renderInlineParent, renderInlineSpace, renderLineArea, renderMainReference, renderPageAreas, renderRegion, renderRegionViewport, renderSpace, renderWord, renderXML, setBeginOffset, setDocumentLocale, startPageSequence, startPageSequence, supportsOutOfOrder`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.apache.fop.render.Renderer

      `getMimeType`

- - ### Field Detail

    - #### scaleFactor

          protected double scaleFactor

      The scale factor for the image size, values: ]0 ; 1]

    - #### pageWidth

          protected int pageWidth

      The page width in pixels

    - #### pageHeight

          protected int pageHeight

      The page height in pixels

    - #### pageViewportList

          protected java.util.List pageViewportList

      List of Viewports

    - #### antialiasing

          protected boolean antialiasing

      true if anti-aliasing is set

    - #### qualityRendering

          protected boolean qualityRendering

      true if qualityRendering is set

    - #### transparentPageBackground

          protected boolean transparentPageBackground

      false: paints a non-transparent white background, true: for a transparent background

    - #### state

          protected Java2DGraphicsState state

      The current state, holds a Graphics2D and its context

  - ### Constructor Detail

    - #### Java2DRenderer

          public Java2DRenderer(FOUserAgent userAgent)

      Default constructor
      Parameters:
        `userAgent` - the user agent that contains configuration details. This cannot be null.

  - ### Method Detail

    - #### getUserAgent

          public FOUserAgent getUserAgent()

      Description copied from class: `AbstractRenderer`
      Returns the associated user agent.
      Specified by:
        `getUserAgent` in interface `Renderer`
      Overrides:
        `getUserAgent` in class `AbstractRenderer`
      Returns:
        the FOUserAgent

    - #### setupFontInfo

          public void setupFontInfo(FontInfo inFontInfo)

      Set up the given FontInfo.
      Specified by:
        `setupFontInfo` in interface `Renderer`
      Overrides:
        `setupFontInfo` in class `PrintRenderer`
      Parameters:
        `inFontInfo` - The font information

    - #### getGraphics2DAdapter

          public Graphics2DAdapter getGraphics2DAdapter()

      Specified by:
        `getGraphics2DAdapter` in interface `Renderer`
      Overrides:
        `getGraphics2DAdapter` in class `AbstractRenderer`
      Returns:
        the adapter for painting Java2D images (or null if not supported)

    - #### setScaleFactor

          public void setScaleFactor(double newScaleFactor)

      Sets the new scale factor.
      Parameters:
        `newScaleFactor` - ]0 ; 1]

    - #### getScaleFactor

          public double getScaleFactor()

      Returns:
        the scale factor

    - #### startRenderer

          public void startRenderer(java.io.OutputStream out)
                             throws java.io.IOException

      Initiates the rendering phase. This must only be called once for a rendering. If stopRenderer is called then this may be called again for a new document rendering.
      Specified by:
        `startRenderer` in interface `Renderer`
      Overrides:
        `startRenderer` in class `AbstractRenderer`
      Parameters:
        `out` - The OutputStream to use for output
      Throws:
        `java.io.IOException` - If an I/O error occurs

    - #### stopRenderer

          public void stopRenderer()
                            throws java.io.IOException

      Signals the end of the rendering phase. The renderer should reset to an initial state and dispose of any resources for the completed rendering.
      Specified by:
        `stopRenderer` in interface `Renderer`
      Overrides:
        `stopRenderer` in class `AbstractRenderer`
      Throws:
        `java.io.IOException` - If an I/O error occurs

    - #### isRenderingDone

          public boolean isRenderingDone()

      Returns:
        true if the renderer is not currently processing

    - #### getCurrentPageNumber

          public int getCurrentPageNumber()

      Returns:
        The 0-based current page number

    - #### setCurrentPageNumber

          public void setCurrentPageNumber(int c)

      Parameters:
        `c` - the 0-based current page number

    - #### getNumberOfPages

          public int getNumberOfPages()

      Returns the number of pages available. This method is also part of the Pageable interface.
      Returns:
        The 0-based total number of rendered pages
      See Also:
        `Pageable`

    - #### clearViewportList

          public void clearViewportList()

      Clears the ViewportList. Used if the document is reloaded.

    - #### renderPage

          public void renderPage(PageViewport pageViewport)
                          throws java.io.IOException,
                                 FOPException

      This method override only stores the PageViewport in a List. No actual rendering is performed here. A renderer override renderPage() to get the freshly produced PageViewport, and render them on the fly (producing the desired BufferedImages by calling getPageImage(), which lazily starts the rendering process).
      Specified by:
        `renderPage` in interface `Renderer`
      Overrides:
        `renderPage` in class `AbstractRenderer`
      Parameters:
        `pageViewport` - the `PageViewport` object supplied by the Area Tree
      Throws:
        `java.io.IOException` - In case of an I/O error
        `FOPException` - if cloning of pageViewport is not supported
      See Also:
        `Renderer`

    - #### rememberPage

          protected void rememberPage(PageViewport pageViewport)

      Stores the pageViewport in a list of page viewports so they can be rendered later. Subclasses can override this method to filter pages, for example.
      Parameters:
        `pageViewport` - the page viewport

    - #### getPageImage

          public java.awt.image.BufferedImage getPageImage(PageViewport pageViewport)

      Generates a desired page from the renderer's page viewport list.
      Parameters:
        `pageViewport` - the PageViewport to be rendered
      Returns:
        the `java.awt.image.BufferedImage` corresponding to the page or null if the page doesn't exist.

    - #### getBufferedImage

          protected java.awt.image.BufferedImage getBufferedImage(int bitmapWidth,
                                                                  int bitmapHeight)

      Returns a specific `BufferedImage` to paint a page image on. This method can be overridden in subclasses to produce different image formats (ex. grayscale or b/w).
      Parameters:
        `bitmapWidth` - width of the image in pixels
        `bitmapHeight` - heigth of the image in pixels
      Returns:
        the newly created BufferedImage

    - #### getPageViewport

          public PageViewport getPageViewport(int pageIndex)
                                       throws FOPException

      Returns a page viewport.
      Parameters:
        `pageIndex` - the page index (zero-based)
      Returns:
        the requested PageViewport instance
      Throws:
        `FOPException` - If the page is out of range.

    - #### getPageImage

          public java.awt.image.BufferedImage getPageImage(int pageNum)
                                                    throws FOPException

      Generates a desired page from the renderer's page viewport list.
      Parameters:
        `pageNum` - the 0-based page number to generate
      Returns:
        the `java.awt.image.BufferedImage` corresponding to the page or null if the page doesn't exist.
      Throws:
        `FOPException` - If there's a problem preparing the page image

    - #### saveGraphicsState

          protected void saveGraphicsState()

      Saves the graphics state of the rendering engine.
      Specified by:
        `saveGraphicsState` in class `AbstractPathOrientedRenderer`

    - #### restoreGraphicsState

          protected void restoreGraphicsState()

      Restores the last graphics state of the rendering engine.
      Specified by:
        `restoreGraphicsState` in class `AbstractPathOrientedRenderer`

    - #### concatenateTransformationMatrix

          protected void concatenateTransformationMatrix(java.awt.geom.AffineTransform at)

      Concatenates the current transformation matrix with the given one, therefore establishing a new coordinate system.
      Specified by:
        `concatenateTransformationMatrix` in class `AbstractPathOrientedRenderer`
      Parameters:
        `at` - the transformation matrix to process (coordinates in points)

    - #### startVParea

          protected void startVParea(CTM ctm,
                                     java.awt.Rectangle clippingRect)

      Establishes a new viewport area.
      Specified by:
        `startVParea` in class `AbstractRenderer`
      Parameters:
        `ctm` - the coordinate transformation matrix to use
        `clippingRect` - the clipping rectangle if the viewport should be clipping, null if no clipping is performed.

    - #### endVParea

          protected void endVParea()

      Signals exit from a viewport area. Subclasses can restore transformation matrices valid before the viewport area was started.
      Specified by:
        `endVParea` in class `AbstractRenderer`

    - #### startLayer

          protected void startLayer(java.lang.String layer)

      Establish new optional content group layer.
      Specified by:
        `startLayer` in class `AbstractRenderer`
      Parameters:
        `layer` - name of layer

    - #### endLayer

          protected void endLayer()

      Finish current optional content group layer.
      Specified by:
        `endLayer` in class `AbstractRenderer`

    - #### breakOutOfStateStack

          protected java.util.List breakOutOfStateStack()

      Breaks out of the state stack to handle fixed block-containers.
      Specified by:
        `breakOutOfStateStack` in class `AbstractPathOrientedRenderer`
      Returns:
        the saved state stack to recreate later

    - #### restoreStateStackAfterBreakOut

          protected void restoreStateStackAfterBreakOut(java.util.List breakOutList)

      Restores the state stack after a break out.
      Specified by:
        `restoreStateStackAfterBreakOut` in class `AbstractPathOrientedRenderer`
      Parameters:
        `breakOutList` - the state stack to restore.

    - #### updateColor

          protected void updateColor(java.awt.Color col,
                                     boolean fill)

      Establishes a new foreground or fill color.
      Specified by:
        `updateColor` in class `AbstractPathOrientedRenderer`
      Parameters:
        `col` - the color to apply (null skips this operation)
        `fill` - true to set the fill color, false for the foreground color

    - #### clip

          protected void clip()

      Clip using the current path.
      Specified by:
        `clip` in class `AbstractPathOrientedRenderer`

    - #### closePath

          protected void closePath()

      Closes the current subpath by appending a straight line segment from the current point to the starting point of the subpath.
      Specified by:
        `closePath` in class `AbstractPathOrientedRenderer`

    - #### lineTo

          protected void lineTo(float x,
                                float y)

      Appends a straight line segment from the current point to (x, y). The new current point is (x, y).
      Specified by:
        `lineTo` in class `AbstractPathOrientedRenderer`
      Parameters:
        `x` - x coordinate
        `y` - y coordinate

    - #### moveTo

          protected void moveTo(float x,
                                float y)

      Moves the current point to (x, y), omitting any connecting line segment.
      Specified by:
        `moveTo` in class `AbstractPathOrientedRenderer`
      Parameters:
        `x` - x coordinate
        `y` - y coordinate

    - #### clipRect

          protected void clipRect(float x,
                                  float y,
                                  float width,
                                  float height)

      Clip using a rectangular area.
      Specified by:
        `clipRect` in class `AbstractPathOrientedRenderer`
      Parameters:
        `x` - the x coordinate (in points)
        `y` - the y coordinate (in points)
        `width` - the width of the rectangle (in points)
        `height` - the height of the rectangle (in points)

    - #### fillRect

          protected void fillRect(float x,
                                  float y,
                                  float width,
                                  float height)

      Fill a rectangular area.
      Specified by:
        `fillRect` in class `AbstractPathOrientedRenderer`
      Parameters:
        `x` - the x coordinate
        `y` - the y coordinate
        `width` - the width of the rectangle
        `height` - the height of the rectangle

    - #### drawBorderLine

          protected void drawBorderLine(float x1,
                                        float y1,
                                        float x2,
                                        float y2,
                                        boolean horz,
                                        boolean startOrBefore,
                                        int style,
                                        java.awt.Color col)

      Draw a border segment of an XSL-FO style border.
      Specified by:
        `drawBorderLine` in class `AbstractPathOrientedRenderer`
      Parameters:
        `x1` - starting x coordinate
        `y1` - starting y coordinate
        `x2` - ending x coordinate
        `y2` - ending y coordinate
        `horz` - true for horizontal border segments, false for vertical border segments
        `startOrBefore` - true for border segments on the start or before edge, false for end or after.
        `style` - the border style (one of Constants.EN_DASHED etc.)
        `col` - the color for the border segment

    - #### drawBorderLine

          public static void drawBorderLine(java.awt.geom.Rectangle2D.Float lineRect,
                                            boolean horz,
                                            boolean startOrBefore,
                                            int style,
                                            java.awt.Color col,
                                            java.awt.Graphics2D g2d)

      Draw a border segment of an XSL-FO style border.
      Parameters:
        `lineRect` - the line defined by its bounding rectangle
        `horz` - true for horizontal border segments, false for vertical border segments
        `startOrBefore` - true for border segments on the start or before edge, false for end or after.
        `style` - the border style (one of Constants.EN_DASHED etc.)
        `col` - the color for the border segment
        `g2d` - the Graphics2D instance to paint to

    - #### renderText

          public void renderText(TextArea text)

      Render the given TextArea.
      Overrides:
        `renderText` in class `AbstractRenderer`
      Parameters:
        `text` - the text to render

    - #### renderText

          public static void renderText(TextArea text,
                                        java.awt.Graphics2D g2d,
                                        Font font,
                                        FontInfo fontInfo)

      Renders a TextArea to a Graphics2D instance. Adjust the coordinate system so that the start of the baseline of the first character is at coordinate (0,0).
      Parameters:
        `text` - the TextArea
        `g2d` - the Graphics2D to render to
        `font` - the font to paint with
        `fontInfo` - the font information

    - #### renderLeader

          public void renderLeader(Leader area)

      Render leader area. This renders a leader area which is an area with a rule.
      Overrides:
        `renderLeader` in class `AbstractRenderer`
      Parameters:
        `area` - the leader area to render

    - #### renderImage

          public void renderImage(Image image,
                                  java.awt.geom.Rectangle2D pos)

      Renders an image area.
      Overrides:
        `renderImage` in class `AbstractRenderer`
      Parameters:
        `image` - The image
        `pos` - The target position of the image (todo) Make renderImage() protected

    - #### drawImage

          protected void drawImage(java.lang.String uri,
                                   java.awt.geom.Rectangle2D pos,
                                   java.util.Map foreignAttributes)

      Draw an image at the indicated location.
      Specified by:
        `drawImage` in class `AbstractPathOrientedRenderer`
      Parameters:
        `uri` - the URI/URL of the image
        `pos` - the position of the image
        `foreignAttributes` - an optional Map with foreign attributes, may be null

    - #### createRendererContext

          protected RendererContext createRendererContext(int x,
                                                          int y,
                                                          int width,
                                                          int height,
                                                          java.util.Map foreignAttributes)

      Creates a RendererContext for an image.
      Overrides:
        `createRendererContext` in class `PrintRenderer`
      Parameters:
        `x` - the x coordinate (in millipoints)
        `y` - the y coordinate (in millipoints)
        `width` - the width of the image (in millipoints)
        `height` - the height of the image (in millipoints)
        `foreignAttributes` - a Map or foreign attributes, may be null
      Returns:
        the RendererContext

    - #### print

          public int print(java.awt.Graphics g,
                           java.awt.print.PageFormat pageFormat,
                           int pageIndex)
                    throws java.awt.print.PrinterException

      Specified by:
        `print` in interface `java.awt.print.Printable`
      Throws:
        `java.awt.print.PrinterException`

    - #### beginTextObject

          protected void beginTextObject()

      Indicates the beginning of a text object.
      Specified by:
        `beginTextObject` in class `AbstractPathOrientedRenderer`

    - #### endTextObject

          protected void endTextObject()

      Indicates the end of a text object.
      Specified by:
        `endTextObject` in class `AbstractPathOrientedRenderer`

    - #### setTransparentPageBackground

          public void setTransparentPageBackground(boolean transparentPageBackground)

      Controls the page background.
      Parameters:
        `transparentPageBackground` - true if the background should be transparent

Copyright 1999-2020 The Apache Software Foundation. All Rights Reserved.