Package com.openhtmltopdf.css.style
Class CalculatedStyle
java.lang.Object
com.openhtmltopdf.css.style.CalculatedStyle
- Direct Known Subclasses:
EmptyStyle
A set of properties that apply to a single Element, derived from all matched
properties following the rules for CSS cascade, inheritance, importance,
specificity and sequence. A property retrieved by name should always have
exactly one value in this class (e.g. one-one map). Some methods to retrieve
property values from an instance of this class require a valid
This is the go to class for working with a resolved style. Generally, you can get a instance for a box by calling:
LayoutContext
be given to them.
This is the go to class for working with a resolved style. Generally, you can get a instance for a box by calling:
Box.getStyle()
after a box has been created by theBoxBuilder
SharedContext.getStyle(org.w3c.dom.Element)
for an elementStyleReference.getPseudoElementStyle(org.w3c.dom.Node, String)
for a pseudo element. StyleReference is available fromLayoutContext
deriveStyle(CascadedStyle)
to create a child style (non-inherited
property values will not be available from the child style
EmptyStyle
to start with nothing
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
static enum
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate BorderPropertySet
private boolean
private final Map
<String, CalculatedStyle> Cache child styles of this style that have the same cascaded propertiesprivate final FSDerivedValue[]
Our main array of property values defined in this style, keyed by the CSSName assigned ID.private FontSpecification
The derived Font for this styleprivate FSFont
private FSFontMetrics
private float
private boolean
private RectPropertySet
private boolean
private RectPropertySet
private boolean
private CalculatedStyle
The parent-style we inherit fromstatic final int
static final int
static final int
static final int
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
Default constructor; as the instance is immutable after use, don't use this for class instantiation externally.private
CalculatedStyle
(CalculatedStyle parent, CascadedStyle matched) Constructor for the CalculatedStyle object. -
Method Summary
Modifier and TypeMethodDescriptionfloat
asLength
(CssContext c, CSSName cssName) String[]
asStringArray
(CSSName cssName) private void
private void
private void
int
createAnonymousStyle
(IdentValue display) This method derives a style for an anonymous child box with an overriden value for the display property.private void
derive
(CascadedStyle matched) This method should result in the element for this style having a derived value for all specified (in stylesheets, style attribute, other non CSS attrs, etc) primitive CSS properties.deriveStyle
(CascadedStyle matched) Derives a child style from this style.private FSDerivedValue
deriveValue
(CSSName cssName, CSSPrimitiveValue value) boolean
int
private String
Convenience property accessor; returns a Color initialized with the background color value; Uses the actual value (computed actual value) for this element.Gets the values of the background properties and combines in a list of BackgroundContainer values.getBackgroundRepeat
(PropertyValue value) getBorder
(CssContext ctx) int
private static BorderPropertySet
getBorderProperty
(CalculatedStyle style, CssContext ctx) int
getColor()
Convenience property accessor; returns a Color initialized with the foreground color Uses the actual value (computed actual value) for this element.int
static int
getCSSMaxHeight
(CssContext c, Box box) Aims to get the correct resolved max-height for a box in dots unit.static int
getCSSMaxWidth
(CssContext c, Box box) Aims to get the correct resolved max-width for a box in dots unit.float
getFloatPropertyProportionalHeight
(CSSName cssName, float parentHeight, CssContext ctx) float
getFloatPropertyProportionalTo
(CSSName cssName, float baseValue, CssContext ctx) float
getFloatPropertyProportionalWidth
(CSSName cssName, float parentWidth, CssContext ctx) getFont
(CssContext ctx) getFSFont
(CssContext cssContext) float
Gets the ident attribute of the CalculatedStyle objectgetLinearGradient
(PropertyValue value, CssContext cssContext, int boxWidth, int boxHeight) float
getLineHeight
(CssContext ctx) int
getMarginBorderPadding
(CssContext cssCtx, int cbWidth, int which) private static RectPropertySet
getMarginProperty
(CalculatedStyle style, CSSName shorthandProp, CSSName.CSSSideProperties sides, float cbWidth, CssContext ctx, boolean useCache) getMarginRect
(float cbWidth, CssContext ctx) Convenience property accessor; returns a Border initialized with the four-sided margin width.getMarginRect
(float cbWidth, CssContext ctx, boolean useCache) int
getMaxHeight
(CssContext c, int cbHeight) int
getMaxWidth
(CssContext c, int cbWidth) int
getMinHeight
(CssContext c, int cbHeight) int
getMinWidth
(CssContext c, int cbWidth) private static RectPropertySet
getPaddingProperty
(CalculatedStyle style, CSSName shorthandProp, CSSName.CSSSideProperties sides, float cbWidth, CssContext ctx, boolean useCache) getPaddingRect
(float cbWidth, CssContext ctx) getPaddingRect
(float cbWidth, CssContext ctx, boolean useCache) Convenience property accessor; returns a Border initialized with the four-sided padding width.Returns the parent style.int
getStringProperty
(CSSName cssName) boolean
hasAbsoluteUnit
(CSSName cssName) boolean
boolean
private void
init
(CascadedStyle matched) boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
isFixed()
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
isIdent
(CSSName cssName, IdentValue val) Gets the ident attribute of the CalculatedStyle objectboolean
boolean
boolean
isInline()
boolean
boolean
boolean
boolean
boolean
TODO: docboolean
isLengthOrNumber
(CSSName cssName) boolean
isLinearGradient
(PropertyValue value) boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
isTable()
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
boolean
isVisible
(RenderingContext renderingContext, Box thisElement) Determine if the element is visible.boolean
boolean
private static RectPropertySet
newRectInstance
(CalculatedStyle style, CSSName shorthand, CSSName.CSSSideProperties sides, float cbWidth, CssContext ctx) overrideStyle
(IdentValue display) Override this style with specified styles.overrideStyle
(CascadedStyle matched) Override this style with specified styles.boolean
private IdentValue
toString()
Converts to a String representation of the object.valueByName
(CSSName cssName) Returns aFSDerivedValue
by name.
-
Field Details
-
_parent
The parent-style we inherit from -
_border
-
_margin
-
_padding
-
_lineHeight
private float _lineHeight -
_lineHeightResolved
private boolean _lineHeightResolved -
_FSFont
-
_FSFontMetrics
-
_marginsAllowed
private boolean _marginsAllowed -
_paddingAllowed
private boolean _paddingAllowed -
_bordersAllowed
private boolean _bordersAllowed -
_childCache
Cache child styles of this style that have the same cascaded properties -
_derivedValuesById
Our main array of property values defined in this style, keyed by the CSSName assigned ID. -
_font
The derived Font for this style -
LEFT
public static final int LEFT- See Also:
-
RIGHT
public static final int RIGHT- See Also:
-
TOP
public static final int TOP- See Also:
-
BOTTOM
public static final int BOTTOM- See Also:
-
-
Constructor Details
-
CalculatedStyle
protected CalculatedStyle()Default constructor; as the instance is immutable after use, don't use this for class instantiation externally. -
CalculatedStyle
Constructor for the CalculatedStyle object. To get a derived style, use the Styler objects getDerivedStyle which will cache styles- Parameters:
parent
- PARAMmatched
- PARAM
-
-
Method Details
-
getderivedValuesById
-
init
-
checkPaddingAllowed
private void checkPaddingAllowed() -
checkMarginsAllowed
private void checkMarginsAllowed() -
checkBordersAllowed
private void checkBordersAllowed() -
deriveStyle
Derives a child style from this style. Non-inherited properties such as borders will be replaced compared tothis
which is used as parent style.
Depends on the ability to return the identical CascadedStyle each time a child style is needed- Parameters:
matched
- the CascadedStyle to apply- Returns:
- The derived child style
-
overrideStyle
Override this style with specified styles. This will NOT create a child style, rather an exact copy with only the specified properties overridden. Compare toderiveStyle(CascadedStyle)
. -
overrideStyle
Override this style with specified styles. This will NOT create a child style, rather an exact copy with only the display property overridden. Compare tocreateAnonymousStyle(IdentValue)
which creates a child style. -
getParent
Returns the parent style.- Returns:
- Returns the parent style
-
toString
Converts to a String representation of the object. -
asColor
-
asFloat
-
asString
-
asStringArray
-
hasAbsoluteUnit
-
isIdent
Gets the ident attribute of the CalculatedStyle object- Parameters:
cssName
- PARAMval
- PARAM- Returns:
- The ident value
-
getIdent
Gets the ident attribute of the CalculatedStyle object- Parameters:
cssName
- PARAM- Returns:
- The ident value
-
getColor
Convenience property accessor; returns a Color initialized with the foreground color Uses the actual value (computed actual value) for this element.- Returns:
- The color value
-
getBackgroundColor
Convenience property accessor; returns a Color initialized with the background color value; Uses the actual value (computed actual value) for this element.- Returns:
- The backgroundColor value
-
getCounterReset
-
getCounterIncrement
-
getBorder
-
getFont
-
getFontSpecification
-
resolveAbsoluteFontSize
-
getFloatPropertyProportionalTo
-
getFloatPropertyProportionalWidth
- Parameters:
cssName
-parentWidth
-ctx
-- Returns:
- TODO
-
getFloatPropertyProportionalHeight
public float getFloatPropertyProportionalHeight(CSSName cssName, float parentHeight, CssContext ctx) - Parameters:
cssName
-parentHeight
-ctx
-- Returns:
- TODO
-
getLineHeight
-
getMarginRect
Convenience property accessor; returns a Border initialized with the four-sided margin width. Uses the actual value (computed actual value) for this element.- Parameters:
cbWidth
-ctx
-- Returns:
- The marginWidth value
-
getMarginRect
-
getPaddingRect
Convenience property accessor; returns a Border initialized with the four-sided padding width. Uses the actual value (computed actual value) for this element.- Parameters:
cbWidth
-ctx
-- Returns:
- The paddingWidth value
-
getPaddingRect
-
getStringProperty
- Parameters:
cssName
-- Returns:
- TODO
-
isLength
TODO: doc -
isLengthOrNumber
-
valueByName
Returns aFSDerivedValue
by name. Because we are a derived style, the property will already be resolved at this point.
This will look up the ancestor tree for inherited properties and use an initial value for unspecified properties which do not inherit.- Parameters:
cssName
- The CSS property name, e.g. "font-family"
-
derive
This method should result in the element for this style having a derived value for all specified (in stylesheets, style attribute, other non CSS attrs, etc) primitive CSS properties. Other properties are picked up from an ancestor (if they inherit) or their initial values (if they don't inherit). SeevalueByName(CSSName)
.
The implementation is based on the notion that the matched styles are given to us in a perfectly sorted order, such that properties appearing later in the rule-set always override properties appearing earlier.
The current implementation makes no attempt to check this assumption. When this method exits, the derived property list for this class will be populated with the properties defined for this element, properly cascaded. -
deriveValue
-
genStyleKey
-
getCachedPadding
-
getCachedMargin
-
getPaddingProperty
private static RectPropertySet getPaddingProperty(CalculatedStyle style, CSSName shorthandProp, CSSName.CSSSideProperties sides, float cbWidth, CssContext ctx, boolean useCache) -
getMarginProperty
private static RectPropertySet getMarginProperty(CalculatedStyle style, CSSName shorthandProp, CSSName.CSSSideProperties sides, float cbWidth, CssContext ctx, boolean useCache) -
newRectInstance
private static RectPropertySet newRectInstance(CalculatedStyle style, CSSName shorthand, CSSName.CSSSideProperties sides, float cbWidth, CssContext ctx) -
getBorderProperty
-
getMarginBorderPadding
-
getWhitespace
-
getFSFont
-
getFSFontMetrics
-
getWordWrap
-
isClearLeft
public boolean isClearLeft() -
isClearRight
public boolean isClearRight() -
isCleared
public boolean isCleared() -
getBackgroundRepeat
-
isInline
public boolean isInline() -
isInlineBlock
public boolean isInlineBlock() -
isTable
public boolean isTable() -
isInlineTable
public boolean isInlineTable() -
isTableCell
public boolean isTableCell() -
isTableSection
public boolean isTableSection() -
isTableCaption
public boolean isTableCaption() -
isTableHeader
public boolean isTableHeader() -
isTableRow
public boolean isTableRow() -
isDisplayNone
public boolean isDisplayNone() -
isSpecifiedAsBlock
public boolean isSpecifiedAsBlock() -
isBlockEquivalent
public boolean isBlockEquivalent() -
isLayedOutInInlineContext
public boolean isLayedOutInInlineContext() -
isNeedAutoMarginResolution
public boolean isNeedAutoMarginResolution() -
isAbsolute
public boolean isAbsolute() -
isFixed
public boolean isFixed() -
isFloated
public boolean isFloated() -
isFloatedLeft
public boolean isFloatedLeft() -
isFloatedRight
public boolean isFloatedRight() -
isFootnote
public boolean isFootnote() -
isFootnoteBody
public boolean isFootnoteBody() -
isRelative
public boolean isRelative() -
isPostionedOrFloated
public boolean isPostionedOrFloated() -
isPositioned
public boolean isPositioned() -
isAutoWidth
public boolean isAutoWidth() -
isAbsoluteWidth
public boolean isAbsoluteWidth() -
isAutoHeight
public boolean isAutoHeight() -
isAutoLeftMargin
public boolean isAutoLeftMargin() -
isAutoRightMargin
public boolean isAutoRightMargin() -
isAutoZIndex
public boolean isAutoZIndex() -
establishesBFC
public boolean establishesBFC() -
requiresLayer
public boolean requiresLayer() -
isRunning
public boolean isRunning() -
getRunningName
-
isOverflowApplies
public boolean isOverflowApplies() -
isOverflowVisible
public boolean isOverflowVisible() -
isHorizontalBackgroundRepeat
-
isVerticalBackgroundRepeat
-
isTopAuto
public boolean isTopAuto() -
isBottomAuto
public boolean isBottomAuto() -
isListItem
public boolean isListItem() -
hasColumns
public boolean hasColumns() -
columnCount
public int columnCount() -
fsMaxOverflowPages
public int fsMaxOverflowPages() -
isVisible
Determine if the element is visible. This is normaly the case if visibility == visible. Only when visibilty is -fs-table-paginate-repeated-visible and we are in a repeated table header the element will also be visible. This allows to only show an element in the table header after a page break.- Parameters:
renderingContext
- null or the current renderingContext. If null, then the -fs-table-paginate-repeated-visible logic will not work.thisElement
- the element for which the visibility should be determined. Only required if -fs-table-paginate-repeated-visible is specified.- Returns:
- true if the element is visible
-
isForcePageBreakBefore
public boolean isForcePageBreakBefore() -
isForcePageBreakAfter
public boolean isForcePageBreakAfter() -
isColumnBreakBefore
public boolean isColumnBreakBefore() -
isColumnBreakAfter
public boolean isColumnBreakAfter() -
isAvoidPageBreakInside
public boolean isAvoidPageBreakInside() -
createAnonymousStyle
This method derives a style for an anonymous child box with an overriden value for the display property.
NOTE: All non-inherited properties ofthis
will be lost as the returned style is for a child box. -
mayHaveFirstLine
public boolean mayHaveFirstLine() -
mayHaveFirstLetter
public boolean mayHaveFirstLetter() -
isNonFlowContent
public boolean isNonFlowContent() -
isMayCollapseMarginsWithChildren
public boolean isMayCollapseMarginsWithChildren() -
isAbsFixedOrInlineBlockEquiv
public boolean isAbsFixedOrInlineBlockEquiv() -
isMaxWidthNone
public boolean isMaxWidthNone() -
isMaxHeightNone
public boolean isMaxHeightNone() -
isImageRenderingPixelated
public boolean isImageRenderingPixelated() -
isImageRenderingInterpolate
public boolean isImageRenderingInterpolate() -
getMinWidth
-
getMaxWidth
-
getMinHeight
-
getMaxHeight
-
isCollapseBorders
public boolean isCollapseBorders() -
getBorderHSpacing
-
getBorderVSpacing
-
getRowSpan
public int getRowSpan() -
getColSpan
public int getColSpan() -
getFSPageBreakMinHeight
-
asLength
-
isShowEmptyCells
public boolean isShowEmptyCells() -
getTextDecorations
-
getCursor
-
isPaginateTable
public boolean isPaginateTable() -
isTextJustify
public boolean isTextJustify() -
isListMarkerInside
public boolean isListMarkerInside() -
isKeepWithInline
public boolean isKeepWithInline() -
isDynamicAutoWidth
public boolean isDynamicAutoWidth() -
isDynamicAutoWidthApplicable
public boolean isDynamicAutoWidthApplicable() -
isCanBeShrunkToFit
public boolean isCanBeShrunkToFit() -
isDirectionLTR
public boolean isDirectionLTR() -
isDirectionRTL
public boolean isDirectionRTL() -
isDirectionAuto
public boolean isDirectionAuto() -
getDirection
-
hasLetterSpacing
public boolean hasLetterSpacing() -
isParagraphContainerForBidi
public boolean isParagraphContainerForBidi() -
isBorderBox
public boolean isBorderBox()- Returns:
- true for border-box, false for content-box.
-
getCSSMaxWidth
Aims to get the correct resolved max-width for a box in dots unit. Returns -1 if there is no max-width defined. Assumptions: box has a containing block. -
getCSSMaxHeight
Aims to get the correct resolved max-height for a box in dots unit. returns -1 if there is no max-height defined. Assumptions: box has a containing block. -
isHasBackground
public boolean isHasBackground() -
isHasBackgroundImage
public boolean isHasBackgroundImage() -
isLinearGradient
-
getLinearGradient
public FSLinearGradient getLinearGradient(PropertyValue value, CssContext cssContext, int boxWidth, int boxHeight) -
getBackgroundImages
Gets the values of the background properties and combines in a list of BackgroundContainer values.
-