Index: gm/resizeimagefilter.cpp |
diff --git a/gm/resizeimagefilter.cpp b/gm/resizeimagefilter.cpp |
index 8f5c0152c5c7b7a2773153dd1e2f0083125d6242..02bbaff689bf2aa62bbf096c847695114810b1d2 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: |