Class BorderPainter


  • public class BorderPainter
    extends java.lang.Object
    This is an abstract base class for handling border painting.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected static int BOTTOM
      Convention index of bottom border
      protected static int BOTTOM_LEFT
      Convention index of bottom-left border corners
      protected static int BOTTOM_RIGHT
      Convention index of bottom-right border corners
      protected static float DASHED_BORDER_LENGTH_FACTOR
      The length of the dash as a factor of the border width i.e.
      static float DASHED_BORDER_SPACE_RATIO
      The ratio between a solid dash and the white-space in a dashed-border
      protected static int LEFT
      Convention index of left border
      protected static int RIGHT
      Convention index of right border
      protected static int TOP
      Convention index of before top
      protected static int TOP_LEFT
      Convention index of top-left border corners
      protected static int TOP_RIGHT
      Convention index of top-right-end border corners
    • Field Detail

      • RIGHT

        protected static final int RIGHT
        Convention index of right border
        See Also:
        Constant Field Values
      • BOTTOM

        protected static final int BOTTOM
        Convention index of bottom border
        See Also:
        Constant Field Values
      • TOP_LEFT

        protected static final int TOP_LEFT
        Convention index of top-left border corners
        See Also:
        Constant Field Values
      • TOP_RIGHT

        protected static final int TOP_RIGHT
        Convention index of top-right-end border corners
        See Also:
        Constant Field Values
      • BOTTOM_RIGHT

        protected static final int BOTTOM_RIGHT
        Convention index of bottom-right border corners
        See Also:
        Constant Field Values
      • BOTTOM_LEFT

        protected static final int BOTTOM_LEFT
        Convention index of bottom-left border corners
        See Also:
        Constant Field Values
      • DASHED_BORDER_SPACE_RATIO

        public static final float DASHED_BORDER_SPACE_RATIO
        The ratio between a solid dash and the white-space in a dashed-border
        See Also:
        Constant Field Values
      • DASHED_BORDER_LENGTH_FACTOR

        protected static final float DASHED_BORDER_LENGTH_FACTOR
        The length of the dash as a factor of the border width i.e. 2 -> dashWidth = 2*borderWidth
        See Also:
        Constant Field Values
    • Constructor Detail

    • Method Detail

      • drawBorders

        public void drawBorders​(java.awt.Rectangle borderRect,
                                BorderProps bpsTop,
                                BorderProps bpsBottom,
                                BorderProps bpsLeft,
                                BorderProps bpsRight,
                                java.awt.Color innerBackgroundColor)
                         throws IFException
        Draws borders.
        Parameters:
        borderRect - the border rectangle
        bpsTop - the border specification on the top side
        bpsBottom - the border specification on the bottom side
        bpsLeft - the border specification on the left side
        bpsRight - the border specification on the end side
        innerBackgroundColor - the inner background color
        Throws:
        IFException - if an error occurs while drawing the borders
      • drawRectangularBorders

        protected void drawRectangularBorders​(java.awt.Rectangle borderRect,
                                              BorderProps bpsTop,
                                              BorderProps bpsBottom,
                                              BorderProps bpsLeft,
                                              BorderProps bpsRight)
                                       throws java.io.IOException
        TODO merge with drawRoundedBorders()?
        Parameters:
        borderRect - the border rectangle
        bpsTop - the border specification on the top side
        bpsBottom - the border specification on the bottom side
        bpsLeft - the border specification on the left side
        bpsRight - the border specification on the end side
        Throws:
        java.io.IOException
      • dashWidthCalculator

        public static float dashWidthCalculator​(float borderLength,
                                                float borderWidth)
        This method calculates the length of the "dash" in a dashed border. The dash satisfies the condition that corners start on a dash and end with a dash (rather than ending with a white space).
        Parameters:
        borderLength - The length of the border.
        borderWidth - The width/thickness of the border.
        Returns:
        returns the length of the dash such that it fits the criteria above.
      • drawRoundedBorders

        protected void drawRoundedBorders​(java.awt.Rectangle borderRect,
                                          BorderProps beforeBorderProps,
                                          BorderProps afterBorderProps,
                                          BorderProps startBorderProps,
                                          BorderProps endBorderProps)
                                   throws java.io.IOException
        TODO merge with drawRectangularBorders?
        Parameters:
        borderRect - the border rectangle
        Throws:
        java.io.IOException - on io exception
      • clipBackground

        public void clipBackground​(java.awt.Rectangle rect,
                                   BorderProps bpsBefore,
                                   BorderProps bpsAfter,
                                   BorderProps bpsStart,
                                   BorderProps bpsEnd)
                            throws java.io.IOException
        Clip the background to the inner border
        Parameters:
        rect - clipping rectangle
        bpsBefore - before border
        bpsAfter - after border
        bpsStart - start border
        bpsEnd - end border
        Throws:
        java.io.IOException - if an I/O error occurs
      • calculateCornerCorrectionFactor

        protected static double calculateCornerCorrectionFactor​(int width,
                                                                int height,
                                                                BorderProps before,
                                                                BorderProps after,
                                                                BorderProps start,
                                                                BorderProps end)
        Calculate the correction factor to handle over-sized elliptic corner radii.
        Parameters:
        width - the border width
        height - the border height
        before - the before border properties
        after - the after border properties
        start - the start border properties
        end - the end border properties
      • calculateCornerScaleCorrection

        protected static double calculateCornerScaleCorrection​(int width,
                                                               int height,
                                                               org.apache.fop.render.intermediate.BorderPainter.BorderSegment before,
                                                               org.apache.fop.render.intermediate.BorderPainter.BorderSegment after,
                                                               org.apache.fop.render.intermediate.BorderPainter.BorderSegment start,
                                                               org.apache.fop.render.intermediate.BorderPainter.BorderSegment end)
        Calculate the scaling factor to handle over-sized elliptic corner radii.
        Parameters:
        width - the border width
        height - the border height
        before - the before border segment
        after - the after border segment
        start - the start border segment
        end - the end border segment