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

Side by Side Diff: gm/picture.cpp

Issue 1811703002: return pictures as sk_sp (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: rely on RVO in picturerecorder Created 4 years, 9 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 unified diff | Download patch
« no previous file with comments | « gm/pathopsskpclip.cpp ('k') | gm/pictureimagefilter.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "gm.h" 8 #include "gm.h"
9 #include "SkPaint.h" 9 #include "SkPaint.h"
10 #include "SkPictureRecorder.h" 10 #include "SkPictureRecorder.h"
11 11
12 static SkPicture* make_picture() { 12 static sk_sp<SkPicture> make_picture() {
13 SkPictureRecorder rec; 13 SkPictureRecorder rec;
14 SkCanvas* canvas = rec.beginRecording(100, 100); 14 SkCanvas* canvas = rec.beginRecording(100, 100);
15 15
16 SkPaint paint; 16 SkPaint paint;
17 paint.setAntiAlias(true); 17 paint.setAntiAlias(true);
18 SkPath path; 18 SkPath path;
19 19
20 paint.setColor(0x800000FF); 20 paint.setColor(0x800000FF);
21 canvas->drawRect(SkRect::MakeWH(100, 100), paint); 21 canvas->drawRect(SkRect::MakeWH(100, 100), paint);
22 22
23 paint.setColor(0x80FF0000); 23 paint.setColor(0x80FF0000);
24 path.moveTo(0, 0); path.lineTo(100, 0); path.lineTo(100, 100); 24 path.moveTo(0, 0); path.lineTo(100, 0); path.lineTo(100, 100);
25 canvas->drawPath(path, paint); 25 canvas->drawPath(path, paint);
26 26
27 paint.setColor(0x8000FF00); 27 paint.setColor(0x8000FF00);
28 path.reset(); path.moveTo(0, 0); path.lineTo(100, 0); path.lineTo(0, 100); 28 path.reset(); path.moveTo(0, 0); path.lineTo(100, 0); path.lineTo(0, 100);
29 canvas->drawPath(path, paint); 29 canvas->drawPath(path, paint);
30 30
31 paint.setColor(0x80FFFFFF); 31 paint.setColor(0x80FFFFFF);
32 paint.setXfermodeMode(SkXfermode::kPlus_Mode); 32 paint.setXfermodeMode(SkXfermode::kPlus_Mode);
33 canvas->drawRect(SkRect::MakeXYWH(25, 25, 50, 50), paint); 33 canvas->drawRect(SkRect::MakeXYWH(25, 25, 50, 50), paint);
34 34
35 return rec.endRecording(); 35 return rec.finishRecordingAsPicture();
36 } 36 }
37 37
38 // Exercise the optional arguments to drawPicture 38 // Exercise the optional arguments to drawPicture
39 // 39 //
40 class PictureGM : public skiagm::GM { 40 class PictureGM : public skiagm::GM {
41 public: 41 public:
42 PictureGM() 42 PictureGM()
43 : fPicture(nullptr) 43 : fPicture(nullptr)
44 {} 44 {}
45 45
46 protected: 46 protected:
47 void onOnceBeforeDraw() override { 47 void onOnceBeforeDraw() override {
48 fPicture.reset(make_picture()); 48 fPicture = make_picture();
49 } 49 }
50 50
51 SkString onShortName() override { 51 SkString onShortName() override {
52 return SkString("pictures"); 52 return SkString("pictures");
53 } 53 }
54 54
55 SkISize onISize() override { 55 SkISize onISize() override {
56 return SkISize::Make(450, 120); 56 return SkISize::Make(450, 120);
57 } 57 }
58 58
(...skipping 10 matching lines...) Expand all
69 69
70 matrix.postTranslate(110, 0); 70 matrix.postTranslate(110, 0);
71 canvas->drawPicture(fPicture, &matrix, &paint); 71 canvas->drawPicture(fPicture, &matrix, &paint);
72 72
73 paint.setAlpha(0x80); 73 paint.setAlpha(0x80);
74 matrix.postTranslate(110, 0); 74 matrix.postTranslate(110, 0);
75 canvas->drawPicture(fPicture, &matrix, &paint); 75 canvas->drawPicture(fPicture, &matrix, &paint);
76 } 76 }
77 77
78 private: 78 private:
79 SkAutoTUnref<SkPicture> fPicture; 79 sk_sp<SkPicture> fPicture;
80 80
81 typedef skiagm::GM INHERITED; 81 typedef skiagm::GM INHERITED;
82 }; 82 };
83 83
84 DEF_GM(return new PictureGM;) 84 DEF_GM(return new PictureGM;)
OLDNEW
« no previous file with comments | « gm/pathopsskpclip.cpp ('k') | gm/pictureimagefilter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698