Index: gm/color4f.cpp |
diff --git a/gm/color4f.cpp b/gm/color4f.cpp |
index 98ce0824cca6c6231b9c6619d0b91de15d045357..e912654bc911fd1a95f40741b41e0b38bd129c4d 100644 |
--- a/gm/color4f.cpp |
+++ b/gm/color4f.cpp |
@@ -32,10 +32,23 @@ static SkColorFilter* make_cf0() { |
return SkColorMatrixFilter::Create(cm); |
} |
+static SkColorFilter* make_cf1() { |
+ SkColorMatrix cm; |
+ cm.setSaturation(0.75f); |
+ SkAutoTUnref<SkColorFilter> a(SkColorMatrixFilter::Create(cm)); |
+ // CreateComposedFilter will try to concat these two matrices, resulting in a single |
+ // filter (which is good for speed). For this test, we want to force a real compose of |
+ // these two, so our inner filter has a scale-up, which disables the optimization of |
+ // combining the two matrices. |
+ cm.setScale(1.1f, 0.9f, 1); |
+ SkAutoTUnref<SkColorFilter> b(SkColorMatrixFilter::Create(cm)); |
+ return SkColorFilter::CreateComposeFilter(a, b); |
+} |
+ |
static void draw_into_canvas(SkCanvas* canvas) { |
const SkRect r = SkRect::MakeWH(100, 100); |
SkShader* (*shaders[])() { make_opaque_color, make_alpha_color }; |
- SkColorFilter* (*filters[])() { make_cf_null, make_cf0 }; |
+ SkColorFilter* (*filters[])() { make_cf_null, make_cf0, make_cf1 }; |
SkPaint paint; |
for (auto shProc : shaders) { |
@@ -48,7 +61,7 @@ static void draw_into_canvas(SkCanvas* canvas) { |
} |
} |
-DEF_SIMPLE_GM(color4f, canvas, 510, 250) { |
+DEF_SIMPLE_GM(color4f, canvas, 620, 260) { |
canvas->translate(20, 20); |
SkPaint bg; |
@@ -58,7 +71,7 @@ DEF_SIMPLE_GM(color4f, canvas, 510, 250) { |
SkColorProfileType const profiles[] { kLinear_SkColorProfileType, kSRGB_SkColorProfileType }; |
for (auto profile : profiles) { |
- const SkImageInfo info = SkImageInfo::Make(500, 100, kN32_SkColorType, kPremul_SkAlphaType, |
+ const SkImageInfo info = SkImageInfo::Make(600, 100, kN32_SkColorType, kPremul_SkAlphaType, |
profile); |
SkAutoTUnref<SkSurface> surface(SkSurface::NewRaster(info)); |
surface->getCanvas()->drawPaint(bg); |