Flutter Engine
The Flutter Engine
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 21 of file SkPathMeasure.h.

Member Enumeration Documentation

◆ MatrixFlags

Enumerator
kGetPosition_MatrixFlag 
kGetTangent_MatrixFlag 
kGetPosAndTan_MatrixFlag 

Definition at line 53 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()
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
Definition: switches.h:57

◆ ~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 88 of file SkPathMeasure.h.

88{ 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
unsigned useCenter Optional< SkMatrix > matrix
Definition: SkRecords.h:258

◆ 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
dst
Definition: cp.py:12

◆ 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)
Definition: SkPath.h:59

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