Chromium Code Reviews| Index: src/core/SkPath.cpp |
| =================================================================== |
| --- src/core/SkPath.cpp (revision 9658) |
| +++ src/core/SkPath.cpp (working copy) |
| @@ -219,16 +219,32 @@ |
| #else |
| : fPathRef(SkPathRef::CreateEmpty()) |
| #endif |
| + , fLastMoveToIndex(INITIAL_LASTMOVETOINDEX_VALUE) |
|
reed1
2013/06/19 17:36:49
why not have the constructor also call resetFields
bungeman-skia
2013/06/19 19:59:48
Done.
|
| , fFillType(kWinding_FillType) |
| - , fBoundsIsDirty(true) { |
| + , fSegmentMask(0) |
| + , fBoundsIsDirty(true) |
| + , fConvexity(kUnknown_Convexity) |
| + , fDirection(kUnknown_Direction) |
| + , fIsFinite(false) // gets computed when we know our bounds |
| + , fIsOval(false) |
| +#ifdef SK_BUILD_FOR_ANDROID |
| + , fGenerationID(0) |
| + , fSourcePath(NULL) |
| +#endif |
| +{ } |
| + |
|
caryclark
2013/06/19 17:38:21
could this be
#ifdef SK_BUILD_FOR_ANDROID
, fG
bungeman-skia
2013/06/19 19:59:48
Done.
|
| +void SkPath::resetFields() { |
| + //fPathRef is assumed to have been emptied by the caller. |
| + fLastMoveToIndex = INITIAL_LASTMOVETOINDEX_VALUE; |
| + fFillType = kWinding_FillType; |
| + fSegmentMask = 0; |
| + fBoundsIsDirty = true; |
| fConvexity = kUnknown_Convexity; |
| fDirection = kUnknown_Direction; |
| - fSegmentMask = 0; |
| - fLastMoveToIndex = INITIAL_LASTMOVETOINDEX_VALUE; |
| + fIsFinite = false; |
| fIsOval = false; |
| - fIsFinite = false; // gets computed when we know our bounds |
| #ifdef SK_BUILD_FOR_ANDROID |
| - fGenerationID = 0; |
| + GEN_ID_INC; |
| fSourcePath = NULL; |
| #endif |
| } |
| @@ -236,24 +252,24 @@ |
| SkPath::SkPath(const SkPath& src) |
| #if SK_DEBUG_PATH_REF |
| : fPathRef(this) |
| +#else |
| + : fPathRef(SkRef(src.fPathRef.get())) |
| #endif |
| + , fBounds(src.fBounds) |
| + , fLastMoveToIndex(src.fLastMoveToIndex) |
| + , fFillType(src.fFillType) |
| + , fSegmentMask(src.fSegmentMask) |
| + , fBoundsIsDirty(src.fBoundsIsDirty) |
| + , fConvexity(src.fConvexity) |
| + , fDirection(src.fDirection) |
| + , fIsFinite(src.fIsFinite) |
| + , fIsOval(src.fIsOval) |
| +#ifdef SK_BUILD_FOR_ANDROID |
| + , fGenerationID(src.fGenerationID) |
| + , fSourcePath(NULL) |
| +#endif |
| { |
| SkDEBUGCODE(src.validate();) |
| - src.fPathRef.get()->ref(); |
| - fPathRef.reset(src.fPathRef.get()); |
| - fBounds = src.fBounds; |
| - fFillType = src.fFillType; |
| - fBoundsIsDirty = src.fBoundsIsDirty; |
| - fConvexity = src.fConvexity; |
| - fDirection = src.fDirection; |
| - fIsFinite = src.fIsFinite; |
| - fSegmentMask = src.fSegmentMask; |
| - fLastMoveToIndex = src.fLastMoveToIndex; |
| - fIsOval = src.fIsOval; |
| -#ifdef SK_BUILD_FOR_ANDROID |
| - fGenerationID = src.fGenerationID; |
| - fSourcePath = NULL; |
| -#endif |
| } |
| SkPath::~SkPath() { |
| @@ -264,18 +280,20 @@ |
| SkDEBUGCODE(src.validate();) |
| if (this != &src) { |
| - src.fPathRef.get()->ref(); |
| - fPathRef.reset(src.fPathRef.get()); |
| - fBounds = src.fBounds; |
| - fFillType = src.fFillType; |
| - fBoundsIsDirty = src.fBoundsIsDirty; |
| - fConvexity = src.fConvexity; |
| - fDirection = src.fDirection; |
| - fIsFinite = src.fIsFinite; |
| - fSegmentMask = src.fSegmentMask; |
| + fPathRef.reset(SkRef(src.fPathRef.get())); |
| + fBounds = src.fBounds; |
| fLastMoveToIndex = src.fLastMoveToIndex; |
| - fIsOval = src.fIsOval; |
| + fFillType = src.fFillType; |
| + fSegmentMask = src.fSegmentMask; |
| + fBoundsIsDirty = src.fBoundsIsDirty; |
| + fConvexity = src.fConvexity; |
| + fDirection = src.fDirection; |
| + fIsFinite = src.fIsFinite; |
| + fIsOval = src.fIsOval; |
| +#ifdef SK_BUILD_FOR_ANDROID |
| GEN_ID_INC; |
| + fSourcePath = NULL; |
| +#endif |
| } |
| SkDEBUGCODE(this->validate();) |
| return *this; |
| @@ -411,25 +429,14 @@ |
| SkDEBUGCODE(this->validate();) |
| fPathRef.reset(SkPathRef::CreateEmpty()); |
| - GEN_ID_INC; |
| - fBoundsIsDirty = true; |
| - fConvexity = kUnknown_Convexity; |
| - fDirection = kUnknown_Direction; |
| - fSegmentMask = 0; |
| - fLastMoveToIndex = INITIAL_LASTMOVETOINDEX_VALUE; |
| - fIsOval = false; |
| + this->resetFields(); |
| } |
| void SkPath::rewind() { |
| SkDEBUGCODE(this->validate();) |
| SkPathRef::Rewind(&fPathRef); |
| - GEN_ID_INC; |
| - fConvexity = kUnknown_Convexity; |
| - fBoundsIsDirty = true; |
| - fSegmentMask = 0; |
| - fLastMoveToIndex = INITIAL_LASTMOVETOINDEX_VALUE; |
| - fIsOval = false; |
| + this->resetFields(); |
| } |
| bool SkPath::isEmpty() const { |