aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gm/concavepaths.cpp84
-rw-r--r--gm/dropshadowimagefilter.cpp110
-rw-r--r--gm/imagefilterscropexpand.cpp209
-rw-r--r--gm/localmatriximagefilter.cpp104
-rw-r--r--gm/thinconcavepaths.cpp42
5 files changed, 229 insertions, 320 deletions
diff --git a/gm/concavepaths.cpp b/gm/concavepaths.cpp
index c68265b99f..c371615f2f 100644
--- a/gm/concavepaths.cpp
+++ b/gm/concavepaths.cpp
@@ -9,9 +9,6 @@
#include "SkCanvas.h"
#include "SkPath.h"
-#define WIDTH 400
-#define HEIGHT 600
-
namespace {
// Concave test
void test_concave(SkCanvas* canvas, const SkPaint& paint) {
@@ -363,53 +360,34 @@ void test_coincident_edges_4(SkCanvas* canvas, const SkPaint& paint) {
};
-class ConcavePathsGM : public skiagm::GM {
-public:
- ConcavePathsGM() {}
-
-protected:
- SkString onShortName() override {
- return SkString("concavepaths");
- }
-
- SkISize onISize() override {
- return SkISize::Make(WIDTH, HEIGHT);
- }
-
- void onDraw(SkCanvas* canvas) override {
- SkPaint paint;
-
- paint.setAntiAlias(true);
- paint.setStyle(SkPaint::kFill_Style);
-
- test_concave(canvas, paint);
- test_reverse_concave(canvas, paint);
- test_bowtie(canvas, paint);
- test_fake_bowtie(canvas, paint);
- test_fish(canvas, paint);
- test_fast_forward(canvas, paint);
- test_hole(canvas, paint);
- test_star(canvas, paint);
- test_stairstep(canvas, paint);
- test_stairstep2(canvas, paint);
- test_overlapping(canvas, paint);
- test_partners(canvas, paint);
- test_monotone_1(canvas, paint);
- test_monotone_2(canvas, paint);
- test_monotone_3(canvas, paint);
- test_monotone_4(canvas, paint);
- test_monotone_5(canvas, paint);
- test_degenerate(canvas, paint);
- test_coincident_edge(canvas, paint);
- test_bowtie_coincident_triangle(canvas, paint);
- test_coincident_edges_1(canvas, paint);
- test_coincident_edges_2(canvas, paint);
- test_coincident_edges_3(canvas, paint);
- test_coincident_edges_4(canvas, paint);
- }
-
-private:
- typedef skiagm::GM INHERITED;
-};
-
-DEF_GM( return new ConcavePathsGM; )
+DEF_SIMPLE_GM(concavepaths, canvas, 400, 600) {
+ SkPaint paint;
+
+ paint.setAntiAlias(true);
+ paint.setStyle(SkPaint::kFill_Style);
+
+ test_concave(canvas, paint);
+ test_reverse_concave(canvas, paint);
+ test_bowtie(canvas, paint);
+ test_fake_bowtie(canvas, paint);
+ test_fish(canvas, paint);
+ test_fast_forward(canvas, paint);
+ test_hole(canvas, paint);
+ test_star(canvas, paint);
+ test_stairstep(canvas, paint);
+ test_stairstep2(canvas, paint);
+ test_overlapping(canvas, paint);
+ test_partners(canvas, paint);
+ test_monotone_1(canvas, paint);
+ test_monotone_2(canvas, paint);
+ test_monotone_3(canvas, paint);
+ test_monotone_4(canvas, paint);
+ test_monotone_5(canvas, paint);
+ test_degenerate(canvas, paint);
+ test_coincident_edge(canvas, paint);
+ test_bowtie_coincident_triangle(canvas, paint);
+ test_coincident_edges_1(canvas, paint);
+ test_coincident_edges_2(canvas, paint);
+ test_coincident_edges_3(canvas, paint);
+ test_coincident_edges_4(canvas, paint);
+}
diff --git a/gm/dropshadowimagefilter.cpp b/gm/dropshadowimagefilter.cpp
index fff318ee57..d32f0480e0 100644
--- a/gm/dropshadowimagefilter.cpp
+++ b/gm/dropshadowimagefilter.cpp
@@ -69,70 +69,50 @@ static void draw_bitmap(SkCanvas* canvas, const SkRect& r, sk_sp<SkImageFilter>
///////////////////////////////////////////////////////////////////////////////
-class DropShadowImageFilterGM : public skiagm::GM {
-public:
- DropShadowImageFilterGM () {}
-
-protected:
-
- SkString onShortName() override {
- return SkString("dropshadowimagefilter");
- }
-
- SkISize onISize() override { return SkISize::Make(400, 656); }
-
- void onDraw(SkCanvas* canvas) override {
- void (*drawProc[])(SkCanvas*, const SkRect&, sk_sp<SkImageFilter>) = {
- draw_bitmap, draw_path, draw_paint, draw_text
- };
-
- sk_sp<SkColorFilter> cf(SkColorFilter::MakeModeFilter(SK_ColorMAGENTA,
- SkBlendMode::kSrcIn));
- sk_sp<SkImageFilter> cfif(SkColorFilterImageFilter::Make(std::move(cf), nullptr));
- SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(10, 10, 44, 44)),
- SkImageFilter::CropRect::kHasAll_CropEdge);
- SkImageFilter::CropRect bogusRect(SkRect::Make(SkIRect::MakeXYWH(-100, -100, 10, 10)),
- SkImageFilter::CropRect::kHasAll_CropEdge);
-
- sk_sp<SkImageFilter> filters[] = {
- nullptr,
- SkDropShadowImageFilter::Make(7.0f, 0.0f, 0.0f, 3.0f, SK_ColorBLUE,
- SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, nullptr),
- SkDropShadowImageFilter::Make(0.0f, 7.0f, 3.0f, 0.0f, SK_ColorBLUE,
- SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, nullptr),
- SkDropShadowImageFilter::Make(7.0f, 7.0f, 3.0f, 3.0f, SK_ColorBLUE,
- SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, nullptr),
- SkDropShadowImageFilter::Make(7.0f, 7.0f, 3.0f, 3.0f, SK_ColorBLUE,
- SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, std::move(cfif)),
- SkDropShadowImageFilter::Make(7.0f, 7.0f, 3.0f, 3.0f, SK_ColorBLUE,
- SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, nullptr, &cropRect),
- SkDropShadowImageFilter::Make(7.0f, 7.0f, 3.0f, 3.0f, SK_ColorBLUE,
- SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, nullptr, &bogusRect),
- SkDropShadowImageFilter::Make(7.0f, 7.0f, 3.0f, 3.0f, SK_ColorBLUE,
- SkDropShadowImageFilter::kDrawShadowOnly_ShadowMode, nullptr),
- };
-
- SkRect r = SkRect::MakeWH(SkIntToScalar(64), SkIntToScalar(64));
- SkScalar MARGIN = SkIntToScalar(16);
- SkScalar DX = r.width() + MARGIN;
- SkScalar DY = r.height() + MARGIN;
-
- canvas->translate(MARGIN, MARGIN);
- for (size_t j = 0; j < SK_ARRAY_COUNT(drawProc); ++j) {
- canvas->save();
- for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) {
- drawProc[j](canvas, r, filters[i]);
- canvas->translate(0, DY);
- }
- canvas->restore();
- canvas->translate(DX, 0);
+DEF_SIMPLE_GM(dropshadowimagefilter, canvas, 400, 656) {
+ void (*drawProc[])(SkCanvas*, const SkRect&, sk_sp<SkImageFilter>) = {
+ draw_bitmap, draw_path, draw_paint, draw_text
+ };
+
+ sk_sp<SkColorFilter> cf(SkColorFilter::MakeModeFilter(SK_ColorMAGENTA,
+ SkBlendMode::kSrcIn));
+ sk_sp<SkImageFilter> cfif(SkColorFilterImageFilter::Make(std::move(cf), nullptr));
+ SkImageFilter::CropRect cropRect(SkRect::Make(SkIRect::MakeXYWH(10, 10, 44, 44)),
+ SkImageFilter::CropRect::kHasAll_CropEdge);
+ SkImageFilter::CropRect bogusRect(SkRect::Make(SkIRect::MakeXYWH(-100, -100, 10, 10)),
+ SkImageFilter::CropRect::kHasAll_CropEdge);
+
+ sk_sp<SkImageFilter> filters[] = {
+ nullptr,
+ SkDropShadowImageFilter::Make(7.0f, 0.0f, 0.0f, 3.0f, SK_ColorBLUE,
+ SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, nullptr),
+ SkDropShadowImageFilter::Make(0.0f, 7.0f, 3.0f, 0.0f, SK_ColorBLUE,
+ SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, nullptr),
+ SkDropShadowImageFilter::Make(7.0f, 7.0f, 3.0f, 3.0f, SK_ColorBLUE,
+ SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, nullptr),
+ SkDropShadowImageFilter::Make(7.0f, 7.0f, 3.0f, 3.0f, SK_ColorBLUE,
+ SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, std::move(cfif)),
+ SkDropShadowImageFilter::Make(7.0f, 7.0f, 3.0f, 3.0f, SK_ColorBLUE,
+ SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, nullptr, &cropRect),
+ SkDropShadowImageFilter::Make(7.0f, 7.0f, 3.0f, 3.0f, SK_ColorBLUE,
+ SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode, nullptr, &bogusRect),
+ SkDropShadowImageFilter::Make(7.0f, 7.0f, 3.0f, 3.0f, SK_ColorBLUE,
+ SkDropShadowImageFilter::kDrawShadowOnly_ShadowMode, nullptr),
+ };
+
+ SkRect r = SkRect::MakeWH(SkIntToScalar(64), SkIntToScalar(64));
+ SkScalar MARGIN = SkIntToScalar(16);
+ SkScalar DX = r.width() + MARGIN;
+ SkScalar DY = r.height() + MARGIN;
+
+ canvas->translate(MARGIN, MARGIN);
+ for (size_t j = 0; j < SK_ARRAY_COUNT(drawProc); ++j) {
+ canvas->save();
+ for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) {
+ drawProc[j](canvas, r, filters[i]);
+ canvas->translate(0, DY);
}
+ canvas->restore();
+ canvas->translate(DX, 0);
}
-
-private:
- typedef GM INHERITED;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-
-DEF_GM( return new DropShadowImageFilterGM; )
+}
diff --git a/gm/imagefilterscropexpand.cpp b/gm/imagefilterscropexpand.cpp
index 9b9f7ee817..57ff14b4a0 100644
--- a/gm/imagefilterscropexpand.cpp
+++ b/gm/imagefilterscropexpand.cpp
@@ -25,117 +25,114 @@
#include "SkPoint3.h"
#include "SkSurface.h"
-///////////////////////////////////////////////////////////////////////////////
-
-class ImageFiltersCropExpandGM : public skiagm::GM {
-public:
- ImageFiltersCropExpandGM () {}
+namespace {
-protected:
+void make_checkerboard(SkBitmap* bitmap);
+sk_sp<SkImage> make_gradient_circle(int width, int height);
+void draw(SkCanvas* canvas, const SkBitmap& bitmap, const SkRect& rect,
+ sk_sp<SkImageFilter> filter);
- SkString onShortName() override {
- return SkString("imagefilterscropexpand");
- }
+};
- SkISize onISize() override { return SkISize::Make(730, 650); }
-
- void onDraw(SkCanvas* canvas) override {
- SkImageFilter::CropRect cropRect(
- SkRect::Make(SkIRect::MakeXYWH(10, 10, 44, 44)),
- SkImageFilter::CropRect::kHasAll_CropEdge);
-
- sk_sp<SkImage> gradientCircle(MakeGradientCircle(64, 64));
- SkBitmap checkerboard;
- MakeCheckerboard(&checkerboard);
-
- sk_sp<SkImageFilter> gradientCircleSource(SkImageSource::Make(std::move(gradientCircle)));
- sk_sp<SkImageFilter> noopCropped(SkOffsetImageFilter::Make(0, 0, nullptr, &cropRect));
- // This color matrix saturates the green component but only partly increases the opacity.
- // For the opaque checkerboard, the opacity boost doesn't matter but it does impact the
- // area outside the checkerboard.
- SkScalar matrix[20] = { 1, 0, 0, 0, 0,
- 0, 1, 0, 0, 255,
- 0, 0, 1, 0, 0,
- 0, 0, 0, 1, 32 };
- sk_sp<SkColorFilter> cfAlphaTrans(SkColorFilter::MakeMatrixFilterRowMajor255(matrix));
-
- SkRect r = SkRect::MakeWH(SkIntToScalar(64), SkIntToScalar(64));
- SkScalar MARGIN = SkIntToScalar(12);
-
- SkPoint3 pointLocation = SkPoint3::Make(0, 0, SkIntToScalar(10));
- SkScalar kd = SkIntToScalar(2);
- SkScalar surfaceScale = SkIntToScalar(1);
- SkIRect bounds;
- r.roundOut(&bounds);
+///////////////////////////////////////////////////////////////////////////////
- SkPaint paint;
- canvas->translate(MARGIN, MARGIN);
- for (int outset = -15; outset <= 20; outset += 5) {
- canvas->save();
- SkRect rect = cropRect.rect();
- rect.outset(SkIntToScalar(outset),
- SkIntToScalar(outset));
- SkImageFilter::CropRect bigRect(rect, SkImageFilter::CropRect::kHasAll_CropEdge);
-
- Draw(canvas, checkerboard, rect, SkColorFilterImageFilter::Make(cfAlphaTrans,
- noopCropped,
- &bigRect));
-
- Draw(canvas, checkerboard, rect, SkBlurImageFilter::Make(0.3f, 0.3f,
- noopCropped,
- &bigRect));
-
- Draw(canvas, checkerboard, rect, SkBlurImageFilter::Make(8.0f, 8.0f,
- noopCropped,
- &bigRect));
-
- Draw(canvas, checkerboard, rect, SkDilateImageFilter::Make(2, 2,
- noopCropped,
- &bigRect));
-
- Draw(canvas, checkerboard, rect, SkErodeImageFilter::Make(2, 2,
- noopCropped,
- &bigRect));
-
- Draw(canvas, checkerboard, rect,
- SkDropShadowImageFilter::Make(
- SkIntToScalar(10),
- SkIntToScalar(10),
- SkIntToScalar(3),
- SkIntToScalar(3),
- SK_ColorBLUE,
- SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode,
- noopCropped,
- &bigRect));
-
- Draw(canvas, checkerboard, rect,
- SkDisplacementMapEffect::Make(SkDisplacementMapEffect::kR_ChannelSelectorType,
- SkDisplacementMapEffect::kR_ChannelSelectorType,
- SkIntToScalar(12),
- gradientCircleSource,
- noopCropped,
- &bigRect));
-
- Draw(canvas, checkerboard, rect,
- SkOffsetImageFilter::Make(SkIntToScalar(-8), SkIntToScalar(16),
+DEF_SIMPLE_GM(imagefilterscropexpand, canvas, 730, 650) {
+ SkImageFilter::CropRect cropRect(
+ SkRect::Make(SkIRect::MakeXYWH(10, 10, 44, 44)),
+ SkImageFilter::CropRect::kHasAll_CropEdge);
+
+ sk_sp<SkImage> gradientCircle(make_gradient_circle(64, 64));
+ SkBitmap checkerboard;
+ make_checkerboard(&checkerboard);
+
+ sk_sp<SkImageFilter> gradientCircleSource(SkImageSource::Make(std::move(gradientCircle)));
+ sk_sp<SkImageFilter> noopCropped(SkOffsetImageFilter::Make(0, 0, nullptr, &cropRect));
+ // This color matrix saturates the green component but only partly increases the opacity.
+ // For the opaque checkerboard, the opacity boost doesn't matter but it does impact the
+ // area outside the checkerboard.
+ SkScalar matrix[20] = { 1, 0, 0, 0, 0,
+ 0, 1, 0, 0, 255,
+ 0, 0, 1, 0, 0,
+ 0, 0, 0, 1, 32 };
+ sk_sp<SkColorFilter> cfAlphaTrans(SkColorFilter::MakeMatrixFilterRowMajor255(matrix));
+
+ SkRect r = SkRect::MakeWH(SkIntToScalar(64), SkIntToScalar(64));
+ SkScalar MARGIN = SkIntToScalar(12);
+
+ SkPoint3 pointLocation = SkPoint3::Make(0, 0, SkIntToScalar(10));
+ SkScalar kd = SkIntToScalar(2);
+ SkScalar surfaceScale = SkIntToScalar(1);
+ SkIRect bounds;
+ r.roundOut(&bounds);
+
+ SkPaint paint;
+ canvas->translate(MARGIN, MARGIN);
+ for (int outset = -15; outset <= 20; outset += 5) {
+ canvas->save();
+ SkRect rect = cropRect.rect();
+ rect.outset(SkIntToScalar(outset),
+ SkIntToScalar(outset));
+ SkImageFilter::CropRect bigRect(rect, SkImageFilter::CropRect::kHasAll_CropEdge);
+
+ draw(canvas, checkerboard, rect, SkColorFilterImageFilter::Make(cfAlphaTrans,
+ noopCropped,
+ &bigRect));
+
+ draw(canvas, checkerboard, rect, SkBlurImageFilter::Make(0.3f, 0.3f,
+ noopCropped,
+ &bigRect));
+
+ draw(canvas, checkerboard, rect, SkBlurImageFilter::Make(8.0f, 8.0f,
+ noopCropped,
+ &bigRect));
+
+ draw(canvas, checkerboard, rect, SkDilateImageFilter::Make(2, 2,
+ noopCropped,
+ &bigRect));
+
+ draw(canvas, checkerboard, rect, SkErodeImageFilter::Make(2, 2,
+ noopCropped,
+ &bigRect));
+
+ draw(canvas, checkerboard, rect,
+ SkDropShadowImageFilter::Make(
+ SkIntToScalar(10),
+ SkIntToScalar(10),
+ SkIntToScalar(3),
+ SkIntToScalar(3),
+ SK_ColorBLUE,
+ SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode,
+ noopCropped,
+ &bigRect));
+
+ draw(canvas, checkerboard, rect,
+ SkDisplacementMapEffect::Make(SkDisplacementMapEffect::kR_ChannelSelectorType,
+ SkDisplacementMapEffect::kR_ChannelSelectorType,
+ SkIntToScalar(12),
+ gradientCircleSource,
noopCropped,
&bigRect));
- Draw(canvas, checkerboard, rect,
- SkLightingImageFilter::MakePointLitDiffuse(pointLocation,
- SK_ColorWHITE,
- surfaceScale,
- kd,
- noopCropped,
- &bigRect));
+ draw(canvas, checkerboard, rect,
+ SkOffsetImageFilter::Make(SkIntToScalar(-8), SkIntToScalar(16),
+ noopCropped,
+ &bigRect));
- canvas->restore();
- canvas->translate(0, SkIntToScalar(80));
- }
+ draw(canvas, checkerboard, rect,
+ SkLightingImageFilter::MakePointLitDiffuse(pointLocation,
+ SK_ColorWHITE,
+ surfaceScale,
+ kd,
+ noopCropped,
+ &bigRect));
+
+ canvas->restore();
+ canvas->translate(0, SkIntToScalar(80));
}
+}
-private:
- static void MakeCheckerboard(SkBitmap* bitmap) {
+namespace {
+ void make_checkerboard(SkBitmap* bitmap) {
bitmap->allocN32Pixels(64, 64);
SkCanvas canvas(*bitmap);
canvas.clear(0xFFFF0000);
@@ -156,7 +153,7 @@ private:
}
}
- static sk_sp<SkImage> MakeGradientCircle(int width, int height) {
+ sk_sp<SkImage> make_gradient_circle(int width, int height) {
SkScalar x = SkIntToScalar(width / 2);
SkScalar y = SkIntToScalar(height / 2);
SkScalar radius = SkMinScalar(x, y) * 0.8f;
@@ -174,7 +171,7 @@ private:
return surface->makeImageSnapshot();
}
- static void Draw(SkCanvas* canvas, const SkBitmap& bitmap, const SkRect& rect,
+ void draw(SkCanvas* canvas, const SkBitmap& bitmap, const SkRect& rect,
sk_sp<SkImageFilter> filter) {
SkPaint paint;
paint.setImageFilter(std::move(filter));
@@ -189,10 +186,4 @@ private:
canvas->translate(SkIntToScalar(80), 0);
}
-
- typedef GM INHERITED;
};
-
-///////////////////////////////////////////////////////////////////////////////
-
-DEF_GM( return new ImageFiltersCropExpandGM; )
diff --git a/gm/localmatriximagefilter.cpp b/gm/localmatriximagefilter.cpp
index d5b7e3e50d..14bbd32b84 100644
--- a/gm/localmatriximagefilter.cpp
+++ b/gm/localmatriximagefilter.cpp
@@ -28,6 +28,18 @@ static sk_sp<SkImage> make_image(SkCanvas* rootCanvas) {
return surface->makeImageSnapshot();
}
+static void show_image(SkCanvas* canvas, SkImage* image, sk_sp<SkImageFilter> filter) {
+ SkPaint paint;
+ paint.setStyle(SkPaint::kStroke_Style);
+ SkRect r = SkRect::MakeIWH(image->width(), image->height()).makeOutset(SK_ScalarHalf,
+ SK_ScalarHalf);
+ canvas->drawRect(r, paint);
+
+ paint.setStyle(SkPaint::kFill_Style);
+ paint.setImageFilter(filter);
+ canvas->drawImage(image, 0, 0, &paint);
+}
+
typedef sk_sp<SkImageFilter> (*ImageFilterFactory)();
// +[]{...} did not work on windows (VS)
@@ -36,66 +48,36 @@ typedef sk_sp<SkImageFilter> (*ImageFilterFactory)();
template <typename T> ImageFilterFactory IFCCast(T arg) { return arg; }
// Show the effect of localmatriximagefilter with various matrices, on various filters
-class LocalMatrixImageFilterGM : public skiagm::GM {
-public:
- LocalMatrixImageFilterGM() {}
-
-protected:
- SkString onShortName() override {
- return SkString("localmatriximagefilter");
- }
-
- SkISize onISize() override {
- return SkISize::Make(640, 640);
- }
-
- static void show_image(SkCanvas* canvas, SkImage* image, sk_sp<SkImageFilter> filter) {
- SkPaint paint;
- paint.setStyle(SkPaint::kStroke_Style);
- SkRect r = SkRect::MakeIWH(image->width(), image->height()).makeOutset(SK_ScalarHalf,
- SK_ScalarHalf);
- canvas->drawRect(r, paint);
-
- paint.setStyle(SkPaint::kFill_Style);
- paint.setImageFilter(filter);
- canvas->drawImage(image, 0, 0, &paint);
- }
-
- void onDraw(SkCanvas* canvas) override {
- sk_sp<SkImage> image0(make_image(canvas));
-
- const ImageFilterFactory factories[] = {
- IFCCast([]{ return SkBlurImageFilter::Make(8, 8, nullptr); }),
- IFCCast([]{ return SkDilateImageFilter::Make(8, 8, nullptr); }),
- IFCCast([]{ return SkErodeImageFilter::Make(8, 8, nullptr); }),
- IFCCast([]{ return SkOffsetImageFilter::Make(8, 8, nullptr); }),
- };
-
- const SkMatrix matrices[] = {
- SkMatrix::MakeScale(SK_ScalarHalf, SK_ScalarHalf),
- SkMatrix::MakeScale(2, 2),
- SkMatrix::MakeTrans(10, 10)
- };
-
- const SkScalar spacer = image0->width() * 3.0f / 2;
-
- canvas->translate(40, 40);
- for (auto&& factory : factories) {
- sk_sp<SkImageFilter> filter(factory());
-
- canvas->save();
- show_image(canvas, image0.get(), filter);
- for (const auto& matrix : matrices) {
- sk_sp<SkImageFilter> localFilter(filter->makeWithLocalMatrix(matrix));
- canvas->translate(spacer, 0);
- show_image(canvas, image0.get(), std::move(localFilter));
- }
- canvas->restore();
- canvas->translate(0, spacer);
+DEF_SIMPLE_GM(localmatriximagefilter, canvas, 640, 640) {
+ sk_sp<SkImage> image0(make_image(canvas));
+
+ const ImageFilterFactory factories[] = {
+ IFCCast([]{ return SkBlurImageFilter::Make(8, 8, nullptr); }),
+ IFCCast([]{ return SkDilateImageFilter::Make(8, 8, nullptr); }),
+ IFCCast([]{ return SkErodeImageFilter::Make(8, 8, nullptr); }),
+ IFCCast([]{ return SkOffsetImageFilter::Make(8, 8, nullptr); }),
+ };
+
+ const SkMatrix matrices[] = {
+ SkMatrix::MakeScale(SK_ScalarHalf, SK_ScalarHalf),
+ SkMatrix::MakeScale(2, 2),
+ SkMatrix::MakeTrans(10, 10)
+ };
+
+ const SkScalar spacer = image0->width() * 3.0f / 2;
+
+ canvas->translate(40, 40);
+ for (auto&& factory : factories) {
+ sk_sp<SkImageFilter> filter(factory());
+
+ canvas->save();
+ show_image(canvas, image0.get(), filter);
+ for (const auto& matrix : matrices) {
+ sk_sp<SkImageFilter> localFilter(filter->makeWithLocalMatrix(matrix));
+ canvas->translate(spacer, 0);
+ show_image(canvas, image0.get(), std::move(localFilter));
}
+ canvas->restore();
+ canvas->translate(0, spacer);
}
-
-private:
- typedef GM INHERITED;
-};
-DEF_GM( return new LocalMatrixImageFilterGM; )
+}
diff --git a/gm/thinconcavepaths.cpp b/gm/thinconcavepaths.cpp
index 6c81d7c272..0f4dd507bf 100644
--- a/gm/thinconcavepaths.cpp
+++ b/gm/thinconcavepaths.cpp
@@ -9,9 +9,6 @@
#include "SkCanvas.h"
#include "SkPath.h"
-#define WIDTH 400
-#define HEIGHT 400
-
namespace {
// Test thin stroked rect (stroked "by hand", not by stroking).
void draw_thin_stroked_rect(SkCanvas* canvas, const SkPaint& paint, SkScalar width) {
@@ -29,35 +26,16 @@ void draw_thin_stroked_rect(SkCanvas* canvas, const SkPaint& paint, SkScalar wid
};
-class ThinConcavePathsGM : public skiagm::GM {
-public:
- ThinConcavePathsGM() {}
-
-protected:
- SkString onShortName() override {
- return SkString("thinconcavepaths");
- }
-
- SkISize onISize() override {
- return SkISize::Make(WIDTH, HEIGHT);
- }
-
- void onDraw(SkCanvas* canvas) override {
- SkPaint paint;
+DEF_SIMPLE_GM(thinconcavepaths, canvas, 400, 400) {
+ SkPaint paint;
- paint.setAntiAlias(true);
- paint.setStyle(SkPaint::kFill_Style);
+ paint.setAntiAlias(true);
+ paint.setStyle(SkPaint::kFill_Style);
- canvas->save();
- for (SkScalar width = 1.0; width < 2.05; width += 0.25) {
- draw_thin_stroked_rect(canvas, paint, width);
- canvas->translate(0, 25);
- }
- canvas->restore();
+ canvas->save();
+ for (SkScalar width = 1.0; width < 2.05; width += 0.25) {
+ draw_thin_stroked_rect(canvas, paint, width);
+ canvas->translate(0, 25);
}
-
-private:
- typedef skiagm::GM INHERITED;
-};
-
-DEF_GM( return new ThinConcavePathsGM; )
+ canvas->restore();
+}