OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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); |
OLD | NEW |