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(); |
} |
robertphillips
2014/11/24 15:42:02
drawRoot due to fRect usage ?
reed1
2014/11/24 17:10:48
Done.
|
- 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); |
+ } |
+ |
robertphillips
2014/11/24 15:42:02
SK_OVERRIDE ?
reed1
2014/11/24 17:10:48
Done.
|
+ virtual void onDrawContent(SkCanvas* canvas) { |
+ fAnimatingDrawable->setSweep(SampleCode::GetAnimScalar(360/24, 360)); |
+ canvas->EXPERIMENTAL_drawDrawable(fRootDrawable); |
this->inval(NULL); |
} |