PathIterator
class PathIterator : Iterator
A path iterator can be used to iterate over all the segments that make up a path. Those segments may in turn define multiple contours inside the path. Conic segments are by default evaluated as approximated quadratic segments. To preserve conic segments as conics, set conicEvaluation to AsConic. The error of the approximation is controlled by tolerance.
PathIterator objects are created implicitly through a given Path object; to create a PathIterator, call one of the two Path.iterator extension functions.
Summary
Nested types |
|---|
enum PathIterator.ConicEvaluation : Enum |
Public constructors |
|---|
PathIterator( |
Public functions |
|
|---|---|
Int |
calculateSize(includeConvertedConics: Boolean)Returns the number of verbs present in this iterator, i.e. the number of calls to |
open operator Boolean |
hasNext()Returns |
open operator PathSegment |
next()Returns the next |
PathSegment.Type |
next(points: FloatArray, offset: Int)Returns the |
PathSegment.Type |
peek()Returns the type of the current segment in the iteration, or |
Public properties |
|
|---|---|
PathIterator.ConicEvaluation |
|
Path |
|
Float |
Inherited functions |
||
|---|---|---|
|
Public constructors
PathIterator
PathIterator(
path: Path,
conicEvaluation: PathIterator.ConicEvaluation = ConicEvaluation.AsQuadratics,
tolerance: Float = 0.25f
)
Public functions
calculateSize
fun calculateSize(includeConvertedConics: Boolean = true): Int
Returns the number of verbs present in this iterator, i.e. the number of calls to next required to complete the iteration.
By default, calculateSize returns the true number of operations in the iterator. Deriving this result requires converting any conics to quadratics, if conicEvaluation is set to ConicEvaluation.AsQuadratics, which takes extra processing time. Set includeConvertedConics to false if an approximate size, not including conic conversion, is sufficient.
| Parameters | |
|---|---|
includeConvertedConics: Boolean = true |
The returned size includes any required conic conversions. Default is true, so it will return the exact size, at the cost of iterating through all elements and converting any conics as appropriate. Set to false to save on processing, at the cost of a less exact result. |
hasNext
open operator fun hasNext(): Boolean
Returns true if the iteration has more elements.
next
open operator fun next(): PathSegment
Returns the next path segment in the iteration, or DoneSegment if the iteration is finished. To save on allocations, use the alternative next function, which takes a FloatArray.
next
fun next(points: FloatArray, offset: Int = 0): PathSegment.Type
Returns the type of the next path segment in the iteration and fills points with the points specific to the segment type. Each pair of floats in the points array represents a point for the given segment. The number of pairs of floats depends on the PathSegment.Type:
-
Move: 1 pair (indices 0 to 1) -
Line: 2 pairs (indices 0 to 3) -
Quadratic: 3 pairs (indices 0 to 5) -
Conic: 3 pairs (indices 0 to 5), and the conicweightat index 6. The value of the last float is undefined -
Cubic: 4 pairs (indices 0 to 7) -
Close: 0 pair -
Done: 0 pair This method does not allocate any memory.
| Parameters | |
|---|---|
points: FloatArray |
A |
offset: Int = 0 |
Offset in |
peek
fun peek(): PathSegment.Type
Returns the type of the current segment in the iteration, or Done if the iteration is finished.