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 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
456 return surface; | 456 return surface; |
457 } | 457 } |
458 | 458 |
459 // Construct an image and return the inner "src" rect. Build the image such that
the interior is | 459 // Construct an image and return the inner "src" rect. Build the image such that
the interior is |
460 // blue, with a margin of blue (2px) but then an outer margin of red. | 460 // blue, with a margin of blue (2px) but then an outer margin of red. |
461 // | 461 // |
462 // Show that kFast_SrcRectConstraint sees even the red margin (due to mipmapping
) when the image | 462 // Show that kFast_SrcRectConstraint sees even the red margin (due to mipmapping
) when the image |
463 // is scaled down far enough. | 463 // is scaled down far enough. |
464 // | 464 // |
465 static sk_sp<SkImage> make_image(SkCanvas* canvas, SkRect* srcR) { | 465 static sk_sp<SkImage> make_image(SkCanvas* canvas, SkRect* srcR) { |
466 const int N = 9 + 2 + 7 + 2 + 9; | 466 // Intentially making the size a power of 2 to avoid the noise from how diff
erent GPUs will |
| 467 // produce different mipmap filtering when we have an odd sized texture. |
| 468 const int N = 10 + 2 + 8 + 2 + 10; |
467 SkImageInfo info = SkImageInfo::MakeN32Premul(N, N); | 469 SkImageInfo info = SkImageInfo::MakeN32Premul(N, N); |
468 auto surface = make_surface(canvas, info); | 470 auto surface = make_surface(canvas, info); |
469 SkCanvas* c = surface->getCanvas(); | 471 SkCanvas* c = surface->getCanvas(); |
470 SkRect r = SkRect::MakeIWH(info.width(), info.height()); | 472 SkRect r = SkRect::MakeIWH(info.width(), info.height()); |
471 SkPaint paint; | 473 SkPaint paint; |
472 | 474 |
473 paint.setColor(SK_ColorRED); | 475 paint.setColor(SK_ColorRED); |
474 c->drawRect(r, paint); | 476 c->drawRect(r, paint); |
475 r.inset(4, 4); | 477 r.inset(10, 10); |
476 paint.setColor(SK_ColorBLUE); | 478 paint.setColor(SK_ColorBLUE); |
477 c->drawRect(r, paint); | 479 c->drawRect(r, paint); |
478 | 480 |
479 *srcR = r.makeInset(2, 2); | 481 *srcR = r.makeInset(2, 2); |
480 return surface->makeImageSnapshot(); | 482 return surface->makeImageSnapshot(); |
481 } | 483 } |
482 | 484 |
483 DEF_SIMPLE_GM(bleed_downscale, canvas, 360, 240) { | 485 DEF_SIMPLE_GM(bleed_downscale, canvas, 360, 240) { |
484 SkRect src; | 486 SkRect src; |
485 sk_sp<SkImage> img = make_image(canvas, &src); | 487 sk_sp<SkImage> img = make_image(canvas, &src); |
(...skipping 16 matching lines...) Expand all Loading... |
502 // now blow up the 1 pixel result | 504 // now blow up the 1 pixel result |
503 canvas->drawImageRect(surf->makeImageSnapshot(), SkRect::MakeWH(100,
100), nullptr); | 505 canvas->drawImageRect(surf->makeImageSnapshot(), SkRect::MakeWH(100,
100), nullptr); |
504 canvas->translate(120, 0); | 506 canvas->translate(120, 0); |
505 } | 507 } |
506 canvas->restore(); | 508 canvas->restore(); |
507 canvas->translate(0, 120); | 509 canvas->translate(0, 120); |
508 } | 510 } |
509 } | 511 } |
510 | 512 |
511 | 513 |
OLD | NEW |