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 { |