Chromium Code Reviews| Index: gm/imagefiltersstroked.cpp |
| diff --git a/gm/imagefiltersstroked.cpp b/gm/imagefiltersstroked.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..4a9058839a5936e4005100ca962e478634d851c2 |
| --- /dev/null |
| +++ b/gm/imagefiltersstroked.cpp |
| @@ -0,0 +1,117 @@ |
| +/* |
| + * Copyright 2015 Google Inc. |
| + * |
| + * Use of this source code is governed by a BSD-style license that can be |
| + * found in the LICENSE file. |
| + */ |
| + |
| +#include "sk_tool_utils.h" |
| +#include "SkBlurImageFilter.h" |
| +#include "SkColor.h" |
| +#include "SkDropShadowImageFilter.h" |
| +#include "SkOffsetImageFilter.h" |
| +#include "SkScalar.h" |
| +#include "gm.h" |
| + |
| +#define RESIZE_FACTOR_X SkIntToScalar(2) |
| +#define RESIZE_FACTOR_Y SkIntToScalar(5) |
| + |
| +namespace skiagm { |
| + |
| +class ImageFiltersStrokedGM : public GM { |
| +public: |
| + ImageFiltersStrokedGM() { |
| + this->setBGColor(0x00000000); |
| + } |
| + |
| +protected: |
| + |
| + SkString onShortName() override { |
| + return SkString("imagefiltersstroked"); |
| + } |
| + |
| + SkISize onISize() override { |
| + return SkISize::Make(860, 500); |
| + } |
| + |
| + static void draw_circle(SkCanvas* canvas, const SkRect& r, const SkPaint& paint) { |
| + canvas->drawCircle(r.centerX(), r.centerY(), |
| + r.width() * 2 / 5, paint); |
| + } |
| + |
| + static void draw_line(SkCanvas* canvas, const SkRect& r, const SkPaint& paint) { |
| + canvas->drawLine(r.fLeft, r.fBottom, r.fRight, r.fTop, paint); |
| + } |
| + |
| + static void draw_rect(SkCanvas* canvas, const SkRect& r, const SkPaint& paint) { |
| + canvas->drawRect(r, paint); |
| + } |
| + |
| + static void draw_text(SkCanvas* canvas, const SkRect& r, const SkPaint& paint) { |
| + canvas->drawText("A", 1, r.centerX(), r.centerY(), paint); |
|
reed1
2015/08/28 19:41:38
Cary will bark loudly if we draw fonts just to dra
Stephen White
2015/08/28 19:46:20
Removed.
|
| + } |
| + |
| + void onDraw(SkCanvas* canvas) override { |
| + void (*drawProc[])(SkCanvas*, const SkRect&, const SkPaint&) = { |
| + draw_line, draw_rect, draw_circle, draw_text, |
| + }; |
| + |
| + canvas->clear(SK_ColorBLACK); |
| + |
| + SkMatrix resizeMatrix; |
| + resizeMatrix.setScale(RESIZE_FACTOR_X, RESIZE_FACTOR_Y); |
| + |
| + SkImageFilter* filters[] = { |
| + SkBlurImageFilter::Create(SkIntToScalar(5), SkIntToScalar(5)), |
| + SkDropShadowImageFilter::Create(SkIntToScalar(10), SkIntToScalar(10), |
| + SkIntToScalar(3), SkIntToScalar(3), SK_ColorGREEN, |
| + SkDropShadowImageFilter::kDrawShadowAndForeground_ShadowMode), |
| + SkOffsetImageFilter::Create(SkIntToScalar(-16), SkIntToScalar(32)), |
| + SkImageFilter::CreateMatrixFilter(resizeMatrix, kNone_SkFilterQuality), |
| + }; |
| + |
| + SkRect r = SkRect::MakeWH(SkIntToScalar(64), SkIntToScalar(64)); |
|
reed1
2015/08/28 19:41:38
nits: for literals, you don't need SkIntToScalar()
Stephen White
2015/08/28 19:46:20
Removed.
|
| + SkScalar margin = SkIntToScalar(32); |
| + SkPaint paint; |
| + paint.setColor(SK_ColorWHITE); |
| + paint.setAntiAlias(true); |
| + paint.setStrokeWidth(SkIntToScalar(10)); |
| + paint.setStyle(SkPaint::kStroke_Style); |
| + paint.setTextSize(SkIntToScalar(48)); |
| + paint.setTextAlign(SkPaint::kCenter_Align); |
| + |
| + for (size_t i = 0; i < SK_ARRAY_COUNT(drawProc); ++i) { |
| + canvas->translate(0, margin); |
| + canvas->save(); |
| + for (size_t j = 0; j < SK_ARRAY_COUNT(filters); ++j) { |
| + canvas->translate(margin, 0); |
| + canvas->save(); |
| + if (2 == j) { |
| + canvas->translate(SkIntToScalar(16), SkIntToScalar(-32)); |
| + } else if (3 == j) { |
| + canvas->scale(SkScalarInvert(RESIZE_FACTOR_X), |
| + SkScalarInvert(RESIZE_FACTOR_Y)); |
| + } |
| + paint.setImageFilter(filters[j]); |
| + drawProc[i](canvas, r, paint); |
| + canvas->restore(); |
| + canvas->translate(r.width() + margin, 0); |
| + } |
| + canvas->restore(); |
| + canvas->translate(0, r.height()); |
| + } |
| + |
| + for (size_t i = 0; i < SK_ARRAY_COUNT(filters); ++i) { |
| + SkSafeUnref(filters[i]); |
| + } |
| + } |
| + |
| +private: |
| + typedef GM INHERITED; |
| +}; |
| + |
| +////////////////////////////////////////////////////////////////////////////// |
| + |
| +DEF_GM(return new ImageFiltersStrokedGM;) |
| + |
| +} |