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

Side by Side Diff: gm/megalooper.cpp

Issue 2355483002: abstract name of clipping ops, to transtion to a more restricted set (Closed)
Patch Set: remove setClipRegion entirely Created 4 years, 3 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
OLDNEW
1 /* 1 /*
2 * Copyright 2013 Google Inc. 2 * Copyright 2013 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 "SkBlurMask.h" 9 #include "SkBlurMask.h"
10 #include "SkBlurMaskFilter.h" 10 #include "SkBlurMaskFilter.h"
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
84 SkRect innerClip = { -kHalfSquareSize, -kHalfSquareSize, kHalfSquareSize , kHalfSquareSize }; 84 SkRect innerClip = { -kHalfSquareSize, -kHalfSquareSize, kHalfSquareSize , kHalfSquareSize };
85 innerClip.offset(x, y); 85 innerClip.offset(x, y);
86 86
87 SkRect outerClip = { 87 SkRect outerClip = {
88 -kHalfOuterClipSize-kHalfSquareSize, -kHalfOuterClipSize-kHalfSquare Size, 88 -kHalfOuterClipSize-kHalfSquareSize, -kHalfOuterClipSize-kHalfSquare Size,
89 kHalfOuterClipSize+kHalfSquareSize, kHalfOuterClipSize+kHalfSquare Size 89 kHalfOuterClipSize+kHalfSquareSize, kHalfOuterClipSize+kHalfSquare Size
90 }; 90 };
91 outerClip.offset(x, y); 91 outerClip.offset(x, y);
92 92
93 canvas->save(); 93 canvas->save();
94 canvas->clipRect(outerClip, SkRegion::kIntersect_Op); 94 canvas->clipRect(outerClip, SkCanvas::kIntersect_Op);
95 canvas->clipRect(innerClip, SkRegion::kDifference_Op); 95 canvas->clipRect(innerClip, SkCanvas::kDifference_Op);
96 96
97 SkPaint paint; 97 SkPaint paint;
98 paint.setAntiAlias(true); 98 paint.setAntiAlias(true);
99 paint.setMaskFilter(MakeBlur()); 99 paint.setMaskFilter(MakeBlur());
100 100
101 for (int i = 0; i < 4; ++i) { 101 for (int i = 0; i < 4; ++i) {
102 paint.setColor(gColors[i]); 102 paint.setColor(gColors[i]);
103 103
104 SkRect rect = { -kHalfSquareSize, -kHalfSquareSize, kHalfSquareSize, kHalfSquareSize }; 104 SkRect rect = { -kHalfSquareSize, -kHalfSquareSize, kHalfSquareSize, kHalfSquareSize };
105 rect.offset(gBlurOffsets[i]); 105 rect.offset(gBlurOffsets[i]);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 kHalfOuterClipSize, kHalfOuterClipSize 139 kHalfOuterClipSize, kHalfOuterClipSize
140 }; 140 };
141 outerClip.offset(x, y); 141 outerClip.offset(x, y);
142 // center it on the blurred rect 142 // center it on the blurred rect
143 outerClip.offset(gBlurOffsets[i]); 143 outerClip.offset(gBlurOffsets[i]);
144 144
145 SkRect rect = { -kHalfSquareSize, -kHalfSquareSize, kHalfSquareSize, kHalfSquareSize }; 145 SkRect rect = { -kHalfSquareSize, -kHalfSquareSize, kHalfSquareSize, kHalfSquareSize };
146 rect.offset(x, y); 146 rect.offset(x, y);
147 147
148 canvas->save(); 148 canvas->save();
149 canvas->clipRect(outerClip, SkRegion::kIntersect_Op); 149 canvas->clipRect(outerClip, SkCanvas::kIntersect_Op);
150 canvas->clipRect(rect, SkRegion::kDifference_Op); 150 canvas->clipRect(rect, SkCanvas::kDifference_Op);
151 151
152 // move the rect to where we want the blur to appear 152 // move the rect to where we want the blur to appear
153 rect.offset(gBlurOffsets[i]); 153 rect.offset(gBlurOffsets[i]);
154 // then move it outside the clip (the blur stage of the draw 154 // then move it outside the clip (the blur stage of the draw
155 // looper will undo this translation) 155 // looper will undo this translation)
156 rect.offset(SkIntToScalar(kOffsetToOutsideClip), 0); 156 rect.offset(SkIntToScalar(kOffsetToOutsideClip), 0);
157 157
158 canvas->drawRect(rect, loopPaint); 158 canvas->drawRect(rect, loopPaint);
159 canvas->restore(); 159 canvas->restore();
160 } 160 }
(...skipping 27 matching lines...) Expand all
188 -kHalfOuterClipSize-kHalfSquareSize, -kHalfOuterClipSize-kHalfSquare Size, 188 -kHalfOuterClipSize-kHalfSquareSize, -kHalfOuterClipSize-kHalfSquare Size,
189 kHalfOuterClipSize+kHalfSquareSize, kHalfOuterClipSize+kHalfSquare Size 189 kHalfOuterClipSize+kHalfSquareSize, kHalfOuterClipSize+kHalfSquare Size
190 }; 190 };
191 outerClip.offset(x, y); 191 outerClip.offset(x, y);
192 192
193 SkPaint paint; 193 SkPaint paint;
194 paint.setAntiAlias(true); 194 paint.setAntiAlias(true);
195 paint.setLooper(create4Looper(-kOffsetToOutsideClip-kHalfSquareSize, 0)) ; 195 paint.setLooper(create4Looper(-kOffsetToOutsideClip-kHalfSquareSize, 0)) ;
196 196
197 canvas->save(); 197 canvas->save();
198 canvas->clipRect(outerClip, SkRegion::kIntersect_Op); 198 canvas->clipRect(outerClip, SkCanvas::kIntersect_Op);
199 canvas->clipRect(rect, SkRegion::kDifference_Op); 199 canvas->clipRect(rect, SkCanvas::kDifference_Op);
200 200
201 rect.offset(SkIntToScalar(kOffsetToOutsideClip+kHalfSquareSize), 0); 201 rect.offset(SkIntToScalar(kOffsetToOutsideClip+kHalfSquareSize), 0);
202 canvas->drawRect(rect, paint); 202 canvas->drawRect(rect, paint);
203 canvas->restore(); 203 canvas->restore();
204 } 204 }
205 205
206 // Create a 4-tier draw looper 206 // Create a 4-tier draw looper
207 sk_sp<SkDrawLooper> create4Looper(SkScalar xOff, SkScalar yOff) { 207 sk_sp<SkDrawLooper> create4Looper(SkScalar xOff, SkScalar yOff) {
208 SkLayerDrawLooper::Builder looperBuilder; 208 SkLayerDrawLooper::Builder looperBuilder;
209 SkLayerDrawLooper::LayerInfo info; 209 SkLayerDrawLooper::LayerInfo info;
(...skipping 28 matching lines...) Expand all
238 { -kHalfSquareSize, -kHalfSquareSize } 238 { -kHalfSquareSize, -kHalfSquareSize }
239 }; 239 };
240 240
241 const SkColor MegaLooperGM::gColors[4] = { 241 const SkColor MegaLooperGM::gColors[4] = {
242 SK_ColorGREEN, SK_ColorYELLOW, SK_ColorBLUE, SK_ColorRED 242 SK_ColorGREEN, SK_ColorYELLOW, SK_ColorBLUE, SK_ColorRED
243 }; 243 };
244 244
245 DEF_GM( return new MegaLooperGM(MegaLooperGM::k0x0_Type); ) 245 DEF_GM( return new MegaLooperGM(MegaLooperGM::k0x0_Type); )
246 DEF_GM( return new MegaLooperGM(MegaLooperGM::k4x1_Type); ) 246 DEF_GM( return new MegaLooperGM(MegaLooperGM::k4x1_Type); )
247 DEF_GM( return new MegaLooperGM(MegaLooperGM::k1x4_Type); ) 247 DEF_GM( return new MegaLooperGM(MegaLooperGM::k1x4_Type); )
OLDNEW
« no previous file with comments | « gm/imagefilters.cpp ('k') | gm/path_stroke_with_zero_length.cpp » ('j') | src/core/SkCanvas.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698