Skia
2DGraphicsLibrary
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
SkPathMeasure Class Reference
Inheritance diagram for SkPathMeasure:

Classes

struct  Segment
 

Public Types

enum  MatrixFlags { kGetPosition_MatrixFlag = 0x01, kGetTangent_MatrixFlag = 0x02, kGetPosAndTan_MatrixFlag = kGetPosition_MatrixFlag | kGetTangent_MatrixFlag }
 

Public Member Functions

 SkPathMeasure (const SkPath &path, bool forceClosed, SkScalar resScale=1)
 Initialize the pathmeasure with the specified path. More...
 
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 SK_WARN_UNUSED_RESULT getPosTan (SkScalar distance, SkPoint *position, SkVector *tangent)
 Pins distance to 0 <= distance <= getLength(), and then computes the corresponding position and tangent. More...
 
bool SK_WARN_UNUSED_RESULT 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()
 
bool nextContour ()
 Move to the next contour in the path. More...
 
void dump ()
 

Private Member Functions

void buildSegments ()
 
SkScalar compute_quad_segs (const SkPoint pts[3], SkScalar distance, int mint, int maxt, int ptIndex)
 
SkScalar compute_conic_segs (const SkConic &, SkScalar distance, int mint, const SkPoint &minPt, int maxt, const SkPoint &maxPt, int ptIndex)
 
SkScalar compute_cubic_segs (const SkPoint pts[3], SkScalar distance, int mint, int maxt, int ptIndex)
 
const SegmentdistanceToSegment (SkScalar distance, SkScalar *t)
 
bool quad_too_curvy (const SkPoint pts[3])
 
bool conic_too_curvy (const SkPoint &firstPt, const SkPoint &midTPt, const SkPoint &lastPt)
 
bool cheap_dist_exceeds_limit (const SkPoint &pt, SkScalar x, SkScalar y)
 
bool cubic_too_curvy (const SkPoint pts[4])
 

Static Private Member Functions

static const SegmentNextSegment (const Segment *)
 

Private Attributes

SkPath::Iter fIter
 
const SkPathfPath
 
SkScalar fTolerance
 
SkScalar fLength
 
int fFirstPtIndex
 
bool fIsClosed
 
bool fForceClosed
 
SkTDArray< SegmentfSegments
 
SkTDArray< SkPointfPts
 

Constructor & Destructor Documentation

SkPathMeasure::SkPathMeasure ( const SkPath path,
bool  forceClosed,
SkScalar  resScale = 1 
)

Initialize the pathmeasure with the specified path.

The path must remain valid for the lifetime of the measure object, or until setPath() is called with a different path (or null), since the measure object keeps a pointer to the path object (does not copy its data).

resScale controls the precision of the measure. values > 1 increase the precision (and possible slow down the computation).

Member Function Documentation

SkScalar SkPathMeasure::getLength ( )

Return the total length of the current contour, or 0 if no path is associated (e.g.

resetPath(null))

bool SK_WARN_UNUSED_RESULT 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 SK_WARN_UNUSED_RESULT 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::nextContour ( )

Move to the next contour in the path.

Return true if one exists, or false if we're done with the path.

void SkPathMeasure::setPath ( const SkPath ,
bool  forceClosed 
)

Reset the pathmeasure with the specified path.

The path must remain valid for the lifetime of the measure object, or until setPath() is called with a different path (or null), since the measure object keeps a pointer to the path object (does not copy its data).


The documentation for this class was generated from the following file: