diff options
author | reed <reed@google.com> | 2016-09-02 04:56:53 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-09-02 04:56:53 -0700 |
commit | 6ae6969434302da86de1169545939461ac7147b9 (patch) | |
tree | 624945e6796b1cef578378c2a8d8dc0fbc4add39 /src/core/SkLiteDL.cpp | |
parent | 400a93bd6c5a07aa8c83de9e31e224243e59089e (diff) |
record drawfilters
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2303033002
Review-Url: https://codereview.chromium.org/2303033002
Diffstat (limited to 'src/core/SkLiteDL.cpp')
-rw-r--r-- | src/core/SkLiteDL.cpp | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/src/core/SkLiteDL.cpp b/src/core/SkLiteDL.cpp index b88f7bc62c..3b94d8d676 100644 --- a/src/core/SkLiteDL.cpp +++ b/src/core/SkLiteDL.cpp @@ -7,6 +7,7 @@ #include "SkCanvas.h" #include "SkData.h" +#include "SkDrawFilter.h" #include "SkImageFilter.h" #include "SkLiteDL.h" #include "SkMath.h" @@ -52,7 +53,7 @@ static void make_threadsafe(SkPath* path, SkMatrix* matrix) { namespace { #define TYPES(M) \ - M(Save) M(Restore) M(SaveLayer) \ + M(SetDrawFilter) M(Save) M(Restore) M(SaveLayer) \ M(Concat) M(SetMatrix) M(Translate) M(TranslateZ) \ M(ClipPath) M(ClipRect) M(ClipRRect) M(ClipRegion) \ M(DrawPaint) M(DrawPath) M(DrawRect) M(DrawRegion) M(DrawOval) M(DrawArc) \ @@ -75,6 +76,19 @@ namespace { }; static_assert(sizeof(Op) == 4, ""); + struct SetDrawFilter final : Op { +#ifdef SK_SUPPORT_LEGACY_DRAWFILTER + static const auto kType = Type::SetDrawFilter; + SetDrawFilter(SkDrawFilter* df) : drawFilter(sk_ref_sp(df)) {} + sk_sp<SkDrawFilter> drawFilter; +#endif + void draw(SkCanvas* c, const SkMatrix&) { +#ifdef SK_SUPPORT_LEGACY_DRAWFILTER + c->setDrawFilter(drawFilter.get()); +#endif + } + }; + struct Save final : Op { static const auto kType = Type::Save; void draw(SkCanvas* c, const SkMatrix&) { c->save(); } @@ -566,6 +580,12 @@ inline void SkLiteDL::map(const Fn fns[], Args... args) { } } +#ifdef SK_SUPPORT_LEGACY_DRAWFILTER +void SkLiteDL::setDrawFilter(SkDrawFilter* df) { + this->push<SetDrawFilter>(0, df); +} +#endif + void SkLiteDL:: save() { this->push <Save>(0); } void SkLiteDL::restore() { this->push<Restore>(0); } void SkLiteDL::saveLayer(const SkRect* bounds, const SkPaint* paint, |