Class FlatteningPathIterator

  • All Implemented Interfaces:
    PathIterator

    public class FlatteningPathIterator
    extends java.lang.Object
    implements PathIterator
    • Field Detail

      • BUFFER_SIZE

        private static final int BUFFER_SIZE
        The default points buffer size
        See Also:
        Constant Field Values
      • BUFFER_LIMIT

        private static final int BUFFER_LIMIT
        The default curve subdivision limit
        See Also:
        Constant Field Values
      • BUFFER_CAPACITY

        private static final int BUFFER_CAPACITY
        The points buffer capacity
        See Also:
        Constant Field Values
      • bufType

        int bufType
        The type of current segment to be flat
      • bufLimit

        int bufLimit
        The curve subdivision limit
      • bufSize

        int bufSize
        The current points buffer size
      • bufIndex

        int bufIndex
        The inner cursor position in points buffer
      • bufSubdiv

        int bufSubdiv
        The current subdivision count
      • buf

        double[] buf
        The points buffer
      • bufEmpty

        boolean bufEmpty
        The indicator of empty points buffer
      • flatness

        double flatness
        The flatness of new path
      • flatness2

        double flatness2
        The square of flatness
      • px

        double px
        The x coordinate of previous path segment
      • py

        double py
        The y coordinate of previous path segment
      • coords

        double[] coords
        The tamporary buffer for getting points from PathIterator
    • Constructor Detail

      • FlatteningPathIterator

        public FlatteningPathIterator​(PathIterator path,
                                      double flatness)
      • FlatteningPathIterator

        public FlatteningPathIterator​(PathIterator path,
                                      double flatness,
                                      int limit)
    • Method Detail

      • getFlatness

        public double getFlatness()
      • getRecursionLimit

        public int getRecursionLimit()
      • evaluate

        void evaluate()
        Calculates flat path points for current segment of the source shape. Line segment is flat by itself. Flatness of quad and cubic curves evaluated by getFlatnessSq() method. Curves subdivided until current flatness is bigger than user defined and subdivision limit isn't exhausted. Single source segment translated to series of buffer points. The less flatness the bigger serries. Every currentSegment() call extract one point from the buffer. When series completed evaluate() takes next source shape segment.