FObj (Apache FOP Core 2.11 API)
Date: 2025-04-24

org.apache.fop.fo

## Class FObj

- java.lang.Object
- - org.apache.fop.fo.FONode
  - - org.apache.fop.fo.FObj

- All Implemented Interfaces:
    Cloneable, Constants
  Direct Known Subclasses:
    AbstractGraphics, AbstractListItemPart, AbstractPageNumberCitation, AbstractPageSequence, BlockContainer, Bookmark, BookmarkTitle, BookmarkTree, ChangeBar, Character, ColorProfile, ConditionalPageMasterReference, Declarations, Float, Flow, FObjMixed, Footnote, FootnoteBody, InitialPropertySet, InlineContainer, LayoutMasterSet, ListBlock, ListItem, MultiCase, MultiProperties, MultiPropertySet, MultiSwitch, MultiToggle, PageNumber, PageSequenceMaster, PageSequenceWrapper, Region, RepeatablePageMasterAlternatives, RepeatablePageMasterReference, Root, SimplePageMaster, SinglePageMasterReference, TableAndCaption, TableCaption, TableFObj

      public abstract class FObj
      extends FONode
      implements Constants

  Base class for representation of formatting objects and their processing. All standard formatting object classes extend this class.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `FObj.FObjIterator` Basic `FONode.FONodeIterator` implementation

    - ### Nested classes/interfaces inherited from class org.apache.fop.fo.FONode

      `FONode.FONodeIterator, FONode.GatherContextInfoFunction`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected FONode` | `firstChild` pointer to the descendant subtree
    `protected FONode` | `lastChild` pointer to the end of the descendant subtree

    - ### Fields inherited from class org.apache.fop.fo.FONode

      `FO_URI, FOX_URI, locator, log, nodeChangeBarList, parent, siblings, startOfNodeChangeBarList`

    - ### 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
    `FObj(FONode parent)` Create a new formatting object.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected void` | `addChildNode(FONode child)` Adds a node as a child of this node.
    `protected static void` | `addChildTo(FONode child, FONode parent)` Used by RetrieveMarker during Marker-subtree cloning
    `void` | `addForeignAttribute(org.apache.xmlgraphics.util.QName attributeName, String value)` Adds a foreign attribute to this FObj.
    `protected void` | `addMarker(Marker marker)` Add the marker to this formatting object.
    `void` | `bind(PropertyList pList)` Bind property values from the property list to the FO node.
    `void` | `clearChildNodes()` Clears the list of child nodes.
    `FONode` | `clone(FONode parent, boolean removeChildren)` Performs a shallow cloning operation, sets the clone's parent, and optionally cleans the list of child nodes
    `protected PropertyList` | `createPropertyList(PropertyList parent, FOEventHandler foEventHandler)` Create a default property list for this element.
    `void` | `endOfNode()` Primarily used for making final content model validation checks and/or informing the `FOEventHandler` that the end of this FO has been reached.
    `protected int` | `findAncestor(int ancestorID)` Convenience method for validity checking.
    `FObj` | `findNearestAncestorFObj()` Find the nearest parent, grandparent, etc.
    `protected String` | `gatherContextInfo()` Gathers context information for the getContextInfo() method.
    `boolean` | `generatesReferenceAreas()` Check if this formatting object generates reference areas.
    `int` | `getBidiLevel()` Obtain resolved bidirectional level of FO.
    `int` | `getBidiLevelRecursive()` Obtain resolved bidirectional level of FO or nearest FO ancestor that has a resolved level.
    `FONode.FONodeIterator` | `getChildNodes()` Return an iterator over all the child nodes of this node.
    `FONode.FONodeIterator` | `getChildNodes(FONode childNode)` Return an iterator over the object's childNodes starting at the passed-in node (= first call to iterator.next() will return childNode)
    `protected String` | `getContextInfoAlt()` Returns a String containing as some context information about a node.
    `List<ExtensionAttachment>` | `getExtensionAttachments()`
    `Map` | `getForeignAttributes()`
    `String` | `getId()`
    `String` | `getLayer()`
    `Map<String,Marker>` | `getMarkers()`
    `String` | `getNamespaceURI()` Returns the namespace URI for this node
    `String` | `getNormalNamespacePrefix()` Returns the normally used namespace prefix for this node
    `static PropertyMaker` | `getPropertyMakerFor(int propId)` Returns the PropertyMaker for a given property ID.
    `boolean` | `hasChildren()` Indicates whether this formatting object has children.
    `boolean` | `hasExtensionAttachments()`
    `boolean` | `hasId()`
    `boolean` | `hasLayer()`
    `boolean` | `hasMarkers()`
    `protected boolean` | `isBidiBoundary(boolean propagate)`
    `boolean` | `isBidiRangeBlockItem()` Determine if this node is a new bidi RANGE block item.
    `protected boolean` | `isBlockItem(String nsURI, String lName)` Convenience method for validity checking.
    `protected boolean` | `isBlockOrInlineItem(String nsURI, String lName)` Convenience method for validity checking.
    `boolean` | `isForceKeepTogether()`
    `protected boolean` | `isInlineItem(String nsURI, String lName)` Convenience method for validity checking.
    `protected boolean` | `isNeutralItem(String nsURI, String lName)` Convenience method for validity checking.
    `void` | `processNode(String elementName, Locator locator, Attributes attlist, PropertyList pList)` Initialize the node with its name, location information, and attributes The attributes must be used immediately as the sax attributes will be altered for the next element.
    `void` | `removeChild(FONode child)` Removes a child node.
    `void` | `setBidiLevel(int bidiLevel)` Recursively set resolved bidirectional level of FO (and its ancestors) if and only if it is non-negative and if either the current value is reset (-1) or the new value is less than the current value.
    `void` | `setForceKeepTogether(boolean b)`
    `void` | `startOfNode()` Called after processNode() is called.
    `String` | `toString()`

    - ### Methods inherited from class org.apache.fop.fo.FONode

      `addCharacters, attachSiblings, canHaveMarkers, characters, charIterator, clone, collectDelimitedTextRanges, collectDelimitedTextRanges, decorateWithContextInfo, errorText, finalizeNode, getBuilderContext, getChangeBarList, getContentHandlerFactory, getContextInfo, getExtensionAttachment, getFOEventHandler, getFOValidationEventProducer, getLocalName, getLocator, getLocatorString, getLogger, getName, getName, getNameId, getNodePrefix, getNodeString, getParent, getRoot, getStructureTreeElement, getUserAgent, inMarker, invalidChildError, invalidChildError, invalidPropertyValueError, isChangeBarElement, isDelimitedTextRangeBoundary, missingChildElementError, missingChildElementError, missingPropertyError, nodesOutOfOrderError, nodesOutOfOrderError, notSupportedChildError, setLocator, setStructureTreeElement, tooManyNodesError, tooManyNodesError, tooManyNodesError, validateChildNode, validateChildNode, warningText`

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

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

