| 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 |