Class CalculatedStyle

  • Direct Known Subclasses:
    EmptyStyle

    public class CalculatedStyle
    extends Object
    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 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:
    Author:
    Torbjoern Gannholm, Patrick Wright
    • Constructor Detail

      • CalculatedStyle

        protected CalculatedStyle()
        Default constructor; as the instance is immutable after use, don't use this for class instantiation externally.
    • Method Detail

      • getderivedValuesById

        public FSDerivedValue[] getderivedValuesById()
      • deriveStyle

        public CalculatedStyle deriveStyle​(CascadedStyle matched)
        Derives a child style from this style. Non-inherited properties such as borders will be replaced compared to this 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

        public CalculatedStyle overrideStyle​(IdentValue display)
        Override this style with specified styles. This will NOT create a child style, rather an exact copy with only the display property overridden. Compare to createAnonymousStyle(IdentValue) which creates a child style.
      • getParent

        public CalculatedStyle getParent()
        Returns the parent style.
        Returns:
        Returns the parent style
      • toString

        public String toString()
        Converts to a String representation of the object.
        Overrides:
        toString in class Object
        Returns:
        The borderWidth value
      • asFloat

        public float asFloat​(CSSName cssName)
      • asStringArray

        public String[] asStringArray​(CSSName cssName)
      • hasAbsoluteUnit

        public boolean hasAbsoluteUnit​(CSSName cssName)
      • isIdent

        public boolean isIdent​(CSSName cssName,
                               IdentValue val)
        Gets the ident attribute of the CalculatedStyle object
        Parameters:
        cssName - PARAM
        val - PARAM
        Returns:
        The ident value
      • getIdent

        public IdentValue getIdent​(CSSName cssName)
        Gets the ident attribute of the CalculatedStyle object
        Parameters:
        cssName - PARAM
        Returns:
        The ident value
      • getColor

        public FSColor 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

        public FSColor 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
      • getFloatPropertyProportionalTo

        public float getFloatPropertyProportionalTo​(CSSName cssName,
                                                    float baseValue,
                                                    CssContext ctx)
      • getFloatPropertyProportionalWidth

        public float getFloatPropertyProportionalWidth​(CSSName cssName,
                                                       float parentWidth,
                                                       CssContext ctx)
        Parameters:
        cssName -
        parentWidth -
        ctx -
        Returns:
        TODO
      • getFloatPropertyProportionalHeight

        public float getFloatPropertyProportionalHeight​(CSSName cssName,
                                                        float parentHeight,
                                                        CssContext ctx)
        Parameters:
        cssName -
        parentHeight -
        ctx -
        Returns:
        TODO
      • getLineHeight

        public float getLineHeight​(CssContext ctx)
      • getMarginRect

        public RectPropertySet getMarginRect​(float cbWidth,
                                             CssContext ctx)
        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
      • getPaddingRect

        public RectPropertySet getPaddingRect​(float cbWidth,
                                              CssContext ctx,
                                              boolean useCache)
        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
      • getStringProperty

        public String getStringProperty​(CSSName cssName)
        Parameters:
        cssName -
        Returns:
        TODO
      • isLength

        public boolean isLength​(CSSName cssName)
        TODO: doc
      • isLengthOrNumber

        public boolean isLengthOrNumber​(CSSName cssName)
      • valueByName

        public FSDerivedValue valueByName​(CSSName cssName)
        Returns a FSDerivedValue 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"
      • getMarginBorderPadding

        public int getMarginBorderPadding​(CssContext cssCtx,
                                          int cbWidth,
                                          int which)
      • getWhitespace

        public IdentValue getWhitespace()
      • isClearLeft

        public boolean isClearLeft()
      • isClearRight

        public boolean isClearRight()
      • isCleared

        public boolean isCleared()
      • 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()
      • isTableFooter

        public boolean isTableFooter()
      • 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

        public String getRunningName()
      • isOverflowApplies

        public boolean isOverflowApplies()
      • isOverflowVisible

        public boolean isOverflowVisible()
      • isHorizontalBackgroundRepeat

        public boolean isHorizontalBackgroundRepeat​(PropertyValue value)
      • isVerticalBackgroundRepeat

        public boolean isVerticalBackgroundRepeat​(PropertyValue value)
      • 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

        public boolean isVisible​(RenderingContext renderingContext,
                                 Box thisElement)
        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

        public CalculatedStyle createAnonymousStyle​(IdentValue display)
        This method derives a style for an anonymous child box with an overriden value for the display property.

        NOTE: All non-inherited properties of this 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

        public int getMinWidth​(CssContext c,
                               int cbWidth)
      • getMaxWidth

        public int getMaxWidth​(CssContext c,
                               int cbWidth)
      • getMinHeight

        public int getMinHeight​(CssContext c,
                                int cbHeight)
      • getMaxHeight

        public int getMaxHeight​(CssContext c,
                                int cbHeight)
      • isCollapseBorders

        public boolean isCollapseBorders()
      • getBorderHSpacing

        public int getBorderHSpacing​(CssContext c)
      • getBorderVSpacing

        public int getBorderVSpacing​(CssContext c)
      • getRowSpan

        public int getRowSpan()
      • getColSpan

        public int getColSpan()
      • getFSPageBreakMinHeight

        public float getFSPageBreakMinHeight​(CssContext c)
      • isShowEmptyCells

        public boolean isShowEmptyCells()
      • getCursor

        public Cursor 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()
      • hasLetterSpacing

        public boolean hasLetterSpacing()
      • isParagraphContainerForBidi

        public boolean isParagraphContainerForBidi()
      • isBorderBox

        public boolean isBorderBox()
        Returns:
        true for border-box, false for content-box.
      • getCSSMaxWidth

        public static int getCSSMaxWidth​(CssContext c,
                                         Box box)
        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

        public static int getCSSMaxHeight​(CssContext c,
                                          Box box)
        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

        public boolean isLinearGradient​(PropertyValue value)