Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Unified Diff: skia/ext/analysis_canvas.h

Issue 63443003: cc: Combine analysis and raster (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address feedback Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: skia/ext/analysis_canvas.h
diff --git a/skia/ext/analysis_canvas.h b/skia/ext/analysis_canvas.h
index 78d72ff9381ff5a5974708e81ac47ab152915777..66d92746f069c010678af007b996a05001d270b9 100644
--- a/skia/ext/analysis_canvas.h
+++ b/skia/ext/analysis_canvas.h
@@ -9,29 +9,23 @@
#include "third_party/skia/include/core/SkBitmapDevice.h"
#include "third_party/skia/include/core/SkCanvas.h"
#include "third_party/skia/include/core/SkPicture.h"
+#include "ui/gfx/rect.h"
namespace skia {
class AnalysisDevice;
-// Does not render anything, but gathers statistics about a region
-// (specified as a clip rectangle) of an SkPicture as the picture is
-// played back through it.
-// 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, public SkDrawPictureCallback {
+// Gathers statistics about a region of an SkPicture as the picture is played
+// back and rastered through it.
+class SK_API AnalysisCanvas : public SkCanvas {
public:
- AnalysisCanvas(AnalysisDevice*);
+ explicit AnalysisCanvas(AnalysisDevice* device);
virtual ~AnalysisCanvas();
// Returns true when a SkColor can be used to represent result.
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,
@@ -63,7 +57,8 @@ class SK_API AnalysisCanvas : public SkCanvas, public SkDrawPictureCallback {
// to be derived from SkBaseDevice (rather than SkBitmapDevice)
class SK_API AnalysisDevice : public SkBitmapDevice {
public:
- AnalysisDevice(const SkBitmap& bitmap);
+ // |analysis_rect| is in device space.
+ AnalysisDevice(const SkBitmap& bitmap, gfx::Rect analysis_rect);
virtual ~AnalysisDevice();
bool GetColorIfSolid(SkColor* color) const;
@@ -72,6 +67,8 @@ class SK_API AnalysisDevice : public SkBitmapDevice {
void SetForceNotSolid(bool flag);
void SetForceNotTransparent(bool flag);
+ gfx::Rect AnalysisRect() const { return analysis_rect_; }
+
protected:
// SkBaseDevice overrides.
virtual void clear(SkColor color) OVERRIDE;
@@ -154,6 +151,11 @@ class SK_API AnalysisDevice : public SkBitmapDevice {
private:
typedef SkBitmapDevice INHERITED;
+ void AnalyzeDrawRect(const SkDraw& draw,
+ const SkRect& rect,
+ const SkPaint& paint);
+
+ gfx::Rect analysis_rect_;
bool is_forced_not_solid_;
bool is_forced_not_transparent_;
bool is_solid_color_;

Powered by Google App Engine
This is Rietveld 408576698