diff options
author | Michael Ludwig <michaelludwig@google.com> | 2019-01-23 11:14:29 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2019-01-23 16:45:01 +0000 |
commit | 7545190e32b2bee7472f7a91bd5d841298963f6d (patch) | |
tree | d04d3493d2fcbfdb6233b868ab054009fb6b90f8 /tools | |
parent | 84e0064bc54399ccc7cd535af645bec67bea4185 (diff) | |
download | skqp-7545190e32b2bee7472f7a91bd5d841298963f6d.tar.gz |
Add new experimental API for rectangles with per-edge AA control
Also updates GM_draw_quad_set to use this API instead of the
bulk API on GrRenderTargetContext.
Bug: skia:8506
Change-Id: Ia342d83c509f9db69f06f01599c7041c98aabdb6
Reviewed-on: https://skia-review.googlesource.com/c/184488
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/debugger/SkDebugCanvas.cpp | 5 | ||||
-rw-r--r-- | tools/debugger/SkDebugCanvas.h | 1 | ||||
-rw-r--r-- | tools/debugger/SkDrawCommand.cpp | 13 | ||||
-rw-r--r-- | tools/debugger/SkDrawCommand.h | 16 |
4 files changed, 35 insertions, 0 deletions
diff --git a/tools/debugger/SkDebugCanvas.cpp b/tools/debugger/SkDebugCanvas.cpp index 7f5c544651..a6681a0bac 100644 --- a/tools/debugger/SkDebugCanvas.cpp +++ b/tools/debugger/SkDebugCanvas.cpp @@ -402,6 +402,11 @@ void SkDebugCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) { addDrawCommand(new SkDrawRectCommand(rect, paint)); } +void SkDebugCanvas::onDrawEdgeAARect(const SkRect& rect, SkCanvas::QuadAAFlags aa, SkColor color, + SkBlendMode mode) { + this->addDrawCommand(new SkDrawEdgeAARectCommand(rect, aa, color, mode)); +} + void SkDebugCanvas::onDrawRRect(const SkRRect& rrect, const SkPaint& paint) { this->addDrawCommand(new SkDrawRRectCommand(rrect, paint)); } diff --git a/tools/debugger/SkDebugCanvas.h b/tools/debugger/SkDebugCanvas.h index 43598ca454..df54198f47 100644 --- a/tools/debugger/SkDebugCanvas.h +++ b/tools/debugger/SkDebugCanvas.h @@ -131,6 +131,7 @@ protected: void onDrawPaint(const SkPaint&) override; void onDrawRect(const SkRect&, const SkPaint&) override; + void onDrawEdgeAARect(const SkRect&, SkCanvas::QuadAAFlags, SkColor, SkBlendMode) override; void onDrawOval(const SkRect&, const SkPaint&) override; void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override; void onDrawRRect(const SkRRect&, const SkPaint&) override; diff --git a/tools/debugger/SkDrawCommand.cpp b/tools/debugger/SkDrawCommand.cpp index a77c76429c..3726d75487 100644 --- a/tools/debugger/SkDrawCommand.cpp +++ b/tools/debugger/SkDrawCommand.cpp @@ -1980,6 +1980,19 @@ Json::Value SkDrawRectCommand::toJSON(UrlDataManager& urlDataManager) const { return result; } +SkDrawEdgeAARectCommand::SkDrawEdgeAARectCommand(const SkRect& rect, SkCanvas::QuadAAFlags aa, + SkColor color, SkBlendMode mode) + : INHERITED(kDrawEdgeAARect_OpType) { + fRect = rect; + fAA = aa; + fColor = color; + fMode = mode; +} + +void SkDrawEdgeAARectCommand::execute(SkCanvas* canvas) const { + canvas->experimental_DrawEdgeAARectV1(fRect, fAA, fColor, fMode); +} + SkDrawRRectCommand::SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& paint) : INHERITED(kDrawRRect_OpType) { fRRect = rrect; diff --git a/tools/debugger/SkDrawCommand.h b/tools/debugger/SkDrawCommand.h index 057001cf76..a6ca3414f2 100644 --- a/tools/debugger/SkDrawCommand.h +++ b/tools/debugger/SkDrawCommand.h @@ -51,6 +51,7 @@ public: kDrawPath_OpType, kDrawPoints_OpType, kDrawRect_OpType, + kDrawEdgeAARect_OpType, kDrawRRect_OpType, kDrawRegion_OpType, kDrawShadow_OpType, @@ -543,6 +544,21 @@ private: typedef SkDrawCommand INHERITED; }; +class SkDrawEdgeAARectCommand : public SkDrawCommand { +public: + SkDrawEdgeAARectCommand(const SkRect& rect, SkCanvas::QuadAAFlags aa, SkColor color, + SkBlendMode mode); + void execute(SkCanvas* canvas) const override; + +private: + SkRect fRect; + SkCanvas::QuadAAFlags fAA; + SkColor fColor; + SkBlendMode fMode; + + typedef SkDrawCommand INHERITED; +}; + class SkDrawRRectCommand : public SkDrawCommand { public: SkDrawRRectCommand(const SkRRect& rrect, const SkPaint& paint); |