Skia
2D Graphics Library
|
#include <SkPathMeasure.h>
Public Types | |
enum | MatrixFlags { kGetPosition_MatrixFlag = 0x01 , kGetTangent_MatrixFlag = 0x02 , kGetPosAndTan_MatrixFlag = kGetPosition_MatrixFlag | kGetTangent_MatrixFlag } |
Public Member Functions | |
SkPathMeasure () | |
SkPathMeasure (const SkPath &path, bool forceClosed, SkScalar resScale=1) | |
Initialize the pathmeasure with the specified path. More... | |
~SkPathMeasure () | |
SkPathMeasure (SkPathMeasure &&)=default | |
SkPathMeasure & | operator= (SkPathMeasure &&)=default |
void | setPath (const SkPath *, bool forceClosed) |
Reset the pathmeasure with the specified path. More... | |
SkScalar | getLength () |
Return the total length of the current contour, or 0 if no path is associated (e.g. More... | |
bool | getPosTan (SkScalar distance, SkPoint *position, SkVector *tangent) |
Pins distance to 0 <= distance <= getLength(), and then computes the corresponding position and tangent. More... | |
bool | getMatrix (SkScalar distance, SkMatrix *matrix, MatrixFlags flags=kGetPosAndTan_MatrixFlag) |
Pins distance to 0 <= distance <= getLength(), and then computes the corresponding matrix (by calling getPosTan). More... | |
bool | getSegment (SkScalar startD, SkScalar stopD, SkPath *dst, bool startWithMoveTo) |
Given a start and stop distance, return in dst the intervening segment(s). More... | |
bool | isClosed () |
Return true if the current contour is closed() More... | |
bool | nextContour () |
Move to the next contour in the path. More... | |
SkPathMeasure::SkPathMeasure | ( | ) |
Initialize the pathmeasure with the specified path.
The parts of the path that are needed are copied, so the client is free to modify/delete the path after this call.
resScale controls the precision of the measure. values > 1 increase the precision (and possibly slow down the computation).
SkPathMeasure::~SkPathMeasure | ( | ) |
|
default |
SkScalar SkPathMeasure::getLength | ( | ) |
Return the total length of the current contour, or 0 if no path is associated (e.g.
resetPath(null))
bool SkPathMeasure::getMatrix | ( | SkScalar | distance, |
SkMatrix * | matrix, | ||
MatrixFlags | flags = kGetPosAndTan_MatrixFlag |
||
) |
Pins distance to 0 <= distance <= getLength(), and then computes the corresponding matrix (by calling getPosTan).
Returns false if there is no path, or a zero-length path was specified, in which case matrix is unchanged.
bool SkPathMeasure::getPosTan | ( | SkScalar | distance, |
SkPoint * | position, | ||
SkVector * | tangent | ||
) |
Pins distance to 0 <= distance <= getLength(), and then computes the corresponding position and tangent.
Returns false if there is no path, or a zero-length path was specified, in which case position and tangent are unchanged.
bool SkPathMeasure::getSegment | ( | SkScalar | startD, |
SkScalar | stopD, | ||
SkPath * | dst, | ||
bool | startWithMoveTo | ||
) |
Given a start and stop distance, return in dst the intervening segment(s).
If the segment is zero-length, return false, else return true. startD and stopD are pinned to legal values (0..getLength()). If startD > stopD then return false (and leave dst untouched). Begin the segment with a moveTo if startWithMoveTo is true
bool SkPathMeasure::isClosed | ( | ) |
Return true if the current contour is closed()
bool SkPathMeasure::nextContour | ( | ) |
Move to the next contour in the path.
Return true if one exists, or false if we're done with the path.
|
default |
void SkPathMeasure::setPath | ( | const SkPath * | , |
bool | forceClosed | ||
) |
Reset the pathmeasure with the specified path.
The parts of the path that are needed are copied, so the client is free to modify/delete the path after this call..