diff options
author | 2016-04-01 09:24:48 -0700 | |
---|---|---|
committer | 2016-04-01 09:24:48 -0700 | |
commit | f27002947d40ab884e13d39ee2ef0ac4ccadcd6a (patch) | |
tree | f67ccf7deeb5556faf53e4ed874931ec67d6a871 | |
parent | 2f538e91573ae3b263a5b7f61628c8485913ded1 (diff) |
Fix padding bug in SkTileImageFilter.
When padding an image out to tile size, use the filter input, not the
source primitive.
NOTE: this will affect the tileimagefilter GM (new test case & size).
R=robertphillips@google.com
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1853803003
Review URL: https://codereview.chromium.org/1853803003
-rw-r--r-- | gm/tileimagefilter.cpp | 16 | ||||
-rw-r--r-- | src/effects/SkTileImageFilter.cpp | 4 |
2 files changed, 17 insertions, 3 deletions
diff --git a/gm/tileimagefilter.cpp b/gm/tileimagefilter.cpp index f75e7f9722..e067d3ee04 100644 --- a/gm/tileimagefilter.cpp +++ b/gm/tileimagefilter.cpp @@ -14,7 +14,7 @@ #include "gm.h" #define WIDTH 400 -#define HEIGHT 100 +#define HEIGHT 200 #define MARGIN 12 namespace skiagm { @@ -107,6 +107,20 @@ protected: canvas->drawRect(srcRect, red); canvas->drawRect(dstRect, blue); canvas->restore(); + + canvas->translate(0, SkIntToScalar(100)); + + srcRect = SkRect::MakeXYWH(0, 0, 50, 50); + dstRect = SkRect::MakeXYWH(0, 0, 100, 100); + SkImageFilter::CropRect cropRect(SkRect::MakeXYWH(5, 5, 40, 40)); + sk_sp<SkColorFilter> greenCF = SkColorFilter::MakeModeFilter(SK_ColorGREEN, + SkXfermode::kSrc_Mode); + SkAutoTUnref<SkImageFilter> green(SkColorFilterImageFilter::Create(greenCF.get(), nullptr, + &cropRect)); + tile.reset(SkTileImageFilter::Create(srcRect, dstRect, green)); + paint.setColor(SK_ColorRED); + paint.setImageFilter(tile); + canvas->drawRect(dstRect, paint); } private: sk_sp<SkImage> fBitmap, fCheckerboard; diff --git a/src/effects/SkTileImageFilter.cpp b/src/effects/SkTileImageFilter.cpp index ab127f6fdf..8f556ff4d0 100644 --- a/src/effects/SkTileImageFilter.cpp +++ b/src/effects/SkTileImageFilter.cpp @@ -83,8 +83,8 @@ bool SkTileImageFilter::onFilterImageDeprecated(Proxy* proxy, const SkBitmap& sr return false; } SkCanvas canvas(device); - canvas.drawBitmap(src, SkIntToScalar(srcOffset.x()), - SkIntToScalar(srcOffset.y())); + canvas.drawBitmap(source, SkIntToScalar(srcOffset.x()), + SkIntToScalar(srcOffset.y())); subset = device->accessBitmap(false); } SkASSERT(subset.width() == srcIRect.width()); |