| Index: src/core/SkPath.cpp
|
| ===================================================================
|
| --- src/core/SkPath.cpp (revision 13245)
|
| +++ src/core/SkPath.cpp (working copy)
|
| @@ -122,9 +122,6 @@
|
|
|
| ////////////////////////////////////////////////////////////////////////////
|
|
|
| -// flag to require a moveTo if we begin with something else, like lineTo etc.
|
| -#define INITIAL_LASTMOVETOINDEX_VALUE ~0
|
| -
|
| SkPath::SkPath()
|
| : fPathRef(SkPathRef::CreateEmpty())
|
| #ifdef SK_BUILD_FOR_ANDROID
|
| @@ -136,7 +133,6 @@
|
|
|
| void SkPath::resetFields() {
|
| //fPathRef is assumed to have been emptied by the caller.
|
| - fLastMoveToIndex = INITIAL_LASTMOVETOINDEX_VALUE;
|
| fFillType = kWinding_FillType;
|
| fConvexity = kUnknown_Convexity;
|
| fDirection = kUnknown_Direction;
|
| @@ -174,7 +170,6 @@
|
|
|
| void SkPath::copyFields(const SkPath& that) {
|
| //fPathRef is assumed to have been set by the caller.
|
| - fLastMoveToIndex = that.fLastMoveToIndex;
|
| fFillType = that.fFillType;
|
| fConvexity = that.fConvexity;
|
| fDirection = that.fDirection;
|
| @@ -192,7 +187,6 @@
|
|
|
| if (this != &that) {
|
| fPathRef.swap(&that.fPathRef);
|
| - SkTSwap<int>(fLastMoveToIndex, that.fLastMoveToIndex);
|
| SkTSwap<uint8_t>(fFillType, that.fFillType);
|
| SkTSwap<uint8_t>(fConvexity, that.fConvexity);
|
| SkTSwap<uint8_t>(fDirection, that.fDirection);
|
| @@ -667,9 +661,6 @@
|
|
|
| SkPathRef::Editor ed(&fPathRef);
|
|
|
| - // remember our index
|
| - fLastMoveToIndex = fPathRef->countPoints();
|
| -
|
| ed.growForVerb(kMove_Verb)->set(x, y);
|
| }
|
|
|
| @@ -679,26 +670,11 @@
|
| this->moveTo(pt.fX + x, pt.fY + y);
|
| }
|
|
|
| -void SkPath::injectMoveToIfNeeded() {
|
| - if (fLastMoveToIndex < 0) {
|
| - SkScalar x, y;
|
| - if (fPathRef->countVerbs() == 0) {
|
| - x = y = 0;
|
| - } else {
|
| - const SkPoint& pt = fPathRef->atPoint(~fLastMoveToIndex);
|
| - x = pt.fX;
|
| - y = pt.fY;
|
| - }
|
| - this->moveTo(x, y);
|
| - }
|
| -}
|
| -
|
| void SkPath::lineTo(SkScalar x, SkScalar y) {
|
| SkDEBUGCODE(this->validate();)
|
|
|
| - this->injectMoveToIfNeeded();
|
| -
|
| SkPathRef::Editor ed(&fPathRef);
|
| + ed.injectMoveToIfNeeded();
|
| ed.growForVerb(kLine_Verb)->set(x, y);
|
|
|
| DIRTY_AFTER_EDIT;
|
| @@ -714,9 +690,8 @@
|
| void SkPath::quadTo(SkScalar x1, SkScalar y1, SkScalar x2, SkScalar y2) {
|
| SkDEBUGCODE(this->validate();)
|
|
|
| - this->injectMoveToIfNeeded();
|
| -
|
| SkPathRef::Editor ed(&fPathRef);
|
| + ed.injectMoveToIfNeeded();
|
| SkPoint* pts = ed.growForVerb(kQuad_Verb);
|
| pts[0].set(x1, y1);
|
| pts[1].set(x2, y2);
|
| @@ -744,9 +719,8 @@
|
| } else {
|
| SkDEBUGCODE(this->validate();)
|
|
|
| - this->injectMoveToIfNeeded();
|
| -
|
| SkPathRef::Editor ed(&fPathRef);
|
| + ed.injectMoveToIfNeeded();
|
| SkPoint* pts = ed.growForVerb(kConic_Verb, w);
|
| pts[0].set(x1, y1);
|
| pts[1].set(x2, y2);
|
| @@ -767,9 +741,8 @@
|
| SkScalar x3, SkScalar y3) {
|
| SkDEBUGCODE(this->validate();)
|
|
|
| - this->injectMoveToIfNeeded();
|
| -
|
| SkPathRef::Editor ed(&fPathRef);
|
| + ed.injectMoveToIfNeeded();
|
| SkPoint* pts = ed.growForVerb(kCubic_Verb);
|
| pts[0].set(x1, y1);
|
| pts[1].set(x2, y2);
|
| @@ -810,15 +783,6 @@
|
| break;
|
| }
|
| }
|
| -
|
| - // signal that we need a moveTo to follow us (unless we're done)
|
| -#if 0
|
| - if (fLastMoveToIndex >= 0) {
|
| - fLastMoveToIndex = ~fLastMoveToIndex;
|
| - }
|
| -#else
|
| - fLastMoveToIndex ^= ~fLastMoveToIndex >> (8 * sizeof(fLastMoveToIndex) - 1);
|
| -#endif
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -860,8 +824,6 @@
|
| return;
|
| }
|
|
|
| - fLastMoveToIndex = fPathRef->countPoints();
|
| -
|
| // +close makes room for the extra kClose_Verb
|
| SkPathRef::Editor ed(&fPathRef, count+close, count);
|
|
|
| @@ -1358,8 +1320,6 @@
|
| SkDEBUGCODE(this->validate();)
|
| SkASSERT(count & 1);
|
|
|
| - fLastMoveToIndex = fPathRef->countPoints();
|
| -
|
| SkPathRef::Editor ed(&fPathRef, 1+(count-1)/2, count);
|
|
|
| ed.growForVerb(kMove_Verb)->set(pts[0].fX, pts[0].fY);
|
|
|