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 | 7 |
8 #include "SampleCode.h" | 8 #include "SampleCode.h" |
9 #include "SkCanvas.h" | 9 #include "SkCanvas.h" |
10 #include "SkPaint.h" | 10 #include "SkPaint.h" |
(...skipping 26 matching lines...) Expand all Loading... |
37 SkBitmap mask; | 37 SkBitmap mask; |
38 int w = SkScalarRoundToInt(r.width()); | 38 int w = SkScalarRoundToInt(r.width()); |
39 int h = SkScalarRoundToInt(r.height()); | 39 int h = SkScalarRoundToInt(r.height()); |
40 mask.allocN32Pixels(w, h); | 40 mask.allocN32Pixels(w, h); |
41 mask.eraseColor(SK_ColorTRANSPARENT); | 41 mask.eraseColor(SK_ColorTRANSPARENT); |
42 SkCanvas c(mask); | 42 SkCanvas c(mask); |
43 SkRect bounds = r; | 43 SkRect bounds = r; |
44 bounds.offset(-bounds.fLeft, -bounds.fTop); | 44 bounds.offset(-bounds.fLeft, -bounds.fTop); |
45 c.drawOval(bounds, paint); | 45 c.drawOval(bounds, paint); |
46 | 46 |
47 paint.setXfermodeMode(SkXfermode::kDstIn_Mode); | 47 paint.setBlendMode(SkBlendMode::kDstIn); |
48 canvas->drawBitmap(mask, r.fLeft, r.fTop, &paint); | 48 canvas->drawBitmap(mask, r.fLeft, r.fTop, &paint); |
49 } else { | 49 } else { |
50 SkPath p; | 50 SkPath p; |
51 p.addOval(r); | 51 p.addOval(r); |
52 p.setFillType(SkPath::kInverseWinding_FillType); | 52 p.setFillType(SkPath::kInverseWinding_FillType); |
53 paint.setXfermodeMode(SkXfermode::kDstOut_Mode); | 53 paint.setBlendMode(SkBlendMode::kDstOut); |
54 canvas->drawPath(p, paint); | 54 canvas->drawPath(p, paint); |
55 } | 55 } |
56 } | 56 } |
57 | 57 |
58 virtual void onDrawContent(SkCanvas* canvas) { | 58 virtual void onDrawContent(SkCanvas* canvas) { |
59 SkRect r; | 59 SkRect r; |
60 r.set(SkIntToScalar(20), SkIntToScalar(20), SkIntToScalar(120), SkIntToS
calar(120)); | 60 r.set(SkIntToScalar(20), SkIntToScalar(20), SkIntToScalar(120), SkIntToS
calar(120)); |
61 canvas->saveLayer(&r, nullptr); | 61 canvas->saveLayer(&r, nullptr); |
62 canvas->drawColor(SK_ColorRED); | 62 canvas->drawColor(SK_ColorRED); |
63 drawMask(canvas, r); | 63 drawMask(canvas, r); |
64 canvas->restore(); | 64 canvas->restore(); |
65 } | 65 } |
66 | 66 |
67 private: | 67 private: |
68 typedef SampleView INHERITED; | 68 typedef SampleView INHERITED; |
69 }; | 69 }; |
70 | 70 |
71 /////////////////////////////////////////////////////////////////////////////// | 71 /////////////////////////////////////////////////////////////////////////////// |
72 | 72 |
73 static SkView* MyFactory() { return new LayerMaskView; } | 73 static SkView* MyFactory() { return new LayerMaskView; } |
74 static SkViewRegister reg(MyFactory); | 74 static SkViewRegister reg(MyFactory); |
OLD | NEW |