Index: gm/spritebitmap.cpp |
diff --git a/gm/spritebitmap.cpp b/gm/spritebitmap.cpp |
index 4f221d49fc71d808d0d932bb30d4973b174f4d52..6c438fad11da5b90957678ac9fae2e6af4f2876d 100644 |
--- a/gm/spritebitmap.cpp |
+++ b/gm/spritebitmap.cpp |
@@ -87,113 +87,3 @@ private: |
typedef GM INHERITED; |
}; |
DEF_GM( return new SpriteBitmapGM; ) |
- |
-/////////////////////////////////////////////////////////////////////////////////////////////////// |
- |
-#include "SkColorFilterImageFilter.h" |
-#include "SkModeColorFilter.h" |
-#include "SkMorphologyImageFilter.h" |
-#include "SkOffsetImageFilter.h" |
- |
-static SkImage* make_image(SkCanvas* rootCanvas) { |
- SkImageInfo info = SkImageInfo::MakeN32Premul(100, 100); |
- SkAutoTUnref<SkSurface> surface(rootCanvas->newSurface(info)); |
- if (!surface) { |
- surface.reset(SkSurface::NewRaster(info)); |
- } |
- |
- SkPaint paint; |
- paint.setAntiAlias(true); |
- paint.setColor(SK_ColorRED); |
- surface->getCanvas()->drawCircle(50, 50, 50, paint); |
- return surface->newImageSnapshot(); |
-} |
- |
-static void show_image(SkCanvas* canvas, SkImage* image, const SkIPoint& offset) { |
- SkScalar x = SkIntToScalar(offset.x()); |
- SkScalar y = SkIntToScalar(offset.y()); |
- |
- SkPaint paint; |
- paint.setStyle(SkPaint::kStroke_Style); |
- |
- SkRect r = SkRect::MakeIWH(image->width(), image->height()); |
- r.offset(x, y); |
- // get on pixel-centers to make the hairline land on a numerical stable boundary |
- r.outset(SK_ScalarHalf, SK_ScalarHalf); |
- canvas->drawRect(r, paint); |
- |
- canvas->drawImage(image, x, y, nullptr); |
-} |
- |
-typedef SkImageFilter* (*ImageFilterFactory)(); |
- |
-// +[]{...} did not work on windows (VS) |
-// (ImageFilterFactory)[]{...} did not work on linux (gcc) |
-// hence this cast function |
-template <typename T> ImageFilterFactory IFCCast(T arg) { return arg; } |
- |
-// We expect that applying the filter will keep us in the same domain (raster or gpu) |
-static void check_same_domain(SkImage* a, SkImage* b) { |
- SkASSERT(a->isTextureBacked() == b->isTextureBacked()); |
-} |
- |
-/** |
- * Compare output of drawSprite and drawBitmap (esp. clipping and imagefilters) |
- */ |
-class ApplyFilterGM : public skiagm::GM { |
-public: |
- ApplyFilterGM() {} |
- |
-protected: |
- SkString onShortName() override { |
- return SkString("apply-filter"); |
- } |
- |
- SkISize onISize() override { |
- return SkISize::Make(780, 780); |
- } |
- |
- void onDraw(SkCanvas* canvas) override { |
- SkAutoTUnref<SkImage> image0(make_image(canvas)); |
- |
- const ImageFilterFactory factories[] = { |
- IFCCast([]{ return SkBlurImageFilter::Create(8, 8); }), |
- IFCCast([]{ SkAutoTUnref<SkColorFilter> cf(SkModeColorFilter::Create(SK_ColorBLUE, |
- SkXfermode::kSrcIn_Mode)); |
- return SkColorFilterImageFilter::Create(cf); |
- }), |
- IFCCast([]{ return SkDilateImageFilter::Create(8, 8); }), |
- IFCCast([]{ return SkErodeImageFilter::Create(8, 8); }), |
- IFCCast([]{ return SkOffsetImageFilter::Create(8, 8); }), |
- }; |
- |
- const SkScalar spacer = image0->width() * 3.0f / 2; |
- |
- for (auto&& factory : factories) { |
- SkAutoTUnref<SkImageFilter> filter(factory()); |
- |
- SkIPoint offset1, offset2; |
- SkAutoTUnref<SkImage> image1(image0->applyFilter(filter, &offset1, true)); |
- SkAutoTUnref<SkImage> image2(image0->applyFilter(filter, &offset2, false)); |
- |
- check_same_domain(image0, image1); |
- check_same_domain(image0, image2); |
- |
- canvas->save(); |
- canvas->translate(30, 30); |
- show_image(canvas, image0, SkIPoint::Make(0, 0)); // original |
- canvas->translate(spacer, 0); |
- show_image(canvas, image1, offset1); // snug |
- canvas->translate(spacer, 0); |
- show_image(canvas, image2, offset2); // not snug |
- |
- canvas->restore(); |
- |
- canvas->translate(0, spacer); |
- } |
- } |
- |
-private: |
- typedef GM INHERITED; |
-}; |
-DEF_GM( return new ApplyFilterGM; ) |