aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkOverdrawCanvas.h
diff options
context:
space:
mode:
authorGravatar Matt Sarett <msarett@google.com>2016-11-23 13:13:42 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2016-11-23 20:05:45 +0000
commit84503ccc9e6699c48c17a7542d411d462e0b5259 (patch)
tree2c6f833df7a8936aa41043c74ccb8ce53aa9ab64 /src/core/SkOverdrawCanvas.h
parentbd488f886d624b2c00b64cdbabb6262cadea96fd (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.h10
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