summaryrefslogtreecommitdiffstats
path: root/skia/ext
diff options
context:
space:
mode:
authorvmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-24 00:56:01 +0000
committervmpstr@chromium.org <vmpstr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-05-24 00:56:01 +0000
commitbc427e77adc73acfbf8fc149d53eeefc43b6faa1 (patch)
tree17d76eb970ff758826fab04f844e92739ac8a060 /skia/ext
parentd35abeeda0fbe66878d7ae751a560061ee7c6b9c (diff)
downloadchromium_src-bc427e77adc73acfbf8fc149d53eeefc43b6faa1.zip
chromium_src-bc427e77adc73acfbf8fc149d53eeefc43b6faa1.tar.gz
chromium_src-bc427e77adc73acfbf8fc149d53eeefc43b6faa1.tar.bz2
cc: Early out on text in analysis canvas
If a tile has text drawn into it, we can be pessimistic and say that the tile will not be solid color, and it will keep this text. Hence, we can early out as soon as we see any text. BUG=238021 Review URL: https://chromiumcodereview.appspot.com/15497002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@201948 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'skia/ext')
-rw-r--r--skia/ext/analysis_canvas.cc5
-rw-r--r--skia/ext/analysis_canvas.h7
2 files changed, 11 insertions, 1 deletions
diff --git a/skia/ext/analysis_canvas.cc b/skia/ext/analysis_canvas.cc
index d494ad7..272568e 100644
--- a/skia/ext/analysis_canvas.cc
+++ b/skia/ext/analysis_canvas.cc
@@ -289,6 +289,11 @@ bool AnalysisCanvas::hasText() const {
return (static_cast<AnalysisDevice*>(getDevice()))->hasText();
}
+bool AnalysisCanvas::abortDrawing() {
+ // Early out as soon as we have detected that the tile has text.
+ return hasText();
+}
+
bool AnalysisCanvas::clipRect(const SkRect& rect, SkRegion::Op op,
bool doAA) {
return INHERITED::clipRect(rect, op, doAA);
diff --git a/skia/ext/analysis_canvas.h b/skia/ext/analysis_canvas.h
index 67151d3..249c3c2 100644
--- a/skia/ext/analysis_canvas.h
+++ b/skia/ext/analysis_canvas.h
@@ -7,6 +7,7 @@
#include "third_party/skia/include/core/SkCanvas.h"
#include "third_party/skia/include/core/SkDevice.h"
+#include "third_party/skia/include/core/SkPicture.h"
namespace skia {
@@ -18,7 +19,7 @@ class AnalysisDevice;
// To use: create a SkBitmap with kNo_Config, create an AnalysisDevice
// using that bitmap, and create an AnalysisCanvas using the device.
// Play a picture into the canvas, and then check result.
-class SK_API AnalysisCanvas : public SkCanvas {
+class SK_API AnalysisCanvas : public SkCanvas, public SkDrawPictureCallback {
public:
AnalysisCanvas(AnalysisDevice*);
virtual ~AnalysisCanvas();
@@ -27,6 +28,10 @@ class SK_API AnalysisCanvas : public SkCanvas {
bool getColorIfSolid(SkColor* color) const;
bool hasText() const;
+ // SkDrawPictureCallback override.
+ virtual bool abortDrawing() OVERRIDE;
+
+ // SkCanvas overrides.
virtual bool clipRect(const SkRect& rect,
SkRegion::Op op = SkRegion::kIntersect_Op,
bool doAntiAlias = false) OVERRIDE;