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
This commit is contained in:
senorblanco 2016-04-01 09:24:48 -07:00 committed by Commit bot
parent 2f538e9157
commit f27002947d
2 changed files with 17 additions and 3 deletions

View File

@ -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;

View File

@ -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());