You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ju...@apache.org on 2010/09/03 11:57:27 UTC
svn commit: r992248 [3/4] - in /pdfbox/trunk:
fontbox/src/main/site/resources/images/
pdfbox/src/main/java/org/apache/pdfbox/filter/
pdfbox/src/main/java/org/apache/pdfbox/pdmodel/common/
pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchan...
Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDLayoutAttributeObject.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDLayoutAttributeObject.java?rev=992248&r1=992247&r2=992248&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDLayoutAttributeObject.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/taggedpdf/PDLayoutAttributeObject.java Fri Sep 3 09:57:26 2010
@@ -1,1715 +1,1715 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.pdfbox.pdmodel.documentinterchange.taggedpdf;
-
-import org.apache.pdfbox.cos.COSArray;
-import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.cos.COSDictionary;
-import org.apache.pdfbox.pdmodel.common.PDRectangle;
-import org.apache.pdfbox.pdmodel.graphics.color.PDGamma;
-
-/**
- * A Layout attribute object.
- *
- * @author <a href="mailto:Johannes%20Koch%20%3Ckoch@apache.org%3E">Johannes Koch</a>
- * @version $Revision: $
- */
-public class PDLayoutAttributeObject extends PDStandardAttributeObject
-{
-
- /**
- * standard attribute owner: Layout
- */
- public static final String OWNER_LAYOUT = "Layout";
-
- private static final String PLACEMENT = "Placement";
- private static final String WRITING_MODE = "WritingMode";
- private static final String BACKGROUND_COLOR = "BackgroundColor";
- private static final String BORDER_COLOR = "BorderColor";
- private static final String BORDER_STYLE = "BorderStyle";
- private static final String BORDER_THICKNESS = "BorderThickness";
- private static final String PADDING = "Padding";
- private static final String COLOR = "Color";
- private static final String SPACE_BEFORE = "SpaceBefore";
- private static final String SPACE_AFTER = "SpaceAfter";
- private static final String START_INDENT = "StartIndent";
- private static final String END_INDENT = "EndIndent";
- private static final String TEXT_INDENT = "TextIndent";
- private static final String TEXT_ALIGN = "TextAlign";
- private static final String BBOX = "BBox";
- private static final String WIDTH = "Width";
- private static final String HEIGHT = "Height";
- private static final String BLOCK_ALIGN = "BlockAlign";
- private static final String INLINE_ALIGN = "InlineAlign";
- private static final String T_BORDER_STYLE = "TBorderStyle";
- private static final String T_PADDING = "TPadding";
- private static final String BASELINE_SHIFT = "BaselineShift";
- private static final String LINE_HEIGHT = "LineHeight";
- private static final String TEXT_DECORATION_COLOR = "TextDecorationColor";
- private static final String TEXT_DECORATION_THICKNESS = "TextDecorationThickness";
- private static final String TEXT_DECORATION_TYPE = "TextDecorationType";
- private static final String RUBY_ALIGN = "RubyAlign";
- private static final String RUBY_POSITION = "RubyPosition";
- private static final String GLYPH_ORIENTATION_VERTICAL = "GlyphOrientationVertical";
- private static final String COLUMN_COUNT = "ColumnCount";
- private static final String COLUMN_GAP = "ColumnGap";
- private static final String COLUMN_WIDTHS = "ColumnWidths";
-
- /**
- * Placement: Block: Stacked in the block-progression direction within an
- * enclosing reference area or parent BLSE.
- */
- public static final String PLACEMENT_BLOCK = "Block";
- /**
- * Placement: Inline: Packed in the inline-progression direction within an
- * enclosing BLSE.
- */
- public static final String PLACEMENT_INLINE = "Inline";
- /**
- * Placement: Before: Placed so that the before edge of the elementâs
- * allocation rectangle coincides with that of the nearest enclosing
- * reference area. The element may float, if necessary, to achieve the
- * specified placement. The element shall be treated as a block occupying
- * the full extent of the enclosing reference area in the inline direction.
- * Other content shall be stacked so as to begin at the after edge of the
- * elementâs allocation rectangle.
- */
- public static final String PLACEMENT_BEFORE = "Before";
- /**
- * Placement: Start: Placed so that the start edge of the elementâs
- * allocation rectangle coincides with that of the nearest enclosing
- * reference area. The element may float, if necessary, to achieve the
- * specified placement. Other content that would intrude into the elementâs
- * allocation rectangle shall be laid out as a runaround.
- */
- public static final String PLACEMENT_START = "Start";
- /**
- * Placement: End: Placed so that the end edge of the elementâs allocation
- * rectangle coincides with that of the nearest enclosing reference area.
- * The element may float, if necessary, to achieve the specified placement.
- * Other content that would intrude into the elementâs allocation rectangle
- * shall be laid out as a runaround.
- */
- public static final String PLACEMENT_END = "End";
- /**
- * WritingMode: LrTb: Inline progression from left to right; block
- * progression from top to bottom. This is the typical writing mode for
- * Western writing systems.
- */
- public static final String WRITING_MODE_LRTB = "LrTb";
- /**
- * WritingMode: RlTb: Inline progression from right to left; block
- * progression from top to bottom. This is the typical writing mode for
- * Arabic and Hebrew writing systems.
- */
- public static final String WRITING_MODE_RLTB = "RlTb";
- /**
- * WritingMode: TbRl: Inline progression from top to bottom; block
- * progression from right to left. This is the typical writing mode for
- * Chinese and Japanese writing systems.
- */
- public static final String WRITING_MODE_TBRL = "TbRl";
- /**
- * BorderStyle: None: No border. Forces the computed value of
- * BorderThickness to be 0.
- */
- public static final String BORDER_STYLE_NONE = "None";
- /**
- * BorderStyle: Hidden: Same as {@link #BORDER_STYLE_NONE}, except in terms
- * of border conflict resolution for table elements.
- */
- public static final String BORDER_STYLE_HIDDEN = "Hidden";
- /**
- * BorderStyle: Dotted: The border is a series of dots.
- */
- public static final String BORDER_STYLE_DOTTED = "Dotted";
- /**
- * BorderStyle: Dashed: The border is a series of short line segments.
- */
- public static final String BORDER_STYLE_DASHED = "Dashed";
- /**
- * BorderStyle: Solid: The border is a single line segment.
- */
- public static final String BORDER_STYLE_SOLID = "Solid";
- /**
- * BorderStyle: Double: The border is two solid lines. The sum of the two
- * lines and the space between them equals the value of BorderThickness.
- */
- public static final String BORDER_STYLE_DOUBLE = "Double";
- /**
- * BorderStyle: Groove: The border looks as though it were carved into the
- * canvas.
- */
- public static final String BORDER_STYLE_GROOVE = "Groove";
- /**
- * BorderStyle: Ridge: The border looks as though it were coming out of the
- * canvas (the opposite of {@link #BORDER_STYLE_GROOVE}).
- */
- public static final String BORDER_STYLE_RIDGE = "Ridge";
- /**
- * BorderStyle: Inset: The border makes the entire box look as though it
- * were embedded in the canvas.
- */
- public static final String BORDER_STYLE_INSET = "Inset";
- /**
- * BorderStyle: Outset: The border makes the entire box look as though it
- * were coming out of the canvas (the opposite of {@link #BORDER_STYLE_INSET}.
- */
- public static final String BORDER_STYLE_OUTSET = "Outset";
- /**
- * TextAlign: Start: Aligned with the start edge.
- */
- public static final String TEXT_ALIGN_START = "Start";
- /**
- * TextAlign: Center: Centered between the start and end edges.
- */
- public static final String TEXT_ALIGN_CENTER = "Center";
- /**
- * TextAlign: End: Aligned with the end edge.
- */
- public static final String TEXT_ALIGN_END = "End";
- /**
- * TextAlign: Justify: Aligned with both the start and end edges, with
- * internal spacing within each line expanded, if necessary, to achieve such
- * alignment. The last (or only) line shall be aligned with the start edge
- * only.
- */
- public static final String TEXT_ALIGN_JUSTIFY = "Justify";
- /**
- * Width: Auto
- */
- public static final String WIDTH_AUTO = "Auto";
- /**
- * Height: Auto
- */
- public static final String HEIGHT_AUTO = "Auto";
- /**
- * BlockAlign: Before: Before edge of the first childâs allocation rectangle
- * aligned with that of the table cellâs content rectangle.
- */
- public static final String BLOCK_ALIGN_BEFORE = "Before";
- /**
- * BlockAlign: Middle: Children centered within the table cell. The distance
- * between the before edge of the first childâs allocation rectangle and
- * that of the table cellâs content rectangle shall be the same as the
- * distance between the after edge of the last childâs allocation rectangle
- * and that of the table cellâs content rectangle.
- */
- public static final String BLOCK_ALIGN_MIDDLE = "Middle";
- /**
- * BlockAlign: After: After edge of the last childâs allocation rectangle
- * aligned with that of the table cellâs content rectangle.
- */
- public static final String BLOCK_ALIGN_AFTER = "After";
- /**
- * BlockAlign: Justify: Children aligned with both the before and after
- * edges of the table cellâs content rectangle. The first child shall be
- * placed as described for {@link #BLOCK_ALIGN_BEFORE} and the last child as
- * described for {@link #BLOCK_ALIGN_AFTER}, with equal spacing between the
- * children. If there is only one child, it shall be aligned with the before
- * edge only, as for {@link #BLOCK_ALIGN_BEFORE}.
- */
- public static final String BLOCK_ALIGN_JUSTIFY = "Justify";
- /**
- * InlineAlign: Start: Start edge of each childâs allocation rectangle
- * aligned with that of the table cellâs content rectangle.
- */
- public static final String INLINE_ALIGN_START = "Start";
- /**
- * InlineAlign: Center: Each child centered within the table cell. The
- * distance between the start edges of the childâs allocation rectangle and
- * the table cellâs content rectangle shall be the same as the distance
- * between their end edges.
- */
- public static final String INLINE_ALIGN_CENTER = "Center";
- /**
- * InlineAlign: End: End edge of each childâs allocation rectangle aligned
- * with that of the table cellâs content rectangle.
- */
- public static final String INLINE_ALIGN_END = "End";
- /**
- * LineHeight: NormalAdjust the line height to include any nonzero value
- * specified for BaselineShift.
- */
- public static final String LINE_HEIGHT_NORMAL = "Normal";
- /**
- * LineHeight: Auto: Adjustment for the value of BaselineShift shall not be
- * made.
- */
- public static final String LINE_HEIGHT_AUTO = "Auto";
- /**
- * TextDecorationType: None: No text decoration
- */
- public static final String TEXT_DECORATION_TYPE_NONE = "None";
- /**
- * TextDecorationType: Underline: A line below the text
- */
- public static final String TEXT_DECORATION_TYPE_UNDERLINE = "Underline";
- /**
- * TextDecorationType: Overline: A line above the text
- */
- public static final String TEXT_DECORATION_TYPE_OVERLINE = "Overline";
- /**
- * TextDecorationType: LineThrough: A line through the middle of the text
- */
- public static final String TEXT_DECORATION_TYPE_LINE_THROUGH = "LineThrough";
- /**
- * RubyAlign: Start: The content shall be aligned on the start edge in the
- * inline-progression direction.
- */
- public static final String RUBY_ALIGN_START = "Start";
- /**
- * RubyAlign: Center: The content shall be centered in the
- * inline-progression direction.
- */
- public static final String RUBY_ALIGN_CENTER = "Center";
- /**
- * RubyAlign: End: The content shall be aligned on the end edge in the
- * inline-progression direction.
- */
- public static final String RUBY_ALIGN_END = "End";
- /**
- * RubyAlign: Justify: The content shall be expanded to fill the available
- * width in the inline-progression direction.
- */
- public static final String RUBY_ALIGN_JUSTIFY = "Justify";
- /**
- * RubyAlign: Distribute: The content shall be expanded to fill the
- * available width in the inline-progression direction. However, space shall
- * also be inserted at the start edge and end edge of the text. The spacing
- * shall be distributed using a 1:2:1 (start:infix:end) ratio. It shall be
- * changed to a 0:1:1 ratio if the ruby appears at the start of a text line
- * or to a 1:1:0 ratio if the ruby appears at the end of the text line.
- */
- public static final String RUBY_ALIGN_DISTRIBUTE = "Distribute";
- /**
- * RubyPosition: Before: The RT content shall be aligned along the before
- * edge of the element.
- */
- public static final String RUBY_POSITION_BEFORE = "Before";
- /**
- * RubyPosition: After: The RT content shall be aligned along the after edge
- * of the element.
- */
- public static final String RUBY_POSITION_AFTER = "After";
- /**
- * RubyPosition: Warichu: The RT and associated RP elements shall be
- * formatted as a warichu, following the RB element.
- */
- public static final String RUBY_POSITION_WARICHU = "Warichu";
- /**
- * RubyPosition: Inline: The RT and associated RP elements shall be
- * formatted as a parenthesis comment, following the RB element.
- */
- public static final String RUBY_POSITION_INLINE = "Inline";
- /**
- * GlyphOrientationVertical: Auto
- */
- public static final String GLYPH_ORIENTATION_VERTICAL_AUTO = "Auto";
- /**
- * GlyphOrientationVertical: -180°
- */
- public static final String GLYPH_ORIENTATION_VERTICAL_MINUS_180_DEGREES = "-180";
- /**
- * GlyphOrientationVertical: -90°
- */
- public static final String GLYPH_ORIENTATION_VERTICAL_MINUS_90_DEGREES = "-90";
- /**
- * GlyphOrientationVertical: 0°
- */
- public static final String GLYPH_ORIENTATION_VERTICAL_ZERO_DEGREES = "0";
- /**
- * GlyphOrientationVertical: 90°
- */
- public static final String GLYPH_ORIENTATION_VERTICAL_90_DEGREES = "90";
- /**
- * GlyphOrientationVertical: 180°
- */
- public static final String GLYPH_ORIENTATION_VERTICAL_180_DEGREES = "180";
- /**
- * GlyphOrientationVertical: 270°
- */
- public static final String GLYPH_ORIENTATION_VERTICAL_270_DEGREES = "270";
- /**
- * GlyphOrientationVertical: 360°
- */
- public static final String GLYPH_ORIENTATION_VERTICAL_360_DEGREES = "360";
-
-
- /**
- * Default constructor.
- */
- public PDLayoutAttributeObject()
- {
- this.setOwner(OWNER_LAYOUT);
- }
-
- /**
- * Creates a new Layout attribute object with a given dictionary.
- *
- * @param dictionary the dictionary
- */
- public PDLayoutAttributeObject(COSDictionary dictionary)
- {
- super(dictionary);
- }
-
-
- /**
- * Gets the positioning of the element with respect to the enclosing
- * reference area and other content (Placement). The default value is
- * {@link #PLACEMENT_INLINE}.
- *
- * @return the placement
- */
- public String getPlacement()
- {
- return this.getName(PLACEMENT, PLACEMENT_INLINE);
- }
-
- /**
- * Sets the positioning of the element with respect to the enclosing
- * reference area and other content (Placement). The value should be one of:
- * <ul>
- * <li>{@link #PLACEMENT_BLOCK},</li>
- * <li>{@link #PLACEMENT_INLINE},</li>
- * <li>{@link #PLACEMENT_BEFORE},</li>
- * <li>{@link #PLACEMENT_START},</li>
- * <li>{@link #PLACEMENT_END}.</li>
- * <ul>
- *
- * @param placement the placement
- */
- public void setPlacement(String placement)
- {
- this.setName(PLACEMENT, placement);
- }
-
- /**
- * Gets the writing mode (WritingMode). The default value is
- * {@link #WRITING_MODE_LRTB}.
- *
- * @return the writing mode
- */
- public String getWritingMode()
- {
- return this.getName(WRITING_MODE, WRITING_MODE_LRTB);
- }
-
- /**
- * Sets the writing mode (WritingMode). The value should be one of:
- * <ul>
- * <li>{@link #WRITING_MODE_LRTB},</li>
- * <li>{@link #WRITING_MODE_RLTB},</li>
- * <li>{@link #WRITING_MODE_TBRL}.</li>
- * </ul>
- *
- * @param writingMode the writing mode
- */
- public void setWritingMode(String writingMode)
- {
- this.setName(WRITING_MODE, writingMode);
- }
-
- /**
- * Gets the background colour (BackgroundColor).
- *
- * @return the background colour
- */
- public PDGamma getBackgroundColor()
- {
- return this.getColor(BACKGROUND_COLOR);
- }
-
- /**
- * Sets the background colour (BackgroundColor).
- *
- * @param backgroundColor the background colour
- */
- public void setBackgroundColor(PDGamma backgroundColor)
- {
- this.setColor(BACKGROUND_COLOR, backgroundColor);
- }
-
- /**
- * Gets the border colour (BorderColor).
- *
- * @return a single border colour ({@link PDGamma}) or four border colours
- * ({@link PDFourColours})
- */
- public Object getBorderColors()
- {
- return this.getColorOrFourColors(BORDER_COLOR);
- }
-
- /**
- * Sets the same border colour for all four sides (BorderColor).
- *
- * @param borderColor the border colour
- */
- public void setAllBorderColors(PDGamma borderColor)
- {
- this.setColor(BORDER_COLOR, borderColor);
- }
-
- /**
- * Sets the border colours for four sides separately (BorderColor).
- *
- * @param borderColors the border colours
- */
- public void setBorderColors(PDFourColours borderColors)
- {
- this.setFourColors(BORDER_COLOR, borderColors);
- }
-
- /**
- * Gets the border style (BorderStyle). The default value is
- * {@link #BORDER_STYLE_NONE}.
- *
- * @return the border styles (a String or an array of four Strings)
- */
- public Object getBorderStyle()
- {
- return this.getNameOrArrayOfName(BORDER_STYLE, BORDER_STYLE_NONE);
- }
-
- /**
- * Sets the same border style for all four sides (BorderStyle). The value
- * should be one of:
- * <ul>
- * <li>{@link #BORDER_STYLE_NONE},</li>
- * <li>{@link #BORDER_STYLE_HIDDEN},</li>
- * <li>{@link #BORDER_STYLE_DOTTED},</li>
- * <li>{@link #BORDER_STYLE_DASHED},</li>
- * <li>{@link #BORDER_STYLE_SOLID},</li>
- * <li>{@link #BORDER_STYLE_DOUBLE},</li>
- * <li>{@link #BORDER_STYLE_GROOVE},</li>
- * <li>{@link #BORDER_STYLE_RIDGE},</li>
- * <li>{@link #BORDER_STYLE_INSET},</li>
- * <li>{@link #BORDER_STYLE_OUTSET}.</li>
- * </ul>
- *
- * @param borderStyle the border style
- */
- public void setAllBorderStyles(String borderStyle)
- {
- this.setName(BORDER_STYLE, borderStyle);
- }
-
- /**
- * Sets the border styles for four sides separately (BorderStyle). The
- * values should be of:
- * <ul>
- * <li>{@link #BORDER_STYLE_NONE},</li>
- * <li>{@link #BORDER_STYLE_HIDDEN},</li>
- * <li>{@link #BORDER_STYLE_DOTTED},</li>
- * <li>{@link #BORDER_STYLE_DASHED},</li>
- * <li>{@link #BORDER_STYLE_SOLID},</li>
- * <li>{@link #BORDER_STYLE_DOUBLE},</li>
- * <li>{@link #BORDER_STYLE_GROOVE},</li>
- * <li>{@link #BORDER_STYLE_RIDGE},</li>
- * <li>{@link #BORDER_STYLE_INSET},</li>
- * <li>{@link #BORDER_STYLE_OUTSET}.</li>
- * </ul>
- *
- * @param borderStyles the border styles (an array of four Strings)
- */
- public void setBorderStyles(String[] borderStyles)
- {
- this.setArrayOfName(BORDER_STYLE, borderStyles);
- }
-
- /**
- * Gets the border thickness (BorderThickness).
- *
- * @return the border thickness (a Float or an array of four floats)
- */
- public Object getBorderThickness()
- {
- return this.getNumberOrArrayOfNumber(BORDER_THICKNESS, UNSPECIFIED);
- }
-
- /**
- * Sets the same border thickness for all four sides (BorderThickness).
- *
- * @param borderThickness the border thickness
- */
- public void setAllBorderThicknesses(float borderThickness)
- {
- this.setNumber(BORDER_THICKNESS, borderThickness);
- }
-
- /**
- * Sets the same border thickness for all four sides (BorderThickness).
- *
- * @param borderThickness the border thickness
- */
- public void setAllBorderThicknesses(int borderThickness)
- {
- this.setNumber(BORDER_THICKNESS, borderThickness);
- }
-
- /**
- * Sets the border thicknesses for four sides separately (BorderThickness).
- *
- * @param borderThicknesses the border thickness (an array of four floats)
- */
- public void setBorderThicknesses(float[] borderThicknesses)
- {
- this.setArrayOfNumber(BORDER_THICKNESS, borderThicknesses);
- }
-
- /**
- * Gets the padding (Padding). The default value is 0.
- *
- * @return the padding (a Float or an array of float)
- */
- public Object getPadding()
- {
- return this.getNumberOrArrayOfNumber(PADDING, 0.f);
- }
-
- /**
- * Sets the same padding for all four sides (Padding).
- *
- * @param padding the padding
- */
- public void setAllPaddings(float padding)
- {
- this.setNumber(PADDING, padding);
- }
-
- /**
- * Sets the same padding for all four sides (Padding).
- *
- * @param padding the padding
- */
- public void setAllPaddings(int padding)
- {
- this.setNumber(PADDING, padding);
- }
-
- /**
- * Sets the paddings for four sides separately (Padding).
- *
- * @param paddings the paddings (an array of four floats)
- */
- public void setPaddings(float[] paddings)
- {
- this.setArrayOfNumber(PADDING, paddings);
- }
-
- /**
- * Gets the color to be used for drawing text and the default value for the
- * colour of table borders and text decorations (Color).
- *
- * @return the colour
- */
- public PDGamma getColor()
- {
- return this.getColor(COLOR);
- }
-
- /**
- * Sets the color to be used for drawing text and the default value for the
- * colour of table borders and text decorations (Color).
- *
- * @param color the colour
- */
- public void setColor(PDGamma color)
- {
- this.setColor(COLOR, color);
- }
-
- /**
- * Gets the amount of extra space preceding the before edge of the BLSE in
- * the block-progression direction (SpaceBefore). The default value is 0.
- *
- * @return the space before
- */
- public float getSpaceBefore()
- {
- return this.getNumber(SPACE_BEFORE, 0.f);
- }
-
- /**
- * Sets the amount of extra space preceding the before edge of the BLSE in
- * the block-progression direction (SpaceBefore).
- *
- * @param spaceBefore the space before
- */
- public void setSpaceBefore(float spaceBefore)
- {
- this.setNumber(SPACE_BEFORE, spaceBefore);
- }
-
- /**
- * Sets the amount of extra space preceding the before edge of the BLSE in
- * the block-progression direction (SpaceBefore).
- *
- * @param spaceBefore the space before
- */
- public void setSpaceBefore(int spaceBefore)
- {
- this.setNumber(SPACE_BEFORE, spaceBefore);
- }
-
- /**
- * Gets the amount of extra space following the after edge of the BLSE in
- * the block-progression direction (SpaceAfter). The default value is 0.
- *
- * @return the space after
- */
- public float getSpaceAfter()
- {
- return this.getNumber(SPACE_AFTER, 0.f);
- }
-
- /**
- * Sets the amount of extra space following the after edge of the BLSE in
- * the block-progression direction (SpaceAfter).
- *
- * @param spaceAfter the space after
- */
- public void setSpaceAfter(float spaceAfter)
- {
- this.setNumber(SPACE_AFTER, spaceAfter);
- }
-
- /**
- * Sets the amount of extra space following the after edge of the BLSE in
- * the block-progression direction (SpaceAfter).
- *
- * @param spaceAfter the space after
- */
- public void setSpaceAfter(int spaceAfter)
- {
- this.setNumber(SPACE_AFTER, spaceAfter);
- }
-
- /**
- * Gets the distance from the start edge of the reference area to that of
- * the BLSE in the inline-progression direction (StartIndent). The default value is 0.
- *
- * @return the start indent
- */
- public float getStartIndent()
- {
- return this.getNumber(START_INDENT, 0.f);
- }
-
- /**
- * Sets the distance from the start edge of the reference area to that of
- * the BLSE in the inline-progression direction (StartIndent).
- *
- * @param startIndent the start indent
- */
- public void setStartIndent(float startIndent)
- {
- this.setNumber(START_INDENT, startIndent);
- }
-
- /**
- * Sets the distance from the start edge of the reference area to that of
- * the BLSE in the inline-progression direction (StartIndent).
- *
- * @param startIndent the start indent
- */
- public void setStartIndent(int startIndent)
- {
- this.setNumber(START_INDENT, startIndent);
- }
-
- /**
- * Gets the distance from the end edge of the BLSE to that of the reference
- * area in the inline-progression direction (EndIndent). The default value
- * is 0.
- *
- * @return the end indent
- */
- public float getEndIndent()
- {
- return this.getNumber(END_INDENT, 0.f);
- }
-
- /**
- * Sets the distance from the end edge of the BLSE to that of the reference
- * area in the inline-progression direction (EndIndent).
- *
- * @param endIndent the end indent
- */
- public void setEndIndent(float endIndent)
- {
- this.setNumber(END_INDENT, endIndent);
- }
-
- /**
- * Sets the distance from the end edge of the BLSE to that of the reference
- * area in the inline-progression direction (EndIndent).
- *
- * @param endIndent the end indent
- */
- public void setEndIndent(int endIndent)
- {
- this.setNumber(END_INDENT, endIndent);
- }
-
- /**
- * Gets the additional distance in the inline-progression direction from the
- * start edge of the BLSE, as specified by StartIndent, to that of the first
- * line of text (TextIndent). The default value is 0.
- *
- * @return the text indent
- */
- public float getTextIndent()
- {
- return this.getNumber(TEXT_INDENT, 0.f);
- }
-
- /**
- * Sets the additional distance in the inline-progression direction from the
- * start edge of the BLSE, as specified by StartIndent, to that of the first
- * line of text (TextIndent).
- *
- * @param textIndent the text indent
- */
- public void setTextIndent(float textIndent)
- {
- this.setNumber(TEXT_INDENT, textIndent);
- }
-
- /**
- * Sets the additional distance in the inline-progression direction from the
- * start edge of the BLSE, as specified by StartIndent, to that of the first
- * line of text (TextIndent).
- *
- * @param textIndent the text indent
- */
- public void setTextIndent(int textIndent)
- {
- this.setNumber(TEXT_INDENT, textIndent);
- }
-
- /**
- * Gets the alignment, in the inline-progression direction, of text and
- * other content within lines of the BLSE (TextAlign). The default value is
- * {@link #TEXT_ALIGN_START}.
- *
- * @return the text alignment
- */
- public String getTextAlign()
- {
- return this.getName(TEXT_ALIGN, TEXT_ALIGN_START);
- }
-
- /**
- * Sets the alignment, in the inline-progression direction, of text and
- * other content within lines of the BLSE (TextAlign). The value should be
- * one of:
- * <ul>
- * <li>{@link #TEXT_ALIGN_START},</li>
- * <li>{@link #TEXT_ALIGN_CENTER},</li>
- * <li>{@link #TEXT_ALIGN_END},</li>
- * <li>{@link #TEXT_ALIGN_JUSTIFY}.</li>
- * </ul>
- *
- * @param textIndent the text alignment
- */
- public void setTextAlign(String textIndent)
- {
- this.setName(TEXT_ALIGN, textIndent);
- }
-
- /**
- * Gets the bounding box.
- *
- * @return the bounding box.
- */
- public PDRectangle getBBox()
- {
- COSArray array =
- (COSArray) this.getCOSDictionary().getDictionaryObject(BBOX);
- if (array != null)
- {
- return new PDRectangle(array);
- }
- return null;
- }
-
- /**
- * Sets the bounding box.
- *
- * @param bbox the bounding box
- */
- public void setBBox(PDRectangle bbox)
- {
- String name = BBOX;
- COSBase oldValue = this.getCOSDictionary().getDictionaryObject(name);
- this.getCOSDictionary().setItem(name, bbox);
- COSBase newValue = bbox == null ? null : bbox.getCOSObject();
- this.potentiallyNotifyChanged(oldValue, newValue);
- }
-
- /**
- * Gets the width of the elementâs content rectangle in the
- * inline-progression direction (Width). The default value is
- * {@link #WIDTH_AUTO}.
- *
- * @return the width (a Float or a String)
- */
- public Object getWidth()
- {
- return this.getNumberOrName(WIDTH, WIDTH_AUTO);
- }
-
- /**
- * Sets the width of the elementâs content rectangle in the
- * inline-progression direction (Width) to {@link #WIDTH_AUTO}.
- */
- public void setWidthAuto()
- {
- this.setName(WIDTH, WIDTH_AUTO);
- }
-
- /**
- * Sets the width of the elementâs content rectangle in the
- * inline-progression direction (Width).
- *
- * @param width the width
- */
- public void setWidth(float width)
- {
- this.setNumber(WIDTH, width);
- }
-
- /**
- * Sets the width of the elementâs content rectangle in the
- * inline-progression direction (Width).
- *
- * @param width the width
- */
- public void setWidth(int width)
- {
- this.setNumber(WIDTH, width);
- }
-
- /**
- * Gets the height of the elementâs content rectangle in the
- * block-progression direction (Height). The default value is
- * {@link #HEIGHT_AUTO}.
- *
- * @return the height (a Float or a String)
- */
- public Object getHeight()
- {
- return this.getNumberOrName(HEIGHT, HEIGHT_AUTO);
- }
-
- /**
- * Sets the height of the elementâs content rectangle in the
- * block-progression direction (Height) to {@link #HEIGHT_AUTO}.
- */
- public void setHeightAuto()
- {
- this.setName(HEIGHT, HEIGHT_AUTO);
- }
-
- /**
- * Sets the height of the elementâs content rectangle in the
- * block-progression direction (Height).
- *
- * @param height the height
- */
- public void setHeight(float height)
- {
- this.setNumber(HEIGHT, height);
- }
-
- /**
- * Sets the height of the elementâs content rectangle in the
- * block-progression direction (Height).
- *
- * @param height the height
- */
- public void setHeight(int height)
- {
- this.setNumber(HEIGHT, height);
- }
-
- /**
- * Gets the alignment, in the block-progression direction, of content within
- * the table cell (BlockAlign). The default value is
- * {@link #BLOCK_ALIGN_BEFORE}.
- *
- * @return the block alignment
- */
- public String getBlockAlign()
- {
- return this.getName(BLOCK_ALIGN, BLOCK_ALIGN_BEFORE);
- }
-
- /**
- * Sets the alignment, in the block-progression direction, of content within
- * the table cell (BlockAlign). The value should be one of:
- * <ul>
- * <li>{@link #BLOCK_ALIGN_BEFORE},</li>
- * <li>{@link #BLOCK_ALIGN_MIDDLE},</li>
- * <li>{@link #BLOCK_ALIGN_AFTER},</li>
- * <li>{@link #BLOCK_ALIGN_JUSTIFY}.</li>
- * </ul>
- *
- * @param blockAlign the block alignment
- */
- public void setBlockAlign(String blockAlign)
- {
- this.setName(BLOCK_ALIGN, blockAlign);
- }
-
- /**
- * Gets the alignment, in the inline-progression direction, of content
- * within the table cell (InlineAlign). The default value is
- * {@link #INLINE_ALIGN_START}.
- *
- * @return the inline alignment
- */
- public String getInlineAlign()
- {
- return this.getName(INLINE_ALIGN, INLINE_ALIGN_START);
- }
-
- /**
- * Sets the alignment, in the inline-progression direction, of content
- * within the table cell (InlineAlign). The value should be one of
- * <ul>
- * <li>{@link #INLINE_ALIGN_START},</li>
- * <li>{@link #INLINE_ALIGN_CENTER},</li>
- * <li>{@link #INLINE_ALIGN_END}.</li>
- * </ul>
- *
- * @param inlineAlign the inline alignment
- */
- public void setInlineAlign(String inlineAlign)
- {
- this.setName(INLINE_ALIGN, inlineAlign);
- }
-
- /**
- * Gets the style of the border drawn on each edge of a table cell
- * (TBorderStyle).
- *
- * @return
- */
- public Object getTBorderStyle()
- {
- return this.getNameOrArrayOfName(T_BORDER_STYLE, BORDER_STYLE_NONE);
- }
-
- /**
- * Sets the same table border style for all four sides (TBorderStyle). The
- * value should be one of:
- * <ul>
- * <li>{@link #BORDER_STYLE_NONE},</li>
- * <li>{@link #BORDER_STYLE_HIDDEN},</li>
- * <li>{@link #BORDER_STYLE_DOTTED},</li>
- * <li>{@link #BORDER_STYLE_DASHED},</li>
- * <li>{@link #BORDER_STYLE_SOLID},</li>
- * <li>{@link #BORDER_STYLE_DOUBLE},</li>
- * <li>{@link #BORDER_STYLE_GROOVE},</li>
- * <li>{@link #BORDER_STYLE_RIDGE},</li>
- * <li>{@link #BORDER_STYLE_INSET},</li>
- * <li>{@link #BORDER_STYLE_OUTSET}.</li>
- * </ul>
- *
- * @param tBorderStyle the table border style
- */
- public void setAllTBorderStyles(String tBorderStyle)
- {
- this.setName(T_BORDER_STYLE, tBorderStyle);
- }
-
- /**
- * Sets the style of the border drawn on each edge of a table cell
- * (TBorderStyle). The values should be of:
- * <ul>
- * <li>{@link #BORDER_STYLE_NONE},</li>
- * <li>{@link #BORDER_STYLE_HIDDEN},</li>
- * <li>{@link #BORDER_STYLE_DOTTED},</li>
- * <li>{@link #BORDER_STYLE_DASHED},</li>
- * <li>{@link #BORDER_STYLE_SOLID},</li>
- * <li>{@link #BORDER_STYLE_DOUBLE},</li>
- * <li>{@link #BORDER_STYLE_GROOVE},</li>
- * <li>{@link #BORDER_STYLE_RIDGE},</li>
- * <li>{@link #BORDER_STYLE_INSET},</li>
- * <li>{@link #BORDER_STYLE_OUTSET}.</li>
- * </ul>
- *
- * @param tBorderStyles
- */
- public void setTBorderStyles(String[] tBorderStyles)
- {
- this.setArrayOfName(T_BORDER_STYLE, tBorderStyles);
- }
-
- /**
- * Gets the offset to account for the separation between the table cellâs
- * content rectangle and the surrounding border (TPadding). The default
- * value is 0.
- *
- * @return the table padding (a Float or an array of float)
- */
- public Object getTPadding()
- {
- return this.getNumberOrArrayOfNumber(T_PADDING, 0.f);
- }
-
- /**
- * Sets the same table padding for all four sides (TPadding).
- *
- * @param tPadding the table padding
- */
- public void setAllTPaddings(float tPadding)
- {
- this.setNumber(T_PADDING, tPadding);
- }
-
- /**
- * Sets the same table padding for all four sides (TPadding).
- *
- * @param tPadding the table padding
- */
- public void setAllTPaddings(int tPadding)
- {
- this.setNumber(T_PADDING, tPadding);
- }
-
- /**
- * Sets the table paddings for four sides separately (TPadding).
- *
- * @param tPaddings the table paddings (an array of four floats)
- */
- public void setTPaddings(float[] tPaddings)
- {
- this.setArrayOfNumber(T_PADDING, tPaddings);
- }
-
- /**
- * Gets the distance by which the elementâs baseline shall be shifted
- * relative to that of its parent element (BaselineShift). The default value
- * is 0.
- *
- * @return the baseline shift
- */
- public float getBaselineShift()
- {
- return this.getNumber(BASELINE_SHIFT, 0.f);
- }
-
- /**
- * Sets the distance by which the elementâs baseline shall be shifted
- * relative to that of its parent element (BaselineShift).
- *
- * @param baselineShift the baseline shift
- */
- public void setBaselineShift(float baselineShift)
- {
- this.setNumber(BASELINE_SHIFT, baselineShift);
- }
-
- /**
- * Sets the distance by which the elementâs baseline shall be shifted
- * relative to that of its parent element (BaselineShift).
- *
- * @param baselineShift the baseline shift
- */
- public void setBaselineShift(int baselineShift)
- {
- this.setNumber(BASELINE_SHIFT, baselineShift);
- }
-
- /**
- * Gets the elementâs preferred height in the block-progression direction
- * (LineHeight). The default value is {@link #LINE_HEIGHT_NORMAL}.
- *
- * @return the line height (a Float or a String)
- */
- public Object getLineHeight()
- {
- return this.getNumberOrName(LINE_HEIGHT, LINE_HEIGHT_NORMAL);
- }
-
- /**
- * Sets the elementâs preferred height in the block-progression direction
- * (LineHeight) to {@link #LINE_HEIGHT_NORMAL}.
- */
- public void setLineHeightNormal()
- {
- this.setName(LINE_HEIGHT, LINE_HEIGHT_NORMAL);
- }
-
- /**
- * Sets the elementâs preferred height in the block-progression direction
- * (LineHeight) to {@link #LINE_HEIGHT_AUTO}.
- */
- public void setLineHeightAuto()
- {
- this.setName(LINE_HEIGHT, LINE_HEIGHT_AUTO);
- }
-
- /**
- * Sets the elementâs preferred height in the block-progression direction
- * (LineHeight).
- *
- * @param lineHeight the line height
- */
- public void setLineHeight(float lineHeight)
- {
- this.setNumber(LINE_HEIGHT, lineHeight);
- }
-
- /**
- * Sets the elementâs preferred height in the block-progression direction
- * (LineHeight).
- *
- * @param lineHeight the line height
- */
- public void setLineHeight(int lineHeight)
- {
- this.setNumber(LINE_HEIGHT, lineHeight);
- }
-
- /**
- * Gets the colour to be used for drawing text decorations
- * (TextDecorationColor).
- *
- * @return the text decoration colour
- */
- public PDGamma getTextDecorationColor()
- {
- return this.getColor(TEXT_DECORATION_COLOR);
- }
-
- /**
- * Sets the colour to be used for drawing text decorations
- * (TextDecorationColor).
- *
- * @param textDecorationColor the text decoration colour
- */
- public void setTextDecorationColor(PDGamma textDecorationColor)
- {
- this.setColor(TEXT_DECORATION_COLOR, textDecorationColor);
- }
-
- /**
- * Gets the thickness of each line drawn as part of the text decoration
- * (TextDecorationThickness).
- *
- * @return the text decoration thickness
- */
- public float getTextDecorationThickness()
- {
- return this.getNumber(TEXT_DECORATION_THICKNESS);
- }
-
- /**
- * Sets the thickness of each line drawn as part of the text decoration
- * (TextDecorationThickness).
- *
- * @param textDecorationThickness the text decoration thickness
- */
- public void setTextDecorationThickness(float textDecorationThickness)
- {
- this.setNumber(TEXT_DECORATION_THICKNESS, textDecorationThickness);
- }
-
- /**
- * Sets the thickness of each line drawn as part of the text decoration
- * (TextDecorationThickness).
- *
- * @param textDecorationThickness the text decoration thickness
- */
- public void setTextDecorationThickness(int textDecorationThickness)
- {
- this.setNumber(TEXT_DECORATION_THICKNESS, textDecorationThickness);
- }
-
- /**
- * Gets the type of text decoration (TextDecorationType). The default value
- * is {@link #TEXT_DECORATION_TYPE_NONE}.
- *
- * @return the type of text decoration
- */
- public String getTextDecorationType()
- {
- return this.getName(TEXT_DECORATION_TYPE, TEXT_DECORATION_TYPE_NONE);
- }
-
- /**
- * Sets the type of text decoration (TextDecorationType). The value should
- * be one of:
- * <ul>
- * <li>{@link #TEXT_DECORATION_TYPE_NONE},</li>
- * <li>{@link #TEXT_DECORATION_TYPE_UNDERLINE},</li>
- * <li>{@link #TEXT_DECORATION_TYPE_OVERLINE},</li>
- * <li>{@link #TEXT_DECORATION_TYPE_LINE_THROUGH}.</li>
- * </ul>
- *
- * @param textDecorationType the type of text decoration
- */
- public void setTextDecorationType(String textDecorationType)
- {
- this.setName(TEXT_DECORATION_TYPE, textDecorationType);
- }
-
- /**
- * Gets the justification of the lines within a ruby assembly (RubyAlign).
- * The default value is {@link #RUBY_ALIGN_DISTRIBUTE}.
- *
- * @return the ruby alignment
- */
- public String getRubyAlign()
- {
- return this.getName(RUBY_ALIGN, RUBY_ALIGN_DISTRIBUTE);
- }
-
- /**
- * Sets the justification of the lines within a ruby assembly (RubyAlign).
- * The value should be one of:
- * <ul>
- * <li>{@link #RUBY_ALIGN_START},</li>
- * <li>{@link #RUBY_ALIGN_CENTER},</li>
- * <li>{@link #RUBY_ALIGN_END},</li>
- * <li>{@link #RUBY_ALIGN_JUSTIFY},</li>
- * <li>{@link #RUBY_ALIGN_DISTRIBUTE},</li>
- * </ul>
- *
- * @param rubyAlign the ruby alignment
- */
- public void setRubyAlign(String rubyAlign)
- {
- this.setName(RUBY_ALIGN, rubyAlign);
- }
-
- /**
- * Gets the placement of the RT structure element relative to the RB element
- * in a ruby assembly (RubyPosition). The default value is
- * {@link #RUBY_POSITION_BEFORE}.
- *
- * @return the ruby position
- */
- public String getRubyPosition()
- {
- return this.getName(RUBY_POSITION, RUBY_POSITION_BEFORE);
- }
-
- /**
- * Sets the placement of the RT structure element relative to the RB element
- * in a ruby assembly (RubyPosition). The value should be one of:
- * <ul>
- * <li>{@link #RUBY_POSITION_BEFORE},</li>
- * <li>{@link #RUBY_POSITION_AFTER},</li>
- * <li>{@link #RUBY_POSITION_WARICHU},</li>
- * <li>{@link #RUBY_POSITION_INLINE}.</li>
- * </ul>
- *
- * @param rubyPosition the ruby position
- */
- public void setRubyPosition(String rubyPosition)
- {
- this.setName(RUBY_POSITION, rubyPosition);
- }
-
- /**
- * Gets the orientation of glyphs when the inline-progression direction is
- * top to bottom or bottom to top (GlyphOrientationVertical). The default
- * value is {@link #GLYPH_ORIENTATION_VERTICAL_AUTO}.
- *
- * @return the vertical glyph orientation
- */
- public String getGlyphOrientationVertical()
- {
- return this.getName(GLYPH_ORIENTATION_VERTICAL,
- GLYPH_ORIENTATION_VERTICAL_AUTO);
- }
-
- /**
- * Sets the orientation of glyphs when the inline-progression direction is
- * top to bottom or bottom to top (GlyphOrientationVertical). The value
- * should be one of:
- * <ul>
- * <li>{@link #GLYPH_ORIENTATION_VERTICAL_AUTO},</li>
- * <li>{@link #GLYPH_ORIENTATION_VERTICAL_MINUS_180_DEGREES},</li>
- * <li>{@link #GLYPH_ORIENTATION_VERTICAL_MINUS_90_DEGREES},</li>
- * <li>{@link #GLYPH_ORIENTATION_VERTICAL_ZERO_DEGREES},</li>
- * <li>{@link #GLYPH_ORIENTATION_VERTICAL_90_DEGREES},</li>
- * <li>{@link #GLYPH_ORIENTATION_VERTICAL_180_DEGREES},</li>
- * <li>{@link #GLYPH_ORIENTATION_VERTICAL_270_DEGREES},</li>
- * <li>{@link #GLYPH_ORIENTATION_VERTICAL_360_DEGREES}.</li>
- * </ul>
- *
- * @param glyphOrientationVertical the vertical glyph orientation
- */
- public void setGlyphOrientationVertical(String glyphOrientationVertical)
- {
- this.setName(GLYPH_ORIENTATION_VERTICAL, glyphOrientationVertical);
- }
-
- /**
- * Gets the number of columns in the content of the grouping element
- * (ColumnCount). The default value is 1.
- *
- * @return the column count
- */
- public int getColumnCount()
- {
- return this.getInteger(COLUMN_COUNT, 1);
- }
-
- /**
- * Sets the number of columns in the content of the grouping element
- * (ColumnCount).
- *
- * @param columnCount the column count
- */
- public void setColumnCount(int columnCount)
- {
- this.setInteger(COLUMN_COUNT, columnCount);
- }
-
- /**
- * Gets the desired space between adjacent columns in the inline-progression
- * direction (ColumnGap).
- *
- * @return the column gap (FLoat or array of floats)
- */
- public Object getColumnGap()
- {
- return this.getNumberOrArrayOfNumber(COLUMN_GAP, UNSPECIFIED);
- }
-
- /**
- * Sets the desired space between all columns in the inline-progression
- * direction (ColumnGap).
- *
- * @param columnGap the column gap
- */
- public void setColumnGap(float columnGap)
- {
- this.setNumber(COLUMN_GAP, columnGap);
- }
-
- /**
- * Sets the desired space between all columns in the inline-progression
- * direction (ColumnGap).
- *
- * @param columnGap the column gap
- */
- public void setColumnGap(int columnGap)
- {
- this.setNumber(COLUMN_GAP, columnGap);
- }
-
- /**
- * Sets the desired space between adjacent columns in the inline-progression
- * direction (ColumnGap), the first element specifying the space between the
- * first and second columns, the second specifying the space between the
- * second and third columns, and so on.
- *
- * @param columnGaps the column gaps
- */
- public void setColumnGaps(float[] columnGaps)
- {
- this.setArrayOfNumber(COLUMN_GAP, columnGaps);
- }
-
- /**
- * Gets the desired width of the columns, measured in default user space
- * units in the inline-progression direction (ColumnWidths).
- *
- * @return the column widths (Float or array of floats)
- */
- public Object getColumnWidths()
- {
- return this.getNumberOrArrayOfNumber(COLUMN_WIDTHS, UNSPECIFIED);
- }
-
- /**
- * Sets the same column width for all columns (ColumnWidths).
- *
- * @param columnWidth the column width
- */
- public void setAllColumnWidths(float columnWidth)
- {
- this.setNumber(COLUMN_WIDTHS, columnWidth);
- }
-
- /**
- * Sets the same column width for all columns (ColumnWidths).
- *
- * @param columnWidth the column width
- */
- public void setAllColumnWidths(int columnWidth)
- {
- this.setNumber(COLUMN_WIDTHS, columnWidth);
- }
-
- /**
- * Sets the column widths for the columns separately (ColumnWidths).
- *
- * @param columnWidths the column widths
- */
- public void setColumnWidths(float[] columnWidths)
- {
- this.setArrayOfNumber(COLUMN_WIDTHS, columnWidths);
- }
-
- @Override
- public String toString()
- {
- StringBuilder sb = new StringBuilder().append(super.toString());
- if (this.isSpecified(PLACEMENT))
- {
- sb.append(", Placement=").append(this.getPlacement());
- }
- if (this.isSpecified(WRITING_MODE))
- {
- sb.append(", WritingMode=").append(this.getWritingMode());
- }
- if (this.isSpecified(BACKGROUND_COLOR))
- {
- sb.append(", BackgroundColor=").append(this.getBackgroundColor());
- }
- if (this.isSpecified(BORDER_COLOR))
- {
- sb.append(", BorderColor=").append(this.getBorderColors());
- }
- if (this.isSpecified(BORDER_STYLE))
- {
- Object borderStyle = this.getBorderStyle();
- sb.append(", BorderStyle=");
- if (borderStyle instanceof String[])
- {
- sb.append(arrayToString((String[]) borderStyle));
- }
- else
- {
- sb.append(borderStyle);
- }
- }
- if (this.isSpecified(BORDER_THICKNESS))
- {
- Object borderThickness = this.getBorderThickness();
- sb.append(", BorderThickness=");
- if (borderThickness instanceof float[])
- {
- sb.append(arrayToString((float[]) borderThickness));
- }
- else
- {
- sb.append(String.valueOf((Float) borderThickness));
- }
- }
- if (this.isSpecified(PADDING))
- {
- Object padding = this.getPadding();
- sb.append(", Padding=");
- if (padding instanceof float[])
- {
- sb.append(arrayToString((float[]) padding));
- }
- else
- {
- sb.append(String.valueOf((Float) padding));
- }
- }
- if (this.isSpecified(COLOR))
- {
- sb.append(", Color=").append(this.getColor());
- }
- if (this.isSpecified(SPACE_BEFORE))
- {
- sb.append(", SpaceBefore=")
- .append(String.valueOf(this.getSpaceBefore()));
- }
- if (this.isSpecified(SPACE_AFTER))
- {
- sb.append(", SpaceAfter=")
- .append(String.valueOf(this.getSpaceAfter()));
- }
- if (this.isSpecified(START_INDENT))
- {
- sb.append(", StartIndent=")
- .append(String.valueOf(this.getStartIndent()));
- }
- if (this.isSpecified(END_INDENT))
- {
- sb.append(", EndIndent=")
- .append(String.valueOf(this.getEndIndent()));
- }
- if (this.isSpecified(TEXT_INDENT))
- {
- sb.append(", TextIndent=")
- .append(String.valueOf(this.getTextIndent()));
- }
- if (this.isSpecified(TEXT_ALIGN))
- {
- sb.append(", TextAlign=").append(this.getTextAlign());
- }
- if (this.isSpecified(BBOX))
- {
- sb.append(", BBox=").append(this.getBBox());
- }
- if (this.isSpecified(WIDTH))
- {
- Object width = this.getWidth();
- sb.append(", Width=");
- if (width instanceof Float)
- {
- sb.append(String.valueOf((Float) width));
- }
- else
- {
- sb.append(width);
- }
- }
- if (this.isSpecified(HEIGHT))
- {
- Object height = this.getHeight();
- sb.append(", Height=");
- if (height instanceof Float)
- {
- sb.append(String.valueOf((Float) height));
- }
- else
- {
- sb.append(height);
- }
- }
- if (this.isSpecified(BLOCK_ALIGN))
- {
- sb.append(", BlockAlign=").append(this.getBlockAlign());
- }
- if (this.isSpecified(INLINE_ALIGN))
- {
- sb.append(", InlineAlign=").append(this.getInlineAlign());
- }
- if (this.isSpecified(T_BORDER_STYLE))
- {
- Object tBorderStyle = this.getTBorderStyle();
- sb.append(", TBorderStyle=");
- if (tBorderStyle instanceof String[])
- {
- sb.append(arrayToString((String[]) tBorderStyle));
- }
- else
- {
- sb.append(tBorderStyle);
- }
- }
- if (this.isSpecified(T_PADDING))
- {
- Object tPadding = this.getTPadding();
- sb.append(", TPadding=");
- if (tPadding instanceof float[])
- {
- sb.append(arrayToString((float[]) tPadding));
- }
- else
- {
- sb.append(String.valueOf((Float) tPadding));
- }
- }
- if (this.isSpecified(BASELINE_SHIFT))
- {
- sb.append(", BaselineShift=")
- .append(String.valueOf(this.getBaselineShift()));
- }
- if (this.isSpecified(LINE_HEIGHT))
- {
- Object lineHeight = this.getLineHeight();
- sb.append(", LineHeight=");
- if (lineHeight instanceof Float)
- {
- sb.append(String.valueOf((Float) lineHeight));
- }
- else
- {
- sb.append(lineHeight);
- }
- }
- if (this.isSpecified(TEXT_DECORATION_COLOR))
- {
- sb.append(", TextDecorationColor=")
- .append(this.getTextDecorationColor());
- }
- if (this.isSpecified(TEXT_DECORATION_THICKNESS))
- {
- sb.append(", TextDecorationThickness=")
- .append(String.valueOf(this.getTextDecorationThickness()));
- }
- if (this.isSpecified(TEXT_DECORATION_TYPE))
- {
- sb.append(", TextDecorationType=")
- .append(this.getTextDecorationType());
- }
- if (this.isSpecified(RUBY_ALIGN))
- {
- sb.append(", RubyAlign=").append(this.getRubyAlign());
- }
- if (this.isSpecified(RUBY_POSITION))
- {
- sb.append(", RubyPosition=").append(this.getRubyPosition());
- }
- if (this.isSpecified(GLYPH_ORIENTATION_VERTICAL))
- {
- sb.append(", GlyphOrientationVertical=")
- .append(this.getGlyphOrientationVertical());
- }
- if (this.isSpecified(COLUMN_COUNT))
- {
- sb.append(", ColumnCount=")
- .append(String.valueOf(this.getColumnCount()));
- }
- if (this.isSpecified(COLUMN_GAP))
- {
- Object columnGap = this.getColumnGap();
- sb.append(", ColumnGap=");
- if (columnGap instanceof float[])
- {
- sb.append(arrayToString((float[]) columnGap));
- }
- else
- {
- sb.append(String.valueOf((Float) columnGap));
- }
- }
- if (this.isSpecified(COLUMN_WIDTHS))
- {
- Object columnWidth = this.getColumnWidths();
- sb.append(", ColumnWidths=");
- if (columnWidth instanceof float[])
- {
- sb.append(arrayToString((float[]) columnWidth));
- }
- else
- {
- sb.append(String.valueOf((Float) columnWidth));
- }
- }
- return sb.toString();
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.pdmodel.documentinterchange.taggedpdf;
+
+import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.cos.COSDictionary;
+import org.apache.pdfbox.pdmodel.common.PDRectangle;
+import org.apache.pdfbox.pdmodel.graphics.color.PDGamma;
+
+/**
+ * A Layout attribute object.
+ *
+ * @author <a href="mailto:Johannes%20Koch%20%3Ckoch@apache.org%3E">Johannes Koch</a>
+ * @version $Revision: $
+ */
+public class PDLayoutAttributeObject extends PDStandardAttributeObject
+{
+
+ /**
+ * standard attribute owner: Layout
+ */
+ public static final String OWNER_LAYOUT = "Layout";
+
+ private static final String PLACEMENT = "Placement";
+ private static final String WRITING_MODE = "WritingMode";
+ private static final String BACKGROUND_COLOR = "BackgroundColor";
+ private static final String BORDER_COLOR = "BorderColor";
+ private static final String BORDER_STYLE = "BorderStyle";
+ private static final String BORDER_THICKNESS = "BorderThickness";
+ private static final String PADDING = "Padding";
+ private static final String COLOR = "Color";
+ private static final String SPACE_BEFORE = "SpaceBefore";
+ private static final String SPACE_AFTER = "SpaceAfter";
+ private static final String START_INDENT = "StartIndent";
+ private static final String END_INDENT = "EndIndent";
+ private static final String TEXT_INDENT = "TextIndent";
+ private static final String TEXT_ALIGN = "TextAlign";
+ private static final String BBOX = "BBox";
+ private static final String WIDTH = "Width";
+ private static final String HEIGHT = "Height";
+ private static final String BLOCK_ALIGN = "BlockAlign";
+ private static final String INLINE_ALIGN = "InlineAlign";
+ private static final String T_BORDER_STYLE = "TBorderStyle";
+ private static final String T_PADDING = "TPadding";
+ private static final String BASELINE_SHIFT = "BaselineShift";
+ private static final String LINE_HEIGHT = "LineHeight";
+ private static final String TEXT_DECORATION_COLOR = "TextDecorationColor";
+ private static final String TEXT_DECORATION_THICKNESS = "TextDecorationThickness";
+ private static final String TEXT_DECORATION_TYPE = "TextDecorationType";
+ private static final String RUBY_ALIGN = "RubyAlign";
+ private static final String RUBY_POSITION = "RubyPosition";
+ private static final String GLYPH_ORIENTATION_VERTICAL = "GlyphOrientationVertical";
+ private static final String COLUMN_COUNT = "ColumnCount";
+ private static final String COLUMN_GAP = "ColumnGap";
+ private static final String COLUMN_WIDTHS = "ColumnWidths";
+
+ /**
+ * Placement: Block: Stacked in the block-progression direction within an
+ * enclosing reference area or parent BLSE.
+ */
+ public static final String PLACEMENT_BLOCK = "Block";
+ /**
+ * Placement: Inline: Packed in the inline-progression direction within an
+ * enclosing BLSE.
+ */
+ public static final String PLACEMENT_INLINE = "Inline";
+ /**
+ * Placement: Before: Placed so that the before edge of the elementâs
+ * allocation rectangle coincides with that of the nearest enclosing
+ * reference area. The element may float, if necessary, to achieve the
+ * specified placement. The element shall be treated as a block occupying
+ * the full extent of the enclosing reference area in the inline direction.
+ * Other content shall be stacked so as to begin at the after edge of the
+ * elementâs allocation rectangle.
+ */
+ public static final String PLACEMENT_BEFORE = "Before";
+ /**
+ * Placement: Start: Placed so that the start edge of the elementâs
+ * allocation rectangle coincides with that of the nearest enclosing
+ * reference area. The element may float, if necessary, to achieve the
+ * specified placement. Other content that would intrude into the elementâs
+ * allocation rectangle shall be laid out as a runaround.
+ */
+ public static final String PLACEMENT_START = "Start";
+ /**
+ * Placement: End: Placed so that the end edge of the elementâs allocation
+ * rectangle coincides with that of the nearest enclosing reference area.
+ * The element may float, if necessary, to achieve the specified placement.
+ * Other content that would intrude into the elementâs allocation rectangle
+ * shall be laid out as a runaround.
+ */
+ public static final String PLACEMENT_END = "End";
+ /**
+ * WritingMode: LrTb: Inline progression from left to right; block
+ * progression from top to bottom. This is the typical writing mode for
+ * Western writing systems.
+ */
+ public static final String WRITING_MODE_LRTB = "LrTb";
+ /**
+ * WritingMode: RlTb: Inline progression from right to left; block
+ * progression from top to bottom. This is the typical writing mode for
+ * Arabic and Hebrew writing systems.
+ */
+ public static final String WRITING_MODE_RLTB = "RlTb";
+ /**
+ * WritingMode: TbRl: Inline progression from top to bottom; block
+ * progression from right to left. This is the typical writing mode for
+ * Chinese and Japanese writing systems.
+ */
+ public static final String WRITING_MODE_TBRL = "TbRl";
+ /**
+ * BorderStyle: None: No border. Forces the computed value of
+ * BorderThickness to be 0.
+ */
+ public static final String BORDER_STYLE_NONE = "None";
+ /**
+ * BorderStyle: Hidden: Same as {@link #BORDER_STYLE_NONE}, except in terms
+ * of border conflict resolution for table elements.
+ */
+ public static final String BORDER_STYLE_HIDDEN = "Hidden";
+ /**
+ * BorderStyle: Dotted: The border is a series of dots.
+ */
+ public static final String BORDER_STYLE_DOTTED = "Dotted";
+ /**
+ * BorderStyle: Dashed: The border is a series of short line segments.
+ */
+ public static final String BORDER_STYLE_DASHED = "Dashed";
+ /**
+ * BorderStyle: Solid: The border is a single line segment.
+ */
+ public static final String BORDER_STYLE_SOLID = "Solid";
+ /**
+ * BorderStyle: Double: The border is two solid lines. The sum of the two
+ * lines and the space between them equals the value of BorderThickness.
+ */
+ public static final String BORDER_STYLE_DOUBLE = "Double";
+ /**
+ * BorderStyle: Groove: The border looks as though it were carved into the
+ * canvas.
+ */
+ public static final String BORDER_STYLE_GROOVE = "Groove";
+ /**
+ * BorderStyle: Ridge: The border looks as though it were coming out of the
+ * canvas (the opposite of {@link #BORDER_STYLE_GROOVE}).
+ */
+ public static final String BORDER_STYLE_RIDGE = "Ridge";
+ /**
+ * BorderStyle: Inset: The border makes the entire box look as though it
+ * were embedded in the canvas.
+ */
+ public static final String BORDER_STYLE_INSET = "Inset";
+ /**
+ * BorderStyle: Outset: The border makes the entire box look as though it
+ * were coming out of the canvas (the opposite of {@link #BORDER_STYLE_INSET}.
+ */
+ public static final String BORDER_STYLE_OUTSET = "Outset";
+ /**
+ * TextAlign: Start: Aligned with the start edge.
+ */
+ public static final String TEXT_ALIGN_START = "Start";
+ /**
+ * TextAlign: Center: Centered between the start and end edges.
+ */
+ public static final String TEXT_ALIGN_CENTER = "Center";
+ /**
+ * TextAlign: End: Aligned with the end edge.
+ */
+ public static final String TEXT_ALIGN_END = "End";
+ /**
+ * TextAlign: Justify: Aligned with both the start and end edges, with
+ * internal spacing within each line expanded, if necessary, to achieve such
+ * alignment. The last (or only) line shall be aligned with the start edge
+ * only.
+ */
+ public static final String TEXT_ALIGN_JUSTIFY = "Justify";
+ /**
+ * Width: Auto
+ */
+ public static final String WIDTH_AUTO = "Auto";
+ /**
+ * Height: Auto
+ */
+ public static final String HEIGHT_AUTO = "Auto";
+ /**
+ * BlockAlign: Before: Before edge of the first childâs allocation rectangle
+ * aligned with that of the table cellâs content rectangle.
+ */
+ public static final String BLOCK_ALIGN_BEFORE = "Before";
+ /**
+ * BlockAlign: Middle: Children centered within the table cell. The distance
+ * between the before edge of the first childâs allocation rectangle and
+ * that of the table cellâs content rectangle shall be the same as the
+ * distance between the after edge of the last childâs allocation rectangle
+ * and that of the table cellâs content rectangle.
+ */
+ public static final String BLOCK_ALIGN_MIDDLE = "Middle";
+ /**
+ * BlockAlign: After: After edge of the last childâs allocation rectangle
+ * aligned with that of the table cellâs content rectangle.
+ */
+ public static final String BLOCK_ALIGN_AFTER = "After";
+ /**
+ * BlockAlign: Justify: Children aligned with both the before and after
+ * edges of the table cellâs content rectangle. The first child shall be
+ * placed as described for {@link #BLOCK_ALIGN_BEFORE} and the last child as
+ * described for {@link #BLOCK_ALIGN_AFTER}, with equal spacing between the
+ * children. If there is only one child, it shall be aligned with the before
+ * edge only, as for {@link #BLOCK_ALIGN_BEFORE}.
+ */
+ public static final String BLOCK_ALIGN_JUSTIFY = "Justify";
+ /**
+ * InlineAlign: Start: Start edge of each childâs allocation rectangle
+ * aligned with that of the table cellâs content rectangle.
+ */
+ public static final String INLINE_ALIGN_START = "Start";
+ /**
+ * InlineAlign: Center: Each child centered within the table cell. The
+ * distance between the start edges of the childâs allocation rectangle and
+ * the table cellâs content rectangle shall be the same as the distance
+ * between their end edges.
+ */
+ public static final String INLINE_ALIGN_CENTER = "Center";
+ /**
+ * InlineAlign: End: End edge of each childâs allocation rectangle aligned
+ * with that of the table cellâs content rectangle.
+ */
+ public static final String INLINE_ALIGN_END = "End";
+ /**
+ * LineHeight: NormalAdjust the line height to include any nonzero value
+ * specified for BaselineShift.
+ */
+ public static final String LINE_HEIGHT_NORMAL = "Normal";
+ /**
+ * LineHeight: Auto: Adjustment for the value of BaselineShift shall not be
+ * made.
+ */
+ public static final String LINE_HEIGHT_AUTO = "Auto";
+ /**
+ * TextDecorationType: None: No text decoration
+ */
+ public static final String TEXT_DECORATION_TYPE_NONE = "None";
+ /**
+ * TextDecorationType: Underline: A line below the text
+ */
+ public static final String TEXT_DECORATION_TYPE_UNDERLINE = "Underline";
+ /**
+ * TextDecorationType: Overline: A line above the text
+ */
+ public static final String TEXT_DECORATION_TYPE_OVERLINE = "Overline";
+ /**
+ * TextDecorationType: LineThrough: A line through the middle of the text
+ */
+ public static final String TEXT_DECORATION_TYPE_LINE_THROUGH = "LineThrough";
+ /**
+ * RubyAlign: Start: The content shall be aligned on the start edge in the
+ * inline-progression direction.
+ */
+ public static final String RUBY_ALIGN_START = "Start";
+ /**
+ * RubyAlign: Center: The content shall be centered in the
+ * inline-progression direction.
+ */
+ public static final String RUBY_ALIGN_CENTER = "Center";
+ /**
+ * RubyAlign: End: The content shall be aligned on the end edge in the
+ * inline-progression direction.
+ */
+ public static final String RUBY_ALIGN_END = "End";
+ /**
+ * RubyAlign: Justify: The content shall be expanded to fill the available
+ * width in the inline-progression direction.
+ */
+ public static final String RUBY_ALIGN_JUSTIFY = "Justify";
+ /**
+ * RubyAlign: Distribute: The content shall be expanded to fill the
+ * available width in the inline-progression direction. However, space shall
+ * also be inserted at the start edge and end edge of the text. The spacing
+ * shall be distributed using a 1:2:1 (start:infix:end) ratio. It shall be
+ * changed to a 0:1:1 ratio if the ruby appears at the start of a text line
+ * or to a 1:1:0 ratio if the ruby appears at the end of the text line.
+ */
+ public static final String RUBY_ALIGN_DISTRIBUTE = "Distribute";
+ /**
+ * RubyPosition: Before: The RT content shall be aligned along the before
+ * edge of the element.
+ */
+ public static final String RUBY_POSITION_BEFORE = "Before";
+ /**
+ * RubyPosition: After: The RT content shall be aligned along the after edge
+ * of the element.
+ */
+ public static final String RUBY_POSITION_AFTER = "After";
+ /**
+ * RubyPosition: Warichu: The RT and associated RP elements shall be
+ * formatted as a warichu, following the RB element.
+ */
+ public static final String RUBY_POSITION_WARICHU = "Warichu";
+ /**
+ * RubyPosition: Inline: The RT and associated RP elements shall be
+ * formatted as a parenthesis comment, following the RB element.
+ */
+ public static final String RUBY_POSITION_INLINE = "Inline";
+ /**
+ * GlyphOrientationVertical: Auto
+ */
+ public static final String GLYPH_ORIENTATION_VERTICAL_AUTO = "Auto";
+ /**
+ * GlyphOrientationVertical: -180°
+ */
+ public static final String GLYPH_ORIENTATION_VERTICAL_MINUS_180_DEGREES = "-180";
+ /**
+ * GlyphOrientationVertical: -90°
+ */
+ public static final String GLYPH_ORIENTATION_VERTICAL_MINUS_90_DEGREES = "-90";
+ /**
+ * GlyphOrientationVertical: 0°
+ */
+ public static final String GLYPH_ORIENTATION_VERTICAL_ZERO_DEGREES = "0";
+ /**
+ * GlyphOrientationVertical: 90°
+ */
+ public static final String GLYPH_ORIENTATION_VERTICAL_90_DEGREES = "90";
+ /**
+ * GlyphOrientationVertical: 180°
+ */
+ public static final String GLYPH_ORIENTATION_VERTICAL_180_DEGREES = "180";
+ /**
+ * GlyphOrientationVertical: 270°
+ */
+ public static final String GLYPH_ORIENTATION_VERTICAL_270_DEGREES = "270";
+ /**
+ * GlyphOrientationVertical: 360°
+ */
+ public static final String GLYPH_ORIENTATION_VERTICAL_360_DEGREES = "360";
+
+
+ /**
+ * Default constructor.
+ */
+ public PDLayoutAttributeObject()
+ {
+ this.setOwner(OWNER_LAYOUT);
+ }
+
+ /**
+ * Creates a new Layout attribute object with a given dictionary.
+ *
+ * @param dictionary the dictionary
+ */
+ public PDLayoutAttributeObject(COSDictionary dictionary)
+ {
+ super(dictionary);
+ }
+
+
+ /**
+ * Gets the positioning of the element with respect to the enclosing
+ * reference area and other content (Placement). The default value is
+ * {@link #PLACEMENT_INLINE}.
+ *
+ * @return the placement
+ */
+ public String getPlacement()
+ {
+ return this.getName(PLACEMENT, PLACEMENT_INLINE);
+ }
+
+ /**
+ * Sets the positioning of the element with respect to the enclosing
+ * reference area and other content (Placement). The value should be one of:
+ * <ul>
+ * <li>{@link #PLACEMENT_BLOCK},</li>
+ * <li>{@link #PLACEMENT_INLINE},</li>
+ * <li>{@link #PLACEMENT_BEFORE},</li>
+ * <li>{@link #PLACEMENT_START},</li>
+ * <li>{@link #PLACEMENT_END}.</li>
+ * <ul>
+ *
+ * @param placement the placement
+ */
+ public void setPlacement(String placement)
+ {
+ this.setName(PLACEMENT, placement);
+ }
+
+ /**
+ * Gets the writing mode (WritingMode). The default value is
+ * {@link #WRITING_MODE_LRTB}.
+ *
+ * @return the writing mode
+ */
+ public String getWritingMode()
+ {
+ return this.getName(WRITING_MODE, WRITING_MODE_LRTB);
+ }
+
+ /**
+ * Sets the writing mode (WritingMode). The value should be one of:
+ * <ul>
+ * <li>{@link #WRITING_MODE_LRTB},</li>
+ * <li>{@link #WRITING_MODE_RLTB},</li>
+ * <li>{@link #WRITING_MODE_TBRL}.</li>
+ * </ul>
+ *
+ * @param writingMode the writing mode
+ */
+ public void setWritingMode(String writingMode)
+ {
+ this.setName(WRITING_MODE, writingMode);
+ }
+
+ /**
+ * Gets the background colour (BackgroundColor).
+ *
+ * @return the background colour
+ */
+ public PDGamma getBackgroundColor()
+ {
+ return this.getColor(BACKGROUND_COLOR);
+ }
+
+ /**
+ * Sets the background colour (BackgroundColor).
+ *
+ * @param backgroundColor the background colour
+ */
+ public void setBackgroundColor(PDGamma backgroundColor)
+ {
+ this.setColor(BACKGROUND_COLOR, backgroundColor);
+ }
+
+ /**
+ * Gets the border colour (BorderColor).
+ *
+ * @return a single border colour ({@link PDGamma}) or four border colours
+ * ({@link PDFourColours})
+ */
+ public Object getBorderColors()
+ {
+ return this.getColorOrFourColors(BORDER_COLOR);
+ }
+
+ /**
+ * Sets the same border colour for all four sides (BorderColor).
+ *
+ * @param borderColor the border colour
+ */
+ public void setAllBorderColors(PDGamma borderColor)
+ {
+ this.setColor(BORDER_COLOR, borderColor);
+ }
+
+ /**
+ * Sets the border colours for four sides separately (BorderColor).
+ *
+ * @param borderColors the border colours
+ */
+ public void setBorderColors(PDFourColours borderColors)
+ {
+ this.setFourColors(BORDER_COLOR, borderColors);
+ }
+
+ /**
+ * Gets the border style (BorderStyle). The default value is
+ * {@link #BORDER_STYLE_NONE}.
+ *
+ * @return the border styles (a String or an array of four Strings)
+ */
+ public Object getBorderStyle()
+ {
+ return this.getNameOrArrayOfName(BORDER_STYLE, BORDER_STYLE_NONE);
+ }
+
+ /**
+ * Sets the same border style for all four sides (BorderStyle). The value
+ * should be one of:
+ * <ul>
+ * <li>{@link #BORDER_STYLE_NONE},</li>
+ * <li>{@link #BORDER_STYLE_HIDDEN},</li>
+ * <li>{@link #BORDER_STYLE_DOTTED},</li>
+ * <li>{@link #BORDER_STYLE_DASHED},</li>
+ * <li>{@link #BORDER_STYLE_SOLID},</li>
+ * <li>{@link #BORDER_STYLE_DOUBLE},</li>
+ * <li>{@link #BORDER_STYLE_GROOVE},</li>
+ * <li>{@link #BORDER_STYLE_RIDGE},</li>
+ * <li>{@link #BORDER_STYLE_INSET},</li>
+ * <li>{@link #BORDER_STYLE_OUTSET}.</li>
+ * </ul>
+ *
+ * @param borderStyle the border style
+ */
+ public void setAllBorderStyles(String borderStyle)
+ {
+ this.setName(BORDER_STYLE, borderStyle);
+ }
+
+ /**
+ * Sets the border styles for four sides separately (BorderStyle). The
+ * values should be of:
+ * <ul>
+ * <li>{@link #BORDER_STYLE_NONE},</li>
+ * <li>{@link #BORDER_STYLE_HIDDEN},</li>
+ * <li>{@link #BORDER_STYLE_DOTTED},</li>
+ * <li>{@link #BORDER_STYLE_DASHED},</li>
+ * <li>{@link #BORDER_STYLE_SOLID},</li>
+ * <li>{@link #BORDER_STYLE_DOUBLE},</li>
+ * <li>{@link #BORDER_STYLE_GROOVE},</li>
+ * <li>{@link #BORDER_STYLE_RIDGE},</li>
+ * <li>{@link #BORDER_STYLE_INSET},</li>
+ * <li>{@link #BORDER_STYLE_OUTSET}.</li>
+ * </ul>
+ *
+ * @param borderStyles the border styles (an array of four Strings)
+ */
+ public void setBorderStyles(String[] borderStyles)
+ {
+ this.setArrayOfName(BORDER_STYLE, borderStyles);
+ }
+
+ /**
+ * Gets the border thickness (BorderThickness).
+ *
+ * @return the border thickness (a Float or an array of four floats)
+ */
+ public Object getBorderThickness()
+ {
+ return this.getNumberOrArrayOfNumber(BORDER_THICKNESS, UNSPECIFIED);
+ }
+
+ /**
+ * Sets the same border thickness for all four sides (BorderThickness).
+ *
+ * @param borderThickness the border thickness
+ */
+ public void setAllBorderThicknesses(float borderThickness)
+ {
+ this.setNumber(BORDER_THICKNESS, borderThickness);
+ }
+
+ /**
+ * Sets the same border thickness for all four sides (BorderThickness).
+ *
+ * @param borderThickness the border thickness
+ */
+ public void setAllBorderThicknesses(int borderThickness)
+ {
+ this.setNumber(BORDER_THICKNESS, borderThickness);
+ }
+
+ /**
+ * Sets the border thicknesses for four sides separately (BorderThickness).
+ *
+ * @param borderThicknesses the border thickness (an array of four floats)
+ */
+ public void setBorderThicknesses(float[] borderThicknesses)
+ {
+ this.setArrayOfNumber(BORDER_THICKNESS, borderThicknesses);
+ }
+
+ /**
+ * Gets the padding (Padding). The default value is 0.
+ *
+ * @return the padding (a Float or an array of float)
+ */
+ public Object getPadding()
+ {
+ return this.getNumberOrArrayOfNumber(PADDING, 0.f);
+ }
+
+ /**
+ * Sets the same padding for all four sides (Padding).
+ *
+ * @param padding the padding
+ */
+ public void setAllPaddings(float padding)
+ {
+ this.setNumber(PADDING, padding);
+ }
+
+ /**
+ * Sets the same padding for all four sides (Padding).
+ *
+ * @param padding the padding
+ */
+ public void setAllPaddings(int padding)
+ {
+ this.setNumber(PADDING, padding);
+ }
+
+ /**
+ * Sets the paddings for four sides separately (Padding).
+ *
+ * @param paddings the paddings (an array of four floats)
+ */
+ public void setPaddings(float[] paddings)
+ {
+ this.setArrayOfNumber(PADDING, paddings);
+ }
+
+ /**
+ * Gets the color to be used for drawing text and the default value for the
+ * colour of table borders and text decorations (Color).
+ *
+ * @return the colour
+ */
+ public PDGamma getColor()
+ {
+ return this.getColor(COLOR);
+ }
+
+ /**
+ * Sets the color to be used for drawing text and the default value for the
+ * colour of table borders and text decorations (Color).
+ *
+ * @param color the colour
+ */
+ public void setColor(PDGamma color)
+ {
+ this.setColor(COLOR, color);
+ }
+
+ /**
+ * Gets the amount of extra space preceding the before edge of the BLSE in
+ * the block-progression direction (SpaceBefore). The default value is 0.
+ *
+ * @return the space before
+ */
+ public float getSpaceBefore()
+ {
+ return this.getNumber(SPACE_BEFORE, 0.f);
+ }
+
+ /**
+ * Sets the amount of extra space preceding the before edge of the BLSE in
+ * the block-progression direction (SpaceBefore).
+ *
+ * @param spaceBefore the space before
+ */
+ public void setSpaceBefore(float spaceBefore)
+ {
+ this.setNumber(SPACE_BEFORE, spaceBefore);
+ }
+
+ /**
+ * Sets the amount of extra space preceding the before edge of the BLSE in
+ * the block-progression direction (SpaceBefore).
+ *
+ * @param spaceBefore the space before
+ */
+ public void setSpaceBefore(int spaceBefore)
+ {
+ this.setNumber(SPACE_BEFORE, spaceBefore);
+ }
+
+ /**
+ * Gets the amount of extra space following the after edge of the BLSE in
+ * the block-progression direction (SpaceAfter). The default value is 0.
+ *
+ * @return the space after
+ */
+ public float getSpaceAfter()
+ {
+ return this.getNumber(SPACE_AFTER, 0.f);
+ }
+
+ /**
+ * Sets the amount of extra space following the after edge of the BLSE in
+ * the block-progression direction (SpaceAfter).
+ *
+ * @param spaceAfter the space after
+ */
+ public void setSpaceAfter(float spaceAfter)
+ {
+ this.setNumber(SPACE_AFTER, spaceAfter);
+ }
+
+ /**
+ * Sets the amount of extra space following the after edge of the BLSE in
+ * the block-progression direction (SpaceAfter).
+ *
+ * @param spaceAfter the space after
+ */
+ public void setSpaceAfter(int spaceAfter)
+ {
+ this.setNumber(SPACE_AFTER, spaceAfter);
+ }
+
+ /**
+ * Gets the distance from the start edge of the reference area to that of
+ * the BLSE in the inline-progression direction (StartIndent). The default value is 0.
+ *
+ * @return the start indent
+ */
+ public float getStartIndent()
+ {
+ return this.getNumber(START_INDENT, 0.f);
+ }
+
+ /**
+ * Sets the distance from the start edge of the reference area to that of
+ * the BLSE in the inline-progression direction (StartIndent).
+ *
+ * @param startIndent the start indent
+ */
+ public void setStartIndent(float startIndent)
+ {
+ this.setNumber(START_INDENT, startIndent);
+ }
+
+ /**
+ * Sets the distance from the start edge of the reference area to that of
+ * the BLSE in the inline-progression direction (StartIndent).
+ *
+ * @param startIndent the start indent
+ */
+ public void setStartIndent(int startIndent)
+ {
+ this.setNumber(START_INDENT, startIndent);
+ }
+
+ /**
+ * Gets the distance from the end edge of the BLSE to that of the reference
+ * area in the inline-progression direction (EndIndent). The default value
+ * is 0.
+ *
+ * @return the end indent
+ */
+ public float getEndIndent()
+ {
+ return this.getNumber(END_INDENT, 0.f);
+ }
+
+ /**
+ * Sets the distance from the end edge of the BLSE to that of the reference
+ * area in the inline-progression direction (EndIndent).
+ *
+ * @param endIndent the end indent
+ */
+ public void setEndIndent(float endIndent)
+ {
+ this.setNumber(END_INDENT, endIndent);
+ }
+
+ /**
+ * Sets the distance from the end edge of the BLSE to that of the reference
+ * area in the inline-progression direction (EndIndent).
+ *
+ * @param endIndent the end indent
+ */
+ public void setEndIndent(int endIndent)
+ {
+ this.setNumber(END_INDENT, endIndent);
+ }
+
+ /**
+ * Gets the additional distance in the inline-progression direction from the
+ * start edge of the BLSE, as specified by StartIndent, to that of the first
+ * line of text (TextIndent). The default value is 0.
+ *
+ * @return the text indent
+ */
+ public float getTextIndent()
+ {
+ return this.getNumber(TEXT_INDENT, 0.f);
+ }
+
+ /**
+ * Sets the additional distance in the inline-progression direction from the
+ * start edge of the BLSE, as specified by StartIndent, to that of the first
+ * line of text (TextIndent).
+ *
+ * @param textIndent the text indent
+ */
+ public void setTextIndent(float textIndent)
+ {
+ this.setNumber(TEXT_INDENT, textIndent);
+ }
+
+ /**
+ * Sets the additional distance in the inline-progression direction from the
+ * start edge of the BLSE, as specified by StartIndent, to that of the first
[... 919 lines stripped ...]