- - ### Field Detail

    - #### firstChild

          protected FONode firstChild

      pointer to the descendant subtree

    - #### lastChild

          protected FONode lastChild

      pointer to the end of the descendant subtree

  - ### Constructor Detail

    - #### FObj

          public FObj(FONode parent)

      Create a new formatting object.
      Parameters:
        `parent` - the parent node

  - ### Method Detail

    - #### clone

          public FONode clone(FONode parent,
                              boolean removeChildren)
                       throws FOPException

      Performs a shallow cloning operation, sets the clone's parent, and optionally cleans the list of child nodes
      Overrides:
        `clone` in class `FONode`
      Parameters:
        `parent` - the intended parent of the clone
        `removeChildren` - if true, clean the list of child nodes
      Returns:
        the cloned FO node
      Throws:
        `FOPException` - if there's a problem while cloning the node

    - #### getPropertyMakerFor

          public static PropertyMaker getPropertyMakerFor(int propId)

      Returns the PropertyMaker for a given property ID.
      Parameters:
        `propId` - the property ID
      Returns:
        the requested Property Maker

    - #### processNode

          public void processNode(String elementName,
                                  Locator locator,
                                  Attributes attlist,
                                  PropertyList pList)
                           throws FOPException

      Initialize the node with its name, location information, and attributes The attributes must be used immediately as the sax attributes will be altered for the next element.
      Overrides:
        `processNode` in class `FONode`
      Parameters:
        `elementName` - element name (e.g., "fo:block")
        `locator` - Locator object (ignored by default)
        `attlist` - Collection of attributes passed to us from the parser.
        `pList` - the property list of the parent node
      Throws:
        `FOPException` - for errors or inconsistencies in the attributes

    - #### createPropertyList

          protected PropertyList createPropertyList(PropertyList parent,
                                                    FOEventHandler foEventHandler)
                                             throws FOPException

      Create a default property list for this element. Create a property list for this node. Return null if the node does not need a property list.
      Overrides:
        `createPropertyList` in class `FONode`
      Parameters:
        `parent` - the closest parent propertylist.
        `foEventHandler` - The FOEventHandler where the PropertyListMaker instance can be found.
      Returns:
        A new property list.
      Throws:
        `FOPException` - if there's a problem during processing

    - #### bind

          public void bind(PropertyList pList)
                    throws FOPException

      Bind property values from the property list to the FO node. Must be overridden in all FObj subclasses that have properties applying to it.
      Overrides:
        `bind` in class `FONode`
      Parameters:
        `pList` - the PropertyList where the properties can be found.
      Throws:
        `FOPException` - if there is a problem binding the values

    - #### startOfNode

          public void startOfNode()
                           throws FOPException

      Called after processNode() is called. Subclasses can do additional processing.
      Overrides:
        `startOfNode` in class `FONode`
      Throws:
        `FOPException` - FOP Exception

    - #### endOfNode

          public void endOfNode()
                         throws FOPException

      Primarily used for making final content model validation checks and/or informing the `FOEventHandler` that the end of this FO has been reached. The default implementation simply calls `FONode.finalizeNode()`, without sending any event to the `FOEventHandler`.

      Note: the recommended way to override this method in subclasses is

      `super.endOfNode(); // invoke finalizeNode()`

      `getFOEventHandler().endXXX(); // send endOfNode() notification`

      Overrides:
        `endOfNode` in class `FONode`
      Throws:
        `FOPException` - FOP Exception

    - #### addChildNode

          protected void addChildNode(FONode child)
                               throws FOPException

      Adds a node as a child of this node. The default implementation of this method just ignores any child node being added.
      Overrides:
        `addChildNode` in class `FONode`
      Parameters:
        `child` - child node to be added to the childNodes of this node
      Throws:
        `FOPException` - if there's a problem during processing

    - #### addChildTo

          protected static void addChildTo(FONode child,
                                           FONode parent)
                                    throws FOPException

      Used by RetrieveMarker during Marker-subtree cloning
      Parameters:
        `child` - the (cloned) child node
        `parent` - the (cloned) parent node
      Throws:
        `FOPException` - when the child could not be added to the parent

    - #### removeChild

          public void removeChild(FONode child)

      Removes a child node. Used by the child nodes to remove themselves, for example table-body if it has no children.
      Overrides:
        `removeChild` in class `FONode`
      Parameters:
        `child` - child node to be removed

    - #### findNearestAncestorFObj

          public FObj findNearestAncestorFObj()

      Find the nearest parent, grandparent, etc. FONode that is also an FObj
      Returns:
        FObj the nearest ancestor FONode that is an FObj

    - #### generatesReferenceAreas

          public boolean generatesReferenceAreas()

      Check if this formatting object generates reference areas.
      Returns:
        true if generates reference areas TODO see if needed

    - #### getChildNodes

          public FONode.FONodeIterator getChildNodes()

      Return an iterator over all the child nodes of this node.
      Overrides:
        `getChildNodes` in class `FONode`
      Returns:
        the iterator over the FO's childnodes

    - #### hasChildren

          public boolean hasChildren()

      Indicates whether this formatting object has children.
      Returns:
        true if there are children

    - #### getChildNodes

          public FONode.FONodeIterator getChildNodes(FONode childNode)

      Return an iterator over the object's childNodes starting at the passed-in node (= first call to iterator.next() will return childNode)
      Overrides:
        `getChildNodes` in class `FONode`
      Parameters:
        `childNode` - First node in the iterator
      Returns:
        A FONodeIterator or null if childNode isn't a child of this FObj.

    - #### addMarker

          protected void addMarker(Marker marker)

      Add the marker to this formatting object. If this object can contain markers it checks that the marker has a unique class-name for this object and that it is the first child.
      Parameters:
        `marker` - Marker to add.

    - #### hasMarkers

          public boolean hasMarkers()

      Returns:
        true if there are any Markers attached to this object

    - #### getMarkers

          public Map<String,Marker> getMarkers()

      Returns:
        the collection of Markers attached to this object

    - #### getContextInfoAlt

          protected String getContextInfoAlt()

      Returns a String containing as some context information about a node. It does not take the locator into consideration and returns null if no useful context information can be found. Call this method only in exceptional conditions because this method may perform quite extensive information gathering inside the FO tree. All text returned by this method that is not extracted from document content needs to be locale-independent.
      Overrides:
        `getContextInfoAlt` in class `FONode`
      Returns:
        a String containing context information

    - #### gatherContextInfo

          protected String gatherContextInfo()

      Gathers context information for the getContextInfo() method.
      Overrides:
        `gatherContextInfo` in class `FONode`
      Returns:
        the collected context information or null, if none is available

    - #### isBlockItem

          protected boolean isBlockItem(String nsURI,
                                        String lName)

      Convenience method for validity checking. Checks if the incoming node is a member of the "%block;" parameter entity as defined in Sect. 6.2 of the XSL 1.0 & 1.1 Recommendations
      Parameters:
        `nsURI` - namespace URI of incoming node
        `lName` - local name (i.e., no prefix) of incoming node
      Returns:
        true if a member, false if not

    - #### isInlineItem

          protected boolean isInlineItem(String nsURI,
                                         String lName)

      Convenience method for validity checking. Checks if the incoming node is a member of the "%inline;" parameter entity as defined in Sect. 6.2 of the XSL 1.0 & 1.1 Recommendations
      Parameters:
        `nsURI` - namespace URI of incoming node
        `lName` - local name (i.e., no prefix) of incoming node
      Returns:
        true if a member, false if not

    - #### isBlockOrInlineItem

          protected boolean isBlockOrInlineItem(String nsURI,
                                                String lName)

      Convenience method for validity checking. Checks if the incoming node is a member of the "%block;" parameter entity or "%inline;" parameter entity
      Parameters:
        `nsURI` - namespace URI of incoming node
        `lName` - local name (i.e., no prefix) of incoming node
      Returns:
        true if a member, false if not

    - #### isNeutralItem

          protected boolean isNeutralItem(String nsURI,
                                          String lName)

      Convenience method for validity checking. Checks if the incoming node is a member of the neutral item list as defined in Sect. 6.2 of the XSL 1.0 & 1.1 Recommendations
      Parameters:
        `nsURI` - namespace URI of incoming node
        `lName` - local name (i.e., no prefix) of incoming node
      Returns:
        true if a member, false if not

    - #### findAncestor

          protected int findAncestor(int ancestorID)

      Convenience method for validity checking. Checks if the current node has an ancestor of a given name.
      Parameters:
        `ancestorID` - ID of node name to check for (e.g., FO_ROOT)
      Returns:
        number of levels above FO where ancestor exists, -1 if not found

    - #### clearChildNodes

          public void clearChildNodes()

      Clears the list of child nodes.

    - #### getId

          public String getId()

      Returns:
        the "id" property.

    - #### hasId

          public boolean hasId()

      Returns:
        whether this object has an id set

    - #### getLayer

          public String getLayer()

      Returns:
        the "layer" property.

    - #### hasLayer

          public boolean hasLayer()

      Returns:
        whether this object has an layer set

    - #### getNamespaceURI

          public String getNamespaceURI()

      Returns the namespace URI for this node
      Overrides:
        `getNamespaceURI` in class `FONode`
      Returns:
        the namespace URI for this node

    - #### getNormalNamespacePrefix

          public String getNormalNamespacePrefix()

      Returns the normally used namespace prefix for this node
      Specified by:
        `getNormalNamespacePrefix` in class `FONode`
      Returns:
        the normally used namespace prefix for this kind of node (ex. "fo" for XSL-FO)

    - #### isBidiRangeBlockItem

          public boolean isBidiRangeBlockItem()

      Determine if this node is a new bidi RANGE block item.
      Overrides:
        `isBidiRangeBlockItem` in class `FONode`
      Returns:
        true if this node is a new bidi RANGE block item

    - #### setBidiLevel

          public void setBidiLevel(int bidiLevel)

      Recursively set resolved bidirectional level of FO (and its ancestors) if and only if it is non-negative and if either the current value is reset (-1) or the new value is less than the current value.
      Parameters:
        `bidiLevel` - a non-negative bidi embedding level

    - #### getBidiLevel

          public int getBidiLevel()

      Obtain resolved bidirectional level of FO.
      Returns:
        either a non-negative bidi embedding level or -1 in case no bidi levels have been assigned

    - #### getBidiLevelRecursive

          public int getBidiLevelRecursive()

      Obtain resolved bidirectional level of FO or nearest FO ancestor that has a resolved level.
      Returns:
        either a non-negative bidi embedding level or -1 in case no bidi levels have been assigned to this FO or any ancestor

    - #### isBidiBoundary

          protected boolean isBidiBoundary(boolean propagate)

    - #### getExtensionAttachments

          public List<ExtensionAttachment> getExtensionAttachments()

      Returns:
        the extension attachments of this FObj.

    - #### hasExtensionAttachments

          public boolean hasExtensionAttachments()

      Returns:
        true if this FObj has extension attachments

    - #### addForeignAttribute

          public void addForeignAttribute(org.apache.xmlgraphics.util.QName attributeName,
                                          String value)

      Adds a foreign attribute to this FObj.
      Parameters:
        `attributeName` - the attribute name as a QName instance
        `value` - the attribute value

    - #### getForeignAttributes

          public Map getForeignAttributes()

      Returns:
        the map of foreign attributes

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### isForceKeepTogether

          public boolean isForceKeepTogether()

    - #### setForceKeepTogether

          public void setForceKeepTogether(boolean b)

Copyright © 2025 Apache Software Foundation. All rights reserved.