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

Side by Side Diff: gm/bleed.cpp

Issue 1158963002: Add caps overrides to GMs (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Address comments Created 5 years, 6 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 | « dm/DMSrcSink.cpp ('k') | gm/discard.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 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"
11 #include "SkCanvas.h" 11 #include "SkCanvas.h"
12 12
13 #if SK_SUPPORT_GPU 13 #if SK_SUPPORT_GPU
14 #include "GrContext.h" 14 #include "GrContext.h"
15 #include "GrContextOptions.h"
15 #endif 16 #endif
16 17
17 // Create a black&white checked texture with 2 1-pixel rings 18 // Create a black&white checked texture with 2 1-pixel rings
18 // around the outside edge. The inner ring is red and the outer ring is blue. 19 // around the outside edge. The inner ring is red and the outer ring is blue.
19 static void make_ringed_bitmap(SkBitmap* result, int width, int height) { 20 static void make_ringed_bitmap(SkBitmap* result, int width, int height) {
20 SkASSERT(0 == width % 2 && 0 == height % 2); 21 SkASSERT(0 == width % 2 && 0 == height % 2);
21 22
22 static const SkPMColor kRed = SkPreMultiplyColor(SK_ColorRED); 23 static const SkPMColor kRed = SkPreMultiplyColor(SK_ColorRED);
23 static const SkPMColor kBlue = SkPreMultiplyColor(SK_ColorBLUE); 24 static const SkPMColor kBlue = SkPreMultiplyColor(SK_ColorBLUE);
24 static const SkPMColor kBlack = SkPreMultiplyColor(SK_ColorBLACK); 25 static const SkPMColor kBlack = SkPreMultiplyColor(SK_ColorBLACK);
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 canvas->save(); 182 canvas->save();
182 if (m) { 183 if (m) {
183 static const SkScalar kBottom = SkIntToScalar(kRow3Y + kBlockSiz e + kBlockSpacing); 184 static const SkScalar kBottom = SkIntToScalar(kRow3Y + kBlockSiz e + kBlockSpacing);
184 canvas->translate(0, kBottom); 185 canvas->translate(0, kBottom);
185 SkMatrix rotate; 186 SkMatrix rotate;
186 rotate.setRotate(15.f, 0, kBottom + kBlockSpacing); 187 rotate.setRotate(15.f, 0, kBottom + kBlockSpacing);
187 canvas->concat(rotate); 188 canvas->concat(rotate);
188 canvas->scale(0.71f, 1.22f); 189 canvas->scale(0.71f, 1.22f);
189 } 190 }
190 191
191 // First draw a column with no bleeding, tiling, or filtering 192 // First draw a column with no bleeding and no filtering
192 this->drawCase1(canvas, kCol0X, kRow0Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kNone_SkFilterQuality); 193 this->drawCase1(canvas, kCol0X, kRow0Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kNone_SkFilterQuality);
193 this->drawCase2(canvas, kCol0X, kRow1Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kNone_SkFilterQuality); 194 this->drawCase2(canvas, kCol0X, kRow1Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kNone_SkFilterQuality);
194 this->drawCase3(canvas, kCol0X, kRow2Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kNone_SkFilterQuality); 195 this->drawCase3(canvas, kCol0X, kRow2Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kNone_SkFilterQuality);
195 this->drawCase4(canvas, kCol0X, kRow3Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kNone_SkFilterQuality); 196 this->drawCase4(canvas, kCol0X, kRow3Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kNone_SkFilterQuality);
196 197
197 // Then draw a column with no bleeding or tiling but with low filter ing 198 // Then draw a column with no bleeding and low filtering
198 this->drawCase1(canvas, kCol1X, kRow0Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kLow_SkFilterQuality); 199 this->drawCase1(canvas, kCol1X, kRow0Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kLow_SkFilterQuality);
199 this->drawCase2(canvas, kCol1X, kRow1Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kLow_SkFilterQuality); 200 this->drawCase2(canvas, kCol1X, kRow1Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kLow_SkFilterQuality);
200 this->drawCase3(canvas, kCol1X, kRow2Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kLow_SkFilterQuality); 201 this->drawCase3(canvas, kCol1X, kRow2Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kLow_SkFilterQuality);
201 this->drawCase4(canvas, kCol1X, kRow3Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kLow_SkFilterQuality); 202 this->drawCase4(canvas, kCol1X, kRow3Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kLow_SkFilterQuality);
202 203
203 // Then draw a column with no bleeding or tiling but with high filte ring 204 // Then draw a column with no bleeding and high filtering
204 this->drawCase1(canvas, kCol2X, kRow0Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kHigh_SkFilterQuality); 205 this->drawCase1(canvas, kCol2X, kRow0Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kHigh_SkFilterQuality);
205 this->drawCase2(canvas, kCol2X, kRow1Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kHigh_SkFilterQuality); 206 this->drawCase2(canvas, kCol2X, kRow1Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kHigh_SkFilterQuality);
206 this->drawCase3(canvas, kCol2X, kRow2Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kHigh_SkFilterQuality); 207 this->drawCase3(canvas, kCol2X, kRow2Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kHigh_SkFilterQuality);
207 this->drawCase4(canvas, kCol2X, kRow3Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kHigh_SkFilterQuality); 208 this->drawCase4(canvas, kCol2X, kRow3Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kHigh_SkFilterQuality);
208 209
209 #if SK_SUPPORT_GPU 210 // Then draw a column with bleeding and no filtering (bleed should h ave no effect w/out blur)
210 GrContext* ctx = canvas->getGrContext(); 211 this->drawCase1(canvas, kCol3X, kRow0Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kNone_SkFilterQuality);
211 int oldMaxTextureSize = 0; 212 this->drawCase2(canvas, kCol3X, kRow1Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kNone_SkFilterQuality);
212 if (ctx) { 213 this->drawCase3(canvas, kCol3X, kRow2Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kNone_SkFilterQuality);
213 // shrink the max texture size so all our textures can be reason ably sized 214 this->drawCase4(canvas, kCol3X, kRow3Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kNone_SkFilterQuality);
214 oldMaxTextureSize = ctx->getMaxTextureSize();
215 ctx->setMaxTextureSizeOverride(kMaxTextureSize);
216 }
217 #endif
218 215
219 // Then draw a column with no bleeding but with tiling and low filte ring 216 // Then draw a column with bleeding and low filtering
220 this->drawCase1(canvas, kCol3X, kRow0Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kLow_SkFilterQuality); 217 this->drawCase1(canvas, kCol4X, kRow0Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kLow_SkFilterQuality);
221 this->drawCase2(canvas, kCol3X, kRow1Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kLow_SkFilterQuality); 218 this->drawCase2(canvas, kCol4X, kRow1Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kLow_SkFilterQuality);
222 this->drawCase3(canvas, kCol3X, kRow2Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kLow_SkFilterQuality); 219 this->drawCase3(canvas, kCol4X, kRow2Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kLow_SkFilterQuality);
223 this->drawCase4(canvas, kCol3X, kRow3Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kLow_SkFilterQuality); 220 this->drawCase4(canvas, kCol4X, kRow3Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kLow_SkFilterQuality);
224 221
225 // Then draw a column with no bleeding but with tiling and high filt ering 222 // Finally draw a column with bleeding and high filtering
226 this->drawCase1(canvas, kCol4X, kRow0Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kHigh_SkFilterQuality); 223 this->drawCase1(canvas, kCol5X, kRow0Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kHigh_SkFilterQuality);
227 this->drawCase2(canvas, kCol4X, kRow1Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kHigh_SkFilterQuality); 224 this->drawCase2(canvas, kCol5X, kRow1Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kHigh_SkFilterQuality);
228 this->drawCase3(canvas, kCol4X, kRow2Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kHigh_SkFilterQuality); 225 this->drawCase3(canvas, kCol5X, kRow2Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kHigh_SkFilterQuality);
229 this->drawCase4(canvas, kCol4X, kRow3Y, SkCanvas::kNone_DrawBitmapRe ctFlag, kHigh_SkFilterQuality); 226 this->drawCase4(canvas, kCol5X, kRow3Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kHigh_SkFilterQuality);
230 227
231 // Then draw a column with bleeding, tiling, and low filtering
232 this->drawCase1(canvas, kCol5X, kRow0Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kLow_SkFilterQuality);
233 this->drawCase2(canvas, kCol5X, kRow1Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kLow_SkFilterQuality);
234 this->drawCase3(canvas, kCol5X, kRow2Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kLow_SkFilterQuality);
235 this->drawCase4(canvas, kCol5X, kRow3Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kLow_SkFilterQuality);
236
237 // Finally draw a column with bleeding, tiling, and high filtering
238 this->drawCase1(canvas, kCol6X, kRow0Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kHigh_SkFilterQuality);
239 this->drawCase2(canvas, kCol6X, kRow1Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kHigh_SkFilterQuality);
240 this->drawCase3(canvas, kCol6X, kRow2Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kHigh_SkFilterQuality);
241 this->drawCase4(canvas, kCol6X, kRow3Y, SkCanvas::kBleed_DrawBitmapR ectFlag, kHigh_SkFilterQuality);
242
243 #if SK_SUPPORT_GPU
244 if (ctx) {
245 ctx->setMaxTextureSizeOverride(oldMaxTextureSize);
246 }
247 #endif
248 canvas->restore(); 228 canvas->restore();
249 } 229 }
250 } 230 }
251 231
232 #if SK_SUPPORT_GPU
233 void modifyGrContextOptions(GrContextOptions* options) override {
234 options->fMaxTextureSizeOverride = kMaxTextureSize;
235 }
236 #endif
237
252 private: 238 private:
253 static const int kBlockSize = 70; 239 static const int kBlockSize = 70;
254 static const int kBlockSpacing = 5; 240 static const int kBlockSpacing = 5;
255 241
256 static const int kCol0X = kBlockSpacing; 242 static const int kCol0X = kBlockSpacing;
257 static const int kCol1X = 2*kBlockSpacing + kBlockSize; 243 static const int kCol1X = 2*kBlockSpacing + kBlockSize;
258 static const int kCol2X = 3*kBlockSpacing + 2*kBlockSize; 244 static const int kCol2X = 3*kBlockSpacing + 2*kBlockSize;
259 static const int kCol3X = 4*kBlockSpacing + 3*kBlockSize; 245 static const int kCol3X = 4*kBlockSpacing + 3*kBlockSize;
260 static const int kCol4X = 5*kBlockSpacing + 4*kBlockSize; 246 static const int kCol4X = 5*kBlockSpacing + 4*kBlockSize;
261 static const int kCol5X = 6*kBlockSpacing + 5*kBlockSize; 247 static const int kCol5X = 6*kBlockSpacing + 5*kBlockSize;
262 static const int kCol6X = 7*kBlockSpacing + 6*kBlockSize; 248 static const int kWidth = 7*kBlockSpacing + 6*kBlockSize;
263 static const int kWidth = 8*kBlockSpacing + 7*kBlockSize;
264 249
265 static const int kRow0Y = kBlockSpacing; 250 static const int kRow0Y = kBlockSpacing;
266 static const int kRow1Y = 2*kBlockSpacing + kBlockSize; 251 static const int kRow1Y = 2*kBlockSpacing + kBlockSize;
267 static const int kRow2Y = 3*kBlockSpacing + 2*kBlockSize; 252 static const int kRow2Y = 3*kBlockSpacing + 2*kBlockSize;
268 static const int kRow3Y = 4*kBlockSpacing + 3*kBlockSize; 253 static const int kRow3Y = 4*kBlockSpacing + 3*kBlockSize;
269 254
270 static const int kSmallTextureSize = 6; 255 static const int kSmallTextureSize = 6;
271 static const int kMaxTextureSize = 32; 256 static const int kMaxTextureSize = 32;
272 257
273 SkBitmap fBitmapSmall; 258 SkBitmap fBitmapSmall;
274 SkBitmap fBitmapBig; 259 SkBitmap fBitmapBig;
275 260
276 typedef GM INHERITED; 261 typedef GM INHERITED;
277 }; 262 };
278 263
279 DEF_GM( return new BleedGM(); ) 264 DEF_GM( return new BleedGM(); )
OLDNEW
« no previous file with comments | « dm/DMSrcSink.cpp ('k') | gm/discard.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698