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-14 14:10:22 +0000 |
commit | 1662257bdaaaf26b016bf2a3e329c34f7f5ed581 (patch) | |
tree | a4f56bb7d0d0ec073e25d494d786637ea3a20a90 /gm | |
parent | 5b65a84b990e4ed3b5534cd85167cdc3ed6c820a (diff) |
Alloc glyph image correctly for SkMask::k3D_Format.
Remove the no longer used outside Skia SK_SUPPORT_LEGACY_EMBOSSMASKFILTER
define, and either delete the code it guards or update it to use the new
emboss mask filter factory.
Re-enable the code to test the emboss mask filter.
Add a test to ensure that embossed text is drawn correctly, as before
glyphs did not allocate the proper amount of memory for the k3D_Format
which the emboss mask filter produces.
Fixes SkEmbossMask::Emboss to write the whole of the mul and add planes
to avoid pixel differences and MemorySanitizer errors.
Update the GPU to understand the k3D_Format and use just the alpha
plane, ignoring the mul and add plane which it currently cannot support.
Change-Id: Icac1a3f37d6e8c6be3151df570f5e14111e18585
Reviewed-on: https://skia-review.googlesource.com/70260
Reviewed-by: Herb Derby <herb@google.com>
Reviewed-on: https://skia-review.googlesource.com/70962
Commit-Queue: Ben Wagner <bungeman@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 |