From 0bc8d5b1f7d2f3bd7fa0d482d185075c7d202a94 Mon Sep 17 00:00:00 2001 From: Finn Bock Date: Mon, 9 Feb 2004 21:30:56 +0000 Subject: [PATCH] Simplefy the huge merge loop and allow compilation with jdk1.3. git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@197342 13f79535-47bb-0310-9956-ffa450edef68 --- src/codegen/property-sets.xsl | 298 ++- src/java/org/apache/fop/fo/PropertySets.java | 2083 ++++++++---------- 2 files changed, 1138 insertions(+), 1243 deletions(-) diff --git a/src/codegen/property-sets.xsl b/src/codegen/property-sets.xsl index 09848b7d7..ab9cf45ef 100644 --- a/src/codegen/property-sets.xsl +++ b/src/codegen/property-sets.xsl @@ -56,64 +56,192 @@ Software Foundation, please see . package org.apache.fop.fo; + +import org.apache.fop.fo.Constants; import java.util.BitSet; +import java.util.ArrayList; public class PropertySets { - public static short[][] mapping = null; + private static short[][] mapping = null; + + private Element[] elements = new Element[Constants.ELEMENT_COUNT+1]; + private BitSet block_elems = new BitSet(); + private BitSet inline_elems = new BitSet(); - public static void initialize() { - mapping = new short[Constants.ELEMENT_COUNT][]; - - - boolean loop = true; - while (loop) { - loop = false; + + + public void initializeElements() { + block_elems.set(Constants.FO_BLOCK); + block_elems.set(Constants.FO_BLOCK_CONTAINER); + block_elems.set(Constants.FO_TABLE_AND_CAPTION); + block_elems.set(Constants.FO_TABLE); + block_elems.set(Constants.FO_LIST_BLOCK); + + inline_elems.set(Constants.FO_BIDI_OVERRIDE); + inline_elems.set(Constants.FO_CHARACTER); + inline_elems.set(Constants.FO_EXTERNAL_GRAPHIC); + inline_elems.set(Constants.FO_INSTREAM_FOREIGN_OBJECT); + inline_elems.set(Constants.FO_INLINE); + inline_elems.set(Constants.FO_INLINE_CONTAINER); + inline_elems.set(Constants.FO_LEADER); + inline_elems.set(Constants.FO_PAGE_NUMBER); + inline_elems.set(Constants.FO_PAGE_NUMBER_CITATION); + inline_elems.set(Constants.FO_BASIC_LINK); + inline_elems.set(Constants.FO_MULTI_TOGGLE); + } + + public void initializeCommon() { - - } - - + + } + public void initialize() { + // define the fo: elements + for (int i = 1; i < elements.length; i++) { + elements[i] = new Element(i); + } + + // populate the elements with properties and content elements. + Element elem; + + + + + + // Merge the attributes from the children into the parent. + for (boolean dirty = true; dirty; ) { + dirty = false; + for (int i = 1; i < elements.length; i++) { + dirty = dirty || elements[i].merge(); + } + } + // Calculate the sparse indices for each element. + for (int i = 1; i < elements.length; i++) { + mapping[i] = makeSparseIndices(elements[i].valid); + } + } + + /** + * Turn a BitSet into an array of shorts with the first element + * on the array the number of set bits in the BitSet. + */ private static short[] makeSparseIndices(BitSet set) { - short[] indices = new short[Constants.PROPERTY_COUNT]; - indices[0] = (short) (set.cardinality() + 1); + short[] indices = new short[Constants.PROPERTY_COUNT+1]; int j = 1; - for (int i = set.nextSetBit(0); i >= 0; i = set.nextSetBit(i+1)) { - indices[i] = (short) j++; + for (int i = 0; i < Constants.PROPERTY_COUNT+1; i++) { + if (set.get(i)) { + indices[i] = (short) j++; + } } + indices[0] = (short)j; return indices; } - private static boolean mergeContent(BitSet node, BitSet content, - boolean loop) - { - int c = node.cardinality(); - node.or(content); - if (c == node.cardinality()) - return loop; - return true; - } public static short[] getPropertySet(int elementId) { - if (mapping == null) - initialize(); + if (mapping == null) { + mapping = new short[Constants.ELEMENT_COUNT+1][]; + PropertySets ps = new PropertySets(); + ps.initializeElements(); + ps.initializeCommon(); + ps.initialize(); + } return mapping[elementId]; } + + /** + * An object that represent the properties and contents of a fo element + */ + class Element { + BitSet relevant = new BitSet(); + BitSet valid = new BitSet(); + int elementId; + ArrayList children; + + Element(int elementId) { + this.elementId = elementId; + } + + /** + * Add a single property to the element. + */ + public void addProperty(int propId) { + relevant.set(propId); + valid.set(propId); + } + + /** + * Add a set of properties to the element. + */ + public void addProperties(BitSet properties) { + relevant.or(properties); + valid.or(properties); + } + + /** + * Add a single fo element as a content child. + */ + public void addContent(int elementId) { + if (children == null) { + children = new ArrayList(); + } + children.add(elements[elementId]); + } + + /** + * Add a set of fo elements as content children. + */ + public void addContent(BitSet elements) { + for (int i = 0; i < elements.size(); i++) { + if (elements.get(i)) { + addContent(i); + } + } + } + + /** + * Merge the properties from the children into the set of valid + * properties. Return true if at least one property could be added. + */ + public boolean merge() { + if (children == null) { + return false; + } + boolean dirty = false; + for (int i = 0; i < children.size(); i++) { + Element child = (Element) children.get(i); + BitSet childValid = child.valid; + int n = childValid.length(); + for (int j = 0; j < n; j++) { + if (childValid.get(j) && !valid.get(j)) { + dirty = true; + valid.set(j); + } + } + } + return dirty; + } + } } - + - + - - BitSet + BitSet = new BitSet(); + + + + + + @@ -128,108 +256,66 @@ public class PropertySets { - - - fo_ - + + + + elem = elements[Constants.FO_ + + ]; + + + - BitSet - = new BitSet(); - - - - - - fo_ - - + + - - - + elem.addProperties( + ); - - + + elem.addProperty(Constants.PR_ + + + ); + + + - fo_ - + Constants.FO_ + + + - loop = mergeContent(, fo_block, loop); - loop = mergeContent(, fo_block_container, loop); - loop = mergeContent(, fo_table_and_caption, loop); - loop = mergeContent(, fo_table, loop); - loop = mergeContent(, fo_list_block, loop); + elem.addContent(block_elems); + - loop = mergeContent(, fo_bidi_override, loop); - loop = mergeContent(, fo_character, loop); - loop = mergeContent(, fo_external_graphic, loop); - loop = mergeContent(, fo_instream_foreign_object, loop); - loop = mergeContent(, fo_inline, loop); - loop = mergeContent(, fo_inline_container, loop); - loop = mergeContent(, fo_leader, loop); - loop = mergeContent(, fo_page_number, loop); - loop = mergeContent(, fo_page_number_citation, loop); - loop = mergeContent(, fo_basic_link, loop); - loop = mergeContent(, fo_multi_toggle, loop); + elem.addContent(inline_elems); + - loop = mergeContent(, , loop); + elem.addContent( + + ); + - - - fo_ - - - mapping[Constants. - - - ] = makeSparseIndices(); - - - - - - - .or(); - - - - - - - .set(Constants.PR_ - - - ); - - - diff --git a/src/java/org/apache/fop/fo/PropertySets.java b/src/java/org/apache/fop/fo/PropertySets.java index 8eb39adfb..30d517de1 100644 --- a/src/java/org/apache/fop/fo/PropertySets.java +++ b/src/java/org/apache/fop/fo/PropertySets.java @@ -3,34 +3,34 @@ * ============================================================================ * The Apache Software License, Version 1.1 * ============================================================================ - * + * * Copyright (C) 1999-2003 The Apache Software Foundation. All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without modifica- * tion, are permitted provided that the following conditions are met: - * + * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. - * + * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. - * + * * 3. The end-user documentation included with the redistribution, if any, must * include the following acknowledgment: "This product includes software * developed by the Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, if * and wherever such third-party acknowledgments normally appear. - * + * * 4. The names "FOP" and "Apache Software Foundation" must not be used to * endorse or promote products derived from this software without prior * written permission. For written permission, please contact * apache@apache.org. - * + * * 5. Products derived from this software may not be called "Apache", nor may * "Apache" appear in their name, without prior written permission of the * Apache Software Foundation. - * + * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE @@ -42,29 +42,60 @@ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * ============================================================================ - * + * * This software consists of voluntary contributions made by many individuals * on behalf of the Apache Software Foundation and was originally created by * James Tauber . For more information on the Apache * Software Foundation, please see . - */ - -/* autogenerated from src/codegen/property-sets.xsl */ + */ package org.apache.fop.fo; + +import org.apache.fop.fo.Constants; import java.util.BitSet; +import java.util.ArrayList; public class PropertySets { - public static short[][] mapping = null; - - public static void initialize() { - mapping = new short[Constants.ELEMENT_COUNT][]; + private static short[][] mapping = null; + + private Element[] elements = new Element[Constants.ELEMENT_COUNT+1]; + private BitSet block_elems = new BitSet(); + private BitSet inline_elems = new BitSet(); + + BitSet CommonAccessibilityProperties = new BitSet(); + BitSet CommonAbsolutePositionProperties = new BitSet(); + BitSet CommonAuralProperties = new BitSet(); + BitSet CommonBorderPaddingBackgroundProperties = new BitSet(); + BitSet CommonFontProperties = new BitSet(); + BitSet CommonHyphenationProperties = new BitSet(); + BitSet CommonMarginPropertiesBlock = new BitSet(); + BitSet CommonMarginPropertiesInline = new BitSet(); + BitSet CommonRelativePositionProperties = new BitSet(); + + public void initializeElements() { + block_elems.set(Constants.FO_BLOCK); + block_elems.set(Constants.FO_BLOCK_CONTAINER); + block_elems.set(Constants.FO_TABLE_AND_CAPTION); + block_elems.set(Constants.FO_TABLE); + block_elems.set(Constants.FO_LIST_BLOCK); + + inline_elems.set(Constants.FO_BIDI_OVERRIDE); + inline_elems.set(Constants.FO_CHARACTER); + inline_elems.set(Constants.FO_EXTERNAL_GRAPHIC); + inline_elems.set(Constants.FO_INSTREAM_FOREIGN_OBJECT); + inline_elems.set(Constants.FO_INLINE); + inline_elems.set(Constants.FO_INLINE_CONTAINER); + inline_elems.set(Constants.FO_LEADER); + inline_elems.set(Constants.FO_PAGE_NUMBER); + inline_elems.set(Constants.FO_PAGE_NUMBER_CITATION); + inline_elems.set(Constants.FO_BASIC_LINK); + inline_elems.set(Constants.FO_MULTI_TOGGLE); + } - BitSet CommonAccessibilityProperties = new BitSet(); + public void initializeCommon() { CommonAccessibilityProperties.set(Constants.PR_SOURCE_DOCUMENT); CommonAccessibilityProperties.set(Constants.PR_ROLE); - BitSet CommonAbsolutePositionProperties = new BitSet(); CommonAbsolutePositionProperties.set(Constants.PR_ABSOLUTE_POSITION); CommonAbsolutePositionProperties.set(Constants.PR_POSITION); CommonAbsolutePositionProperties.set(Constants.PR_TOP); @@ -72,7 +103,6 @@ public class PropertySets { CommonAbsolutePositionProperties.set(Constants.PR_BOTTOM); CommonAbsolutePositionProperties.set(Constants.PR_LEFT); - BitSet CommonAuralProperties = new BitSet(); CommonAuralProperties.set(Constants.PR_AZIMUTH); CommonAuralProperties.set(Constants.PR_CUE_AFTER); CommonAuralProperties.set(Constants.PR_CUE_BEFORE); @@ -94,7 +124,6 @@ public class PropertySets { CommonAuralProperties.set(Constants.PR_VOICE_FAMILY); CommonAuralProperties.set(Constants.PR_VOLUME); - BitSet CommonBorderPaddingBackgroundProperties = new BitSet(); CommonBorderPaddingBackgroundProperties.set(Constants.PR_BACKGROUND_ATTACHMENT); CommonBorderPaddingBackgroundProperties.set(Constants.PR_BACKGROUND_COLOR); CommonBorderPaddingBackgroundProperties.set(Constants.PR_BACKGROUND_IMAGE); @@ -143,7 +172,6 @@ public class PropertySets { CommonBorderPaddingBackgroundProperties.set(Constants.PR_BORDER_RIGHT); CommonBorderPaddingBackgroundProperties.set(Constants.PR_PADDING); - BitSet CommonFontProperties = new BitSet(); CommonFontProperties.set(Constants.PR_FONT); CommonFontProperties.set(Constants.PR_FONT_FAMILY); CommonFontProperties.set(Constants.PR_FONT_SELECTION_STRATEGY); @@ -154,7 +182,6 @@ public class PropertySets { CommonFontProperties.set(Constants.PR_FONT_VARIANT); CommonFontProperties.set(Constants.PR_FONT_WEIGHT); - BitSet CommonHyphenationProperties = new BitSet(); CommonHyphenationProperties.set(Constants.PR_COUNTRY); CommonHyphenationProperties.set(Constants.PR_LANGUAGE); CommonHyphenationProperties.set(Constants.PR_SCRIPT); @@ -163,7 +190,6 @@ public class PropertySets { CommonHyphenationProperties.set(Constants.PR_HYPHENATION_PUSH_CHARACTER_COUNT); CommonHyphenationProperties.set(Constants.PR_HYPHENATION_REMAIN_CHARACTER_COUNT); - BitSet CommonMarginPropertiesBlock = new BitSet(); CommonMarginPropertiesBlock.set(Constants.PR_MARGIN); CommonMarginPropertiesBlock.set(Constants.PR_MARGIN_TOP); CommonMarginPropertiesBlock.set(Constants.PR_MARGIN_BOTTOM); @@ -174,1136 +200,919 @@ public class PropertySets { CommonMarginPropertiesBlock.set(Constants.PR_START_INDENT); CommonMarginPropertiesBlock.set(Constants.PR_END_INDENT); - BitSet CommonMarginPropertiesInline = new BitSet(); CommonMarginPropertiesInline.set(Constants.PR_SPACE_END); CommonMarginPropertiesInline.set(Constants.PR_SPACE_START); - BitSet CommonRelativePositionProperties = new BitSet(); CommonRelativePositionProperties.set(Constants.PR_RELATIVE_POSITION); - BitSet fo_root = new BitSet(); - fo_root.set(Constants.PR_MEDIA_USAGE); - - BitSet fo_declaration = new BitSet(); - - BitSet fo_color_profile = new BitSet(); - fo_color_profile.set(Constants.PR_SRC); - fo_color_profile.set(Constants.PR_COLOR_PROFILE_NAME); - fo_color_profile.set(Constants.PR_RENDERING_INTENT); - - BitSet fo_page_sequence = new BitSet(); - fo_page_sequence.set(Constants.PR_COUNTRY); - fo_page_sequence.set(Constants.PR_FORMAT); - fo_page_sequence.set(Constants.PR_LANGUAGE); - fo_page_sequence.set(Constants.PR_LETTER_VALUE); - fo_page_sequence.set(Constants.PR_GROUPING_SEPARATOR); - fo_page_sequence.set(Constants.PR_GROUPING_SIZE); - fo_page_sequence.set(Constants.PR_ID); - fo_page_sequence.set(Constants.PR_INITIAL_PAGE_NUMBER); - fo_page_sequence.set(Constants.PR_FORCE_PAGE_COUNT); - fo_page_sequence.set(Constants.PR_MASTER_REFERENCE); - - BitSet fo_layout_master_set = new BitSet(); - fo_layout_master_set.set(Constants.PR_MASTER_NAME); - - BitSet fo_page_sequence_master = new BitSet(); - fo_page_sequence_master.set(Constants.PR_MASTER_NAME); - - BitSet fo_single_page_master_reference = new BitSet(); - fo_single_page_master_reference.set(Constants.PR_MASTER_REFERENCE); - - BitSet fo_repeatable_page_master_reference = new BitSet(); - fo_repeatable_page_master_reference.set(Constants.PR_MASTER_REFERENCE); - fo_repeatable_page_master_reference.set(Constants.PR_MAXIMUM_REPEATS); - - BitSet fo_repeatable_page_master_alternatives = new BitSet(); - fo_repeatable_page_master_alternatives.set(Constants.PR_MAXIMUM_REPEATS); - - BitSet fo_conditional_page_master_reference = new BitSet(); - fo_conditional_page_master_reference.set(Constants.PR_MASTER_REFERENCE); - fo_conditional_page_master_reference.set(Constants.PR_PAGE_POSITION); - fo_conditional_page_master_reference.set(Constants.PR_ODD_OR_EVEN); - fo_conditional_page_master_reference.set(Constants.PR_BLANK_OR_NOT_BLANK); - - BitSet fo_simple_page_master = new BitSet(); - fo_simple_page_master.or(CommonMarginPropertiesBlock); - fo_simple_page_master.set(Constants.PR_MASTER_NAME); - fo_simple_page_master.set(Constants.PR_PAGE_HEIGHT); - fo_simple_page_master.set(Constants.PR_PAGE_WIDTH); - fo_simple_page_master.set(Constants.PR_REFERENCE_ORIENTATION); - fo_simple_page_master.set(Constants.PR_WRITING_MODE); - - BitSet fo_region_body = new BitSet(); - fo_region_body.or(CommonBorderPaddingBackgroundProperties); - fo_region_body.or(CommonMarginPropertiesBlock); - fo_region_body.set(Constants.PR_CLIP); - fo_region_body.set(Constants.PR_COLUMN_COUNT); - fo_region_body.set(Constants.PR_COLUMN_GAP); - fo_region_body.set(Constants.PR_DISPLAY_ALIGN); - fo_region_body.set(Constants.PR_OVERFLOW); - fo_region_body.set(Constants.PR_REGION_NAME); - fo_region_body.set(Constants.PR_REFERENCE_ORIENTATION); - fo_region_body.set(Constants.PR_WRITING_MODE); - - BitSet fo_region_before = new BitSet(); - fo_region_before.or(CommonBorderPaddingBackgroundProperties); - fo_region_before.set(Constants.PR_CLIP); - fo_region_before.set(Constants.PR_DISPLAY_ALIGN); - fo_region_before.set(Constants.PR_EXTENT); - fo_region_before.set(Constants.PR_OVERFLOW); - fo_region_before.set(Constants.PR_PRECEDENCE); - fo_region_before.set(Constants.PR_REGION_NAME); - fo_region_before.set(Constants.PR_REFERENCE_ORIENTATION); - fo_region_before.set(Constants.PR_WRITING_MODE); - - BitSet fo_region_after = new BitSet(); - fo_region_after.or(CommonBorderPaddingBackgroundProperties); - fo_region_after.set(Constants.PR_CLIP); - fo_region_after.set(Constants.PR_DISPLAY_ALIGN); - fo_region_after.set(Constants.PR_EXTENT); - fo_region_after.set(Constants.PR_OVERFLOW); - fo_region_after.set(Constants.PR_PRECEDENCE); - fo_region_after.set(Constants.PR_REGION_NAME); - fo_region_after.set(Constants.PR_REFERENCE_ORIENTATION); - fo_region_after.set(Constants.PR_WRITING_MODE); - - BitSet fo_region_start = new BitSet(); - fo_region_start.or(CommonBorderPaddingBackgroundProperties); - fo_region_start.set(Constants.PR_CLIP); - fo_region_start.set(Constants.PR_DISPLAY_ALIGN); - fo_region_start.set(Constants.PR_EXTENT); - fo_region_start.set(Constants.PR_OVERFLOW); - fo_region_start.set(Constants.PR_REGION_NAME); - fo_region_start.set(Constants.PR_REFERENCE_ORIENTATION); - fo_region_start.set(Constants.PR_WRITING_MODE); - - BitSet fo_region_end = new BitSet(); - fo_region_end.or(CommonBorderPaddingBackgroundProperties); - fo_region_end.set(Constants.PR_CLIP); - fo_region_end.set(Constants.PR_DISPLAY_ALIGN); - fo_region_end.set(Constants.PR_EXTENT); - fo_region_end.set(Constants.PR_OVERFLOW); - fo_region_end.set(Constants.PR_REGION_NAME); - fo_region_end.set(Constants.PR_REFERENCE_ORIENTATION); - fo_region_end.set(Constants.PR_WRITING_MODE); - - BitSet fo_flow = new BitSet(); - fo_flow.set(Constants.PR_FLOW_NAME); - - BitSet fo_static_content = new BitSet(); - fo_static_content.set(Constants.PR_FLOW_NAME); - - BitSet fo_title = new BitSet(); - fo_title.or(CommonAccessibilityProperties); - fo_title.or(CommonAuralProperties); - fo_title.or(CommonBorderPaddingBackgroundProperties); - fo_title.or(CommonFontProperties); - fo_title.or(CommonMarginPropertiesInline); - fo_title.set(Constants.PR_COLOR); - fo_title.set(Constants.PR_LINE_HEIGHT); - fo_title.set(Constants.PR_VISIBILITY); - - BitSet fo_block = new BitSet(); - fo_block.or(CommonAccessibilityProperties); - fo_block.or(CommonAuralProperties); - fo_block.or(CommonBorderPaddingBackgroundProperties); - fo_block.or(CommonFontProperties); - fo_block.or(CommonHyphenationProperties); - fo_block.or(CommonMarginPropertiesBlock); - fo_block.or(CommonRelativePositionProperties); - fo_block.set(Constants.PR_PAGE_BREAK_AFTER); - fo_block.set(Constants.PR_PAGE_BREAK_BEFORE); - fo_block.set(Constants.PR_BREAK_AFTER); - fo_block.set(Constants.PR_BREAK_BEFORE); - fo_block.set(Constants.PR_COLOR); - fo_block.set(Constants.PR_TEXT_DEPTH); - fo_block.set(Constants.PR_TEXT_ALTITUDE); - fo_block.set(Constants.PR_HYPHENATION_KEEP); - fo_block.set(Constants.PR_HYPHENATION_LADDER_COUNT); - fo_block.set(Constants.PR_ID); - fo_block.set(Constants.PR_PAGE_BREAK_INSIDE); - fo_block.set(Constants.PR_KEEP_TOGETHER); - fo_block.set(Constants.PR_KEEP_WITH_NEXT); - fo_block.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_block.set(Constants.PR_LAST_LINE_END_INDENT); - fo_block.set(Constants.PR_LINEFEED_TREATMENT); - fo_block.set(Constants.PR_LINE_HEIGHT); - fo_block.set(Constants.PR_LINE_HEIGHT_SHIFT_ADJUSTMENT); - fo_block.set(Constants.PR_LINE_STACKING_STRATEGY); - fo_block.set(Constants.PR_ORPHANS); - fo_block.set(Constants.PR_WHITE_SPACE_TREATMENT); - fo_block.set(Constants.PR_SPAN); - fo_block.set(Constants.PR_TEXT_ALIGN); - fo_block.set(Constants.PR_TEXT_ALIGN_LAST); - fo_block.set(Constants.PR_TEXT_INDENT); - fo_block.set(Constants.PR_VISIBILITY); - fo_block.set(Constants.PR_WHITE_SPACE_COLLAPSE); - fo_block.set(Constants.PR_WIDOWS); - fo_block.set(Constants.PR_WRAP_OPTION); - - BitSet fo_block_container = new BitSet(); - fo_block_container.or(CommonAbsolutePositionProperties); - fo_block_container.or(CommonBorderPaddingBackgroundProperties); - fo_block_container.or(CommonMarginPropertiesBlock); - fo_block_container.set(Constants.PR_BLOCK_PROGRESSION_DIMENSION); - fo_block_container.set(Constants.PR_PAGE_BREAK_AFTER); - fo_block_container.set(Constants.PR_PAGE_BREAK_BEFORE); - fo_block_container.set(Constants.PR_BREAK_AFTER); - fo_block_container.set(Constants.PR_BREAK_BEFORE); - fo_block_container.set(Constants.PR_CLIP); - fo_block_container.set(Constants.PR_DISPLAY_ALIGN); - fo_block_container.set(Constants.PR_HEIGHT); - fo_block_container.set(Constants.PR_ID); - fo_block_container.set(Constants.PR_INLINE_PROGRESSION_DIMENSION); - fo_block_container.set(Constants.PR_PAGE_BREAK_INSIDE); - fo_block_container.set(Constants.PR_KEEP_TOGETHER); - fo_block_container.set(Constants.PR_KEEP_WITH_NEXT); - fo_block_container.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_block_container.set(Constants.PR_OVERFLOW); - fo_block_container.set(Constants.PR_REFERENCE_ORIENTATION); - fo_block_container.set(Constants.PR_SPAN); - fo_block_container.set(Constants.PR_WIDTH); - fo_block_container.set(Constants.PR_WRITING_MODE); - fo_block_container.set(Constants.PR_Z_INDEX); - - BitSet fo_bidi_override = new BitSet(); - fo_bidi_override.or(CommonAuralProperties); - fo_bidi_override.or(CommonFontProperties); - fo_bidi_override.or(CommonRelativePositionProperties); - fo_bidi_override.set(Constants.PR_COLOR); - fo_bidi_override.set(Constants.PR_DIRECTION); - fo_bidi_override.set(Constants.PR_ID); - fo_bidi_override.set(Constants.PR_LETTER_SPACING); - fo_bidi_override.set(Constants.PR_LINE_HEIGHT); - fo_bidi_override.set(Constants.PR_SCORE_SPACES); - fo_bidi_override.set(Constants.PR_UNICODE_BIDI); - fo_bidi_override.set(Constants.PR_WORD_SPACING); - - BitSet fo_character = new BitSet(); - fo_character.or(CommonAuralProperties); - fo_character.or(CommonBorderPaddingBackgroundProperties); - fo_character.or(CommonFontProperties); - fo_character.or(CommonHyphenationProperties); - fo_character.or(CommonMarginPropertiesInline); - fo_character.or(CommonRelativePositionProperties); - fo_character.set(Constants.PR_VERTICAL_ALIGN); - fo_character.set(Constants.PR_ALIGNMENT_ADJUST); - fo_character.set(Constants.PR_TREAT_AS_WORD_SPACE); - fo_character.set(Constants.PR_ALIGNMENT_BASELINE); - fo_character.set(Constants.PR_BASELINE_SHIFT); - fo_character.set(Constants.PR_CHARACTER); - fo_character.set(Constants.PR_COLOR); - fo_character.set(Constants.PR_DOMINANT_BASELINE); - fo_character.set(Constants.PR_TEXT_DEPTH); - fo_character.set(Constants.PR_TEXT_ALTITUDE); - fo_character.set(Constants.PR_GLYPH_ORIENTATION_HORIZONTAL); - fo_character.set(Constants.PR_GLYPH_ORIENTATION_VERTICAL); - fo_character.set(Constants.PR_ID); - fo_character.set(Constants.PR_KEEP_WITH_NEXT); - fo_character.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_character.set(Constants.PR_LETTER_SPACING); - fo_character.set(Constants.PR_LINE_HEIGHT); - fo_character.set(Constants.PR_SCORE_SPACES); - fo_character.set(Constants.PR_SUPPRESS_AT_LINE_BREAK); - fo_character.set(Constants.PR_TEXT_DECORATION); - fo_character.set(Constants.PR_TEXT_SHADOW); - fo_character.set(Constants.PR_TEXT_TRANSFORM); - fo_character.set(Constants.PR_VISIBILITY); - fo_character.set(Constants.PR_WORD_SPACING); - - BitSet fo_initial_property_set = new BitSet(); - fo_initial_property_set.or(CommonAccessibilityProperties); - fo_initial_property_set.or(CommonAuralProperties); - fo_initial_property_set.or(CommonBorderPaddingBackgroundProperties); - fo_initial_property_set.or(CommonFontProperties); - fo_initial_property_set.or(CommonRelativePositionProperties); - fo_initial_property_set.set(Constants.PR_COLOR); - fo_initial_property_set.set(Constants.PR_ID); - fo_initial_property_set.set(Constants.PR_LETTER_SPACING); - fo_initial_property_set.set(Constants.PR_LINE_HEIGHT); - fo_initial_property_set.set(Constants.PR_SCORE_SPACES); - fo_initial_property_set.set(Constants.PR_TEXT_DECORATION); - fo_initial_property_set.set(Constants.PR_TEXT_SHADOW); - fo_initial_property_set.set(Constants.PR_TEXT_TRANSFORM); - fo_initial_property_set.set(Constants.PR_WORD_SPACING); - - BitSet fo_external_graphic = new BitSet(); - fo_external_graphic.or(CommonAccessibilityProperties); - fo_external_graphic.or(CommonAuralProperties); - fo_external_graphic.or(CommonBorderPaddingBackgroundProperties); - fo_external_graphic.or(CommonMarginPropertiesInline); - fo_external_graphic.or(CommonRelativePositionProperties); - fo_external_graphic.set(Constants.PR_VERTICAL_ALIGN); - fo_external_graphic.set(Constants.PR_ALIGNMENT_ADJUST); - fo_external_graphic.set(Constants.PR_ALIGNMENT_BASELINE); - fo_external_graphic.set(Constants.PR_BASELINE_SHIFT); - fo_external_graphic.set(Constants.PR_BLOCK_PROGRESSION_DIMENSION); - fo_external_graphic.set(Constants.PR_CLIP); - fo_external_graphic.set(Constants.PR_CONTENT_HEIGHT); - fo_external_graphic.set(Constants.PR_CONTENT_TYPE); - fo_external_graphic.set(Constants.PR_CONTENT_WIDTH); - fo_external_graphic.set(Constants.PR_DISPLAY_ALIGN); - fo_external_graphic.set(Constants.PR_DOMINANT_BASELINE); - fo_external_graphic.set(Constants.PR_HEIGHT); - fo_external_graphic.set(Constants.PR_ID); - fo_external_graphic.set(Constants.PR_INLINE_PROGRESSION_DIMENSION); - fo_external_graphic.set(Constants.PR_KEEP_WITH_NEXT); - fo_external_graphic.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_external_graphic.set(Constants.PR_LINE_HEIGHT); - fo_external_graphic.set(Constants.PR_OVERFLOW); - fo_external_graphic.set(Constants.PR_SCALING); - fo_external_graphic.set(Constants.PR_SCALING_METHOD); - fo_external_graphic.set(Constants.PR_SRC); - fo_external_graphic.set(Constants.PR_TEXT_ALIGN); - fo_external_graphic.set(Constants.PR_WIDTH); - - BitSet fo_instream_foreign_object = new BitSet(); - fo_instream_foreign_object.or(CommonAccessibilityProperties); - fo_instream_foreign_object.or(CommonAuralProperties); - fo_instream_foreign_object.or(CommonBorderPaddingBackgroundProperties); - fo_instream_foreign_object.or(CommonMarginPropertiesInline); - fo_instream_foreign_object.or(CommonRelativePositionProperties); - fo_instream_foreign_object.set(Constants.PR_VERTICAL_ALIGN); - fo_instream_foreign_object.set(Constants.PR_ALIGNMENT_ADJUST); - fo_instream_foreign_object.set(Constants.PR_ALIGNMENT_BASELINE); - fo_instream_foreign_object.set(Constants.PR_BASELINE_SHIFT); - fo_instream_foreign_object.set(Constants.PR_BLOCK_PROGRESSION_DIMENSION); - fo_instream_foreign_object.set(Constants.PR_CLIP); - fo_instream_foreign_object.set(Constants.PR_CONTENT_HEIGHT); - fo_instream_foreign_object.set(Constants.PR_CONTENT_TYPE); - fo_instream_foreign_object.set(Constants.PR_CONTENT_WIDTH); - fo_instream_foreign_object.set(Constants.PR_DISPLAY_ALIGN); - fo_instream_foreign_object.set(Constants.PR_DOMINANT_BASELINE); - fo_instream_foreign_object.set(Constants.PR_HEIGHT); - fo_instream_foreign_object.set(Constants.PR_ID); - fo_instream_foreign_object.set(Constants.PR_INLINE_PROGRESSION_DIMENSION); - fo_instream_foreign_object.set(Constants.PR_KEEP_WITH_NEXT); - fo_instream_foreign_object.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_instream_foreign_object.set(Constants.PR_LINE_HEIGHT); - fo_instream_foreign_object.set(Constants.PR_OVERFLOW); - fo_instream_foreign_object.set(Constants.PR_SCALING); - fo_instream_foreign_object.set(Constants.PR_SCALING_METHOD); - fo_instream_foreign_object.set(Constants.PR_TEXT_ALIGN); - fo_instream_foreign_object.set(Constants.PR_WIDTH); - - BitSet fo_inline = new BitSet(); - fo_inline.or(CommonAccessibilityProperties); - fo_inline.or(CommonAuralProperties); - fo_inline.or(CommonBorderPaddingBackgroundProperties); - fo_inline.or(CommonFontProperties); - fo_inline.or(CommonMarginPropertiesInline); - fo_inline.or(CommonRelativePositionProperties); - fo_inline.set(Constants.PR_VERTICAL_ALIGN); - fo_inline.set(Constants.PR_ALIGNMENT_ADJUST); - fo_inline.set(Constants.PR_ALIGNMENT_BASELINE); - fo_inline.set(Constants.PR_BASELINE_SHIFT); - fo_inline.set(Constants.PR_BLOCK_PROGRESSION_DIMENSION); - fo_inline.set(Constants.PR_COLOR); - fo_inline.set(Constants.PR_DOMINANT_BASELINE); - fo_inline.set(Constants.PR_HEIGHT); - fo_inline.set(Constants.PR_ID); - fo_inline.set(Constants.PR_INLINE_PROGRESSION_DIMENSION); - fo_inline.set(Constants.PR_PAGE_BREAK_INSIDE); - fo_inline.set(Constants.PR_KEEP_TOGETHER); - fo_inline.set(Constants.PR_KEEP_WITH_NEXT); - fo_inline.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_inline.set(Constants.PR_LINE_HEIGHT); - fo_inline.set(Constants.PR_TEXT_DECORATION); - fo_inline.set(Constants.PR_VISIBILITY); - fo_inline.set(Constants.PR_WIDTH); - fo_inline.set(Constants.PR_WRAP_OPTION); - - BitSet fo_inline_container = new BitSet(); - fo_inline_container.or(CommonBorderPaddingBackgroundProperties); - fo_inline_container.or(CommonMarginPropertiesInline); - fo_inline_container.or(CommonRelativePositionProperties); - fo_inline_container.set(Constants.PR_VERTICAL_ALIGN); - fo_inline_container.set(Constants.PR_ALIGNMENT_ADJUST); - fo_inline_container.set(Constants.PR_ALIGNMENT_BASELINE); - fo_inline_container.set(Constants.PR_BASELINE_SHIFT); - fo_inline_container.set(Constants.PR_BLOCK_PROGRESSION_DIMENSION); - fo_inline_container.set(Constants.PR_CLIP); - fo_inline_container.set(Constants.PR_DISPLAY_ALIGN); - fo_inline_container.set(Constants.PR_DOMINANT_BASELINE); - fo_inline_container.set(Constants.PR_HEIGHT); - fo_inline_container.set(Constants.PR_ID); - fo_inline_container.set(Constants.PR_INLINE_PROGRESSION_DIMENSION); - fo_inline_container.set(Constants.PR_PAGE_BREAK_INSIDE); - fo_inline_container.set(Constants.PR_KEEP_TOGETHER); - fo_inline_container.set(Constants.PR_KEEP_WITH_NEXT); - fo_inline_container.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_inline_container.set(Constants.PR_LINE_HEIGHT); - fo_inline_container.set(Constants.PR_OVERFLOW); - fo_inline_container.set(Constants.PR_REFERENCE_ORIENTATION); - fo_inline_container.set(Constants.PR_WIDTH); - fo_inline_container.set(Constants.PR_WRITING_MODE); - - BitSet fo_leader = new BitSet(); - fo_leader.or(CommonAccessibilityProperties); - fo_leader.or(CommonAuralProperties); - fo_leader.or(CommonBorderPaddingBackgroundProperties); - fo_leader.or(CommonFontProperties); - fo_leader.or(CommonMarginPropertiesInline); - fo_leader.or(CommonRelativePositionProperties); - fo_leader.set(Constants.PR_VERTICAL_ALIGN); - fo_leader.set(Constants.PR_ALIGNMENT_ADJUST); - fo_leader.set(Constants.PR_ALIGNMENT_BASELINE); - fo_leader.set(Constants.PR_BASELINE_SHIFT); - fo_leader.set(Constants.PR_COLOR); - fo_leader.set(Constants.PR_DOMINANT_BASELINE); - fo_leader.set(Constants.PR_TEXT_DEPTH); - fo_leader.set(Constants.PR_TEXT_ALTITUDE); - fo_leader.set(Constants.PR_ID); - fo_leader.set(Constants.PR_KEEP_WITH_NEXT); - fo_leader.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_leader.set(Constants.PR_LEADER_ALIGNMENT); - fo_leader.set(Constants.PR_LEADER_LENGTH); - fo_leader.set(Constants.PR_LEADER_PATTERN); - fo_leader.set(Constants.PR_LEADER_PATTERN_WIDTH); - fo_leader.set(Constants.PR_RULE_STYLE); - fo_leader.set(Constants.PR_RULE_THICKNESS); - fo_leader.set(Constants.PR_LETTER_SPACING); - fo_leader.set(Constants.PR_LINE_HEIGHT); - fo_leader.set(Constants.PR_TEXT_SHADOW); - fo_leader.set(Constants.PR_VISIBILITY); - fo_leader.set(Constants.PR_WORD_SPACING); - - BitSet fo_page_number = new BitSet(); - fo_page_number.or(CommonAccessibilityProperties); - fo_page_number.or(CommonAuralProperties); - fo_page_number.or(CommonBorderPaddingBackgroundProperties); - fo_page_number.or(CommonFontProperties); - fo_page_number.or(CommonMarginPropertiesInline); - fo_page_number.or(CommonRelativePositionProperties); - fo_page_number.set(Constants.PR_VERTICAL_ALIGN); - fo_page_number.set(Constants.PR_ALIGNMENT_ADJUST); - fo_page_number.set(Constants.PR_ALIGNMENT_BASELINE); - fo_page_number.set(Constants.PR_BASELINE_SHIFT); - fo_page_number.set(Constants.PR_DOMINANT_BASELINE); - fo_page_number.set(Constants.PR_ID); - fo_page_number.set(Constants.PR_KEEP_WITH_NEXT); - fo_page_number.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_page_number.set(Constants.PR_LETTER_SPACING); - fo_page_number.set(Constants.PR_LINE_HEIGHT); - fo_page_number.set(Constants.PR_SCORE_SPACES); - fo_page_number.set(Constants.PR_TEXT_ALTITUDE); - fo_page_number.set(Constants.PR_TEXT_DECORATION); - fo_page_number.set(Constants.PR_TEXT_DEPTH); - fo_page_number.set(Constants.PR_TEXT_SHADOW); - fo_page_number.set(Constants.PR_TEXT_TRANSFORM); - fo_page_number.set(Constants.PR_VISIBILITY); - fo_page_number.set(Constants.PR_WORD_SPACING); - fo_page_number.set(Constants.PR_WRAP_OPTION); - - BitSet fo_page_number_citation = new BitSet(); - fo_page_number_citation.or(CommonAccessibilityProperties); - fo_page_number_citation.or(CommonAuralProperties); - fo_page_number_citation.or(CommonBorderPaddingBackgroundProperties); - fo_page_number_citation.or(CommonFontProperties); - fo_page_number_citation.or(CommonMarginPropertiesInline); - fo_page_number_citation.or(CommonRelativePositionProperties); - fo_page_number_citation.set(Constants.PR_VERTICAL_ALIGN); - fo_page_number_citation.set(Constants.PR_ALIGNMENT_ADJUST); - fo_page_number_citation.set(Constants.PR_ALIGNMENT_BASELINE); - fo_page_number_citation.set(Constants.PR_BASELINE_SHIFT); - fo_page_number_citation.set(Constants.PR_DOMINANT_BASELINE); - fo_page_number_citation.set(Constants.PR_ID); - fo_page_number_citation.set(Constants.PR_KEEP_WITH_NEXT); - fo_page_number_citation.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_page_number_citation.set(Constants.PR_LETTER_SPACING); - fo_page_number_citation.set(Constants.PR_LINE_HEIGHT); - fo_page_number_citation.set(Constants.PR_REF_ID); - fo_page_number_citation.set(Constants.PR_SCORE_SPACES); - fo_page_number_citation.set(Constants.PR_TEXT_ALTITUDE); - fo_page_number_citation.set(Constants.PR_TEXT_DECORATION); - fo_page_number_citation.set(Constants.PR_TEXT_DEPTH); - fo_page_number_citation.set(Constants.PR_TEXT_SHADOW); - fo_page_number_citation.set(Constants.PR_TEXT_TRANSFORM); - fo_page_number_citation.set(Constants.PR_VISIBILITY); - fo_page_number_citation.set(Constants.PR_WORD_SPACING); - fo_page_number_citation.set(Constants.PR_WRAP_OPTION); - - BitSet fo_table_and_caption = new BitSet(); - fo_table_and_caption.or(CommonAccessibilityProperties); - fo_table_and_caption.or(CommonAuralProperties); - fo_table_and_caption.or(CommonBorderPaddingBackgroundProperties); - fo_table_and_caption.or(CommonMarginPropertiesBlock); - fo_table_and_caption.or(CommonRelativePositionProperties); - fo_table_and_caption.set(Constants.PR_PAGE_BREAK_AFTER); - fo_table_and_caption.set(Constants.PR_PAGE_BREAK_BEFORE); - fo_table_and_caption.set(Constants.PR_BREAK_AFTER); - fo_table_and_caption.set(Constants.PR_BREAK_BEFORE); - fo_table_and_caption.set(Constants.PR_CAPTION_SIDE); - fo_table_and_caption.set(Constants.PR_ID); - fo_table_and_caption.set(Constants.PR_PAGE_BREAK_INSIDE); - fo_table_and_caption.set(Constants.PR_KEEP_TOGETHER); - fo_table_and_caption.set(Constants.PR_KEEP_WITH_NEXT); - fo_table_and_caption.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_table_and_caption.set(Constants.PR_TEXT_ALIGN); - - BitSet fo_table = new BitSet(); - fo_table.or(CommonAccessibilityProperties); - fo_table.or(CommonAuralProperties); - fo_table.or(CommonBorderPaddingBackgroundProperties); - fo_table.or(CommonMarginPropertiesBlock); - fo_table.or(CommonRelativePositionProperties); - fo_table.set(Constants.PR_BLOCK_PROGRESSION_DIMENSION); - fo_table.set(Constants.PR_BORDER_AFTER_PRECEDENCE); - fo_table.set(Constants.PR_BORDER_BEFORE_PRECEDENCE); - fo_table.set(Constants.PR_BORDER_SPACING); - fo_table.set(Constants.PR_BORDER_COLLAPSE); - fo_table.set(Constants.PR_BORDER_END_PRECEDENCE); - fo_table.set(Constants.PR_BORDER_SEPARATION); - fo_table.set(Constants.PR_BORDER_START_PRECEDENCE); - fo_table.set(Constants.PR_PAGE_BREAK_AFTER); - fo_table.set(Constants.PR_PAGE_BREAK_BEFORE); - fo_table.set(Constants.PR_BREAK_AFTER); - fo_table.set(Constants.PR_BREAK_BEFORE); - fo_table.set(Constants.PR_ID); - fo_table.set(Constants.PR_INLINE_PROGRESSION_DIMENSION); - fo_table.set(Constants.PR_HEIGHT); - fo_table.set(Constants.PR_PAGE_BREAK_INSIDE); - fo_table.set(Constants.PR_KEEP_TOGETHER); - fo_table.set(Constants.PR_KEEP_WITH_NEXT); - fo_table.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_table.set(Constants.PR_TABLE_LAYOUT); - fo_table.set(Constants.PR_TABLE_OMIT_FOOTER_AT_BREAK); - fo_table.set(Constants.PR_TABLE_OMIT_HEADER_AT_BREAK); - fo_table.set(Constants.PR_WIDTH); - fo_table.set(Constants.PR_WRITING_MODE); - - BitSet fo_table_column = new BitSet(); - fo_table_column.or(CommonBorderPaddingBackgroundProperties); - fo_table_column.set(Constants.PR_BORDER_AFTER_PRECEDENCE); - fo_table_column.set(Constants.PR_BORDER_BEFORE_PRECEDENCE); - fo_table_column.set(Constants.PR_BORDER_END_PRECEDENCE); - fo_table_column.set(Constants.PR_BORDER_START_PRECEDENCE); - fo_table_column.set(Constants.PR_COLUMN_NUMBER); - fo_table_column.set(Constants.PR_COLUMN_WIDTH); - fo_table_column.set(Constants.PR_NUMBER_COLUMNS_REPEATED); - fo_table_column.set(Constants.PR_NUMBER_COLUMNS_SPANNED); - fo_table_column.set(Constants.PR_VISIBILITY); - - BitSet fo_table_caption = new BitSet(); - fo_table_caption.or(CommonAccessibilityProperties); - fo_table_caption.or(CommonAuralProperties); - fo_table_caption.or(CommonBorderPaddingBackgroundProperties); - fo_table_caption.or(CommonRelativePositionProperties); - fo_table_caption.set(Constants.PR_BLOCK_PROGRESSION_DIMENSION); - fo_table_caption.set(Constants.PR_HEIGHT); - fo_table_caption.set(Constants.PR_ID); - fo_table_caption.set(Constants.PR_INLINE_PROGRESSION_DIMENSION); - fo_table_caption.set(Constants.PR_PAGE_BREAK_INSIDE); - fo_table_caption.set(Constants.PR_KEEP_TOGETHER); - fo_table_caption.set(Constants.PR_WIDTH); - - BitSet fo_table_header = new BitSet(); - fo_table_header.or(CommonAccessibilityProperties); - fo_table_header.or(CommonAuralProperties); - fo_table_header.or(CommonBorderPaddingBackgroundProperties); - fo_table_header.or(CommonRelativePositionProperties); - fo_table_header.set(Constants.PR_BORDER_AFTER_PRECEDENCE); - fo_table_header.set(Constants.PR_BORDER_BEFORE_PRECEDENCE); - fo_table_header.set(Constants.PR_BORDER_END_PRECEDENCE); - fo_table_header.set(Constants.PR_BORDER_START_PRECEDENCE); - fo_table_header.set(Constants.PR_ID); - fo_table_header.set(Constants.PR_VISIBILITY); - - BitSet fo_table_footer = new BitSet(); - fo_table_footer.or(CommonAccessibilityProperties); - fo_table_footer.or(CommonAuralProperties); - fo_table_footer.or(CommonBorderPaddingBackgroundProperties); - fo_table_footer.or(CommonRelativePositionProperties); - fo_table_footer.set(Constants.PR_BORDER_AFTER_PRECEDENCE); - fo_table_footer.set(Constants.PR_BORDER_BEFORE_PRECEDENCE); - fo_table_footer.set(Constants.PR_BORDER_END_PRECEDENCE); - fo_table_footer.set(Constants.PR_BORDER_START_PRECEDENCE); - fo_table_footer.set(Constants.PR_ID); - fo_table_footer.set(Constants.PR_VISIBILITY); - - BitSet fo_table_body = new BitSet(); - fo_table_body.or(CommonAccessibilityProperties); - fo_table_body.or(CommonAuralProperties); - fo_table_body.or(CommonBorderPaddingBackgroundProperties); - fo_table_body.or(CommonRelativePositionProperties); - fo_table_body.set(Constants.PR_BORDER_AFTER_PRECEDENCE); - fo_table_body.set(Constants.PR_BORDER_BEFORE_PRECEDENCE); - fo_table_body.set(Constants.PR_BORDER_END_PRECEDENCE); - fo_table_body.set(Constants.PR_BORDER_START_PRECEDENCE); - fo_table_body.set(Constants.PR_ID); - fo_table_body.set(Constants.PR_VISIBILITY); - - BitSet fo_table_row = new BitSet(); - fo_table_row.or(CommonAccessibilityProperties); - fo_table_row.set(Constants.PR_BLOCK_PROGRESSION_DIMENSION); - fo_table_row.or(CommonAuralProperties); - fo_table_row.or(CommonBorderPaddingBackgroundProperties); - fo_table_row.or(CommonRelativePositionProperties); - fo_table_row.set(Constants.PR_BORDER_AFTER_PRECEDENCE); - fo_table_row.set(Constants.PR_BORDER_BEFORE_PRECEDENCE); - fo_table_row.set(Constants.PR_BORDER_END_PRECEDENCE); - fo_table_row.set(Constants.PR_BORDER_START_PRECEDENCE); - fo_table_row.set(Constants.PR_PAGE_BREAK_AFTER); - fo_table_row.set(Constants.PR_PAGE_BREAK_BEFORE); - fo_table_row.set(Constants.PR_BREAK_AFTER); - fo_table_row.set(Constants.PR_BREAK_BEFORE); - fo_table_row.set(Constants.PR_ID); - fo_table_row.set(Constants.PR_HEIGHT); - fo_table_row.set(Constants.PR_PAGE_BREAK_INSIDE); - fo_table_row.set(Constants.PR_KEEP_TOGETHER); - fo_table_row.set(Constants.PR_KEEP_WITH_NEXT); - fo_table_row.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_table_row.set(Constants.PR_VISIBILITY); - - BitSet fo_table_cell = new BitSet(); - fo_table_cell.or(CommonAccessibilityProperties); - fo_table_cell.or(CommonAuralProperties); - fo_table_cell.or(CommonBorderPaddingBackgroundProperties); - fo_table_cell.or(CommonRelativePositionProperties); - fo_table_cell.set(Constants.PR_BORDER_AFTER_PRECEDENCE); - fo_table_cell.set(Constants.PR_BORDER_BEFORE_PRECEDENCE); - fo_table_cell.set(Constants.PR_BORDER_END_PRECEDENCE); - fo_table_cell.set(Constants.PR_BORDER_START_PRECEDENCE); - fo_table_cell.set(Constants.PR_BLOCK_PROGRESSION_DIMENSION); - fo_table_cell.set(Constants.PR_COLUMN_NUMBER); - fo_table_cell.set(Constants.PR_DISPLAY_ALIGN); - fo_table_cell.set(Constants.PR_RELATIVE_ALIGN); - fo_table_cell.set(Constants.PR_EMPTY_CELLS); - fo_table_cell.set(Constants.PR_ENDS_ROW); - fo_table_cell.set(Constants.PR_HEIGHT); - fo_table_cell.set(Constants.PR_ID); - fo_table_cell.set(Constants.PR_INLINE_PROGRESSION_DIMENSION); - fo_table_cell.set(Constants.PR_NUMBER_COLUMNS_SPANNED); - fo_table_cell.set(Constants.PR_NUMBER_ROWS_SPANNED); - fo_table_cell.set(Constants.PR_STARTS_ROW); - fo_table_cell.set(Constants.PR_WIDTH); - - BitSet fo_list_block = new BitSet(); - fo_list_block.or(CommonAccessibilityProperties); - fo_list_block.or(CommonAuralProperties); - fo_list_block.or(CommonBorderPaddingBackgroundProperties); - fo_list_block.or(CommonMarginPropertiesBlock); - fo_list_block.or(CommonRelativePositionProperties); - fo_list_block.set(Constants.PR_PAGE_BREAK_AFTER); - fo_list_block.set(Constants.PR_PAGE_BREAK_BEFORE); - fo_list_block.set(Constants.PR_BREAK_AFTER); - fo_list_block.set(Constants.PR_BREAK_BEFORE); - fo_list_block.set(Constants.PR_ID); - fo_list_block.set(Constants.PR_PAGE_BREAK_INSIDE); - fo_list_block.set(Constants.PR_KEEP_TOGETHER); - fo_list_block.set(Constants.PR_KEEP_WITH_NEXT); - fo_list_block.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_list_block.set(Constants.PR_PROVISIONAL_DISTANCE_BETWEEN_STARTS); - fo_list_block.set(Constants.PR_PROVISIONAL_LABEL_SEPARATION); - - BitSet fo_list_item = new BitSet(); - fo_list_item.or(CommonAccessibilityProperties); - fo_list_item.or(CommonAuralProperties); - fo_list_item.or(CommonBorderPaddingBackgroundProperties); - fo_list_item.or(CommonMarginPropertiesBlock); - fo_list_item.or(CommonRelativePositionProperties); - fo_list_item.set(Constants.PR_PAGE_BREAK_AFTER); - fo_list_item.set(Constants.PR_PAGE_BREAK_BEFORE); - fo_list_item.set(Constants.PR_BREAK_AFTER); - fo_list_item.set(Constants.PR_BREAK_BEFORE); - fo_list_item.set(Constants.PR_ID); - fo_list_item.set(Constants.PR_PAGE_BREAK_INSIDE); - fo_list_item.set(Constants.PR_KEEP_TOGETHER); - fo_list_item.set(Constants.PR_KEEP_WITH_NEXT); - fo_list_item.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_list_item.set(Constants.PR_RELATIVE_ALIGN); - - BitSet fo_list_item_body = new BitSet(); - fo_list_item_body.or(CommonAccessibilityProperties); - fo_list_item_body.set(Constants.PR_ID); - fo_list_item_body.set(Constants.PR_PAGE_BREAK_INSIDE); - fo_list_item_body.set(Constants.PR_KEEP_TOGETHER); - - BitSet fo_list_item_label = new BitSet(); - fo_list_item_label.or(CommonAccessibilityProperties); - fo_list_item_label.set(Constants.PR_ID); - fo_list_item_label.set(Constants.PR_PAGE_BREAK_INSIDE); - fo_list_item_label.set(Constants.PR_KEEP_TOGETHER); - - BitSet fo_basic_link = new BitSet(); - fo_basic_link.or(CommonAccessibilityProperties); - fo_basic_link.or(CommonAuralProperties); - fo_basic_link.or(CommonBorderPaddingBackgroundProperties); - fo_basic_link.or(CommonMarginPropertiesInline); - fo_basic_link.or(CommonRelativePositionProperties); - fo_basic_link.set(Constants.PR_VERTICAL_ALIGN); - fo_basic_link.set(Constants.PR_ALIGNMENT_ADJUST); - fo_basic_link.set(Constants.PR_ALIGNMENT_BASELINE); - fo_basic_link.set(Constants.PR_BASELINE_SHIFT); - fo_basic_link.set(Constants.PR_DESTINATION_PLACEMENT_OFFSET); - fo_basic_link.set(Constants.PR_DOMINANT_BASELINE); - fo_basic_link.set(Constants.PR_EXTERNAL_DESTINATION); - fo_basic_link.set(Constants.PR_ID); - fo_basic_link.set(Constants.PR_INDICATE_DESTINATION); - fo_basic_link.set(Constants.PR_INTERNAL_DESTINATION); - fo_basic_link.set(Constants.PR_PAGE_BREAK_INSIDE); - fo_basic_link.set(Constants.PR_KEEP_TOGETHER); - fo_basic_link.set(Constants.PR_KEEP_WITH_NEXT); - fo_basic_link.set(Constants.PR_KEEP_WITH_PREVIOUS); - fo_basic_link.set(Constants.PR_LINE_HEIGHT); - fo_basic_link.set(Constants.PR_SHOW_DESTINATION); - fo_basic_link.set(Constants.PR_TARGET_PROCESSING_CONTEXT); - fo_basic_link.set(Constants.PR_TARGET_PRESENTATION_CONTEXT); - fo_basic_link.set(Constants.PR_TARGET_STYLESHEET); - - BitSet fo_multi_switch = new BitSet(); - fo_multi_switch.or(CommonAccessibilityProperties); - fo_multi_switch.set(Constants.PR_AUTO_RESTORE); - fo_multi_switch.set(Constants.PR_ID); - - BitSet fo_multi_case = new BitSet(); - fo_multi_case.or(CommonAccessibilityProperties); - fo_multi_case.set(Constants.PR_ID); - fo_multi_case.set(Constants.PR_STARTING_STATE); - fo_multi_case.set(Constants.PR_CASE_NAME); - fo_multi_case.set(Constants.PR_CASE_TITLE); - - BitSet fo_multi_toggle = new BitSet(); - fo_multi_toggle.or(CommonAccessibilityProperties); - fo_multi_toggle.set(Constants.PR_ID); - fo_multi_toggle.set(Constants.PR_SWITCH_TO); - - BitSet fo_multi_properties = new BitSet(); - fo_multi_properties.or(CommonAccessibilityProperties); - fo_multi_properties.set(Constants.PR_ID); - - BitSet fo_multi_property_set = new BitSet(); - fo_multi_property_set.set(Constants.PR_ID); - fo_multi_property_set.set(Constants.PR_ACTIVE_STATE); - - BitSet fo_float = new BitSet(); - fo_float.set(Constants.PR_FLOAT); - fo_float.set(Constants.PR_CLEAR); - - BitSet fo_footnote = new BitSet(); - fo_footnote.or(CommonAccessibilityProperties); - - BitSet fo_footnote_body = new BitSet(); - fo_footnote_body.or(CommonAccessibilityProperties); - - BitSet fo_wrapper = new BitSet(); - fo_wrapper.set(Constants.PR_ID); - - BitSet fo_marker = new BitSet(); - fo_marker.set(Constants.PR_MARKER_CLASS_NAME); - - BitSet fo_retrieve_marker = new BitSet(); - fo_retrieve_marker.set(Constants.PR_RETRIEVE_CLASS_NAME); - fo_retrieve_marker.set(Constants.PR_RETRIEVE_POSITION); - fo_retrieve_marker.set(Constants.PR_RETRIEVE_BOUNDARY); - - boolean loop = true; - while (loop) { - loop = false; - - loop = mergeContent(fo_root, fo_layout_master_set, loop); - - loop = mergeContent(fo_root, fo_declaration, loop); - - loop = mergeContent(fo_root, fo_page_sequence, loop); - - loop = mergeContent(fo_declaration, fo_color_profile, loop); - - loop = mergeContent(fo_page_sequence, fo_title, loop); - - loop = mergeContent(fo_page_sequence, fo_static_content, loop); - - loop = mergeContent(fo_page_sequence, fo_flow, loop); - - loop = mergeContent(fo_layout_master_set, fo_simple_page_master, loop); - - loop = mergeContent(fo_layout_master_set, fo_page_sequence_master, loop); - - loop = mergeContent(fo_page_sequence_master, fo_single_page_master_reference, loop); - - loop = mergeContent(fo_page_sequence_master, fo_repeatable_page_master_reference, loop); - - loop = mergeContent(fo_page_sequence_master, fo_repeatable_page_master_alternatives, loop); - - loop = mergeContent(fo_repeatable_page_master_alternatives, fo_conditional_page_master_reference, loop); - - loop = mergeContent(fo_simple_page_master, fo_region_body, loop); - - loop = mergeContent(fo_simple_page_master, fo_region_before, loop); - - loop = mergeContent(fo_simple_page_master, fo_region_after, loop); - - loop = mergeContent(fo_simple_page_master, fo_region_start, loop); - - loop = mergeContent(fo_simple_page_master, fo_region_end, loop); - - loop = mergeContent(fo_flow, fo_block, loop); - loop = mergeContent(fo_flow, fo_block_container, loop); - loop = mergeContent(fo_flow, fo_table_and_caption, loop); - loop = mergeContent(fo_flow, fo_table, loop); - loop = mergeContent(fo_flow, fo_list_block, loop); - - loop = mergeContent(fo_static_content, fo_block, loop); - loop = mergeContent(fo_static_content, fo_block_container, loop); - loop = mergeContent(fo_static_content, fo_table_and_caption, loop); - loop = mergeContent(fo_static_content, fo_table, loop); - loop = mergeContent(fo_static_content, fo_list_block, loop); - - loop = mergeContent(fo_title, fo_bidi_override, loop); - loop = mergeContent(fo_title, fo_character, loop); - loop = mergeContent(fo_title, fo_external_graphic, loop); - loop = mergeContent(fo_title, fo_instream_foreign_object, loop); - loop = mergeContent(fo_title, fo_inline, loop); - loop = mergeContent(fo_title, fo_inline_container, loop); - loop = mergeContent(fo_title, fo_leader, loop); - loop = mergeContent(fo_title, fo_page_number, loop); - loop = mergeContent(fo_title, fo_page_number_citation, loop); - loop = mergeContent(fo_title, fo_basic_link, loop); - loop = mergeContent(fo_title, fo_multi_toggle, loop); - - loop = mergeContent(fo_block, fo_bidi_override, loop); - loop = mergeContent(fo_block, fo_character, loop); - loop = mergeContent(fo_block, fo_external_graphic, loop); - loop = mergeContent(fo_block, fo_instream_foreign_object, loop); - loop = mergeContent(fo_block, fo_inline, loop); - loop = mergeContent(fo_block, fo_inline_container, loop); - loop = mergeContent(fo_block, fo_leader, loop); - loop = mergeContent(fo_block, fo_page_number, loop); - loop = mergeContent(fo_block, fo_page_number_citation, loop); - loop = mergeContent(fo_block, fo_basic_link, loop); - loop = mergeContent(fo_block, fo_multi_toggle, loop); - - loop = mergeContent(fo_block, fo_block, loop); - loop = mergeContent(fo_block, fo_block_container, loop); - loop = mergeContent(fo_block, fo_table_and_caption, loop); - loop = mergeContent(fo_block, fo_table, loop); - loop = mergeContent(fo_block, fo_list_block, loop); - - loop = mergeContent(fo_block_container, fo_block, loop); - loop = mergeContent(fo_block_container, fo_block_container, loop); - loop = mergeContent(fo_block_container, fo_table_and_caption, loop); - loop = mergeContent(fo_block_container, fo_table, loop); - loop = mergeContent(fo_block_container, fo_list_block, loop); - - loop = mergeContent(fo_bidi_override, fo_bidi_override, loop); - loop = mergeContent(fo_bidi_override, fo_character, loop); - loop = mergeContent(fo_bidi_override, fo_external_graphic, loop); - loop = mergeContent(fo_bidi_override, fo_instream_foreign_object, loop); - loop = mergeContent(fo_bidi_override, fo_inline, loop); - loop = mergeContent(fo_bidi_override, fo_inline_container, loop); - loop = mergeContent(fo_bidi_override, fo_leader, loop); - loop = mergeContent(fo_bidi_override, fo_page_number, loop); - loop = mergeContent(fo_bidi_override, fo_page_number_citation, loop); - loop = mergeContent(fo_bidi_override, fo_basic_link, loop); - loop = mergeContent(fo_bidi_override, fo_multi_toggle, loop); - - loop = mergeContent(fo_bidi_override, fo_block, loop); - loop = mergeContent(fo_bidi_override, fo_block_container, loop); - loop = mergeContent(fo_bidi_override, fo_table_and_caption, loop); - loop = mergeContent(fo_bidi_override, fo_table, loop); - loop = mergeContent(fo_bidi_override, fo_list_block, loop); - - loop = mergeContent(fo_inline, fo_bidi_override, loop); - loop = mergeContent(fo_inline, fo_character, loop); - loop = mergeContent(fo_inline, fo_external_graphic, loop); - loop = mergeContent(fo_inline, fo_instream_foreign_object, loop); - loop = mergeContent(fo_inline, fo_inline, loop); - loop = mergeContent(fo_inline, fo_inline_container, loop); - loop = mergeContent(fo_inline, fo_leader, loop); - loop = mergeContent(fo_inline, fo_page_number, loop); - loop = mergeContent(fo_inline, fo_page_number_citation, loop); - loop = mergeContent(fo_inline, fo_basic_link, loop); - loop = mergeContent(fo_inline, fo_multi_toggle, loop); - - loop = mergeContent(fo_inline, fo_block, loop); - loop = mergeContent(fo_inline, fo_block_container, loop); - loop = mergeContent(fo_inline, fo_table_and_caption, loop); - loop = mergeContent(fo_inline, fo_table, loop); - loop = mergeContent(fo_inline, fo_list_block, loop); - - loop = mergeContent(fo_inline_container, fo_block, loop); - loop = mergeContent(fo_inline_container, fo_block_container, loop); - loop = mergeContent(fo_inline_container, fo_table_and_caption, loop); - loop = mergeContent(fo_inline_container, fo_table, loop); - loop = mergeContent(fo_inline_container, fo_list_block, loop); - - loop = mergeContent(fo_leader, fo_bidi_override, loop); - loop = mergeContent(fo_leader, fo_character, loop); - loop = mergeContent(fo_leader, fo_external_graphic, loop); - loop = mergeContent(fo_leader, fo_instream_foreign_object, loop); - loop = mergeContent(fo_leader, fo_inline, loop); - loop = mergeContent(fo_leader, fo_inline_container, loop); - loop = mergeContent(fo_leader, fo_leader, loop); - loop = mergeContent(fo_leader, fo_page_number, loop); - loop = mergeContent(fo_leader, fo_page_number_citation, loop); - loop = mergeContent(fo_leader, fo_basic_link, loop); - loop = mergeContent(fo_leader, fo_multi_toggle, loop); - - loop = mergeContent(fo_table_and_caption, fo_table_caption, loop); - - loop = mergeContent(fo_table_and_caption, fo_table, loop); - - loop = mergeContent(fo_table, fo_table_column, loop); - - loop = mergeContent(fo_table, fo_table_header, loop); - - loop = mergeContent(fo_table, fo_table_footer, loop); - - loop = mergeContent(fo_table, fo_table_body, loop); - - loop = mergeContent(fo_table_caption, fo_block, loop); - loop = mergeContent(fo_table_caption, fo_block_container, loop); - loop = mergeContent(fo_table_caption, fo_table_and_caption, loop); - loop = mergeContent(fo_table_caption, fo_table, loop); - loop = mergeContent(fo_table_caption, fo_list_block, loop); - - loop = mergeContent(fo_table_header, fo_table_row, loop); - - loop = mergeContent(fo_table_header, fo_table_cell, loop); - - loop = mergeContent(fo_table_footer, fo_table_row, loop); - - loop = mergeContent(fo_table_footer, fo_table_cell, loop); - - loop = mergeContent(fo_table_body, fo_table_row, loop); - - loop = mergeContent(fo_table_body, fo_table_cell, loop); - - loop = mergeContent(fo_table_row, fo_table_cell, loop); - - loop = mergeContent(fo_table_cell, fo_block, loop); - loop = mergeContent(fo_table_cell, fo_block_container, loop); - loop = mergeContent(fo_table_cell, fo_table_and_caption, loop); - loop = mergeContent(fo_table_cell, fo_table, loop); - loop = mergeContent(fo_table_cell, fo_list_block, loop); - - loop = mergeContent(fo_list_block, fo_list_item, loop); - - loop = mergeContent(fo_list_item, fo_list_item_label, loop); - - loop = mergeContent(fo_list_item, fo_list_item_body, loop); - - loop = mergeContent(fo_list_item_body, fo_block, loop); - loop = mergeContent(fo_list_item_body, fo_block_container, loop); - loop = mergeContent(fo_list_item_body, fo_table_and_caption, loop); - loop = mergeContent(fo_list_item_body, fo_table, loop); - loop = mergeContent(fo_list_item_body, fo_list_block, loop); - - loop = mergeContent(fo_list_item_label, fo_block, loop); - loop = mergeContent(fo_list_item_label, fo_block_container, loop); - loop = mergeContent(fo_list_item_label, fo_table_and_caption, loop); - loop = mergeContent(fo_list_item_label, fo_table, loop); - loop = mergeContent(fo_list_item_label, fo_list_block, loop); - - loop = mergeContent(fo_basic_link, fo_bidi_override, loop); - loop = mergeContent(fo_basic_link, fo_character, loop); - loop = mergeContent(fo_basic_link, fo_external_graphic, loop); - loop = mergeContent(fo_basic_link, fo_instream_foreign_object, loop); - loop = mergeContent(fo_basic_link, fo_inline, loop); - loop = mergeContent(fo_basic_link, fo_inline_container, loop); - loop = mergeContent(fo_basic_link, fo_leader, loop); - loop = mergeContent(fo_basic_link, fo_page_number, loop); - loop = mergeContent(fo_basic_link, fo_page_number_citation, loop); - loop = mergeContent(fo_basic_link, fo_basic_link, loop); - loop = mergeContent(fo_basic_link, fo_multi_toggle, loop); - - loop = mergeContent(fo_basic_link, fo_block, loop); - loop = mergeContent(fo_basic_link, fo_block_container, loop); - loop = mergeContent(fo_basic_link, fo_table_and_caption, loop); - loop = mergeContent(fo_basic_link, fo_table, loop); - loop = mergeContent(fo_basic_link, fo_list_block, loop); - - loop = mergeContent(fo_multi_switch, fo_multi_case, loop); - - loop = mergeContent(fo_multi_case, fo_bidi_override, loop); - loop = mergeContent(fo_multi_case, fo_character, loop); - loop = mergeContent(fo_multi_case, fo_external_graphic, loop); - loop = mergeContent(fo_multi_case, fo_instream_foreign_object, loop); - loop = mergeContent(fo_multi_case, fo_inline, loop); - loop = mergeContent(fo_multi_case, fo_inline_container, loop); - loop = mergeContent(fo_multi_case, fo_leader, loop); - loop = mergeContent(fo_multi_case, fo_page_number, loop); - loop = mergeContent(fo_multi_case, fo_page_number_citation, loop); - loop = mergeContent(fo_multi_case, fo_basic_link, loop); - loop = mergeContent(fo_multi_case, fo_multi_toggle, loop); - - loop = mergeContent(fo_multi_case, fo_block, loop); - loop = mergeContent(fo_multi_case, fo_block_container, loop); - loop = mergeContent(fo_multi_case, fo_table_and_caption, loop); - loop = mergeContent(fo_multi_case, fo_table, loop); - loop = mergeContent(fo_multi_case, fo_list_block, loop); - - loop = mergeContent(fo_multi_toggle, fo_bidi_override, loop); - loop = mergeContent(fo_multi_toggle, fo_character, loop); - loop = mergeContent(fo_multi_toggle, fo_external_graphic, loop); - loop = mergeContent(fo_multi_toggle, fo_instream_foreign_object, loop); - loop = mergeContent(fo_multi_toggle, fo_inline, loop); - loop = mergeContent(fo_multi_toggle, fo_inline_container, loop); - loop = mergeContent(fo_multi_toggle, fo_leader, loop); - loop = mergeContent(fo_multi_toggle, fo_page_number, loop); - loop = mergeContent(fo_multi_toggle, fo_page_number_citation, loop); - loop = mergeContent(fo_multi_toggle, fo_basic_link, loop); - loop = mergeContent(fo_multi_toggle, fo_multi_toggle, loop); - - loop = mergeContent(fo_multi_toggle, fo_block, loop); - loop = mergeContent(fo_multi_toggle, fo_block_container, loop); - loop = mergeContent(fo_multi_toggle, fo_table_and_caption, loop); - loop = mergeContent(fo_multi_toggle, fo_table, loop); - loop = mergeContent(fo_multi_toggle, fo_list_block, loop); - - loop = mergeContent(fo_multi_properties, fo_multi_property_set, loop); - - loop = mergeContent(fo_multi_properties, fo_wrapper, loop); - - loop = mergeContent(fo_float, fo_block, loop); - loop = mergeContent(fo_float, fo_block_container, loop); - loop = mergeContent(fo_float, fo_table_and_caption, loop); - loop = mergeContent(fo_float, fo_table, loop); - loop = mergeContent(fo_float, fo_list_block, loop); - - loop = mergeContent(fo_footnote, fo_inline, loop); - - loop = mergeContent(fo_footnote, fo_footnote_body, loop); - - loop = mergeContent(fo_footnote_body, fo_block, loop); - loop = mergeContent(fo_footnote_body, fo_block_container, loop); - loop = mergeContent(fo_footnote_body, fo_table_and_caption, loop); - loop = mergeContent(fo_footnote_body, fo_table, loop); - loop = mergeContent(fo_footnote_body, fo_list_block, loop); - - loop = mergeContent(fo_wrapper, fo_bidi_override, loop); - loop = mergeContent(fo_wrapper, fo_character, loop); - loop = mergeContent(fo_wrapper, fo_external_graphic, loop); - loop = mergeContent(fo_wrapper, fo_instream_foreign_object, loop); - loop = mergeContent(fo_wrapper, fo_inline, loop); - loop = mergeContent(fo_wrapper, fo_inline_container, loop); - loop = mergeContent(fo_wrapper, fo_leader, loop); - loop = mergeContent(fo_wrapper, fo_page_number, loop); - loop = mergeContent(fo_wrapper, fo_page_number_citation, loop); - loop = mergeContent(fo_wrapper, fo_basic_link, loop); - loop = mergeContent(fo_wrapper, fo_multi_toggle, loop); - - loop = mergeContent(fo_wrapper, fo_block, loop); - loop = mergeContent(fo_wrapper, fo_block_container, loop); - loop = mergeContent(fo_wrapper, fo_table_and_caption, loop); - loop = mergeContent(fo_wrapper, fo_table, loop); - loop = mergeContent(fo_wrapper, fo_list_block, loop); - - loop = mergeContent(fo_marker, fo_bidi_override, loop); - loop = mergeContent(fo_marker, fo_character, loop); - loop = mergeContent(fo_marker, fo_external_graphic, loop); - loop = mergeContent(fo_marker, fo_instream_foreign_object, loop); - loop = mergeContent(fo_marker, fo_inline, loop); - loop = mergeContent(fo_marker, fo_inline_container, loop); - loop = mergeContent(fo_marker, fo_leader, loop); - loop = mergeContent(fo_marker, fo_page_number, loop); - loop = mergeContent(fo_marker, fo_page_number_citation, loop); - loop = mergeContent(fo_marker, fo_basic_link, loop); - loop = mergeContent(fo_marker, fo_multi_toggle, loop); - - loop = mergeContent(fo_marker, fo_block, loop); - loop = mergeContent(fo_marker, fo_block_container, loop); - loop = mergeContent(fo_marker, fo_table_and_caption, loop); - loop = mergeContent(fo_marker, fo_table, loop); - loop = mergeContent(fo_marker, fo_list_block, loop); - - } - mapping[Constants.FO_ROOT] = makeSparseIndices(fo_root); - mapping[Constants.FO_DECLARATION] = makeSparseIndices(fo_declaration); - mapping[Constants.FO_COLOR_PROFILE] = makeSparseIndices(fo_color_profile); - mapping[Constants.FO_PAGE_SEQUENCE] = makeSparseIndices(fo_page_sequence); - mapping[Constants.FO_LAYOUT_MASTER_SET] = makeSparseIndices(fo_layout_master_set); - mapping[Constants.FO_PAGE_SEQUENCE_MASTER] = makeSparseIndices(fo_page_sequence_master); - mapping[Constants.FO_SINGLE_PAGE_MASTER_REFERENCE] = makeSparseIndices(fo_single_page_master_reference); - mapping[Constants.FO_REPEATABLE_PAGE_MASTER_REFERENCE] = makeSparseIndices(fo_repeatable_page_master_reference); - mapping[Constants.FO_REPEATABLE_PAGE_MASTER_ALTERNATIVES] = makeSparseIndices(fo_repeatable_page_master_alternatives); - mapping[Constants.FO_CONDITIONAL_PAGE_MASTER_REFERENCE] = makeSparseIndices(fo_conditional_page_master_reference); - mapping[Constants.FO_SIMPLE_PAGE_MASTER] = makeSparseIndices(fo_simple_page_master); - mapping[Constants.FO_REGION_BODY] = makeSparseIndices(fo_region_body); - mapping[Constants.FO_REGION_BEFORE] = makeSparseIndices(fo_region_before); - mapping[Constants.FO_REGION_AFTER] = makeSparseIndices(fo_region_after); - mapping[Constants.FO_REGION_START] = makeSparseIndices(fo_region_start); - mapping[Constants.FO_REGION_END] = makeSparseIndices(fo_region_end); - mapping[Constants.FO_FLOW] = makeSparseIndices(fo_flow); - mapping[Constants.FO_STATIC_CONTENT] = makeSparseIndices(fo_static_content); - mapping[Constants.FO_TITLE] = makeSparseIndices(fo_title); - mapping[Constants.FO_BLOCK] = makeSparseIndices(fo_block); - mapping[Constants.FO_BLOCK_CONTAINER] = makeSparseIndices(fo_block_container); - mapping[Constants.FO_BIDI_OVERRIDE] = makeSparseIndices(fo_bidi_override); - mapping[Constants.FO_CHARACTER] = makeSparseIndices(fo_character); - mapping[Constants.FO_INITIAL_PROPERTY_SET] = makeSparseIndices(fo_initial_property_set); - mapping[Constants.FO_EXTERNAL_GRAPHIC] = makeSparseIndices(fo_external_graphic); - mapping[Constants.FO_INSTREAM_FOREIGN_OBJECT] = makeSparseIndices(fo_instream_foreign_object); - mapping[Constants.FO_INLINE] = makeSparseIndices(fo_inline); - mapping[Constants.FO_INLINE_CONTAINER] = makeSparseIndices(fo_inline_container); - mapping[Constants.FO_LEADER] = makeSparseIndices(fo_leader); - mapping[Constants.FO_PAGE_NUMBER] = makeSparseIndices(fo_page_number); - mapping[Constants.FO_PAGE_NUMBER_CITATION] = makeSparseIndices(fo_page_number_citation); - mapping[Constants.FO_TABLE_AND_CAPTION] = makeSparseIndices(fo_table_and_caption); - mapping[Constants.FO_TABLE] = makeSparseIndices(fo_table); - mapping[Constants.FO_TABLE_COLUMN] = makeSparseIndices(fo_table_column); - mapping[Constants.FO_TABLE_CAPTION] = makeSparseIndices(fo_table_caption); - mapping[Constants.FO_TABLE_HEADER] = makeSparseIndices(fo_table_header); - mapping[Constants.FO_TABLE_FOOTER] = makeSparseIndices(fo_table_footer); - mapping[Constants.FO_TABLE_BODY] = makeSparseIndices(fo_table_body); - mapping[Constants.FO_TABLE_ROW] = makeSparseIndices(fo_table_row); - mapping[Constants.FO_TABLE_CELL] = makeSparseIndices(fo_table_cell); - mapping[Constants.FO_LIST_BLOCK] = makeSparseIndices(fo_list_block); - mapping[Constants.FO_LIST_ITEM] = makeSparseIndices(fo_list_item); - mapping[Constants.FO_LIST_ITEM_BODY] = makeSparseIndices(fo_list_item_body); - mapping[Constants.FO_LIST_ITEM_LABEL] = makeSparseIndices(fo_list_item_label); - mapping[Constants.FO_BASIC_LINK] = makeSparseIndices(fo_basic_link); - mapping[Constants.FO_MULTI_SWITCH] = makeSparseIndices(fo_multi_switch); - mapping[Constants.FO_MULTI_CASE] = makeSparseIndices(fo_multi_case); - mapping[Constants.FO_MULTI_TOGGLE] = makeSparseIndices(fo_multi_toggle); - mapping[Constants.FO_MULTI_PROPERTIES] = makeSparseIndices(fo_multi_properties); - mapping[Constants.FO_MULTI_PROPERTY_SET] = makeSparseIndices(fo_multi_property_set); - mapping[Constants.FO_FLOAT] = makeSparseIndices(fo_float); - mapping[Constants.FO_FOOTNOTE] = makeSparseIndices(fo_footnote); - mapping[Constants.FO_FOOTNOTE_BODY] = makeSparseIndices(fo_footnote_body); - mapping[Constants.FO_WRAPPER] = makeSparseIndices(fo_wrapper); - mapping[Constants.FO_MARKER] = makeSparseIndices(fo_marker); - mapping[Constants.FO_RETRIEVE_MARKER] = makeSparseIndices(fo_retrieve_marker); } - /* These arrays, one for each formatting object, define the properties that - * are valid for an FO and its children. The first element, indices[0], - * will be used in PropertyList to define the size of the Property[] array - * for the FObj (= the number of properties valid for the element + 1.) - * Each other element of this array has a value of 0 if not supported by the FO, - * 1-based index otherwise. This array will be used as a pointer to the Property[] - * array in PropertyList holding the valid properties for the FO. - * i.e., fo.propList.values[indices[propId]] will refer to the correct Property - * element if the property is valid for the FO, values[indices[invalPropId]] = - * values[0] = NULL otherwise. - */ - private static short[] makeSparseIndices(BitSet set) { - short[] indices = new short[Constants.PROPERTY_COUNT +1]; + public void initialize() { + // define the fo: elements + for (int i = 1; i < elements.length; i++) { + elements[i] = new Element(i); + } - indices[0] = (short) (set.cardinality() + 1); + // populate the elements with properties and content elements. + Element elem; + elem = elements[Constants.FO_ROOT]; + elem.addProperty(Constants.PR_MEDIA_USAGE); + elem.addContent(Constants.FO_LAYOUT_MASTER_SET); + elem.addContent(Constants.FO_DECLARATION); + elem.addContent(Constants.FO_PAGE_SEQUENCE); + + elem = elements[Constants.FO_DECLARATION]; + elem.addContent(Constants.FO_COLOR_PROFILE); + + elem = elements[Constants.FO_COLOR_PROFILE]; + elem.addProperty(Constants.PR_SRC); + elem.addProperty(Constants.PR_COLOR_PROFILE_NAME); + elem.addProperty(Constants.PR_RENDERING_INTENT); + + elem = elements[Constants.FO_PAGE_SEQUENCE]; + elem.addProperty(Constants.PR_COUNTRY); + elem.addProperty(Constants.PR_FORMAT); + elem.addProperty(Constants.PR_LANGUAGE); + elem.addProperty(Constants.PR_LETTER_VALUE); + elem.addProperty(Constants.PR_GROUPING_SEPARATOR); + elem.addProperty(Constants.PR_GROUPING_SIZE); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_INITIAL_PAGE_NUMBER); + elem.addProperty(Constants.PR_FORCE_PAGE_COUNT); + elem.addProperty(Constants.PR_MASTER_REFERENCE); + elem.addContent(Constants.FO_TITLE); + elem.addContent(Constants.FO_STATIC_CONTENT); + elem.addContent(Constants.FO_FLOW); + + elem = elements[Constants.FO_LAYOUT_MASTER_SET]; + elem.addProperty(Constants.PR_MASTER_NAME); + elem.addContent(Constants.FO_SIMPLE_PAGE_MASTER); + elem.addContent(Constants.FO_PAGE_SEQUENCE_MASTER); + + elem = elements[Constants.FO_PAGE_SEQUENCE_MASTER]; + elem.addProperty(Constants.PR_MASTER_NAME); + elem.addContent(Constants.FO_SINGLE_PAGE_MASTER_REFERENCE); + elem.addContent(Constants.FO_REPEATABLE_PAGE_MASTER_REFERENCE); + elem.addContent(Constants.FO_REPEATABLE_PAGE_MASTER_ALTERNATIVES); + + elem = elements[Constants.FO_SINGLE_PAGE_MASTER_REFERENCE]; + elem.addProperty(Constants.PR_MASTER_REFERENCE); + + elem = elements[Constants.FO_REPEATABLE_PAGE_MASTER_REFERENCE]; + elem.addProperty(Constants.PR_MASTER_REFERENCE); + elem.addProperty(Constants.PR_MAXIMUM_REPEATS); + + elem = elements[Constants.FO_REPEATABLE_PAGE_MASTER_ALTERNATIVES]; + elem.addProperty(Constants.PR_MAXIMUM_REPEATS); + elem.addContent(Constants.FO_CONDITIONAL_PAGE_MASTER_REFERENCE); + + elem = elements[Constants.FO_CONDITIONAL_PAGE_MASTER_REFERENCE]; + elem.addProperty(Constants.PR_MASTER_REFERENCE); + elem.addProperty(Constants.PR_PAGE_POSITION); + elem.addProperty(Constants.PR_ODD_OR_EVEN); + elem.addProperty(Constants.PR_BLANK_OR_NOT_BLANK); + + elem = elements[Constants.FO_SIMPLE_PAGE_MASTER]; + elem.addProperties(CommonMarginPropertiesBlock); + elem.addProperty(Constants.PR_MASTER_NAME); + elem.addProperty(Constants.PR_PAGE_HEIGHT); + elem.addProperty(Constants.PR_PAGE_WIDTH); + elem.addProperty(Constants.PR_REFERENCE_ORIENTATION); + elem.addProperty(Constants.PR_WRITING_MODE); + elem.addContent(Constants.FO_REGION_BODY); + elem.addContent(Constants.FO_REGION_BEFORE); + elem.addContent(Constants.FO_REGION_AFTER); + elem.addContent(Constants.FO_REGION_START); + elem.addContent(Constants.FO_REGION_END); + + elem = elements[Constants.FO_REGION_BODY]; + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonMarginPropertiesBlock); + elem.addProperty(Constants.PR_CLIP); + elem.addProperty(Constants.PR_COLUMN_COUNT); + elem.addProperty(Constants.PR_COLUMN_GAP); + elem.addProperty(Constants.PR_DISPLAY_ALIGN); + elem.addProperty(Constants.PR_OVERFLOW); + elem.addProperty(Constants.PR_REGION_NAME); + elem.addProperty(Constants.PR_REFERENCE_ORIENTATION); + elem.addProperty(Constants.PR_WRITING_MODE); + + elem = elements[Constants.FO_REGION_BEFORE]; + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperty(Constants.PR_CLIP); + elem.addProperty(Constants.PR_DISPLAY_ALIGN); + elem.addProperty(Constants.PR_EXTENT); + elem.addProperty(Constants.PR_OVERFLOW); + elem.addProperty(Constants.PR_PRECEDENCE); + elem.addProperty(Constants.PR_REGION_NAME); + elem.addProperty(Constants.PR_REFERENCE_ORIENTATION); + elem.addProperty(Constants.PR_WRITING_MODE); + + elem = elements[Constants.FO_REGION_AFTER]; + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperty(Constants.PR_CLIP); + elem.addProperty(Constants.PR_DISPLAY_ALIGN); + elem.addProperty(Constants.PR_EXTENT); + elem.addProperty(Constants.PR_OVERFLOW); + elem.addProperty(Constants.PR_PRECEDENCE); + elem.addProperty(Constants.PR_REGION_NAME); + elem.addProperty(Constants.PR_REFERENCE_ORIENTATION); + elem.addProperty(Constants.PR_WRITING_MODE); + + elem = elements[Constants.FO_REGION_START]; + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperty(Constants.PR_CLIP); + elem.addProperty(Constants.PR_DISPLAY_ALIGN); + elem.addProperty(Constants.PR_EXTENT); + elem.addProperty(Constants.PR_OVERFLOW); + elem.addProperty(Constants.PR_REGION_NAME); + elem.addProperty(Constants.PR_REFERENCE_ORIENTATION); + elem.addProperty(Constants.PR_WRITING_MODE); + + elem = elements[Constants.FO_REGION_END]; + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperty(Constants.PR_CLIP); + elem.addProperty(Constants.PR_DISPLAY_ALIGN); + elem.addProperty(Constants.PR_EXTENT); + elem.addProperty(Constants.PR_OVERFLOW); + elem.addProperty(Constants.PR_REGION_NAME); + elem.addProperty(Constants.PR_REFERENCE_ORIENTATION); + elem.addProperty(Constants.PR_WRITING_MODE); + + elem = elements[Constants.FO_FLOW]; + elem.addProperty(Constants.PR_FLOW_NAME); + elem.addContent(block_elems); + + elem = elements[Constants.FO_STATIC_CONTENT]; + elem.addProperty(Constants.PR_FLOW_NAME); + elem.addContent(block_elems); + + elem = elements[Constants.FO_TITLE]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonFontProperties); + elem.addProperties(CommonMarginPropertiesInline); + elem.addProperty(Constants.PR_COLOR); + elem.addProperty(Constants.PR_LINE_HEIGHT); + elem.addProperty(Constants.PR_VISIBILITY); + elem.addContent(inline_elems); + + elem = elements[Constants.FO_BLOCK]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonFontProperties); + elem.addProperties(CommonHyphenationProperties); + elem.addProperties(CommonMarginPropertiesBlock); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_PAGE_BREAK_AFTER); + elem.addProperty(Constants.PR_PAGE_BREAK_BEFORE); + elem.addProperty(Constants.PR_BREAK_AFTER); + elem.addProperty(Constants.PR_BREAK_BEFORE); + elem.addProperty(Constants.PR_COLOR); + elem.addProperty(Constants.PR_TEXT_DEPTH); + elem.addProperty(Constants.PR_TEXT_ALTITUDE); + elem.addProperty(Constants.PR_HYPHENATION_KEEP); + elem.addProperty(Constants.PR_HYPHENATION_LADDER_COUNT); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_PAGE_BREAK_INSIDE); + elem.addProperty(Constants.PR_KEEP_TOGETHER); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_LAST_LINE_END_INDENT); + elem.addProperty(Constants.PR_LINEFEED_TREATMENT); + elem.addProperty(Constants.PR_LINE_HEIGHT); + elem.addProperty(Constants.PR_LINE_HEIGHT_SHIFT_ADJUSTMENT); + elem.addProperty(Constants.PR_LINE_STACKING_STRATEGY); + elem.addProperty(Constants.PR_ORPHANS); + elem.addProperty(Constants.PR_WHITE_SPACE_TREATMENT); + elem.addProperty(Constants.PR_SPAN); + elem.addProperty(Constants.PR_TEXT_ALIGN); + elem.addProperty(Constants.PR_TEXT_ALIGN_LAST); + elem.addProperty(Constants.PR_TEXT_INDENT); + elem.addProperty(Constants.PR_VISIBILITY); + elem.addProperty(Constants.PR_WHITE_SPACE_COLLAPSE); + elem.addProperty(Constants.PR_WIDOWS); + elem.addProperty(Constants.PR_WRAP_OPTION); + elem.addContent(inline_elems); + elem.addContent(block_elems); + + elem = elements[Constants.FO_BLOCK_CONTAINER]; + elem.addProperties(CommonAbsolutePositionProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonMarginPropertiesBlock); + elem.addProperty(Constants.PR_BLOCK_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_PAGE_BREAK_AFTER); + elem.addProperty(Constants.PR_PAGE_BREAK_BEFORE); + elem.addProperty(Constants.PR_BREAK_AFTER); + elem.addProperty(Constants.PR_BREAK_BEFORE); + elem.addProperty(Constants.PR_CLIP); + elem.addProperty(Constants.PR_DISPLAY_ALIGN); + elem.addProperty(Constants.PR_HEIGHT); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_INLINE_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_PAGE_BREAK_INSIDE); + elem.addProperty(Constants.PR_KEEP_TOGETHER); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_OVERFLOW); + elem.addProperty(Constants.PR_REFERENCE_ORIENTATION); + elem.addProperty(Constants.PR_SPAN); + elem.addProperty(Constants.PR_WIDTH); + elem.addProperty(Constants.PR_WRITING_MODE); + elem.addProperty(Constants.PR_Z_INDEX); + elem.addContent(block_elems); + + elem = elements[Constants.FO_BIDI_OVERRIDE]; + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonFontProperties); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_COLOR); + elem.addProperty(Constants.PR_DIRECTION); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_LETTER_SPACING); + elem.addProperty(Constants.PR_LINE_HEIGHT); + elem.addProperty(Constants.PR_SCORE_SPACES); + elem.addProperty(Constants.PR_UNICODE_BIDI); + elem.addProperty(Constants.PR_WORD_SPACING); + elem.addContent(inline_elems); + elem.addContent(block_elems); + + elem = elements[Constants.FO_CHARACTER]; + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonFontProperties); + elem.addProperties(CommonHyphenationProperties); + elem.addProperties(CommonMarginPropertiesInline); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_VERTICAL_ALIGN); + elem.addProperty(Constants.PR_ALIGNMENT_ADJUST); + elem.addProperty(Constants.PR_TREAT_AS_WORD_SPACE); + elem.addProperty(Constants.PR_ALIGNMENT_BASELINE); + elem.addProperty(Constants.PR_BASELINE_SHIFT); + elem.addProperty(Constants.PR_CHARACTER); + elem.addProperty(Constants.PR_COLOR); + elem.addProperty(Constants.PR_DOMINANT_BASELINE); + elem.addProperty(Constants.PR_TEXT_DEPTH); + elem.addProperty(Constants.PR_TEXT_ALTITUDE); + elem.addProperty(Constants.PR_GLYPH_ORIENTATION_HORIZONTAL); + elem.addProperty(Constants.PR_GLYPH_ORIENTATION_VERTICAL); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_LETTER_SPACING); + elem.addProperty(Constants.PR_LINE_HEIGHT); + elem.addProperty(Constants.PR_SCORE_SPACES); + elem.addProperty(Constants.PR_SUPPRESS_AT_LINE_BREAK); + elem.addProperty(Constants.PR_TEXT_DECORATION); + elem.addProperty(Constants.PR_TEXT_SHADOW); + elem.addProperty(Constants.PR_TEXT_TRANSFORM); + elem.addProperty(Constants.PR_VISIBILITY); + elem.addProperty(Constants.PR_WORD_SPACING); + + elem = elements[Constants.FO_INITIAL_PROPERTY_SET]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonFontProperties); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_COLOR); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_LETTER_SPACING); + elem.addProperty(Constants.PR_LINE_HEIGHT); + elem.addProperty(Constants.PR_SCORE_SPACES); + elem.addProperty(Constants.PR_TEXT_DECORATION); + elem.addProperty(Constants.PR_TEXT_SHADOW); + elem.addProperty(Constants.PR_TEXT_TRANSFORM); + elem.addProperty(Constants.PR_WORD_SPACING); + + elem = elements[Constants.FO_EXTERNAL_GRAPHIC]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonMarginPropertiesInline); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_VERTICAL_ALIGN); + elem.addProperty(Constants.PR_ALIGNMENT_ADJUST); + elem.addProperty(Constants.PR_ALIGNMENT_BASELINE); + elem.addProperty(Constants.PR_BASELINE_SHIFT); + elem.addProperty(Constants.PR_BLOCK_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_CLIP); + elem.addProperty(Constants.PR_CONTENT_HEIGHT); + elem.addProperty(Constants.PR_CONTENT_TYPE); + elem.addProperty(Constants.PR_CONTENT_WIDTH); + elem.addProperty(Constants.PR_DISPLAY_ALIGN); + elem.addProperty(Constants.PR_DOMINANT_BASELINE); + elem.addProperty(Constants.PR_HEIGHT); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_INLINE_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_LINE_HEIGHT); + elem.addProperty(Constants.PR_OVERFLOW); + elem.addProperty(Constants.PR_SCALING); + elem.addProperty(Constants.PR_SCALING_METHOD); + elem.addProperty(Constants.PR_SRC); + elem.addProperty(Constants.PR_TEXT_ALIGN); + elem.addProperty(Constants.PR_WIDTH); + + elem = elements[Constants.FO_INSTREAM_FOREIGN_OBJECT]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonMarginPropertiesInline); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_VERTICAL_ALIGN); + elem.addProperty(Constants.PR_ALIGNMENT_ADJUST); + elem.addProperty(Constants.PR_ALIGNMENT_BASELINE); + elem.addProperty(Constants.PR_BASELINE_SHIFT); + elem.addProperty(Constants.PR_BLOCK_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_CLIP); + elem.addProperty(Constants.PR_CONTENT_HEIGHT); + elem.addProperty(Constants.PR_CONTENT_TYPE); + elem.addProperty(Constants.PR_CONTENT_WIDTH); + elem.addProperty(Constants.PR_DISPLAY_ALIGN); + elem.addProperty(Constants.PR_DOMINANT_BASELINE); + elem.addProperty(Constants.PR_HEIGHT); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_INLINE_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_LINE_HEIGHT); + elem.addProperty(Constants.PR_OVERFLOW); + elem.addProperty(Constants.PR_SCALING); + elem.addProperty(Constants.PR_SCALING_METHOD); + elem.addProperty(Constants.PR_TEXT_ALIGN); + elem.addProperty(Constants.PR_WIDTH); + + elem = elements[Constants.FO_INLINE]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonFontProperties); + elem.addProperties(CommonMarginPropertiesInline); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_VERTICAL_ALIGN); + elem.addProperty(Constants.PR_ALIGNMENT_ADJUST); + elem.addProperty(Constants.PR_ALIGNMENT_BASELINE); + elem.addProperty(Constants.PR_BASELINE_SHIFT); + elem.addProperty(Constants.PR_BLOCK_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_COLOR); + elem.addProperty(Constants.PR_DOMINANT_BASELINE); + elem.addProperty(Constants.PR_HEIGHT); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_INLINE_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_PAGE_BREAK_INSIDE); + elem.addProperty(Constants.PR_KEEP_TOGETHER); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_LINE_HEIGHT); + elem.addProperty(Constants.PR_TEXT_DECORATION); + elem.addProperty(Constants.PR_VISIBILITY); + elem.addProperty(Constants.PR_WIDTH); + elem.addProperty(Constants.PR_WRAP_OPTION); + elem.addContent(inline_elems); + elem.addContent(block_elems); + + elem = elements[Constants.FO_INLINE_CONTAINER]; + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonMarginPropertiesInline); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_VERTICAL_ALIGN); + elem.addProperty(Constants.PR_ALIGNMENT_ADJUST); + elem.addProperty(Constants.PR_ALIGNMENT_BASELINE); + elem.addProperty(Constants.PR_BASELINE_SHIFT); + elem.addProperty(Constants.PR_BLOCK_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_CLIP); + elem.addProperty(Constants.PR_DISPLAY_ALIGN); + elem.addProperty(Constants.PR_DOMINANT_BASELINE); + elem.addProperty(Constants.PR_HEIGHT); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_INLINE_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_PAGE_BREAK_INSIDE); + elem.addProperty(Constants.PR_KEEP_TOGETHER); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_LINE_HEIGHT); + elem.addProperty(Constants.PR_OVERFLOW); + elem.addProperty(Constants.PR_REFERENCE_ORIENTATION); + elem.addProperty(Constants.PR_WIDTH); + elem.addProperty(Constants.PR_WRITING_MODE); + elem.addContent(block_elems); + + elem = elements[Constants.FO_LEADER]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonFontProperties); + elem.addProperties(CommonMarginPropertiesInline); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_VERTICAL_ALIGN); + elem.addProperty(Constants.PR_ALIGNMENT_ADJUST); + elem.addProperty(Constants.PR_ALIGNMENT_BASELINE); + elem.addProperty(Constants.PR_BASELINE_SHIFT); + elem.addProperty(Constants.PR_COLOR); + elem.addProperty(Constants.PR_DOMINANT_BASELINE); + elem.addProperty(Constants.PR_TEXT_DEPTH); + elem.addProperty(Constants.PR_TEXT_ALTITUDE); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_LEADER_ALIGNMENT); + elem.addProperty(Constants.PR_LEADER_LENGTH); + elem.addProperty(Constants.PR_LEADER_PATTERN); + elem.addProperty(Constants.PR_LEADER_PATTERN_WIDTH); + elem.addProperty(Constants.PR_RULE_STYLE); + elem.addProperty(Constants.PR_RULE_THICKNESS); + elem.addProperty(Constants.PR_LETTER_SPACING); + elem.addProperty(Constants.PR_LINE_HEIGHT); + elem.addProperty(Constants.PR_TEXT_SHADOW); + elem.addProperty(Constants.PR_VISIBILITY); + elem.addProperty(Constants.PR_WORD_SPACING); + elem.addContent(inline_elems); + + elem = elements[Constants.FO_PAGE_NUMBER]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonFontProperties); + elem.addProperties(CommonMarginPropertiesInline); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_VERTICAL_ALIGN); + elem.addProperty(Constants.PR_ALIGNMENT_ADJUST); + elem.addProperty(Constants.PR_ALIGNMENT_BASELINE); + elem.addProperty(Constants.PR_BASELINE_SHIFT); + elem.addProperty(Constants.PR_DOMINANT_BASELINE); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_LETTER_SPACING); + elem.addProperty(Constants.PR_LINE_HEIGHT); + elem.addProperty(Constants.PR_SCORE_SPACES); + elem.addProperty(Constants.PR_TEXT_ALTITUDE); + elem.addProperty(Constants.PR_TEXT_DECORATION); + elem.addProperty(Constants.PR_TEXT_DEPTH); + elem.addProperty(Constants.PR_TEXT_SHADOW); + elem.addProperty(Constants.PR_TEXT_TRANSFORM); + elem.addProperty(Constants.PR_VISIBILITY); + elem.addProperty(Constants.PR_WORD_SPACING); + elem.addProperty(Constants.PR_WRAP_OPTION); + + elem = elements[Constants.FO_PAGE_NUMBER_CITATION]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonFontProperties); + elem.addProperties(CommonMarginPropertiesInline); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_VERTICAL_ALIGN); + elem.addProperty(Constants.PR_ALIGNMENT_ADJUST); + elem.addProperty(Constants.PR_ALIGNMENT_BASELINE); + elem.addProperty(Constants.PR_BASELINE_SHIFT); + elem.addProperty(Constants.PR_DOMINANT_BASELINE); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_LETTER_SPACING); + elem.addProperty(Constants.PR_LINE_HEIGHT); + elem.addProperty(Constants.PR_REF_ID); + elem.addProperty(Constants.PR_SCORE_SPACES); + elem.addProperty(Constants.PR_TEXT_ALTITUDE); + elem.addProperty(Constants.PR_TEXT_DECORATION); + elem.addProperty(Constants.PR_TEXT_DEPTH); + elem.addProperty(Constants.PR_TEXT_SHADOW); + elem.addProperty(Constants.PR_TEXT_TRANSFORM); + elem.addProperty(Constants.PR_VISIBILITY); + elem.addProperty(Constants.PR_WORD_SPACING); + elem.addProperty(Constants.PR_WRAP_OPTION); + + elem = elements[Constants.FO_TABLE_AND_CAPTION]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonMarginPropertiesBlock); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_PAGE_BREAK_AFTER); + elem.addProperty(Constants.PR_PAGE_BREAK_BEFORE); + elem.addProperty(Constants.PR_BREAK_AFTER); + elem.addProperty(Constants.PR_BREAK_BEFORE); + elem.addProperty(Constants.PR_CAPTION_SIDE); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_PAGE_BREAK_INSIDE); + elem.addProperty(Constants.PR_KEEP_TOGETHER); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_TEXT_ALIGN); + elem.addContent(Constants.FO_TABLE_CAPTION); + elem.addContent(Constants.FO_TABLE); + + elem = elements[Constants.FO_TABLE]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonMarginPropertiesBlock); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_BLOCK_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_BORDER_AFTER_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_BEFORE_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_SPACING); + elem.addProperty(Constants.PR_BORDER_COLLAPSE); + elem.addProperty(Constants.PR_BORDER_END_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_SEPARATION); + elem.addProperty(Constants.PR_BORDER_START_PRECEDENCE); + elem.addProperty(Constants.PR_PAGE_BREAK_AFTER); + elem.addProperty(Constants.PR_PAGE_BREAK_BEFORE); + elem.addProperty(Constants.PR_BREAK_AFTER); + elem.addProperty(Constants.PR_BREAK_BEFORE); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_INLINE_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_HEIGHT); + elem.addProperty(Constants.PR_PAGE_BREAK_INSIDE); + elem.addProperty(Constants.PR_KEEP_TOGETHER); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_TABLE_LAYOUT); + elem.addProperty(Constants.PR_TABLE_OMIT_FOOTER_AT_BREAK); + elem.addProperty(Constants.PR_TABLE_OMIT_HEADER_AT_BREAK); + elem.addProperty(Constants.PR_WIDTH); + elem.addProperty(Constants.PR_WRITING_MODE); + elem.addContent(Constants.FO_TABLE_COLUMN); + elem.addContent(Constants.FO_TABLE_HEADER); + elem.addContent(Constants.FO_TABLE_FOOTER); + elem.addContent(Constants.FO_TABLE_BODY); + + elem = elements[Constants.FO_TABLE_COLUMN]; + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperty(Constants.PR_BORDER_AFTER_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_BEFORE_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_END_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_START_PRECEDENCE); + elem.addProperty(Constants.PR_COLUMN_NUMBER); + elem.addProperty(Constants.PR_COLUMN_WIDTH); + elem.addProperty(Constants.PR_NUMBER_COLUMNS_REPEATED); + elem.addProperty(Constants.PR_NUMBER_COLUMNS_SPANNED); + elem.addProperty(Constants.PR_VISIBILITY); + + elem = elements[Constants.FO_TABLE_CAPTION]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_BLOCK_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_HEIGHT); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_INLINE_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_PAGE_BREAK_INSIDE); + elem.addProperty(Constants.PR_KEEP_TOGETHER); + elem.addProperty(Constants.PR_WIDTH); + elem.addContent(block_elems); + + elem = elements[Constants.FO_TABLE_HEADER]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_BORDER_AFTER_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_BEFORE_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_END_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_START_PRECEDENCE); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_VISIBILITY); + elem.addContent(Constants.FO_TABLE_ROW); + elem.addContent(Constants.FO_TABLE_CELL); + + elem = elements[Constants.FO_TABLE_FOOTER]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_BORDER_AFTER_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_BEFORE_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_END_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_START_PRECEDENCE); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_VISIBILITY); + elem.addContent(Constants.FO_TABLE_ROW); + elem.addContent(Constants.FO_TABLE_CELL); + + elem = elements[Constants.FO_TABLE_BODY]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_BORDER_AFTER_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_BEFORE_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_END_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_START_PRECEDENCE); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_VISIBILITY); + elem.addContent(Constants.FO_TABLE_ROW); + elem.addContent(Constants.FO_TABLE_CELL); + + elem = elements[Constants.FO_TABLE_ROW]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperty(Constants.PR_BLOCK_PROGRESSION_DIMENSION); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_BORDER_AFTER_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_BEFORE_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_END_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_START_PRECEDENCE); + elem.addProperty(Constants.PR_PAGE_BREAK_AFTER); + elem.addProperty(Constants.PR_PAGE_BREAK_BEFORE); + elem.addProperty(Constants.PR_BREAK_AFTER); + elem.addProperty(Constants.PR_BREAK_BEFORE); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_HEIGHT); + elem.addProperty(Constants.PR_PAGE_BREAK_INSIDE); + elem.addProperty(Constants.PR_KEEP_TOGETHER); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_VISIBILITY); + elem.addContent(Constants.FO_TABLE_CELL); + + elem = elements[Constants.FO_TABLE_CELL]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_BORDER_AFTER_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_BEFORE_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_END_PRECEDENCE); + elem.addProperty(Constants.PR_BORDER_START_PRECEDENCE); + elem.addProperty(Constants.PR_BLOCK_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_COLUMN_NUMBER); + elem.addProperty(Constants.PR_DISPLAY_ALIGN); + elem.addProperty(Constants.PR_RELATIVE_ALIGN); + elem.addProperty(Constants.PR_EMPTY_CELLS); + elem.addProperty(Constants.PR_ENDS_ROW); + elem.addProperty(Constants.PR_HEIGHT); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_INLINE_PROGRESSION_DIMENSION); + elem.addProperty(Constants.PR_NUMBER_COLUMNS_SPANNED); + elem.addProperty(Constants.PR_NUMBER_ROWS_SPANNED); + elem.addProperty(Constants.PR_STARTS_ROW); + elem.addProperty(Constants.PR_WIDTH); + elem.addContent(block_elems); + + elem = elements[Constants.FO_LIST_BLOCK]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonMarginPropertiesBlock); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_PAGE_BREAK_AFTER); + elem.addProperty(Constants.PR_PAGE_BREAK_BEFORE); + elem.addProperty(Constants.PR_BREAK_AFTER); + elem.addProperty(Constants.PR_BREAK_BEFORE); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_PAGE_BREAK_INSIDE); + elem.addProperty(Constants.PR_KEEP_TOGETHER); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_PROVISIONAL_DISTANCE_BETWEEN_STARTS); + elem.addProperty(Constants.PR_PROVISIONAL_LABEL_SEPARATION); + elem.addContent(Constants.FO_LIST_ITEM); + + elem = elements[Constants.FO_LIST_ITEM]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonMarginPropertiesBlock); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_PAGE_BREAK_AFTER); + elem.addProperty(Constants.PR_PAGE_BREAK_BEFORE); + elem.addProperty(Constants.PR_BREAK_AFTER); + elem.addProperty(Constants.PR_BREAK_BEFORE); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_PAGE_BREAK_INSIDE); + elem.addProperty(Constants.PR_KEEP_TOGETHER); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_RELATIVE_ALIGN); + elem.addContent(Constants.FO_LIST_ITEM_LABEL); + elem.addContent(Constants.FO_LIST_ITEM_BODY); + + elem = elements[Constants.FO_LIST_ITEM_BODY]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_PAGE_BREAK_INSIDE); + elem.addProperty(Constants.PR_KEEP_TOGETHER); + elem.addContent(block_elems); + + elem = elements[Constants.FO_LIST_ITEM_LABEL]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_PAGE_BREAK_INSIDE); + elem.addProperty(Constants.PR_KEEP_TOGETHER); + elem.addContent(block_elems); + + elem = elements[Constants.FO_BASIC_LINK]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperties(CommonAuralProperties); + elem.addProperties(CommonBorderPaddingBackgroundProperties); + elem.addProperties(CommonMarginPropertiesInline); + elem.addProperties(CommonRelativePositionProperties); + elem.addProperty(Constants.PR_VERTICAL_ALIGN); + elem.addProperty(Constants.PR_ALIGNMENT_ADJUST); + elem.addProperty(Constants.PR_ALIGNMENT_BASELINE); + elem.addProperty(Constants.PR_BASELINE_SHIFT); + elem.addProperty(Constants.PR_DESTINATION_PLACEMENT_OFFSET); + elem.addProperty(Constants.PR_DOMINANT_BASELINE); + elem.addProperty(Constants.PR_EXTERNAL_DESTINATION); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_INDICATE_DESTINATION); + elem.addProperty(Constants.PR_INTERNAL_DESTINATION); + elem.addProperty(Constants.PR_PAGE_BREAK_INSIDE); + elem.addProperty(Constants.PR_KEEP_TOGETHER); + elem.addProperty(Constants.PR_KEEP_WITH_NEXT); + elem.addProperty(Constants.PR_KEEP_WITH_PREVIOUS); + elem.addProperty(Constants.PR_LINE_HEIGHT); + elem.addProperty(Constants.PR_SHOW_DESTINATION); + elem.addProperty(Constants.PR_TARGET_PROCESSING_CONTEXT); + elem.addProperty(Constants.PR_TARGET_PRESENTATION_CONTEXT); + elem.addProperty(Constants.PR_TARGET_STYLESHEET); + elem.addContent(inline_elems); + elem.addContent(block_elems); + + elem = elements[Constants.FO_MULTI_SWITCH]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperty(Constants.PR_AUTO_RESTORE); + elem.addProperty(Constants.PR_ID); + elem.addContent(Constants.FO_MULTI_CASE); + + elem = elements[Constants.FO_MULTI_CASE]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_STARTING_STATE); + elem.addProperty(Constants.PR_CASE_NAME); + elem.addProperty(Constants.PR_CASE_TITLE); + elem.addContent(inline_elems); + elem.addContent(block_elems); + + elem = elements[Constants.FO_MULTI_TOGGLE]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_SWITCH_TO); + elem.addContent(inline_elems); + elem.addContent(block_elems); + + elem = elements[Constants.FO_MULTI_PROPERTIES]; + elem.addProperties(CommonAccessibilityProperties); + elem.addProperty(Constants.PR_ID); + elem.addContent(Constants.FO_MULTI_PROPERTY_SET); + elem.addContent(Constants.FO_WRAPPER); + + elem = elements[Constants.FO_MULTI_PROPERTY_SET]; + elem.addProperty(Constants.PR_ID); + elem.addProperty(Constants.PR_ACTIVE_STATE); + + elem = elements[Constants.FO_FLOAT]; + elem.addProperty(Constants.PR_FLOAT); + elem.addProperty(Constants.PR_CLEAR); + elem.addContent(block_elems); + + elem = elements[Constants.FO_FOOTNOTE]; + elem.addProperties(CommonAccessibilityProperties); + elem.addContent(Constants.FO_INLINE); + elem.addContent(Constants.FO_FOOTNOTE_BODY); + + elem = elements[Constants.FO_FOOTNOTE_BODY]; + elem.addProperties(CommonAccessibilityProperties); + elem.addContent(block_elems); + + elem = elements[Constants.FO_WRAPPER]; + elem.addProperty(Constants.PR_ID); + elem.addContent(inline_elems); + elem.addContent(block_elems); + + elem = elements[Constants.FO_MARKER]; + elem.addProperty(Constants.PR_MARKER_CLASS_NAME); + elem.addContent(inline_elems); + elem.addContent(block_elems); + + elem = elements[Constants.FO_RETRIEVE_MARKER]; + elem.addProperty(Constants.PR_RETRIEVE_CLASS_NAME); + elem.addProperty(Constants.PR_RETRIEVE_POSITION); + elem.addProperty(Constants.PR_RETRIEVE_BOUNDARY); + + + + // Merge the attributes from the children into the parent. + for (boolean dirty = true; dirty; ) { + dirty = false; + for (int i = 1; i < elements.length; i++) { + dirty = dirty || elements[i].merge(); + } + } + // Calculate the sparse indices for each element. + for (int i = 1; i < elements.length; i++) { + mapping[i] = makeSparseIndices(elements[i].valid); + } + } - int propIndex = 1; - for (int i = set.nextSetBit(0); i >= 0; i = set.nextSetBit(i+1)) { - indices[i] = (short) propIndex++; + /** + * Turn a BitSet into an array of shorts with the first element + * on the array the number of set bits in the BitSet. + */ + private static short[] makeSparseIndices(BitSet set) { + short[] indices = new short[Constants.PROPERTY_COUNT+1]; + int j = 1; + for (int i = 0; i < Constants.PROPERTY_COUNT+1; i++) { + if (set.get(i)) { + indices[i] = (short) j++; + } } - + indices[0] = (short)j; return indices; } - private static boolean mergeContent(BitSet node, BitSet content, - boolean loop) - { - int c = node.cardinality(); - node.or(content); - if (c == node.cardinality()) - return loop; - return true; - } public static short[] getPropertySet(int elementId) { - if (mapping == null) - initialize(); + if (mapping == null) { + mapping = new short[Constants.ELEMENT_COUNT+1][]; + PropertySets ps = new PropertySets(); + ps.initializeElements(); + ps.initializeCommon(); + ps.initialize(); + } return mapping[elementId]; } + + /** + * An object that represent the properties and contents of a fo element + */ + class Element { + BitSet relevant = new BitSet(); + BitSet valid = new BitSet(); + int elementId; + ArrayList children; + + Element(int elementId) { + this.elementId = elementId; + } + + /** + * Add a single property to the element. + */ + public void addProperty(int propId) { + relevant.set(propId); + valid.set(propId); + } + + /** + * Add a set of properties to the element. + */ + public void addProperties(BitSet properties) { + relevant.or(properties); + valid.or(properties); + } + + /** + * Add a single fo element as a content child. + */ + public void addContent(int elementId) { + if (children == null) { + children = new ArrayList(); + } + children.add(elements[elementId]); + } + + /** + * Add a set of fo elements as content children. + */ + public void addContent(BitSet elements) { + for (int i = 0; i < elements.size(); i++) { + if (elements.get(i)) { + addContent(i); + } + } + } + + /** + * Merge the properties from the children into the set of valid + * properties. Return true if at least one property could be added. + */ + public boolean merge() { + if (children == null) { + return false; + } + boolean dirty = false; + for (int i = 0; i < children.size(); i++) { + Element child = (Element) children.get(i); + BitSet childValid = child.valid; + int n = childValid.length(); + for (int j = 0; j < n; j++) { + if (childValid.get(j) && !valid.get(j)) { + dirty = true; + valid.set(j); + } + } + } + return dirty; + } + } } -- 2.39.5