diff options
author | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-03-21 16:19:28 +0000 |
---|---|---|
committer | commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-03-21 16:19:28 +0000 |
commit | b659333bf605fd79e8a6dcbaba95b1d1833ab1f4 (patch) | |
tree | 242552e67614f728b922856feb07697386a7803d /gm | |
parent | 816b80592c94eab38141c445b90f105477cafc5d (diff) |
Fixed double offset in resize filter
The fix is trivial, simply remove the extra offset
I added another case to the resizeimagefilter gm and made it so that it looks exactly like the one next to it, so that failure is easy to detect visually.
BUG=skia:
R=senorblanco@google.com, senorblanco@chromium.org
Author: sugoi@chromium.org
Review URL: https://codereview.chromium.org/208303002
git-svn-id: http://skia.googlecode.com/svn/trunk@13892 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'gm')
-rw-r--r-- | gm/resizeimagefilter.cpp | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/gm/resizeimagefilter.cpp b/gm/resizeimagefilter.cpp index 8f5c0152c5..02bbaff689 100644 --- a/gm/resizeimagefilter.cpp +++ b/gm/resizeimagefilter.cpp @@ -6,8 +6,11 @@ */ #include "gm.h" +#include "SkBitmapDevice.h" +#include "SkBitmapSource.h" #include "SkColor.h" #include "SkResizeImageFilter.h" +#include "SkRefCnt.h" namespace skiagm { @@ -25,7 +28,8 @@ protected: void draw(SkCanvas* canvas, const SkRect& rect, const SkSize& deviceSize, - SkPaint::FilterLevel filterLevel) { + SkPaint::FilterLevel filterLevel, + SkImageFilter* input = NULL) { SkRect dstRect; canvas->getTotalMatrix().mapRect(&dstRect, rect); canvas->save(); @@ -37,7 +41,8 @@ protected: SkAutoTUnref<SkImageFilter> imageFilter( SkResizeImageFilter::Create(SkScalarInvert(deviceScaleX), SkScalarInvert(deviceScaleY), - filterLevel)); + filterLevel, + input)); SkPaint filteredPaint; filteredPaint.setImageFilter(imageFilter.get()); canvas->saveLayer(&rect, &filteredPaint); @@ -51,7 +56,7 @@ protected: } virtual SkISize onISize() { - return make_isize(420, 100); + return make_isize(520, 100); } virtual void onDraw(SkCanvas* canvas) { @@ -82,6 +87,28 @@ protected: srcRect, deviceSize, SkPaint::kHigh_FilterLevel); + + SkBitmap bitmap; + bitmap.allocN32Pixels(16, 16); + bitmap.eraseARGB(0x00, 0x00, 0x00, 0x00); + { + SkBitmapDevice bitmapDevice(bitmap); + SkCanvas bitmapCanvas(&bitmapDevice); + SkPaint paint; + paint.setColor(0xFF00FF00); + SkRect ovalRect = SkRect::MakeWH(16, 16); + ovalRect.inset(SkScalarDiv(2.0f, 3.0f), SkScalarDiv(2.0f, 3.0f)); + bitmapCanvas.drawOval(ovalRect, paint); + } + SkRect inRect = SkRect::MakeXYWH(-4, -4, 20, 20); + SkRect outRect = SkRect::MakeXYWH(-24, -24, 120, 120); + SkAutoTUnref<SkBitmapSource> source(SkBitmapSource::Create(bitmap, inRect, outRect)); + canvas->translate(srcRect.width() + SkIntToScalar(10), 0); + draw(canvas, + srcRect, + deviceSize, + SkPaint::kHigh_FilterLevel, + source.get()); } private: |