aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar senorblanco <senorblanco@chromium.org>2016-04-01 09:24:48 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2016-04-01 09:24:48 -0700
commitf27002947d40ab884e13d39ee2ef0ac4ccadcd6a (patch)
treef67ccf7deeb5556faf53e4ed874931ec67d6a871
parent2f538e91573ae3b263a5b7f61628c8485913ded1 (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.cpp16
-rw-r--r--src/effects/SkTileImageFilter.cpp4
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());