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

Side by Side Diff: samplecode/SampleAll.cpp

Issue 2396953002: Revert[8] "replace SkXfermode obj with SkBlendMode enum in paints" (Closed)
Patch Set: add tmp virtual to unroll legacy arithmodes Created 4 years, 2 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 | « samplecode/SampleAARectModes.cpp ('k') | samplecode/SampleApp.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 2011 Google Inc. 2 * Copyright 2011 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 #include "SampleCode.h" 7 #include "SampleCode.h"
8 #include "SkBlurMask.h" 8 #include "SkBlurMask.h"
9 #include "SkCanvas.h" 9 #include "SkCanvas.h"
10 #include "SkView.h" 10 #include "SkView.h"
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 SkBlurMaskFilter::kNone_BlurFlag)); 82 SkBlurMaskFilter::kNone_BlurFlag));
83 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3)); 83 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
84 84
85 p.setMaskFilter(nullptr); 85 p.setMaskFilter(nullptr);
86 p.setStyle(SkPaint::kStroke_Style); 86 p.setStyle(SkPaint::kStroke_Style);
87 p.setStrokeWidth(SK_Scalar1); 87 p.setStrokeWidth(SK_Scalar1);
88 rastBuilder->addLayer(p); 88 rastBuilder->addLayer(p);
89 89
90 p.setAlpha(0x11); 90 p.setAlpha(0x11);
91 p.setStyle(SkPaint::kFill_Style); 91 p.setStyle(SkPaint::kFill_Style);
92 p.setXfermodeMode(SkXfermode::kSrc_Mode); 92 p.setBlendMode(SkBlendMode::kSrc);
93 rastBuilder->addLayer(p); 93 rastBuilder->addLayer(p);
94 } 94 }
95 95
96 static void r1(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 96 static void r1(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
97 rastBuilder->addLayer(p); 97 rastBuilder->addLayer(p);
98 98
99 p.setAlpha(0x40); 99 p.setAlpha(0x40);
100 p.setXfermodeMode(SkXfermode::kSrc_Mode); 100 p.setBlendMode(SkBlendMode::kSrc);
101 p.setStyle(SkPaint::kStroke_Style); 101 p.setStyle(SkPaint::kStroke_Style);
102 p.setStrokeWidth(SK_Scalar1*2); 102 p.setStrokeWidth(SK_Scalar1*2);
103 rastBuilder->addLayer(p); 103 rastBuilder->addLayer(p);
104 } 104 }
105 105
106 static void r2(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 106 static void r2(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
107 p.setStyle(SkPaint::kStrokeAndFill_Style); 107 p.setStyle(SkPaint::kStrokeAndFill_Style);
108 p.setStrokeWidth(SK_Scalar1*4); 108 p.setStrokeWidth(SK_Scalar1*4);
109 rastBuilder->addLayer(p); 109 rastBuilder->addLayer(p);
110 110
111 p.setStyle(SkPaint::kStroke_Style); 111 p.setStyle(SkPaint::kStroke_Style);
112 p.setStrokeWidth(SK_Scalar1*3/2); 112 p.setStrokeWidth(SK_Scalar1*3/2);
113 p.setXfermodeMode(SkXfermode::kClear_Mode); 113 p.setBlendMode(SkBlendMode::kClear);
114 rastBuilder->addLayer(p); 114 rastBuilder->addLayer(p);
115 } 115 }
116 116
117 static void r3(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 117 static void r3(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
118 p.setStyle(SkPaint::kStroke_Style); 118 p.setStyle(SkPaint::kStroke_Style);
119 p.setStrokeWidth(SK_Scalar1*3); 119 p.setStrokeWidth(SK_Scalar1*3);
120 rastBuilder->addLayer(p); 120 rastBuilder->addLayer(p);
121 121
122 p.setAlpha(0x20); 122 p.setAlpha(0x20);
123 p.setStyle(SkPaint::kFill_Style); 123 p.setStyle(SkPaint::kFill_Style);
124 p.setXfermodeMode(SkXfermode::kSrc_Mode); 124 p.setBlendMode(SkBlendMode::kSrc);
125 rastBuilder->addLayer(p); 125 rastBuilder->addLayer(p);
126 } 126 }
127 127
128 static void r4(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 128 static void r4(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
129 p.setAlpha(0x60); 129 p.setAlpha(0x60);
130 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3)); 130 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
131 131
132 p.setAlpha(0xFF); 132 p.setAlpha(0xFF);
133 p.setXfermodeMode(SkXfermode::kClear_Mode); 133 p.setBlendMode(SkBlendMode::kClear);
134 rastBuilder->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2); 134 rastBuilder->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2);
135 135
136 p.setXfermode(nullptr); 136 p.setBlendMode(SkBlendMode::kSrcOver);
137 rastBuilder->addLayer(p); 137 rastBuilder->addLayer(p);
138 } 138 }
139 139
140 static void r5(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 140 static void r5(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
141 rastBuilder->addLayer(p); 141 rastBuilder->addLayer(p);
142 142
143 p.setPathEffect(SkDiscretePathEffect::Make(SK_Scalar1*4, SK_Scalar1*3)); 143 p.setPathEffect(SkDiscretePathEffect::Make(SK_Scalar1*4, SK_Scalar1*3));
144 p.setXfermodeMode(SkXfermode::kSrcOut_Mode); 144 p.setBlendMode(SkBlendMode::kSrcOut);
145 rastBuilder->addLayer(p); 145 rastBuilder->addLayer(p);
146 } 146 }
147 147
148 static void r6(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 148 static void r6(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
149 rastBuilder->addLayer(p); 149 rastBuilder->addLayer(p);
150 150
151 p.setAntiAlias(false); 151 p.setAntiAlias(false);
152 SkLayerRasterizer::Builder rastBuilder2; 152 SkLayerRasterizer::Builder rastBuilder2;
153 r5(&rastBuilder2, p); 153 r5(&rastBuilder2, p);
154 p.setRasterizer(rastBuilder2.detach()); 154 p.setRasterizer(rastBuilder2.detach());
155 p.setXfermodeMode(SkXfermode::kClear_Mode); 155 p.setBlendMode(SkBlendMode::kClear);
156 rastBuilder->addLayer(p); 156 rastBuilder->addLayer(p);
157 } 157 }
158 158
159 class Dot2DPathEffect : public Sk2DPathEffect { 159 class Dot2DPathEffect : public Sk2DPathEffect {
160 public: 160 public:
161 Dot2DPathEffect(SkScalar radius, const SkMatrix& matrix) 161 Dot2DPathEffect(SkScalar radius, const SkMatrix& matrix)
162 : Sk2DPathEffect(matrix), fRadius(radius) {} 162 : Sk2DPathEffect(matrix), fRadius(radius) {}
163 163
164 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(Dot2DPathEffect) 164 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(Dot2DPathEffect)
165 165
(...skipping 21 matching lines...) Expand all
187 rastBuilder->addLayer(p); 187 rastBuilder->addLayer(p);
188 } 188 }
189 189
190 static void r8(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 190 static void r8(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
191 rastBuilder->addLayer(p); 191 rastBuilder->addLayer(p);
192 192
193 SkMatrix lattice; 193 SkMatrix lattice;
194 lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0); 194 lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0);
195 lattice.postSkew(SK_Scalar1/3, 0, 0, 0); 195 lattice.postSkew(SK_Scalar1/3, 0, 0, 0);
196 p.setPathEffect(sk_make_sp<Dot2DPathEffect>(SK_Scalar1*2, lattice)); 196 p.setPathEffect(sk_make_sp<Dot2DPathEffect>(SK_Scalar1*2, lattice));
197 p.setXfermodeMode(SkXfermode::kClear_Mode); 197 p.setBlendMode(SkBlendMode::kClear);
198 rastBuilder->addLayer(p); 198 rastBuilder->addLayer(p);
199 199
200 p.setPathEffect(nullptr); 200 p.setPathEffect(nullptr);
201 p.setXfermode(nullptr); 201 p.setBlendMode(SkBlendMode::kSrcOver);
202 p.setStyle(SkPaint::kStroke_Style); 202 p.setStyle(SkPaint::kStroke_Style);
203 p.setStrokeWidth(SK_Scalar1); 203 p.setStrokeWidth(SK_Scalar1);
204 rastBuilder->addLayer(p); 204 rastBuilder->addLayer(p);
205 } 205 }
206 206
207 static void r9(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) { 207 static void r9(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
208 rastBuilder->addLayer(p); 208 rastBuilder->addLayer(p);
209 209
210 SkMatrix lattice; 210 SkMatrix lattice;
211 lattice.setScale(SK_Scalar1, SK_Scalar1*6, 0, 0); 211 lattice.setScale(SK_Scalar1, SK_Scalar1*6, 0, 0);
212 lattice.postRotate(SkIntToScalar(30), 0, 0); 212 lattice.postRotate(SkIntToScalar(30), 0, 0);
213 p.setPathEffect(SkLine2DPathEffect::Make(SK_Scalar1*2, lattice)); 213 p.setPathEffect(SkLine2DPathEffect::Make(SK_Scalar1*2, lattice));
214 p.setXfermodeMode(SkXfermode::kClear_Mode); 214 p.setBlendMode(SkBlendMode::kClear);
215 rastBuilder->addLayer(p); 215 rastBuilder->addLayer(p);
216 216
217 p.setPathEffect(nullptr); 217 p.setPathEffect(nullptr);
218 p.setXfermode(nullptr); 218 p.setBlendMode(SkBlendMode::kSrcOver);
219 p.setStyle(SkPaint::kStroke_Style); 219 p.setStyle(SkPaint::kStroke_Style);
220 p.setStrokeWidth(SK_Scalar1); 220 p.setStrokeWidth(SK_Scalar1);
221 rastBuilder->addLayer(p); 221 rastBuilder->addLayer(p);
222 } 222 }
223 223
224 typedef void (*raster_proc)(SkLayerRasterizer::Builder*, SkPaint&); 224 typedef void (*raster_proc)(SkLayerRasterizer::Builder*, SkPaint&);
225 225
226 static const raster_proc gRastProcs[] = { 226 static const raster_proc gRastProcs[] = {
227 r0, r1, r2, r3, r4, r5, r6, r7, r8, r9 227 r0, r1, r2, r3, r4, r5, r6, r7, r8, r9
228 }; 228 };
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after
394 canvas->clipRect(clip); 394 canvas->clipRect(clip);
395 paint.setShader(SkShader::MakeBitmapShader(fTx, 395 paint.setShader(SkShader::MakeBitmapShader(fTx,
396 SkShader::kMirror_TileMode, SkShader::kRepeat_TileMode)); 396 SkShader::kMirror_TileMode, SkShader::kRepeat_TileMode));
397 canvas->drawPaint(paint); 397 canvas->drawPaint(paint);
398 canvas->save(); 398 canvas->save();
399 399
400 // line (exercises xfermode, colorShader, colorFilter, filterShader) 400 // line (exercises xfermode, colorShader, colorFilter, filterShader)
401 paint.setColor(SK_ColorGREEN); 401 paint.setColor(SK_ColorGREEN);
402 paint.setStrokeWidth(SkIntToScalar(10)); 402 paint.setStrokeWidth(SkIntToScalar(10));
403 paint.setStyle(SkPaint::kStroke_Style); 403 paint.setStyle(SkPaint::kStroke_Style);
404 paint.setXfermode(SkXfermode::Make(SkXfermode::kXor_Mode)); 404 paint.setBlendMode(SkBlendMode::kXor);
405 paint.setColorFilter(lightingFilter); 405 paint.setColorFilter(lightingFilter);
406 canvas->drawLine(start.fX, start.fY, stop.fX, stop.fY, paint); // should not be green 406 canvas->drawLine(start.fX, start.fY, stop.fX, stop.fY, paint); // should not be green
407 paint.setXfermode(nullptr); 407 paint.setBlendMode(SkBlendMode::kSrcOver);
408 paint.setColorFilter(nullptr); 408 paint.setColorFilter(nullptr);
409 409
410 // rectangle 410 // rectangle
411 paint.setStyle(SkPaint::kFill_Style); 411 paint.setStyle(SkPaint::kFill_Style);
412 canvas->translate(SkIntToScalar(50), 0); 412 canvas->translate(SkIntToScalar(50), 0);
413 paint.setColor(SK_ColorYELLOW); 413 paint.setColor(SK_ColorYELLOW);
414 paint.setShader(linear); 414 paint.setShader(linear);
415 paint.setPathEffect(pathEffectTest()); 415 paint.setPathEffect(pathEffectTest());
416 canvas->drawRect(rect, paint); 416 canvas->drawRect(rect, paint);
417 paint.setPathEffect(nullptr); 417 paint.setPathEffect(nullptr);
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 private: 560 private:
561 SkPoint fClickPt; 561 SkPoint fClickPt;
562 SkBitmap fBug, fTb, fTx; 562 SkBitmap fBug, fTb, fTx;
563 typedef SampleView INHERITED; 563 typedef SampleView INHERITED;
564 }; 564 };
565 565
566 ////////////////////////////////////////////////////////////////////////////// 566 //////////////////////////////////////////////////////////////////////////////
567 567
568 static SkView* MyFactory() { return new DemoView; } 568 static SkView* MyFactory() { return new DemoView; }
569 static SkViewRegister reg(MyFactory); 569 static SkViewRegister reg(MyFactory);
OLDNEW
« no previous file with comments | « samplecode/SampleAARectModes.cpp ('k') | samplecode/SampleApp.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698