OLD | NEW |
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 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
52 desc.fHeight = bitmap.height() + 23; | 52 desc.fHeight = bitmap.height() + 23; |
53 SkAutoTUnref<GrTexture> texture(context->textureProvider()->createTexture(de
sc, true)); | 53 SkAutoTUnref<GrTexture> texture(context->textureProvider()->createTexture(de
sc, true)); |
54 if (!texture) { | 54 if (!texture) { |
55 return; | 55 return; |
56 } | 56 } |
57 // Init the whole texture to 0 in the alpha case or solid green in the 32bit
rgba case. | 57 // Init the whole texture to 0 in the alpha case or solid green in the 32bit
rgba case. |
58 SkAutoLockPixels al(bitmap); | 58 SkAutoLockPixels al(bitmap); |
59 if (kAlpha_8_GrPixelConfig == texture->config()) { | 59 if (kAlpha_8_GrPixelConfig == texture->config()) { |
60 SkAutoMalloc pixels(texture->width() * texture->height()); | 60 SkAutoMalloc pixels(texture->width() * texture->height()); |
61 memset(pixels.get(), 0, texture->width() * texture->height()); | 61 memset(pixels.get(), 0, texture->width() * texture->height()); |
62 texture->writePixels(0, 0, texture->width(), texture->height(), desc.fCo
nfig, pixels.get(), 0); | 62 texture->writePixels(0, 0, texture->width(), texture->height(), desc.fCo
nfig, pixels.get(), |
| 63 0); |
63 } else { | 64 } else { |
64 SkAutoMalloc pixels(texture->width() * texture->height() * sizeof(uint32
_t)); | 65 SkAutoMalloc pixels(texture->width() * texture->height() * sizeof(uint32
_t)); |
65 SkOpts::memset32((uint32_t*)pixels.get(), 0xFF00FF00, texture->width()*t
exture->height()); | 66 SkOpts::memset32((uint32_t*)pixels.get(), 0xFF00FF00, texture->width()*t
exture->height()); |
66 texture->writePixels(0, 0, texture->width(), texture->height(), desc.fCo
nfig, pixels.get(), 0); | 67 texture->writePixels(0, 0, texture->width(), texture->height(), desc.fCo
nfig, pixels.get(), |
| 68 0); |
67 } | 69 } |
68 | 70 |
69 // Upload the bitmap contents to the upper left. | 71 // Upload the bitmap contents to the upper left. |
70 texture->writePixels(0, 0, bitmap.width(), bitmap.height(), desc.fConfig, bi
tmap.getPixels(), | 72 texture->writePixels(0, 0, bitmap.width(), bitmap.height(), desc.fConfig, bi
tmap.getPixels(), |
71 bitmap.rowBytes()); | 73 bitmap.rowBytes()); |
72 | 74 |
73 // Wrap the texture in a bitmap and draw it. | 75 // Wrap the texture in a bitmap and draw it. |
74 SkBitmap textureBmp; | 76 SkBitmap textureBmp; |
75 GrWrapTextureInBitmap(texture, bitmap.width(), bitmap.height(), true, &textu
reBmp); | 77 GrWrapTextureInBitmap(texture, bitmap.width(), bitmap.height(), true, &textu
reBmp); |
76 canvas->drawBitmapRect(textureBmp, src, dst, paint, constraint); | 78 canvas->drawBitmapRect(textureBmp, src, dst, paint, constraint); |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 public: | 255 public: |
254 BleedGM(BleedTest bt) : fBT(bt) {} | 256 BleedGM(BleedTest bt) : fBT(bt) {} |
255 | 257 |
256 protected: | 258 protected: |
257 | 259 |
258 SkString onShortName() override { | 260 SkString onShortName() override { |
259 return SkString(gBleedRec[fBT].fName); | 261 return SkString(gBleedRec[fBT].fName); |
260 } | 262 } |
261 | 263 |
262 SkISize onISize() override { | 264 SkISize onISize() override { |
263 return SkISize::Make(1050, 780); | 265 return SkISize::Make(1200, 1080); |
264 } | 266 } |
265 | 267 |
266 void onOnceBeforeDraw() override { | 268 void onOnceBeforeDraw() override { |
267 gBleedRec[fBT].fBmpMaker(&fBitmapSmall, kSmallTextureSize, kSmallTexture
Size); | 269 gBleedRec[fBT].fBmpMaker(&fBitmapSmall, kSmallTextureSize, kSmallTexture
Size); |
268 fImageSmall.reset(SkImage::NewFromBitmap(fBitmapSmall)); | 270 fImageSmall.reset(SkImage::NewFromBitmap(fBitmapSmall)); |
269 | 271 |
270 // To exercise the GPU's tiling path we need a texture | 272 // To exercise the GPU's tiling path we need a texture |
271 // too big for the GPU to handle in one go | 273 // too big for the GPU to handle in one go |
272 gBleedRec[fBT].fBmpMaker(&fBitmapBig, 2*kMaxTileSize, 2*kMaxTileSize); | 274 gBleedRec[fBT].fBmpMaker(&fBitmapBig, 2*kMaxTileSize, 2*kMaxTileSize); |
273 fImageBig.reset(SkImage::NewFromBitmap(fBitmapBig)); | 275 fImageBig.reset(SkImage::NewFromBitmap(fBitmapBig)); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 | 324 |
323 SkPaint paint; | 325 SkPaint paint; |
324 paint.setFilterQuality(filter); | 326 paint.setFilterQuality(filter); |
325 paint.setShader(fShader); | 327 paint.setShader(fShader); |
326 paint.setColor(SK_ColorBLUE); | 328 paint.setColor(SK_ColorBLUE); |
327 paint.setAntiAlias(aa); | 329 paint.setAntiAlias(aa); |
328 | 330 |
329 gBleedRec[fBT].fDraw(canvas, fBitmapBig, fImageBig, src, dst, &paint, co
nstraint); | 331 gBleedRec[fBT].fDraw(canvas, fBitmapBig, fImageBig, src, dst, &paint, co
nstraint); |
330 } | 332 } |
331 | 333 |
332 // Draw the center of the small bitmap with a mask filter | 334 // Draw the center of the small bitmap with a normal blur |
333 void drawCase4(SkCanvas* canvas, int transX, int transY, bool aa, | 335 void drawCase4(SkCanvas* canvas, int transX, int transY, bool aa, |
334 SkCanvas::SrcRectConstraint constraint, SkFilterQuality filte
r) { | 336 SkCanvas::SrcRectConstraint constraint, SkFilterQuality filte
r) { |
335 SkRect src = SkRect::MakeXYWH(2, 2, | 337 SkRect src = SkRect::MakeXYWH(2, 2, |
336 SkIntToScalar(kSmallTextureSize-4), | 338 SkIntToScalar(kSmallTextureSize-4), |
337 SkIntToScalar(kSmallTextureSize-4)); | 339 SkIntToScalar(kSmallTextureSize-4)); |
338 SkRect dst = SkRect::MakeXYWH(SkIntToScalar(transX), SkIntToScalar(trans
Y), | 340 SkRect dst = SkRect::MakeXYWH(SkIntToScalar(transX), SkIntToScalar(trans
Y), |
339 SkIntToScalar(kBlockSize), SkIntToScalar(k
BlockSize)); | 341 SkIntToScalar(kBlockSize), SkIntToScalar(k
BlockSize)); |
340 | 342 |
341 SkPaint paint; | 343 SkPaint paint; |
342 paint.setFilterQuality(filter); | 344 paint.setFilterQuality(filter); |
343 SkMaskFilter* mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, | 345 SkMaskFilter* mf = SkBlurMaskFilter::Create(kNormal_SkBlurStyle, |
344 SkBlurMask::ConvertRadiusToSigma(3)); | 346 SkBlurMask::ConvertRadiusToSigma(3)); |
345 paint.setMaskFilter(mf)->unref(); | 347 paint.setMaskFilter(mf)->unref(); |
346 paint.setShader(fShader); | 348 paint.setShader(fShader); |
347 paint.setColor(SK_ColorBLUE); | 349 paint.setColor(SK_ColorBLUE); |
348 paint.setAntiAlias(aa); | 350 paint.setAntiAlias(aa); |
349 | 351 |
350 gBleedRec[fBT].fDraw(canvas, fBitmapSmall, fImageSmall, src, dst, &paint
, constraint); | 352 gBleedRec[fBT].fDraw(canvas, fBitmapSmall, fImageSmall, src, dst, &paint
, constraint); |
351 } | 353 } |
352 | 354 |
| 355 // Draw the center of the small bitmap with a outer blur |
| 356 void drawCase5(SkCanvas* canvas, int transX, int transY, bool aa, |
| 357 SkCanvas::SrcRectConstraint constraint, SkFilterQuality filte
r) { |
| 358 SkRect src = SkRect::MakeXYWH(2, 2, |
| 359 SkIntToScalar(kSmallTextureSize - 4), |
| 360 SkIntToScalar(kSmallTextureSize - 4)); |
| 361 SkRect dst = SkRect::MakeXYWH(SkIntToScalar(transX), SkIntToScalar(trans
Y), |
| 362 SkIntToScalar(kBlockSize), SkIntToScalar(k
BlockSize)); |
| 363 |
| 364 SkPaint paint; |
| 365 paint.setFilterQuality(filter); |
| 366 SkMaskFilter* mf = SkBlurMaskFilter::Create(kOuter_SkBlurStyle, |
| 367 SkBlurMask::ConvertRadiusToS
igma(7)); |
| 368 paint.setMaskFilter(mf)->unref(); |
| 369 paint.setShader(fShader); |
| 370 paint.setColor(SK_ColorBLUE); |
| 371 paint.setAntiAlias(aa); |
| 372 |
| 373 gBleedRec[fBT].fDraw(canvas, fBitmapSmall, fImageSmall, src, dst, &paint
, constraint); |
| 374 } |
| 375 |
353 void onDraw(SkCanvas* canvas) override { | 376 void onDraw(SkCanvas* canvas) override { |
354 canvas->clear(SK_ColorGRAY); | 377 canvas->clear(SK_ColorGRAY); |
355 SkTDArray<SkMatrix> matrices; | 378 SkTDArray<SkMatrix> matrices; |
356 // Draw with identity | 379 // Draw with identity |
357 *matrices.append() = SkMatrix::I(); | 380 *matrices.append() = SkMatrix::I(); |
358 | 381 |
359 // Draw with rotation and scale down in x, up in y. | 382 // Draw with rotation and scale down in x, up in y. |
360 SkMatrix m; | 383 SkMatrix m; |
361 static const SkScalar kBottom = SkIntToScalar(kRow3Y + kBlockSize + kBlo
ckSpacing); | 384 static const SkScalar kBottom = SkIntToScalar(kRow4Y + kBlockSize + kBlo
ckSpacing); |
362 m.setTranslate(0, kBottom); | 385 m.setTranslate(0, kBottom); |
363 m.preRotate(15.f, 0, kBottom + kBlockSpacing); | 386 m.preRotate(15.f, 0, kBottom + kBlockSpacing); |
364 m.preScale(0.71f, 1.22f); | 387 m.preScale(0.71f, 1.22f); |
365 *matrices.append() = m; | 388 *matrices.append() = m; |
366 | 389 |
367 // Align the next set with the middle of the previous in y, translated t
o the right in x. | 390 // Align the next set with the middle of the previous in y, translated t
o the right in x. |
368 SkPoint corners[] = {{0, 0}, { 0, kBottom }, { kWidth, kBottom }, {kWidt
h, 0} }; | 391 SkPoint corners[] = {{0, 0}, { 0, kBottom }, { kWidth, kBottom }, {kWidt
h, 0} }; |
369 matrices[matrices.count()-1].mapPoints(corners, 4); | 392 matrices[matrices.count()-1].mapPoints(corners, 4); |
370 SkScalar y = (corners[0].fY + corners[1].fY + corners[2].fY + corners[3]
.fY) / 4; | 393 SkScalar y = (corners[0].fY + corners[1].fY + corners[2].fY + corners[3]
.fY) / 4; |
371 SkScalar x = SkTMax(SkTMax(corners[0].fX, corners[1].fX), | 394 SkScalar x = SkTMax(SkTMax(corners[0].fX, corners[1].fX), |
372 SkTMax(corners[2].fX, corners[3].fX)); | 395 SkTMax(corners[2].fX, corners[3].fX)); |
373 m.setTranslate(x, y); | 396 m.setTranslate(x, y); |
374 m.preScale(0.2f, 0.2f); | 397 m.preScale(0.2f, 0.2f); |
375 *matrices.append() = m; | 398 *matrices.append() = m; |
376 | 399 |
377 SkScalar maxX = 0; | 400 SkScalar maxX = 0; |
378 for (int antiAlias = 0; antiAlias < 2; ++antiAlias) { | 401 for (int antiAlias = 0; antiAlias < 2; ++antiAlias) { |
379 canvas->save(); | 402 canvas->save(); |
380 canvas->translate(maxX, 0); | 403 canvas->translate(maxX, 0); |
381 for (int m = 0; m < matrices.count(); ++m) { | 404 for (int m = 0; m < matrices.count(); ++m) { |
382 canvas->save(); | 405 canvas->save(); |
383 canvas->concat(matrices[m]); | 406 canvas->concat(matrices[m]); |
384 bool aa = SkToBool(antiAlias); | 407 bool aa = SkToBool(antiAlias); |
385 | 408 |
386 // First draw a column with no bleeding and no filtering | 409 // First draw a column with no bleeding and no filtering |
387 this->drawCase1(canvas, kCol0X, kRow0Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kNone_SkFilterQuality); | 410 this->drawCase1(canvas, kCol0X, kRow0Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kNone_SkFilterQuality); |
388 this->drawCase2(canvas, kCol0X, kRow1Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kNone_SkFilterQuality); | 411 this->drawCase2(canvas, kCol0X, kRow1Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kNone_SkFilterQuality); |
389 this->drawCase3(canvas, kCol0X, kRow2Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kNone_SkFilterQuality); | 412 this->drawCase3(canvas, kCol0X, kRow2Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kNone_SkFilterQuality); |
390 this->drawCase4(canvas, kCol0X, kRow3Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kNone_SkFilterQuality); | 413 this->drawCase4(canvas, kCol0X, kRow3Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kNone_SkFilterQuality); |
| 414 this->drawCase5(canvas, kCol0X, kRow4Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kNone_SkFilterQuality); |
391 | 415 |
392 // Then draw a column with no bleeding and low filtering | 416 // Then draw a column with no bleeding and low filtering |
393 this->drawCase1(canvas, kCol1X, kRow0Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kLow_SkFilterQuality); | 417 this->drawCase1(canvas, kCol1X, kRow0Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kLow_SkFilterQuality); |
394 this->drawCase2(canvas, kCol1X, kRow1Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kLow_SkFilterQuality); | 418 this->drawCase2(canvas, kCol1X, kRow1Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kLow_SkFilterQuality); |
395 this->drawCase3(canvas, kCol1X, kRow2Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kLow_SkFilterQuality); | 419 this->drawCase3(canvas, kCol1X, kRow2Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kLow_SkFilterQuality); |
396 this->drawCase4(canvas, kCol1X, kRow3Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kLow_SkFilterQuality); | 420 this->drawCase4(canvas, kCol1X, kRow3Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kLow_SkFilterQuality); |
| 421 this->drawCase5(canvas, kCol1X, kRow4Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kLow_SkFilterQuality); |
397 | 422 |
398 // Then draw a column with no bleeding and high filtering | 423 // Then draw a column with no bleeding and high filtering |
399 this->drawCase1(canvas, kCol2X, kRow0Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kHigh_SkFilterQuality); | 424 this->drawCase1(canvas, kCol2X, kRow0Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kHigh_SkFilterQuality); |
400 this->drawCase2(canvas, kCol2X, kRow1Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kHigh_SkFilterQuality); | 425 this->drawCase2(canvas, kCol2X, kRow1Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kHigh_SkFilterQuality); |
401 this->drawCase3(canvas, kCol2X, kRow2Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kHigh_SkFilterQuality); | 426 this->drawCase3(canvas, kCol2X, kRow2Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kHigh_SkFilterQuality); |
402 this->drawCase4(canvas, kCol2X, kRow3Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kHigh_SkFilterQuality); | 427 this->drawCase4(canvas, kCol2X, kRow3Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kHigh_SkFilterQuality); |
| 428 this->drawCase5(canvas, kCol2X, kRow4Y, aa, SkCanvas::kStrict_Sr
cRectConstraint, kHigh_SkFilterQuality); |
403 | 429 |
404 // Then draw a column with bleeding and no filtering (bleed shou
ld have no effect w/out blur) | 430 // Then draw a column with bleeding and no filtering (bleed shou
ld have no effect w/out blur) |
405 this->drawCase1(canvas, kCol3X, kRow0Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kNone_SkFilterQuality); | 431 this->drawCase1(canvas, kCol3X, kRow0Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kNone_SkFilterQuality); |
406 this->drawCase2(canvas, kCol3X, kRow1Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kNone_SkFilterQuality); | 432 this->drawCase2(canvas, kCol3X, kRow1Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kNone_SkFilterQuality); |
407 this->drawCase3(canvas, kCol3X, kRow2Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kNone_SkFilterQuality); | 433 this->drawCase3(canvas, kCol3X, kRow2Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kNone_SkFilterQuality); |
408 this->drawCase4(canvas, kCol3X, kRow3Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kNone_SkFilterQuality); | 434 this->drawCase4(canvas, kCol3X, kRow3Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kNone_SkFilterQuality); |
| 435 this->drawCase5(canvas, kCol3X, kRow4Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kNone_SkFilterQuality); |
409 | 436 |
410 // Then draw a column with bleeding and low filtering | 437 // Then draw a column with bleeding and low filtering |
411 this->drawCase1(canvas, kCol4X, kRow0Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kLow_SkFilterQuality); | 438 this->drawCase1(canvas, kCol4X, kRow0Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kLow_SkFilterQuality); |
412 this->drawCase2(canvas, kCol4X, kRow1Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kLow_SkFilterQuality); | 439 this->drawCase2(canvas, kCol4X, kRow1Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kLow_SkFilterQuality); |
413 this->drawCase3(canvas, kCol4X, kRow2Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kLow_SkFilterQuality); | 440 this->drawCase3(canvas, kCol4X, kRow2Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kLow_SkFilterQuality); |
414 this->drawCase4(canvas, kCol4X, kRow3Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kLow_SkFilterQuality); | 441 this->drawCase4(canvas, kCol4X, kRow3Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kLow_SkFilterQuality); |
| 442 this->drawCase5(canvas, kCol4X, kRow4Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kLow_SkFilterQuality); |
415 | 443 |
416 // Finally draw a column with bleeding and high filtering | 444 // Finally draw a column with bleeding and high filtering |
417 this->drawCase1(canvas, kCol5X, kRow0Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kHigh_SkFilterQuality); | 445 this->drawCase1(canvas, kCol5X, kRow0Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kHigh_SkFilterQuality); |
418 this->drawCase2(canvas, kCol5X, kRow1Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kHigh_SkFilterQuality); | 446 this->drawCase2(canvas, kCol5X, kRow1Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kHigh_SkFilterQuality); |
419 this->drawCase3(canvas, kCol5X, kRow2Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kHigh_SkFilterQuality); | 447 this->drawCase3(canvas, kCol5X, kRow2Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kHigh_SkFilterQuality); |
420 this->drawCase4(canvas, kCol5X, kRow3Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kHigh_SkFilterQuality); | 448 this->drawCase4(canvas, kCol5X, kRow3Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kHigh_SkFilterQuality); |
| 449 this->drawCase5(canvas, kCol5X, kRow4Y, aa, SkCanvas::kFast_SrcR
ectConstraint, kHigh_SkFilterQuality); |
421 | 450 |
422 SkPoint corners[] = { { 0, 0 },{ 0, kBottom },{ kWidth, kBottom
},{ kWidth, 0 } }; | 451 SkPoint corners[] = { { 0, 0 },{ 0, kBottom },{ kWidth, kBottom
},{ kWidth, 0 } }; |
423 matrices[m].mapPoints(corners, 4); | 452 matrices[m].mapPoints(corners, 4); |
424 SkScalar x = kBlockSize + SkTMax(SkTMax(corners[0].fX, corners[1
].fX), | 453 SkScalar x = kBlockSize + SkTMax(SkTMax(corners[0].fX, corners[1
].fX), |
425 SkTMax(corners[2].fX, corners[3
].fX)); | 454 SkTMax(corners[2].fX, corners[3
].fX)); |
426 maxX = SkTMax(maxX, x); | 455 maxX = SkTMax(maxX, x); |
427 canvas->restore(); | 456 canvas->restore(); |
428 } | 457 } |
429 canvas->restore(); | 458 canvas->restore(); |
430 } | 459 } |
431 } | 460 } |
432 | 461 |
433 #if SK_SUPPORT_GPU | 462 #if SK_SUPPORT_GPU |
434 void modifyGrContextOptions(GrContextOptions* options) override { | 463 void modifyGrContextOptions(GrContextOptions* options) override { |
435 options->fMaxTileSizeOverride = kMaxTileSize; | 464 options->fMaxTileSizeOverride = kMaxTileSize; |
436 } | 465 } |
437 #endif | 466 #endif |
438 | 467 |
439 private: | 468 private: |
440 static const int kBlockSize = 70; | 469 static const int kBlockSize = 70; |
441 static const int kBlockSpacing = 5; | 470 static const int kBlockSpacing = 12; |
442 | 471 |
443 static const int kCol0X = kBlockSpacing; | 472 static const int kCol0X = kBlockSpacing; |
444 static const int kCol1X = 2*kBlockSpacing + kBlockSize; | 473 static const int kCol1X = 2*kBlockSpacing + kBlockSize; |
445 static const int kCol2X = 3*kBlockSpacing + 2*kBlockSize; | 474 static const int kCol2X = 3*kBlockSpacing + 2*kBlockSize; |
446 static const int kCol3X = 4*kBlockSpacing + 3*kBlockSize; | 475 static const int kCol3X = 4*kBlockSpacing + 3*kBlockSize; |
447 static const int kCol4X = 5*kBlockSpacing + 4*kBlockSize; | 476 static const int kCol4X = 5*kBlockSpacing + 4*kBlockSize; |
448 static const int kCol5X = 6*kBlockSpacing + 5*kBlockSize; | 477 static const int kCol5X = 6*kBlockSpacing + 5*kBlockSize; |
449 static const int kWidth = 7*kBlockSpacing + 6*kBlockSize; | 478 static const int kWidth = 7*kBlockSpacing + 6*kBlockSize; |
450 | 479 |
451 static const int kRow0Y = kBlockSpacing; | 480 static const int kRow0Y = kBlockSpacing; |
452 static const int kRow1Y = 2*kBlockSpacing + kBlockSize; | 481 static const int kRow1Y = 2*kBlockSpacing + kBlockSize; |
453 static const int kRow2Y = 3*kBlockSpacing + 2*kBlockSize; | 482 static const int kRow2Y = 3*kBlockSpacing + 2*kBlockSize; |
454 static const int kRow3Y = 4*kBlockSpacing + 3*kBlockSize; | 483 static const int kRow3Y = 4*kBlockSpacing + 3*kBlockSize; |
| 484 static const int kRow4Y = 5*kBlockSpacing + 4*kBlockSize; |
455 | 485 |
456 static const int kSmallTextureSize = 6; | 486 static const int kSmallTextureSize = 6; |
457 static const int kMaxTileSize = 32; | 487 static const int kMaxTileSize = 32; |
458 | 488 |
459 SkBitmap fBitmapSmall; | 489 SkBitmap fBitmapSmall; |
460 SkBitmap fBitmapBig; | 490 SkBitmap fBitmapBig; |
461 SkAutoTUnref<SkImage> fImageSmall; | 491 SkAutoTUnref<SkImage> fImageSmall; |
462 SkAutoTUnref<SkImage> fImageBig; | 492 SkAutoTUnref<SkImage> fImageBig; |
463 | 493 |
464 SkAutoTUnref<SkShader> fShader; | 494 SkAutoTUnref<SkShader> fShader; |
465 | 495 |
466 const BleedTest fBT; | 496 const BleedTest fBT; |
467 | 497 |
468 typedef GM INHERITED; | 498 typedef GM INHERITED; |
469 }; | 499 }; |
470 | 500 |
471 | 501 |
472 DEF_GM( return new BleedGM(kUseBitmap_BleedTest); ) | 502 DEF_GM( return new BleedGM(kUseBitmap_BleedTest); ) |
473 DEF_GM( return new BleedGM(kUseTextureBitmap_BleedTest); ) | 503 DEF_GM( return new BleedGM(kUseTextureBitmap_BleedTest); ) |
474 DEF_GM( return new BleedGM(kUseImage_BleedTest); ) | 504 DEF_GM( return new BleedGM(kUseImage_BleedTest); ) |
475 DEF_GM( return new BleedGM(kUseAlphaBitmap_BleedTest); ) | 505 DEF_GM( return new BleedGM(kUseAlphaBitmap_BleedTest); ) |
476 DEF_GM( return new BleedGM(kUseAlphaTextureBitmap_BleedTest); ) | 506 DEF_GM( return new BleedGM(kUseAlphaTextureBitmap_BleedTest); ) |
477 DEF_GM( return new BleedGM(kUseAlphaImage_BleedTest); ) | 507 DEF_GM( return new BleedGM(kUseAlphaImage_BleedTest); ) |
478 DEF_GM( return new BleedGM(kUseAlphaBitmapShader_BleedTest); ) | 508 DEF_GM( return new BleedGM(kUseAlphaBitmapShader_BleedTest); ) |
479 DEF_GM( return new BleedGM(kUseAlphaTextureBitmapShader_BleedTest); ) | 509 DEF_GM( return new BleedGM(kUseAlphaTextureBitmapShader_BleedTest); ) |
480 DEF_GM( return new BleedGM(kUseAlphaImageShader_BleedTest); ) | 510 DEF_GM( return new BleedGM(kUseAlphaImageShader_BleedTest); ) |
OLD | NEW |