diff options
author | 2016-09-08 08:49:08 -0700 | |
---|---|---|
committer | 2016-09-08 08:49:09 -0700 | |
commit | f53fcc8ccaaa5e3cd24846d9e3ac38ad311f3711 (patch) | |
tree | 1585fbeda824b769459db1b83be574d5408cf139 | |
parent | 2b3c2a3ff9166e92ca1700e695c30ae729a3f10c (diff) |
SkLiteDL: drawAsLayer()
This more or less the API you were thinking?
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2315283002
Review-Url: https://codereview.chromium.org/2315283002
-rw-r--r-- | src/core/SkLiteDL.cpp | 13 | ||||
-rw-r--r-- | src/core/SkLiteDL.h | 7 |
2 files changed, 20 insertions, 0 deletions
diff --git a/src/core/SkLiteDL.cpp b/src/core/SkLiteDL.cpp index 8c8abb1cc3..227c2f30b6 100644 --- a/src/core/SkLiteDL.cpp +++ b/src/core/SkLiteDL.cpp @@ -816,3 +816,16 @@ void SkLiteDL::reset(SkRect bounds) { fUsed = 0; fBounds = bounds; } + +void SkLiteDL::drawAsLayer(SkCanvas* canvas, const SkMatrix* matrix, const SkPaint* paint) { + auto fallback_plan = [&] { + SkRect bounds = this->getBounds(); + canvas->saveLayer(&bounds, paint); + this->draw(canvas, matrix); + canvas->restore(); + }; + + // TODO: single-draw specializations + + return fallback_plan(); +} diff --git a/src/core/SkLiteDL.h b/src/core/SkLiteDL.h index 9dd1568ddf..8edd700e85 100644 --- a/src/core/SkLiteDL.h +++ b/src/core/SkLiteDL.h @@ -27,6 +27,13 @@ public: void setDrawFilter(SkDrawFilter*); #endif + // Draws as if... + // SkRect bounds = this->getBounds(); + // canvas->saveLayer(&bounds, paint); + // this->draw(canvas, matrix); + // canvas->restore(); + void drawAsLayer(SkCanvas*, const SkMatrix*, const SkPaint*); + void save(); void saveLayer(const SkRect*, const SkPaint*, const SkImageFilter*, SkCanvas::SaveLayerFlags); void restore(); |