| Index: samplecode/SampleArc.cpp
|
| diff --git a/samplecode/SampleArc.cpp b/samplecode/SampleArc.cpp
|
| index a44eeb59ba1545cd30d5a2183355c48e71166e98..a87f9c905cc7d8501983442b43bb2768bca3b0ec 100644
|
| --- a/samplecode/SampleArc.cpp
|
| +++ b/samplecode/SampleArc.cpp
|
| @@ -17,6 +17,7 @@
|
| #include "Sk1DPathEffect.h"
|
| #include "SkCornerPathEffect.h"
|
| #include "SkPathMeasure.h"
|
| +#include "SkPictureRecorder.h"
|
| #include "SkRandom.h"
|
| #include "SkColorPriv.h"
|
| #include "SkColorFilter.h"
|
| @@ -42,8 +43,7 @@ class ArcsView : public SampleView {
|
| SkRect fR;
|
| SkScalar fSweep;
|
| public:
|
| - MyDrawable(const SkRect& r) : fR(r), fSweep(0) {
|
| - }
|
| + MyDrawable(const SkRect& r) : fR(r), fSweep(0) {}
|
|
|
| void setSweep(SkScalar sweep) {
|
| if (fSweep != sweep) {
|
| @@ -82,7 +82,8 @@ class ArcsView : public SampleView {
|
|
|
| public:
|
| SkRect fRect;
|
| - MyDrawable* fDrawable;
|
| + MyDrawable* fAnimatingDrawable;
|
| + SkCanvasDrawable* fRootDrawable;
|
|
|
| ArcsView() {
|
| testparse();
|
| @@ -91,11 +92,16 @@ public:
|
|
|
| fRect.set(0, 0, SkIntToScalar(200), SkIntToScalar(200));
|
| fRect.offset(SkIntToScalar(20), SkIntToScalar(20));
|
| - fDrawable = SkNEW_ARGS(MyDrawable, (fRect));
|
| + fAnimatingDrawable = SkNEW_ARGS(MyDrawable, (fRect));
|
| +
|
| + SkPictureRecorder recorder;
|
| + draw_root(recorder.beginRecording(SkRect::MakeWH(800, 500)));
|
| + fRootDrawable = recorder.EXPERIMENTAL_endRecordingAsDrawable();
|
| }
|
|
|
| virtual ~ArcsView() SK_OVERRIDE {
|
| - fDrawable->unref();
|
| + fAnimatingDrawable->unref();
|
| + fRootDrawable->unref();
|
| }
|
|
|
| protected:
|
| @@ -175,10 +181,7 @@ protected:
|
| canvas->restore();
|
| }
|
|
|
| - virtual void onDrawContent(SkCanvas* canvas) {
|
| - fDrawable->setSweep(SampleCode::GetAnimScalar(SkIntToScalar(360)/24,
|
| - SkIntToScalar(360)));
|
| -
|
| + void draw_root(SkCanvas* canvas) {
|
| SkPaint paint;
|
| paint.setAntiAlias(true);
|
| paint.setStrokeWidth(SkIntToScalar(2));
|
| @@ -186,9 +189,14 @@ protected:
|
|
|
| drawRectWithLines(canvas, fRect, paint);
|
|
|
| - canvas->EXPERIMENTAL_drawDrawable(fDrawable);
|
| + canvas->EXPERIMENTAL_drawDrawable(fAnimatingDrawable);
|
|
|
| drawArcs(canvas);
|
| + }
|
| +
|
| + virtual void onDrawContent(SkCanvas* canvas) {
|
| + fAnimatingDrawable->setSweep(SampleCode::GetAnimScalar(360/24, 360));
|
| + canvas->EXPERIMENTAL_drawDrawable(fRootDrawable);
|
| this->inval(NULL);
|
| }
|
|
|
|
|