Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(197)

Unified Diff: samplecode/SamplePicture.cpp

Issue 214953003: split SkPictureRecorder out of SkPicture (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: update to ToT (again) Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: samplecode/SamplePicture.cpp
===================================================================
--- samplecode/SamplePicture.cpp (revision 14159)
+++ samplecode/SamplePicture.cpp (working copy)
@@ -61,15 +61,18 @@
fBitmap = load_bitmap();
- fPicture = new SkPicture;
- SkCanvas* canvas = fPicture->beginRecording(100, 100);
+ SkPictureRecorder recorder;
+
+ recorder.beginRecording(100, 100);
+ fSubPicture = recorder.endRecording();
+
+ SkCanvas* canvas = recorder.beginRecording(100, 100);
SkPaint paint;
paint.setAntiAlias(true);
canvas->drawBitmap(fBitmap, 0, 0, NULL);
drawCircle(canvas, 50, SK_ColorBLACK);
- fSubPicture = new SkPicture;
canvas->drawPicture(*fSubPicture);
canvas->translate(SkIntToScalar(50), 0);
canvas->drawPicture(*fSubPicture);
@@ -77,8 +80,11 @@
canvas->drawPicture(*fSubPicture);
canvas->translate(SkIntToScalar(-50), 0);
canvas->drawPicture(*fSubPicture);
- // fPicture now has (4) references to us. We can release ours, and just
- // unref fPicture in our destructor, and it will in turn take care of
+
+ fPicture = recorder.endRecording();
+
+ // fPicture now has (4) references to fSubPicture. We can release our ref,
+ // and just unref fPicture in our destructor, and it will in turn take care of
// the other references to fSubPicture
fSubPicture->unref();
}
@@ -123,14 +129,12 @@
}
virtual void onDrawContent(SkCanvas* canvas) {
- drawSomething(canvas);
+ this->drawSomething(canvas);
- SkPicture* pict = new SkPicture;
- SkAutoUnref aur(pict);
+ SkPictureRecorder recorder;
+ this->drawSomething(recorder.beginRecording(100, 100));
+ SkAutoTUnref<SkPicture> pict(recorder.endRecording());
- drawSomething(pict->beginRecording(100, 100));
- pict->endRecording();
-
canvas->save();
canvas->translate(SkIntToScalar(300), SkIntToScalar(50));
canvas->scale(-SK_Scalar1, -SK_Scalar1);
@@ -160,12 +164,11 @@
}
#endif
- // test that we can re-record a subpicture, and see the results
+ // This used to re-record the sub-picture and redraw the parent
+ // A capability that is now forbidden!
SkRandom rand(SampleCode::GetAnimTime());
canvas->translate(SkIntToScalar(10), SkIntToScalar(250));
- drawCircle(fSubPicture->beginRecording(50, 50), 25,
- rand.nextU() | 0xFF000000);
canvas->drawPicture(*fPicture);
delayInval(500);
}

Powered by Google App Engine
This is Rietveld 408576698