Class PagedBoxCollector


  • public class PagedBoxCollector
    extends java.lang.Object
    • Constructor Detail

      • PagedBoxCollector

        public PagedBoxCollector​(java.util.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 Detail

      • 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)
      • addBlockToShadowPage

        private void addBlockToShadowPage​(CssContext c,
                                          Layer layer,
                                          Box container,
                                          int pgStart,
                                          int pgEnd,
                                          java.awt.Shape ourClip,
                                          java.util.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.
      • addTableHeaderFooter

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

        private boolean intersectsAggregateBounds​(CssContext c,
                                                  java.awt.Shape clip,
                                                  Box box)
      • intersectsBorderBoxBounds

        private boolean intersectsBorderBoxBounds​(CssContext c,
                                                  java.awt.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,
                                      java.awt.Shape clip,
                                      Box box,
                                      java.awt.Rectangle boxBounds)
      • intersectsAny

        private boolean intersectsAny​(CssContext c,
                                      java.awt.Shape clip,
                                      Box master,
                                      Box container)
      • getCornersFromTransformedBounds

        private static PagedBoxCollector.FourPoint getCornersFromTransformedBounds​(java.awt.Rectangle bounds,
                                                                                   java.awt.geom.AffineTransform transform)
      • getMinYFromTransformedBox

        private static double getMinYFromTransformedBox​(java.awt.Rectangle bounds,
                                                        java.awt.geom.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​(java.awt.Rectangle bounds,
                                                        java.awt.geom.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​(java.awt.Rectangle bounds,
                                                        java.awt.geom.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,
                                       java.util.List<PageBox> pages)
      • getShadowPageForBounds

        public static int getShadowPageForBounds​(CssContext c,
                                                 java.awt.Rectangle bounds,
                                                 PageBox page)
      • findAdjustedBoundsForBorderBox

        public static java.awt.Rectangle findAdjustedBoundsForBorderBox​(CssContext c,
                                                                        Box container,
                                                                        java.util.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 java.awt.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,
                                    java.awt.Rectangle bounds,
                                    java.awt.geom.AffineTransform transform)
      • findEndPage

        protected int findEndPage​(CssContext c,
                                  java.awt.Rectangle bounds,
                                  java.awt.geom.AffineTransform transform)
      • findStartPage

        protected int findStartPage​(CssContext c,
                                    Box container,
                                    java.awt.geom.AffineTransform transform)
      • findEndPage

        protected int findEndPage​(CssContext c,
                                  Box container,
                                  java.awt.geom.AffineTransform transform)
      • 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 java.awt.Rectangle getBoxRect​(CssContext c,
                                                     Box container)
      • findLayerRect

        public static java.awt.Rectangle findLayerRect​(CssContext c,
                                                       Layer layer)
      • transformBounds

        private static void transformBounds​(java.awt.Rectangle bounds,
                                            java.awt.geom.AffineTransform transform)
      • applyOverflowClip

        private static java.awt.Rectangle applyOverflowClip​(java.awt.Rectangle bounds,
                                                            java.awt.geom.Area overflowClip)
      • findLayerPages

        public static java.util.List<PagedBoxCollector.PageInfo> findLayerPages​(CssContext c,
                                                                                Layer layer,
                                                                                java.util.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,
                                        java.util.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,
                                      java.util.List<PageBox> pages)
        Returns:
        0 based page number of end of container paint area (including overflow)