diff options
author | 2016-11-23 13:13:42 -0500 | |
---|---|---|
committer | 2016-11-23 20:05:45 +0000 | |
commit | 84503ccc9e6699c48c17a7542d411d462e0b5259 (patch) | |
tree | 2c6f833df7a8936aa41043c74ccb8ce53aa9ab64 /src/core/SkOverdrawCanvas.h | |
parent | bd488f886d624b2c00b64cdbabb6262cadea96fd (diff) |
A few bug fixes for SkOverdrawCanvas
(1) Use SkNWayCanvas to pass through non-draw canvas calls.
(2) Do not count overdraw on the initial canvas clear.
(3) Avoid counting overdraw for transparent lattice regions.
(4) Respect some properties of input paint.
BUG:32370375
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=5150
Change-Id: I8fe6b9df7247d637c710628aefdfee82a61048c2
Reviewed-on: https://skia-review.googlesource.com/5150
Commit-Queue: Matt Sarett <msarett@google.com>
Reviewed-by: Ben Wagner <bungeman@google.com>
Diffstat (limited to 'src/core/SkOverdrawCanvas.h')
-rw-r--r-- | src/core/SkOverdrawCanvas.h | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/core/SkOverdrawCanvas.h b/src/core/SkOverdrawCanvas.h index 65eabbc80f..2c5dbc4d81 100644 --- a/src/core/SkOverdrawCanvas.h +++ b/src/core/SkOverdrawCanvas.h @@ -8,19 +8,18 @@ #ifndef SkOverdrawCanvas_DEFINED #define SkOverdrawCanvas_DEFINED -#include "SkCanvas.h" +#include "SkNWayCanvas.h" /** * Captures all drawing commands. Rather than draw the actual content, this device * increments the alpha channel of each pixel every time it would have been touched * by a draw call. This is useful for detecting overdraw. */ -class SkOverdrawCanvas : public SkCanvas { +class SkOverdrawCanvas : public SkNWayCanvas { public: /* Does not take ownership of canvas */ SkOverdrawCanvas(SkCanvas*); - void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; void onDrawText(const void*, size_t, SkScalar, SkScalar, const SkPaint&) override; void onDrawPosText(const void*, size_t, const SkPoint[], const SkPaint&) override; void onDrawPosTextH(const void*, size_t, const SkScalar[], SkScalar, const SkPaint&) override; @@ -36,6 +35,7 @@ public: void onDrawRegion(const SkRegion&, const SkPaint&) override; void onDrawOval(const SkRect&, const SkPaint&) override; void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override; + void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; void onDrawRRect(const SkRRect&, const SkPaint&) override; void onDrawPoints(PointMode, size_t, const SkPoint[], const SkPaint&) override; void onDrawVertices(VertexMode, int, const SkPoint[], const SkPoint[], const SkColor[], @@ -60,10 +60,12 @@ private: void drawPosTextCommon(const void*, size_t, const SkScalar[], int, const SkPoint&, const SkPaint&); + inline SkPaint overdrawPaint(const SkPaint& paint); + SkCanvas* fCanvas; SkPaint fPaint; - typedef SkCanvas INHERITED; + typedef SkNWayCanvas INHERITED; }; #endif |