aboutsummaryrefslogtreecommitdiffhomepage
path: root/gm
diff options
context:
space:
mode:
authorGravatar Ben Wagner <bungeman@google.com>2017-11-10 16:24:50 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-11-14 14:10:22 +0000
commit1662257bdaaaf26b016bf2a3e329c34f7f5ed581 (patch)
treea4f56bb7d0d0ec073e25d494d786637ea3a20a90 /gm
parent5b65a84b990e4ed3b5534cd85167cdc3ed6c820a (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.cpp32
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