Class Box

java.lang.Object
com.openhtmltopdf.render.Box
All Implemented Interfaces:
Styleable, DisplayListItem
Direct Known Subclasses:
BlockBox, InlineLayoutBox, LineBox

public abstract class Box
extends Object
implements Styleable, DisplayListItem
  • Field Details

  • Constructor Details

    • Box

      protected Box()
  • Method Details

    • getClipBox

      public Rectangle getClipBox​(RenderingContext c, Layer layer)
      Gets the combined clip of this box relative to the containing layer. The returned clip is in document coordinate space (not transformed in any way). For example, if we have the following nesting: overflow hidden := transformed box := overflow hidden := overflow hidden := overflow visible this function called on the overflow visible box will return the combined clip of its two immediate ancestors in document coordinate space. It stops at the transformed box because the transform triggers a layer. Currently this method is used for getting the clip to apply to a float, which are nested in layers but taken out of the default block list and therefore clip stack. Since it is only used for floats, the result is not cached. Revisit this decision if using for every box. There are several other clip methods available: + getChildrenClipEdge(CssContext) - gets the local clip for a single box. + getParentClipBox(RenderingContext, Layer) - gets the layer relative clip for the parent box. + getAbsoluteClipBox(CssContext) - gets the absolute clip box in document coordinates
    • getParentClipBox

      public Rectangle getParentClipBox​(RenderingContext c, Layer layer)
      Gets the layer relative clip for the parent box.
    • getAbsoluteClipBox

      public Area getAbsoluteClipBox​(CssContext c)
      Returns the absolute (ie transformed if needed) clip area for this box. Cached as this will be needed on every box to check if the clip area is inside a page.
    • dump

      public abstract String dump​(LayoutContext c, String indent, int which)
    • dumpBoxes

      protected void dumpBoxes​(LayoutContext c, String indent, List<Box> boxes, int which, StringBuilder result)
    • getWidth

      public int getWidth()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • addChildForLayout

      public void addChildForLayout​(LayoutContext c, Box child)
    • addChild

      public void addChild​(Box child)
    • addAllChildren

      public void addAllChildren​(List<Box> children)
    • removeAllChildren

      public void removeAllChildren()
    • removeChild

      public void removeChild​(Box target)
    • getPreviousSibling

      public Box getPreviousSibling()
    • getNextSibling

      public Box getNextSibling()
    • getPrevious

      protected Box getPrevious​(Box child)
    • getNext

      protected Box getNext​(Box child)
    • removeChild

      public void removeChild​(int i)
    • setParent

      public void setParent​(Box box)
    • getParent

      public Box getParent()
    • getDocumentParent

      public Box getDocumentParent()
    • getChildCount

      public int getChildCount()
    • getChild

      public Box getChild​(int i)
    • getChildIterator

      public Iterator<Box> getChildIterator()
    • getChildren

      public List<Box> getChildren()
    • getChildIteratorOfType

      public <T> Iterator<T> getChildIteratorOfType​(Class<T> type)
      Returns an iterator of boxes cast to type. If a box is not of type, an error will be logged and null will be returned for that box. Therefore, this method should only be used when it is certain all children are of a particular type. Eg: TableBox has children only of type TableSectionBox.
    • getState

      public int getState()
    • setState

      public void setState​(int state)
    • stateToString

      public static String stateToString​(int state)
    • getStyle

      public final CalculatedStyle getStyle()
      Specified by:
      getStyle in interface Styleable
    • setStyle

      public void setStyle​(CalculatedStyle style)
      Specified by:
      setStyle in interface Styleable
    • getContainingBlock

      public Box getContainingBlock()
    • setContainingBlock

      public void setContainingBlock​(Box containingBlock)
    • getMarginEdge

      public Rectangle getMarginEdge​(int left, int top, CssContext cssCtx, int tx, int ty)
    • getMarginEdge

      public Rectangle getMarginEdge​(CssContext cssCtx, int tx, int ty)
    • getPaintingBorderEdge

      public Rectangle getPaintingBorderEdge​(CssContext cssCtx)
    • getPaintingPaddingEdge

      public Rectangle getPaintingPaddingEdge​(CssContext cssCtx)
    • getPaintingClipEdge

      public Rectangle getPaintingClipEdge​(CssContext cssCtx)
    • getChildrenClipEdge

      public Rectangle getChildrenClipEdge​(CssContext c)
    • intersects

      public boolean intersects​(CssContext cssCtx, Shape clip)
      NOTE: This method does not consider any children of this box but does consider the transformation matrix of the containing layer.
    • getBorderEdge

      public Rectangle getBorderEdge​(int left, int top, CssContext cssCtx)
    • getPaddingEdge

      public Rectangle getPaddingEdge​(int left, int top, CssContext cssCtx)
    • getPaddingWidth

      protected int getPaddingWidth​(CssContext cssCtx)
    • getContentAreaEdge

      public Rectangle getContentAreaEdge​(int left, int top, CssContext cssCtx)
    • getLayer

      public Layer getLayer()
    • setLayer

      public void setLayer​(Layer layer)
    • positionRelative

      public Dimension positionRelative​(CssContext cssCtx)
    • isInlineBlock

      protected boolean isInlineBlock()
    • setAbsY

      public void setAbsY​(int absY)
    • getAbsY

      public int getAbsY()
    • setAbsX

      public void setAbsX​(int absX)
    • getAbsX

      public int getAbsX()
    • isStyled

      public boolean isStyled()
    • getBorderSides

      public int getBorderSides()
    • paintBorder

      public void paintBorder​(RenderingContext c)
    • paintBackground

      public void paintBackground​(RenderingContext c)
    • hasNonTextContent

      public boolean hasNonTextContent​(CssContext c)
    • setAccessiblityObject

      public void setAccessiblityObject​(Object object)
    • getAccessibilityObject

      public Object getAccessibilityObject()
    • paintRootElementBackground

      public void paintRootElementBackground​(RenderingContext c)
    • hasRootElementBackground

      public boolean hasRootElementBackground​(RenderingContext c)
      If the html or body box have a background return true.
    • getContainingLayer

      public Layer getContainingLayer()
    • setContainingLayer

      public void setContainingLayer​(Layer containingLayer)
    • initContainingLayer

      public void initContainingLayer​(LayoutContext c)
    • connectChildrenToCurrentLayer

      public void connectChildrenToCurrentLayer​(LayoutContext c)
    • getElementBoxes

      public List<Box> getElementBoxes​(Element elem)
    • reset

      public void reset​(LayoutContext c)
    • detach

      public void detach​(LayoutContext c)
    • resetChildren

      public void resetChildren​(LayoutContext c, int start, int end)
    • resetChildren

      protected void resetChildren​(LayoutContext c)
    • calcCanvasLocation

      public abstract void calcCanvasLocation()
    • calcChildLocations

      public void calcChildLocations()
    • forcePageBreakBefore

      public int forcePageBreakBefore​(LayoutContext c, IdentValue pageBreakValue, boolean pendingPageName)
    • forcePageBreakBefore

      public int forcePageBreakBefore​(LayoutContext c, IdentValue pageBreakValue, boolean pendingPageName, int absY)
    • forcePageBreakAfter

      public void forcePageBreakAfter​(LayoutContext c, IdentValue pageBreakValue)
    • crossesPageBreak

      public boolean crossesPageBreak​(LayoutContext c)
    • getRelativeOffset

      public Dimension getRelativeOffset()
    • setRelativeOffset

      public void setRelativeOffset​(Dimension relativeOffset)
    • find

      public Box find​(CssContext cssCtx, int absX, int absY, boolean findAnonymous)
    • isRoot

      public boolean isRoot()
    • isBody

      public boolean isBody()
    • getElement

      public Element getElement()
      Specified by:
      getElement in interface Styleable
    • setElement

      public void setElement​(Element element)
      Specified by:
      setElement in interface Styleable
    • setMarginTop

      public void setMarginTop​(CssContext cssContext, int marginTop)
    • setMarginBottom

      public void setMarginBottom​(CssContext cssContext, int marginBottom)
    • setMarginLeft

      public void setMarginLeft​(CssContext cssContext, int marginLeft)
    • setMarginRight

      public void setMarginRight​(CssContext cssContext, int marginRight)
    • getMargin

      public RectPropertySet getMargin​(CssContext cssContext)
    • getStyleMargin

      protected RectPropertySet getStyleMargin​(CssContext cssContext)
    • getStyleMargin

      protected RectPropertySet getStyleMargin​(CssContext cssContext, boolean useCache)
    • getPadding

      public RectPropertySet getPadding​(CssContext cssCtx)
    • getBorder

      public BorderPropertySet getBorder​(CssContext cssCtx)
    • getContainingBlockWidth

      protected int getContainingBlockWidth()
    • resetTopMargin

      protected void resetTopMargin​(CssContext cssContext)
    • calcPaintingInfo

      public PaintingInfo calcPaintingInfo​(CssContext c, boolean useCache)
    • calcChildPaintingInfo

      protected void calcChildPaintingInfo​(CssContext c, PaintingInfo result, boolean useCache)
    • getMarginBorderPadding

      public int getMarginBorderPadding​(CssContext cssCtx, int which)
    • moveIfGreater

      protected void moveIfGreater​(Dimension result, Dimension test)
    • restyle

      public void restyle​(LayoutContext c)
    • restyleChildren

      protected void restyleChildren​(LayoutContext c)
    • getRestyleTarget

      public Box getRestyleTarget()
    • getIndex

      protected int getIndex()
    • setIndex

      protected void setIndex​(int index)
    • getPseudoElementOrClass

      public String getPseudoElementOrClass()
      Specified by:
      getPseudoElementOrClass in interface Styleable
    • setPseudoElementOrClass

      public void setPseudoElementOrClass​(String pseudoElementOrClass)
    • setX

      public void setX​(int x)
    • getX

      public int getX()
    • setY

      public void setY​(int y)
    • getY

      public int getY()
    • setTy

      public void setTy​(int ty)
    • getTy

      public int getTy()
    • setTx

      public void setTx​(int tx)
    • getTx

      public int getTx()
    • setRightMBP

      public void setRightMBP​(int rightMBP)
    • getRightMBP

      public int getRightMBP()
    • setLeftMBP

      public void setLeftMBP​(int leftMBP)
    • getLeftMBP

      public int getLeftMBP()
    • setHeight

      public void setHeight​(int height)
      Uh oh! This refers to content height during layout but total height after layout!
    • getHeight

      public int getHeight()
      Uh oh! This refers to content height during layout but total height after layout!
    • setBorderBoxHeight

      protected void setBorderBoxHeight​(CssContext c, int h)
    • getBorderBoxHeight

      protected int getBorderBoxHeight​(CssContext c)
    • getBorderBox

      public Rectangle getBorderBox​(CssContext c)
      Only to be called after layout, due to double use of getHeight().
    • setContentWidth

      public void setContentWidth​(int contentWidth)
    • getContentWidth

      public int getContentWidth()
    • getBorderBoxWidth

      public int getBorderBoxWidth​(CssContext c)
    • setBorderBoxWidth

      public void setBorderBoxWidth​(CssContext c, int borderBoxWidth)
    • getPaintingInfo

      public PaintingInfo getPaintingInfo()
    • isAnonymous

      public boolean isAnonymous()
    • setAnonymous

      public void setAnonymous​(boolean anonymous)
    • getBoxDimensions

      public BoxDimensions getBoxDimensions()
    • setBoxDimensions

      public void setBoxDimensions​(BoxDimensions dimensions)
    • collectText

      public void collectText​(RenderingContext c, StringBuilder buffer)
    • exportText

      public void exportText​(RenderingContext c, Writer writer) throws IOException
      Throws:
      IOException
    • exportPageBoxText

      protected void exportPageBoxText​(RenderingContext c, Writer writer, int yPos) throws IOException
      Throws:
      IOException
    • isInDocumentFlow

      public boolean isInDocumentFlow()
    • analyzePageBreaks

      public void analyzePageBreaks​(LayoutContext c, ContentLimitContainer container)
    • getEffBackgroundColor

      public FSColor getEffBackgroundColor​(RenderingContext c)
    • isMarginAreaRoot

      protected boolean isMarginAreaRoot()
    • isContainedInMarginBox

      public boolean isContainedInMarginBox()
    • getEffectiveWidth

      public int getEffectiveWidth()
    • isInitialContainingBlock

      protected boolean isInitialContainingBlock()
    • isFirstChild

      public boolean isFirstChild()
      Is this box the first child of its parent?
    • isTerminalColumnBreak

      public boolean isTerminalColumnBreak()
      Is this box unbreakable in regards to column break opportunities?
    • ancestorsWhile

      public List<Box> ancestorsWhile​(Predicate<Box> predicate)
      Creates a list of ancestors by walking up the chain of parent, grandparent, etc. Stops when the provided predicate returns false or the root box otherwise.
    • ancestors

      public List<Box> ancestors()
      Get all ancestors, up until the root box.
    • findAncestor

      public Box findAncestor​(Predicate<Box> predicate)
      Walks up the ancestor tree to the root testing ancestors agains the predicate. NOTE: Does not test against the current box (this).
      Returns:
      the box for which predicate returned true or null if none found.
    • rootBox

      public Box rootBox()
      Returns the highest ancestor box. May be current box (this).
    • findColumnBreakOpportunities

      public void findColumnBreakOpportunities​(FlowingColumnContainerBox.ColumnBreakStore store)
      Recursive method to find column break opportunities.
      Parameters:
      store - - use to report break opportunities.