| Index: src/animator/SkDrawExtraPathEffect.cpp
|
| ===================================================================
|
| --- src/animator/SkDrawExtraPathEffect.cpp (revision 8038)
|
| +++ src/animator/SkDrawExtraPathEffect.cpp (working copy)
|
| @@ -128,6 +128,9 @@
|
| apply->interpolate(*fMaker, SkScalarMulRound(distance, 1000));
|
| matrix = (SkDrawMatrix*) apply->getScope();
|
| }
|
| + if (matrix) {
|
| + m = matrix->getMatrix();
|
| + }
|
| }
|
| SkScalar result = 0;
|
| SkAnimatorScript::EvaluateFloat(*fMaker, NULL, fDraw->spacing.c_str(), &result);
|
| @@ -228,14 +231,21 @@
|
| }
|
|
|
| protected:
|
| - virtual void begin(const SkIRect& uvBounds, SkPath* )
|
| - {
|
| + virtual void begin(const SkIRect& uvBounds, SkPath*) const SK_OVERRIDE {
|
| + const_cast<SkShape2DPathEffect*>(this)->setUVBounds(uvBounds);
|
| + }
|
| +
|
| + virtual void next(const SkPoint& loc, int u, int v, SkPath* dst) const SK_OVERRIDE {
|
| + const_cast<SkShape2DPathEffect*>(this)->addPath(loc, u, v, dst);
|
| + }
|
| +
|
| +private:
|
| + void setUVBounds(const SkIRect& uvBounds) {
|
| fUVBounds.set(SkIntToScalar(uvBounds.fLeft), SkIntToScalar(uvBounds.fTop),
|
| SkIntToScalar(uvBounds.fRight), SkIntToScalar(uvBounds.fBottom));
|
| }
|
|
|
| - virtual void next(const SkPoint& loc, int u, int v, SkPath* dst)
|
| - {
|
| + void addPath(const SkPoint& loc, int u, int v, SkPath* dst) {
|
| fLoc = loc;
|
| fU = u;
|
| fV = v;
|
| @@ -272,8 +282,6 @@
|
| fMaker->clearExtraPropertyCallBack(fDraw->fType);
|
| }
|
|
|
| -private:
|
| -
|
| static bool Get2D(const char* token, size_t len, void* s2D, SkScriptValue* value) {
|
| static const char match[] = "locX|locY|left|top|right|bottom|u|v" ;
|
| SkShape2DPathEffect* shape2D = (SkShape2DPathEffect*) s2D;
|
|
|