diff options
author | Ben Wagner <bungeman@google.com> | 2017-11-10 16:24:50 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-11-13 20:26:21 +0000 |
commit | 6b26deb8d6067589ce9b7853ab8e8d39de1a45de (patch) | |
tree | 831d213954cf73c939850b9650f186c18e459dce /gm | |
parent | 0030c5ed3ca61b195bc58cfb70a16c57319c6e41 (diff) |
Alloc glyph image correctly for SkMask::k3D_Format.
This removes the no longer used outside Skia
SK_SUPPORT_LEGACY_EMBOSSMASKFILTER define, and either deletes the code
it guards or updates it to use the new emboss mask filter factory. This
re-enables the code to test the emboss mask filter. Also added is a test
to ensure that embossed text is drawn correctly, as before this glyphs
did not allocate the proper amount of memory for the k3D_Format which
this mask filter produces. This also fixes SkEmbossMask::Emboss to write
the whole of the mul and add planes to avoid pixel differences and
MemorySanitizer errors.
Change-Id: Ib492c72a19d6a27d140e3cd48179a3ca9ce313f5
Reviewed-on: https://skia-review.googlesource.com/70260
Commit-Queue: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Diffstat (limited to 'gm')
-rw-r--r-- | gm/emboss.cpp | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/gm/emboss.cpp b/gm/emboss.cpp index c14c9d9278..a8483d0882 100644 --- a/gm/emboss.cpp +++ b/gm/emboss.cpp @@ -6,11 +6,11 @@ */ #include "gm.h" -#include "SkBlurMaskFilter.h" +#include "SkBlurMask.h" #include "SkCanvas.h" #include "SkColorFilter.h" +#include "SkEmbossMaskFilter.h" -#ifdef SK_SUPPORT_LEGACY_EMBOSSMASKFILTER static SkBitmap make_bm() { SkBitmap bm; bm.allocN32Pixels(100, 100); @@ -41,17 +41,36 @@ protected: SkPaint paint; SkBitmap bm = make_bm(); canvas->drawBitmap(bm, 10, 10, &paint); - - const SkScalar dir[] = { 1, 1, 1 }; - paint.setMaskFilter(SkBlurMaskFilter::MakeEmboss(3, dir, 0.3f, 0.1f)); canvas->translate(bm.width() + SkIntToScalar(10), 0); + + paint.setMaskFilter(SkEmbossMaskFilter::Make( + SkBlurMask::ConvertRadiusToSigma(3), + { { SK_Scalar1, SK_Scalar1, SK_Scalar1 }, 0, 128, 16*2 })); canvas->drawBitmap(bm, 10, 10, &paint); + canvas->translate(bm.width() + SkIntToScalar(10), 0); // this combination of emboss+colorfilter used to crash -- so we exercise it to // confirm that we have a fix. paint.setColorFilter(SkColorFilter::MakeModeFilter(0xFFFF0000, SkBlendMode::kSrcATop)); - canvas->translate(bm.width() + SkIntToScalar(10), 0); canvas->drawBitmap(bm, 10, 10, &paint); + canvas->translate(bm.width() + SkIntToScalar(10), 0); + + paint.setAntiAlias(true); + paint.setStyle(SkPaint::kStroke_Style); + paint.setStrokeWidth(SkIntToScalar(10)); + paint.setMaskFilter(SkEmbossMaskFilter::Make( + SkBlurMask::ConvertRadiusToSigma(4), + { { SK_Scalar1, SK_Scalar1, SK_Scalar1 }, 0, 128, 16*2 })); + paint.setColorFilter(nullptr); + paint.setShader(SkShader::MakeColorShader(SK_ColorBLUE)); + paint.setDither(true); + canvas->drawCircle(SkIntToScalar(50), SkIntToScalar(50), + SkIntToScalar(30), paint); + canvas->translate(SkIntToScalar(100), 0); + + paint.setStyle(SkPaint::kFill_Style); + paint.setTextSize(50); + canvas->drawText("Hello", 5, 0, 50, paint); } private: @@ -59,4 +78,3 @@ private: }; DEF_GM(return new EmbossGM;) -#endif |