Class PagedBoxCollector

java.lang.Object
com.openhtmltopdf.render.displaylist.PagedBoxCollector

public class PagedBoxCollector extends Object
  • Field Details

  • Constructor Details

    • PagedBoxCollector

      public PagedBoxCollector(List<PageBox> pages, int minPage, int maxPage)
      A more efficient paged box collector that can only find boxes on pages minPage to maxPage inclusive.
  • Method Details

    • collect

      public void collect(CssContext c, Layer layer)
    • collectInline

      private void collectInline(CssContext c, Layer layer)
    • collectFloats

      public void collectFloats(CssContext c, Layer layer)
    • collect

      public void collect(CssContext c, Layer layer, Box container, int shadowPageNumber)
      The main box collection method. This method works recursively to add all the boxes (inlines and blocks separately) owned by this layer to their respective flat page display lists. It also adds clip and setClip operations where needed to clip content in overflow:hiddenblocks.
      Parameters:
      c -
      layer -
      container -
    • collect

      public void collect(CssContext c, Layer layer, Box container, int pgStart, int pgEnd, int shadowPageNumber)
    • addBlockToAll

      private void addBlockToAll(CssContext c, Layer layer, Box container, int pgStart, int pgEnd, Shape ourClip, List<PagedBoxCollector.PageResult> clipPages, boolean includeShadowPages)
    • addBlockToShadowPage

      private void addBlockToShadowPage(CssContext c, Layer layer, Box container, int pgStart, int pgEnd, Shape ourClip, List<PagedBoxCollector.PageResult> clipPages, int shadowPageNumber)
    • addLineBoxToShadowPage

      private void addLineBoxToShadowPage(CssContext c, Layer layer, LineBox container, int basePageNumber, int shadowPageNumber)
    • addLineBoxToAll

      private void addLineBoxToAll(CssContext c, Layer layer, LineBox container, int basePageNumber, boolean includeShadowPages)
      Adds a line box to the base page if needed and any shadow pages as needed.
    • getOrCreateShadowPage

      private PagedBoxCollector.PageResult getOrCreateShadowPage(PagedBoxCollector.PageResult basePage, int shadowPageNumber)
      Inserts shadow pages as needed.
    • addBoxToShadowPages

      private void addBoxToShadowPages(CssContext c, Box container, int pageNumber, PagedBoxCollector.PageResult pageResult, Shape ourClip, List<PagedBoxCollector.PageResult> clipPages, Layer layer, PagedBoxCollector.AddToShadowPage addToMethod)
      Adds box to inserted shadow pages as needed.
    • addTableHeaderFooter

      private void addTableHeaderFooter(CssContext c, Layer layer, Box container, int shadowPageNumber)
    • addBlock

      private void addBlock(Box container, PagedBoxCollector.PageResult pageResult)
      Adds block box to appropriate flat box lists.
    • intersectsAggregateBounds

      private boolean intersectsAggregateBounds(CssContext c, Shape clip, Box box)
    • intersectsBorderBoxBounds

      private boolean intersectsBorderBoxBounds(CssContext c, Shape clip, Box box)
      Returns whether a box (out to the outside edge of border) is partially or fully in a clip shape. This should give us the painting bounds of the box itself, although child boxes can overflow.
    • boxIntersects

      private boolean boxIntersects(CssContext c, Shape clip, Box box, Rectangle boxBounds)
    • intersectsAny

      private boolean intersectsAny(CssContext c, Shape clip, Box master, Box container)
    • getCornersFromTransformedBounds

      private static PagedBoxCollector.FourPoint getCornersFromTransformedBounds(Rectangle bounds, AffineTransform transform)
    • getMinYFromTransformedBox

      private static double getMinYFromTransformedBox(Rectangle bounds, AffineTransform transform)
      There is a matrix in effect, we have to apply it to the box bounds before checking what page(s) it sits on. To do this we transform the four corners of the box.
    • getMaxYFromTransformedBox

      private static double getMaxYFromTransformedBox(Rectangle bounds, AffineTransform transform)
      There is a matrix in effect, we have to apply it to the box bounds before checking what page(s) it sits on. To do this we transform the four corners of the box.
    • getMaxXFromTransformedBox

      private static double getMaxXFromTransformedBox(Rectangle bounds, AffineTransform transform)
      There is a matrix in effect. We need the max x to see how many shadow pages need creating.
    • findPageForY

      public static int findPageForY(CssContext c, double y, List<PageBox> pages)
    • getShadowPageForBounds

      public static int getShadowPageForBounds(CssContext c, Rectangle bounds, PageBox page)
    • findAdjustedBoundsForBorderBox

      public static Rectangle findAdjustedBoundsForBorderBox(CssContext c, Box container, List<PageBox> pages)
      Finds the document coordinates border box bounds of a box adjusted for transform and clipped according to overflow hidden.
    • findAdjustedBoundsForContentBox

      public static Rectangle findAdjustedBoundsForContentBox(CssContext c, Box container)
      Finds the document coordinates content box bounds of a box adjusted for transform and clipped according to overflow hidden.
    • findStartPage

      protected int findStartPage(CssContext c, Rectangle bounds, AffineTransform transform)
    • findEndPage

      protected int findEndPage(CssContext c, Rectangle bounds, AffineTransform transform)
    • findStartPage

      protected int findStartPage(CssContext c, Box container, AffineTransform transform)
    • findEndPage

      protected int findEndPage(CssContext c, Box container, AffineTransform transform)
    • getPageResult

      protected PagedBoxCollector.PageResult getPageResult(int pageNo)
    • getMaxPageNumber

      protected int getMaxPageNumber()
    • getMinPageNumber

      protected int getMinPageNumber()
    • getValidMinPageNumber

      protected int getValidMinPageNumber(int pageNo)
    • getValidMaxPageNumber

      protected int getValidMaxPageNumber(int pageNo)
    • getPageBox

      protected PageBox getPageBox(int pageNo)
    • getBoxRect

      private static Rectangle getBoxRect(CssContext c, Box container)
    • findLayerRect

      public static Rectangle findLayerRect(CssContext c, Layer layer)
    • getMinY

      private static double getMinY(PagedBoxCollector.FourPoint corners)
    • getMinX

      private static double getMinX(PagedBoxCollector.FourPoint corners)
    • getMaxY

      private static double getMaxY(PagedBoxCollector.FourPoint corners)
    • getMaxX

      private static double getMaxX(PagedBoxCollector.FourPoint corners)
    • transformBounds

      private static void transformBounds(Rectangle bounds, AffineTransform transform)
    • applyOverflowClip

      private static Rectangle applyOverflowClip(Rectangle bounds, Area overflowClip)
    • findLayerPages

      public static List<PagedBoxCollector.PageInfo> findLayerPages(CssContext c, Layer layer, List<PageBox> pages)
      Returns the pages a layer appears on including inserted overflow pages. Takes into account any transform and overflow hidden clipping.
    • findStartPage

      public static int findStartPage(CssContext c, Box container, List<PageBox> pages)
      Returns:
      0 based page number of start of container paint area (including overflow)
    • findEndPage

      public static int findEndPage(CssContext c, Box container, List<PageBox> pages)
      Returns:
      0 based page number of end of container paint area (including overflow)