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

Side by Side Diff: samplecode/SampleShaders.cpp

Issue 1772463002: use Make instead of Create to return a shared shader (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: partial update of skia call-sites 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
OLDNEW
1
2 /* 1 /*
3 * Copyright 2011 Google Inc. 2 * Copyright 2011 Google Inc.
4 * 3 *
5 * 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
6 * found in the LICENSE file. 5 * found in the LICENSE file.
7 */ 6 */
7
8 #include "SampleCode.h" 8 #include "SampleCode.h"
9 #include "SkView.h" 9 #include "SkView.h"
10 #include "SkCanvas.h" 10 #include "SkCanvas.h"
11 #include "SkGradientShader.h" 11 #include "SkGradientShader.h"
12 #include "SkGraphics.h" 12 #include "SkGraphics.h"
13 #include "SkImageDecoder.h" 13 #include "SkImageDecoder.h"
14 #include "SkPath.h" 14 #include "SkPath.h"
15 #include "SkRegion.h" 15 #include "SkRegion.h"
16 #include "SkShader.h" 16 #include "SkShader.h"
17 #include "SkUtils.h" 17 #include "SkUtils.h"
18 #include "SkXfermode.h" 18 #include "SkXfermode.h"
19 #include "SkColorPriv.h" 19 #include "SkColorPriv.h"
20 #include "SkColorFilter.h" 20 #include "SkColorFilter.h"
21 #include "SkTime.h" 21 #include "SkTime.h"
22 #include "SkTypeface.h" 22 #include "SkTypeface.h"
23 23
24 static SkShader* make_bitmapfade(const SkBitmap& bm) 24 static sk_sp<SkShader> make_bitmapfade(const SkBitmap& bm)
25 { 25 {
26 SkPoint pts[2]; 26 SkPoint pts[2];
27 SkColor colors[2]; 27 SkColor colors[2];
28 28
29 pts[0].set(0, 0); 29 pts[0].set(0, 0);
30 pts[1].set(0, SkIntToScalar(bm.height())); 30 pts[1].set(0, SkIntToScalar(bm.height()));
31 colors[0] = SK_ColorBLACK; 31 colors[0] = SK_ColorBLACK;
32 colors[1] = SkColorSetARGB(0, 0, 0, 0); 32 colors[1] = SkColorSetARGB(0, 0, 0, 0);
33 SkShader* shaderA = SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode); 33 auto shaderA = SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkShade r::kClamp_TileMode);
34 34
35 SkShader* shaderB = SkShader::CreateBitmapShader(bm, 35 auto shaderB = SkShader::MakeBitmapShader(bm,
36 SkShader::kClamp_TileMode, SkShader::kClamp_TileMode); 36 SkShader::kClamp_TileMode, SkShader::kClamp_TileMode);
37 37
38 SkXfermode* mode = SkXfermode::Create(SkXfermode::kDstIn_Mode); 38 SkAutoTUnref<SkXfermode> mode(SkXfermode::Create(SkXfermode::kDstIn_Mode));
39 39
40 SkShader* shader = SkShader::CreateComposeShader(shaderB, shaderA, mode); 40 return SkShader::MakeComposeShader(shaderB, shaderA, mode);
f(malita) 2016/03/08 15:50:35 prolly not important for a sample, but I'm trying
reed1 2016/03/08 20:17:15 Done.
41 shaderA->unref();
42 shaderB->unref();
43 mode->unref();
44
45 return shader;
46 } 41 }
47 42
48 class ShaderView : public SampleView { 43 class ShaderView : public SampleView {
49 public: 44 public:
50 SkShader* fShader; 45 sk_sp<SkShader> fShader;
51 SkBitmap fBitmap; 46 SkBitmap fBitmap;
52 47
53 ShaderView() { 48 ShaderView() {
54 SkImageDecoder::DecodeFile("/skimages/logo.gif", &fBitmap); 49 SkImageDecoder::DecodeFile("/skimages/logo.gif", &fBitmap);
55 50
56 SkPoint pts[2]; 51 SkPoint pts[2];
57 SkColor colors[2]; 52 SkColor colors[2];
58 53
59 pts[0].set(0, 0); 54 pts[0].set(0, 0);
60 pts[1].set(SkIntToScalar(100), 0); 55 pts[1].set(SkIntToScalar(100), 0);
61 colors[0] = SK_ColorRED; 56 colors[0] = SK_ColorRED;
62 colors[1] = SK_ColorBLUE; 57 colors[1] = SK_ColorBLUE;
63 SkShader* shaderA = SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode); 58 auto shaderA = SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkS hader::kClamp_TileMode);
64 59
65 pts[0].set(0, 0); 60 pts[0].set(0, 0);
66 pts[1].set(0, SkIntToScalar(100)); 61 pts[1].set(0, SkIntToScalar(100));
67 colors[0] = SK_ColorBLACK; 62 colors[0] = SK_ColorBLACK;
68 colors[1] = SkColorSetARGB(0x80, 0, 0, 0); 63 colors[1] = SkColorSetARGB(0x80, 0, 0, 0);
69 SkShader* shaderB = SkGradientShader::CreateLinear(pts, colors, nullptr, 2, SkShader::kClamp_TileMode); 64 auto shaderB = SkGradientShader::MakeLinear(pts, colors, nullptr, 2, SkS hader::kClamp_TileMode);
70 65
71 SkXfermode* mode = SkXfermode::Create(SkXfermode::kDstIn_Mode); 66 SkAutoTUnref<SkXfermode> mode(SkXfermode::Create(SkXfermode::kDstIn_Mode ));
72 67
73 fShader = SkShader::CreateComposeShader(shaderA, shaderB, mode); 68 fShader = SkShader::MakeComposeShader(shaderA, shaderB, mode);
f(malita) 2016/03/08 15:50:35 same
reed1 2016/03/08 20:17:15 Done.
74 shaderA->unref();
75 shaderB->unref();
76 mode->unref();
77 }
78 virtual ~ShaderView() {
79 SkSafeUnref(fShader);
80 } 69 }
81 70
82 protected: 71 protected:
83 // overrides from SkEventSink 72 // overrides from SkEventSink
84 bool onQuery(SkEvent* evt) override { 73 bool onQuery(SkEvent* evt) override {
85 if (SampleCode::TitleQ(*evt)) { 74 if (SampleCode::TitleQ(*evt)) {
86 SampleCode::TitleR(evt, "Shaders"); 75 SampleCode::TitleR(evt, "Shaders");
87 return true; 76 return true;
88 } 77 }
89 return this->INHERITED::onQuery(evt); 78 return this->INHERITED::onQuery(evt);
(...skipping 15 matching lines...) Expand all
105 canvas->translate(SkIntToScalar(110), 0); 94 canvas->translate(SkIntToScalar(110), 0);
106 95
107 int w = fBitmap.width(); 96 int w = fBitmap.width();
108 int h = fBitmap.height(); 97 int h = fBitmap.height();
109 w = 120; 98 w = 120;
110 h = 80; 99 h = 80;
111 r.set(0, 0, SkIntToScalar(w), SkIntToScalar(h)); 100 r.set(0, 0, SkIntToScalar(w), SkIntToScalar(h));
112 101
113 paint.setShader(nullptr); 102 paint.setShader(nullptr);
114 canvas->drawRect(r, paint); 103 canvas->drawRect(r, paint);
115 paint.setShader(make_bitmapfade(fBitmap))->unref(); 104 paint.setShader(make_bitmapfade(fBitmap));
116 canvas->drawRect(r, paint); 105 canvas->drawRect(r, paint);
117 } 106 }
118 107
119 SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) ove rride { 108 SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned modi) ove rride {
120 this->inval(nullptr); 109 this->inval(nullptr);
121 return this->INHERITED::onFindClickHandler(x, y, modi); 110 return this->INHERITED::onFindClickHandler(x, y, modi);
122 } 111 }
123 112
124 bool onClick(Click* click) override { 113 bool onClick(Click* click) override {
125 return this->INHERITED::onClick(click); 114 return this->INHERITED::onClick(click);
126 } 115 }
127 116
128 private: 117 private:
129 typedef SampleView INHERITED; 118 typedef SampleView INHERITED;
130 }; 119 };
131 120
132 ////////////////////////////////////////////////////////////////////////////// 121 //////////////////////////////////////////////////////////////////////////////
133 122
134 static SkView* MyFactory() { return new ShaderView; } 123 static SkView* MyFactory() { return new ShaderView; }
135 static SkViewRegister reg(MyFactory); 124 static SkViewRegister reg(MyFactory);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698