diff options
author | Robert Phillips <robertphillips@google.com> | 2018-04-11 12:38:41 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2018-04-11 12:38:47 +0000 |
commit | c64ee20e135a336ed775ccb6dec8a87efd19ec02 (patch) | |
tree | 661c8d0d3ee64ff31b45548758e3c1dfe4abc81d /gm/shadermaskfilter.cpp | |
parent | 90f09e7853f506808b7dad5c50b60376887277a4 (diff) |
Revert "Fix handling of MaskFilter matrices"
This reverts commit 2097fd03ffea48bd904c48c93348b2350600870e.
Reason for revert: This is breaking a lot of Windows bots (esp. on the shadermaskfilter_localmatrix)
Original change's description:
> Fix handling of MaskFilter matrices
>
> 1) extend GrFPArgs to track pre/post local matrices, add helpers for
> creating pre/post wrapper args
>
> 2) add a SkShaderBase helper (totalLocalMatrix) to centralize the LM
> sandwich logic.
>
> 3) update call sites to use the above
>
> 4) rename SkMatrixFilter::makeWithLocalMatrix -> makeWithMatrix, to
> disambiguate vs. SkShader::makeWithLocalMatrix.
>
> BUG=skia:7744
>
> Change-Id: Ib2b7b007e6924979b00649dde7c94ef4b34771f1
> Reviewed-on: https://skia-review.googlesource.com/119330
> Commit-Queue: Florin Malita <fmalita@chromium.org>
> Reviewed-by: Brian Salomon <bsalomon@google.com>
TBR=bsalomon@google.com,robertphillips@google.com,fmalita@chromium.org,reed@google.com
Change-Id: I918dbb95bf00b3122e6699b84566ec82dbb5fc5c
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: skia:7744
Reviewed-on: https://skia-review.googlesource.com/120340
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
Diffstat (limited to 'gm/shadermaskfilter.cpp')
-rw-r--r-- | gm/shadermaskfilter.cpp | 90 |
1 files changed, 0 insertions, 90 deletions
diff --git a/gm/shadermaskfilter.cpp b/gm/shadermaskfilter.cpp index a3f4fd87b7..c1bee02e6d 100644 --- a/gm/shadermaskfilter.cpp +++ b/gm/shadermaskfilter.cpp @@ -11,7 +11,6 @@ #include "SkCanvas.h" #include "SkImage.h" #include "SkMaskFilter.h" -#include "SkPictureRecorder.h" #include "SkShaderMaskFilter.h" static void draw_masked_image(SkCanvas* canvas, const SkImage* image, SkScalar x, SkScalar y, @@ -221,92 +220,3 @@ DEF_SIMPLE_GM(savelayer_maskfilter, canvas, 450, 675) { } } -static void draw_mask(SkCanvas* canvas) { - SkPaint p; - p.setAntiAlias(true); - canvas->drawOval(SkRect::Make(canvas->imageInfo().bounds()), p); -} - -DEF_SIMPLE_GM(shadermaskfilter_localmatrix, canvas, 1200, 800) { - static constexpr SkScalar kSize = 100; - - using ShaderMakerT = sk_sp<SkShader>(*)(SkCanvas*, const SkMatrix& lm); - static const ShaderMakerT gShaderMakers[] = { - [](SkCanvas* canvas, const SkMatrix& lm) -> sk_sp<SkShader> { - auto surface = sk_tool_utils::makeSurface(canvas, - SkImageInfo::MakeN32Premul(kSize, kSize)); - draw_mask(surface->getCanvas()); - return surface->makeImageSnapshot()->makeShader(SkShader::kClamp_TileMode, - SkShader::kClamp_TileMode, &lm); - }, - [](SkCanvas*, const SkMatrix& lm) -> sk_sp<SkShader> { - SkPictureRecorder recorder; - draw_mask(recorder.beginRecording(kSize, kSize)); - return SkShader::MakePictureShader(recorder.finishRecordingAsPicture(), - SkShader::kClamp_TileMode, - SkShader::kClamp_TileMode, - &lm, nullptr); - }, - }; - - struct Config { - SkMatrix fCanvasMatrix, - fMaskMatrix, - fShaderMatrix; - } gConfigs[] = { - { SkMatrix::I(), SkMatrix::MakeScale(2, 2), SkMatrix::MakeTrans(10, 10) }, - { SkMatrix::MakeScale(2, 2), SkMatrix::I(), SkMatrix::MakeTrans(10, 10) }, - { SkMatrix::MakeScale(2, 2), SkMatrix::MakeTrans(10, 10), SkMatrix::I() }, - { SkMatrix::Concat(SkMatrix::MakeScale(2, 2), SkMatrix::MakeTrans(10, 10)), - SkMatrix::I(), SkMatrix::I() }, - { SkMatrix::I(), - SkMatrix::Concat(SkMatrix::MakeScale(2, 2), SkMatrix::MakeTrans(10, 10)), - SkMatrix::I() }, - { SkMatrix::I(), SkMatrix::I(), - SkMatrix::Concat(SkMatrix::MakeScale(2, 2), SkMatrix::MakeTrans(10, 10)) }, - }; - - using DrawerT = void(*)(SkCanvas*, const SkRect&, const SkPaint&); - static const DrawerT gDrawers[] = { - [](SkCanvas* canvas, const SkRect& dest, const SkPaint& mask) { - canvas->drawRect(dest, mask); - }, - [](SkCanvas* canvas, const SkRect& dest, const SkPaint& mask) { - canvas->saveLayer(&dest, &mask); - SkPaint p = mask; - p.setMaskFilter(nullptr); - canvas->drawPaint(p); - canvas->restore(); - }, - }; - - SkPaint paint, rectPaint; - paint.setColor(0xff00ff00); - rectPaint.setStyle(SkPaint::kStroke_Style); - rectPaint.setColor(0xffff0000); - - for (const auto& sm : gShaderMakers) { - for (const auto& drawer : gDrawers) { - { - SkAutoCanvasRestore acr(canvas, true); - for (const auto& cfg : gConfigs) { - paint.setMaskFilter(SkShaderMaskFilter::Make(sm(canvas, cfg.fShaderMatrix)) - ->makeWithMatrix(cfg.fMaskMatrix)); - auto dest = SkRect::MakeWH(kSize, kSize); - SkMatrix::Concat(cfg.fMaskMatrix, cfg.fShaderMatrix).mapRect(&dest); - - { - SkAutoCanvasRestore acr(canvas, true); - canvas->concat(cfg.fCanvasMatrix); - drawer(canvas, dest, paint); - canvas->drawRect(dest, rectPaint); - } - - canvas->translate(kSize * 2.5f, 0); - } - } - canvas->translate(0, kSize * 2.5f); - } - - } -} |