Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Types | Public Member Functions | List of all members
SkPathMeasure Class Reference

#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)
 
 ~SkPathMeasure ()
 
 SkPathMeasure (SkPathMeasure &&)=default
 
SkPathMeasureoperator= (SkPathMeasure &&)=default
 
void setPath (const SkPath *, bool forceClosed)
 
SkScalar getLength ()
 
bool getPosTan (SkScalar distance, SkPoint *position, SkVector *tangent)
 
bool getMatrix (SkScalar distance, SkMatrix *matrix, MatrixFlags flags=kGetPosAndTan_MatrixFlag)
 
bool getSegment (SkScalar startD, SkScalar stopD, SkPath *dst, bool startWithMoveTo)
 
bool isClosed ()
 
bool nextContour ()
 
const SkContourMeasurecurrentMeasure () const
 

Detailed Description

Definition at line 20 of file SkPathMeasure.h.

Member Enumeration Documentation

◆ MatrixFlags

Enumerator
kGetPosition_MatrixFlag 
kGetTangent_MatrixFlag 
kGetPosAndTan_MatrixFlag 

Definition at line 52 of file SkPathMeasure.h.

Constructor & Destructor Documentation

◆ SkPathMeasure() [1/3]

SkPathMeasure::SkPathMeasure ( )

Definition at line 21 of file SkPathMeasure.cpp.

21{}

◆ SkPathMeasure() [2/3]

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

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).

Definition at line 23 of file SkPathMeasure.cpp.

24 : fIter(path, forceClosed, resScale)
25{
26 fContour = fIter.next();
27}
sk_sp< SkContourMeasure > next()

◆ ~SkPathMeasure()

SkPathMeasure::~SkPathMeasure ( )

Definition at line 29 of file SkPathMeasure.cpp.

29{}

◆ SkPathMeasure() [3/3]

SkPathMeasure::SkPathMeasure ( SkPathMeasure &&  )
default

Member Function Documentation

◆ currentMeasure()

const SkContourMeasure * SkPathMeasure::currentMeasure ( ) const
inline

Definition at line 87 of file SkPathMeasure.h.

87{ return fContour.get(); }
T * get() const
Definition SkRefCnt.h:303

◆ getLength()

SkScalar SkPathMeasure::getLength ( )

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

Definition at line 36 of file SkPathMeasure.cpp.

36 {
37 return fContour ? fContour->length() : 0;
38}
SkScalar length() const

◆ getMatrix()

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.

Definition at line 44 of file SkPathMeasure.cpp.

44 {
45 return fContour && fContour->getMatrix(distance, matrix, (SkContourMeasure::MatrixFlags)flags);
46}
bool getMatrix(SkScalar distance, SkMatrix *matrix, MatrixFlags flags=kGetPosAndTan_MatrixFlag) const
FlutterSemanticsFlag flags

◆ getPosTan()

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.

Definition at line 40 of file SkPathMeasure.cpp.

40 {
41 return fContour && fContour->getPosTan(distance, position, tangent);
42}
bool getPosTan(SkScalar distance, SkPoint *position, SkVector *tangent) const

◆ getSegment()

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

Definition at line 48 of file SkPathMeasure.cpp.

48 {
49 return fContour && fContour->getSegment(startD, stopD, dst, startWithMoveTo);
50}
bool getSegment(SkScalar startD, SkScalar stopD, SkPath *dst, bool startWithMoveTo) const

◆ isClosed()

bool SkPathMeasure::isClosed ( )

Return true if the current contour is closed()

Definition at line 52 of file SkPathMeasure.cpp.

52 {
53 return fContour && fContour->isClosed();
54}
bool isClosed() const

◆ nextContour()

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.

Definition at line 56 of file SkPathMeasure.cpp.

56 {
57 fContour = fIter.next();
58 return !!fContour;
59}

◆ operator=()

SkPathMeasure & SkPathMeasure::operator= ( SkPathMeasure &&  )
default

◆ setPath()

void SkPathMeasure::setPath ( const SkPath path,
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..

Definition at line 31 of file SkPathMeasure.cpp.

31 {
32 fIter.reset(path ? *path : SkPath(), forceClosed);
33 fContour = fIter.next();
34}
void reset(const SkPath &path, bool forceClosed, SkScalar resScale=1)

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