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

Side by Side Diff: gm/aarectmodes.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 | « gm/aaclip.cpp ('k') | gm/aaxfermodes.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 7
8 #include "gm.h" 8 #include "gm.h"
9 #include "SkCanvas.h" 9 #include "SkCanvas.h"
10 #include "SkColorPriv.h" 10 #include "SkColorPriv.h"
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
52 SkASSERT(false); 52 SkASSERT(false);
53 break; 53 break;
54 } 54 }
55 } 55 }
56 SkRect clip = {0, 130, 772, 531}; 56 SkRect clip = {0, 130, 772, 531};
57 canvas->clipRect(clip); 57 canvas->clipRect(clip);
58 canvas->drawPath(path, paint); 58 canvas->drawPath(path, paint);
59 } 59 }
60 60
61 constexpr struct { 61 constexpr struct {
62 SkXfermode::Mode fMode; 62 SkBlendMode fMode;
63 const char* fLabel; 63 const char* fLabel;
64 } gModes[] = { 64 } gModes[] = {
65 { SkXfermode::kClear_Mode, "Clear" }, 65 { SkBlendMode::kClear, "Clear" },
66 { SkXfermode::kSrc_Mode, "Src" }, 66 { SkBlendMode::kSrc, "Src" },
67 { SkXfermode::kDst_Mode, "Dst" }, 67 { SkBlendMode::kDst, "Dst" },
68 { SkXfermode::kSrcOver_Mode, "SrcOver" }, 68 { SkBlendMode::kSrcOver, "SrcOver" },
69 { SkXfermode::kDstOver_Mode, "DstOver" }, 69 { SkBlendMode::kDstOver, "DstOver" },
70 { SkXfermode::kSrcIn_Mode, "SrcIn" }, 70 { SkBlendMode::kSrcIn, "SrcIn" },
71 { SkXfermode::kDstIn_Mode, "DstIn" }, 71 { SkBlendMode::kDstIn, "DstIn" },
72 { SkXfermode::kSrcOut_Mode, "SrcOut" }, 72 { SkBlendMode::kSrcOut, "SrcOut" },
73 { SkXfermode::kDstOut_Mode, "DstOut" }, 73 { SkBlendMode::kDstOut, "DstOut" },
74 { SkXfermode::kSrcATop_Mode, "SrcATop" }, 74 { SkBlendMode::kSrcATop, "SrcATop" },
75 { SkXfermode::kDstATop_Mode, "DstATop" }, 75 { SkBlendMode::kDstATop, "DstATop" },
76 { SkXfermode::kXor_Mode, "Xor" }, 76 { SkBlendMode::kXor, "Xor" },
77 }; 77 };
78 78
79 const int gWidth = 64; 79 const int gWidth = 64;
80 const int gHeight = 64; 80 const int gHeight = 64;
81 const SkScalar W = SkIntToScalar(gWidth); 81 const SkScalar W = SkIntToScalar(gWidth);
82 const SkScalar H = SkIntToScalar(gHeight); 82 const SkScalar H = SkIntToScalar(gHeight);
83 83
84 static SkScalar drawCell(SkCanvas* canvas, sk_sp<SkXfermode> mode, SkAlpha a0, S kAlpha a1) { 84 static SkScalar drawCell(SkCanvas* canvas, SkBlendMode mode, SkAlpha a0, SkAlpha a1) {
85 85
86 SkPaint paint; 86 SkPaint paint;
87 paint.setAntiAlias(true); 87 paint.setAntiAlias(true);
88 88
89 SkRect r = SkRect::MakeWH(W, H); 89 SkRect r = SkRect::MakeWH(W, H);
90 r.inset(W/10, H/10); 90 r.inset(W/10, H/10);
91 91
92 paint.setColor(SK_ColorBLUE); 92 paint.setColor(SK_ColorBLUE);
93 paint.setAlpha(a0); 93 paint.setAlpha(a0);
94 canvas->drawOval(r, paint); 94 canvas->drawOval(r, paint);
95 95
96 paint.setColor(SK_ColorRED); 96 paint.setColor(SK_ColorRED);
97 paint.setAlpha(a1); 97 paint.setAlpha(a1);
98 paint.setXfermode(std::move(mode)); 98 paint.setBlendMode(mode);
99 99
100 SkScalar offset = SK_Scalar1 / 3; 100 SkScalar offset = SK_Scalar1 / 3;
101 SkRect rect = SkRect::MakeXYWH(W / 4 + offset, 101 SkRect rect = SkRect::MakeXYWH(W / 4 + offset,
102 H / 4 + offset, 102 H / 4 + offset,
103 W / 2, H / 2); 103 W / 2, H / 2);
104 canvas->drawRect(rect, paint); 104 canvas->drawRect(rect, paint);
105 105
106 return H; 106 return H;
107 } 107 }
108 108
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 canvas->save(); 148 canvas->save();
149 canvas->save(); 149 canvas->save();
150 for (size_t i = 0; i < SK_ARRAY_COUNT(gModes); ++i) { 150 for (size_t i = 0; i < SK_ARRAY_COUNT(gModes); ++i) {
151 if (6 == i) { 151 if (6 == i) {
152 canvas->restore(); 152 canvas->restore();
153 canvas->translate(W * 5, 0); 153 canvas->translate(W * 5, 0);
154 canvas->save(); 154 canvas->save();
155 } 155 }
156 canvas->drawRect(bounds, fBGPaint); 156 canvas->drawRect(bounds, fBGPaint);
157 canvas->saveLayer(&bounds, nullptr); 157 canvas->saveLayer(&bounds, nullptr);
158 SkScalar dy = drawCell(canvas, SkXfermode::Make(gModes[i].fM ode), 158 SkScalar dy = drawCell(canvas, gModes[i].fMode,
159 gAlphaValue[alpha & 1], 159 gAlphaValue[alpha & 1],
160 gAlphaValue[alpha & 2]); 160 gAlphaValue[alpha & 2]);
161 canvas->restore(); 161 canvas->restore();
162 162
163 canvas->translate(0, dy * 5 / 4); 163 canvas->translate(0, dy * 5 / 4);
164 } 164 }
165 canvas->restore(); 165 canvas->restore();
166 canvas->restore(); 166 canvas->restore();
167 canvas->translate(W * 5 / 4, 0); 167 canvas->translate(W * 5 / 4, 0);
168 } 168 }
169 } 169 }
170 170
171 private: 171 private:
172 typedef GM INHERITED; 172 typedef GM INHERITED;
173 }; 173 };
174 174
175 ////////////////////////////////////////////////////////////////////////////// 175 //////////////////////////////////////////////////////////////////////////////
176 176
177 static GM* MyFactory(void*) { return new AARectModesGM; } 177 static GM* MyFactory(void*) { return new AARectModesGM; }
178 static GMRegistry reg(MyFactory); 178 static GMRegistry reg(MyFactory);
179 179
180 } 180 }
OLDNEW
« no previous file with comments | « gm/aaclip.cpp ('k') | gm/aaxfermodes.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698