aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-10-22 13:19:12 +0000
committerGravatar bsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2013-10-22 13:19:12 +0000
commitad254fee73ad70a45acba69dccb9b65f88c3a92a (patch)
tree12b18a7e1d9f810991864d61120bd74a7d72a1b1
parentdb6fa1729a5117e1bdacd6c237373812cd44a7c0 (diff)
If the path is a rect, call drawRect to raster the geometry in SkCanvas::drawPath to get better performance.
Committed: http://code.google.com/p/skia/source/detail?r=11842 R=bsalomon@google.com Review URL: https://codereview.chromium.org/23484007 git-svn-id: http://skia.googlecode.com/svn/trunk@11904 2bbb7eff-a529-9590-31e7-b0007b416f81
-rw-r--r--expectations/gm/ignored-tests.txt8
-rw-r--r--experimental/PdfViewer/SkNulCanvas.h4
-rw-r--r--experimental/SimpleCocoaApp/SimpleApp.mm2
-rw-r--r--include/core/SkCanvas.h26
-rw-r--r--include/utils/SkDeferredCanvas.h5
-rw-r--r--include/utils/SkDumpCanvas.h6
-rw-r--r--include/utils/SkLuaCanvas.h6
-rw-r--r--include/utils/SkNWayCanvas.h4
-rw-r--r--include/utils/SkProxyCanvas.h6
-rw-r--r--src/core/SkBBoxRecord.cpp10
-rw-r--r--src/core/SkBBoxRecord.h6
-rw-r--r--src/core/SkCanvas.cpp4
-rw-r--r--src/core/SkPictureRecord.cpp4
-rw-r--r--src/core/SkPictureRecord.h6
-rw-r--r--src/pipe/SkGPipeWrite.cpp11
-rw-r--r--src/utils/SkDeferredCanvas.cpp4
-rw-r--r--src/utils/SkDumpCanvas.cpp4
-rw-r--r--src/utils/SkLuaCanvas.cpp4
-rw-r--r--src/utils/SkNWayCanvas.cpp4
-rw-r--r--src/utils/SkProxyCanvas.cpp4
-rw-r--r--src/utils/debugger/SkDebugCanvas.cpp4
-rw-r--r--src/utils/debugger/SkDebugCanvas.h9
-rw-r--r--tests/TileGridTest.cpp7
23 files changed, 94 insertions, 54 deletions
diff --git a/expectations/gm/ignored-tests.txt b/expectations/gm/ignored-tests.txt
index 4326d7d2ea..6a1e1b9878 100644
--- a/expectations/gm/ignored-tests.txt
+++ b/expectations/gm/ignored-tests.txt
@@ -33,3 +33,11 @@ pdf-poppler
# Added by sugoi for https://codereview.chromium.org/28273005/
imagemagnifier
+
+# Added by bsalomon as part of https://codereview.chromium.org/23484007/
+# to temporarily ignore slight changes between the way rectangle paths
+# and rectangles render.
+pathopsinverse
+convexpaths
+path-reverse
+inverse_paths
diff --git a/experimental/PdfViewer/SkNulCanvas.h b/experimental/PdfViewer/SkNulCanvas.h
index 8ec2d32d0f..c43ea82918 100644
--- a/experimental/PdfViewer/SkNulCanvas.h
+++ b/experimental/PdfViewer/SkNulCanvas.h
@@ -55,10 +55,8 @@ public:
virtual void drawPaint(const SkPaint& paint) {}
virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[],
const SkPaint& paint) {}
- virtual void drawRect(const SkRect& rect, const SkPaint& paint) {}
virtual void drawOval(const SkRect& oval, const SkPaint&) {}
virtual void drawRRect(const SkRRect& rrect, const SkPaint& paint) {}
- virtual void drawPath(const SkPath& path, const SkPaint& paint) {}
virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
const SkPaint* paint = NULL) {}
virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src,
@@ -95,6 +93,8 @@ public:
virtual SkDrawFilter* setDrawFilter(SkDrawFilter* filter) {return NULL;}
protected:
+ virtual void onDrawRect(const SkRect& rect, const SkPaint& paint) {}
+ virtual void onDrawPath(const SkPath& path, const SkPaint& paint) {}
virtual SkCanvas* canvasForDrawIter() {return NULL;}
virtual SkBaseDevice* setDevice(SkBaseDevice* device) {return NULL;}
diff --git a/experimental/SimpleCocoaApp/SimpleApp.mm b/experimental/SimpleCocoaApp/SimpleApp.mm
index 7dac2a4fff..2156209798 100644
--- a/experimental/SimpleCocoaApp/SimpleApp.mm
+++ b/experimental/SimpleCocoaApp/SimpleApp.mm
@@ -135,7 +135,7 @@ static int showPathContour(SkPath::Iter& iter) {
}
class PathCanvas : public SkCanvas {
- virtual void drawPath(const SkPath& path, const SkPaint& paint) {
+ virtual void onDrawPath(const SkPath& path, const SkPaint& paint) {
if (nameonly) {
SkDebugf(" %s%d,\n", filename.c_str(), ++count);
return;
diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h
index dc3953ed4b..6869585419 100644
--- a/include/core/SkCanvas.h
+++ b/include/core/SkCanvas.h
@@ -575,16 +575,20 @@ public:
will be filled or stroked based on the Style in the paint.
@param rect The rect to be drawn
@param paint The paint used to draw the rect
+
+ Overriding this function is deprecated. It will be made non-virtual
+ soon. Instead override onDrawRect.
*/
- virtual void drawRect(const SkRect& rect, const SkPaint& paint);
+ virtual void drawRect(const SkRect& rect, const SkPaint& paint) {
+ this->onDrawRect(rect, paint);
+ }
/** Draw the specified rectangle using the specified paint. The rectangle
will be filled or framed based on the Style in the paint.
@param rect The rect to be drawn
@param paint The paint used to draw the rect
*/
- void drawIRect(const SkIRect& rect, const SkPaint& paint)
- {
+ void drawIRect(const SkIRect& rect, const SkPaint& paint) {
SkRect r;
r.set(rect); // promotes the ints to scalars
this->drawRect(r, paint);
@@ -656,8 +660,18 @@ public:
filled or framed based on the Style in the paint.
@param path The path to be drawn
@param paint The paint used to draw the path
+
+ Overriding this function is deprecated. It will be made non-virtual
+ soon. Instead override onDrawRect.
*/
- virtual void drawPath(const SkPath& path, const SkPaint& paint);
+ virtual void drawPath(const SkPath& path, const SkPaint& paint) {
+ SkRect rect;
+ if (path.isRect(&rect) && !path.isInverseFillType()) {
+ this->onDrawRect(rect, paint);
+ } else {
+ this->onDrawPath(path, paint);
+ }
+ }
/** Draw the specified bitmap, with its top/left corner at (x,y), using the
specified paint, transformed by the current matrix. Note: if the paint
@@ -1034,6 +1048,10 @@ protected:
// can perform copy-on-write or invalidate any cached images
void predrawNotify();
+ virtual void onDrawRect(const SkRect& rect, const SkPaint& paint);
+
+ virtual void onDrawPath(const SkPath& path, const SkPaint& paint);
+
/** DEPRECATED -- use constructor(device)
Marked as 'protected' to avoid new clients using this before we can
diff --git a/include/utils/SkDeferredCanvas.h b/include/utils/SkDeferredCanvas.h
index c0613ed544..052c667123 100644
--- a/include/utils/SkDeferredCanvas.h
+++ b/include/utils/SkDeferredCanvas.h
@@ -162,10 +162,7 @@ public:
virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[],
const SkPaint& paint) SK_OVERRIDE;
virtual void drawOval(const SkRect&, const SkPaint& paint) SK_OVERRIDE;
- virtual void drawRect(const SkRect& rect, const SkPaint& paint) SK_OVERRIDE;
virtual void drawRRect(const SkRRect&, const SkPaint& paint) SK_OVERRIDE;
- virtual void drawPath(const SkPath& path, const SkPaint& paint)
- SK_OVERRIDE;
virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left,
SkScalar top, const SkPaint* paint)
SK_OVERRIDE;
@@ -234,6 +231,8 @@ public:
};
protected:
+ virtual void onDrawRect(const SkRect& rect, const SkPaint& paint) SK_OVERRIDE;
+ virtual void onDrawPath(const SkPath& path, const SkPaint& paint) SK_OVERRIDE;
virtual SkCanvas* canvasForDrawIter();
DeferredDevice* getDeferredDevice() const;
diff --git a/include/utils/SkDumpCanvas.h b/include/utils/SkDumpCanvas.h
index 96b45e7ba2..d3ff9a1c18 100644
--- a/include/utils/SkDumpCanvas.h
+++ b/include/utils/SkDumpCanvas.h
@@ -93,9 +93,7 @@ public:
virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[],
const SkPaint& paint) SK_OVERRIDE;
virtual void drawOval(const SkRect&, const SkPaint& paint) SK_OVERRIDE;
- virtual void drawRect(const SkRect&, const SkPaint& paint) SK_OVERRIDE;
virtual void drawRRect(const SkRRect&, const SkPaint& paint) SK_OVERRIDE;
- virtual void drawPath(const SkPath& path, const SkPaint& paint) SK_OVERRIDE;
virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
const SkPaint* paint) SK_OVERRIDE;
virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src,
@@ -126,6 +124,10 @@ public:
virtual void addComment(const char* kywd, const char* value) SK_OVERRIDE;
virtual void endCommentGroup() SK_OVERRIDE;
+protected:
+ virtual void onDrawRect(const SkRect&, const SkPaint& paint) SK_OVERRIDE;
+ virtual void onDrawPath(const SkPath& path, const SkPaint& paint) SK_OVERRIDE;
+
private:
Dumper* fDumper;
int fNestLevel; // for nesting recursive elements like pictures
diff --git a/include/utils/SkLuaCanvas.h b/include/utils/SkLuaCanvas.h
index c34d134423..b604d3c92c 100644
--- a/include/utils/SkLuaCanvas.h
+++ b/include/utils/SkLuaCanvas.h
@@ -42,9 +42,7 @@ public:
virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[],
const SkPaint& paint) SK_OVERRIDE;
virtual void drawOval(const SkRect&, const SkPaint& paint) SK_OVERRIDE;
- virtual void drawRect(const SkRect&, const SkPaint& paint) SK_OVERRIDE;
virtual void drawRRect(const SkRRect&, const SkPaint& paint) SK_OVERRIDE;
- virtual void drawPath(const SkPath& path, const SkPaint& paint) SK_OVERRIDE;
virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
const SkPaint* paint) SK_OVERRIDE;
virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src,
@@ -72,6 +70,10 @@ public:
const SkPaint& paint) SK_OVERRIDE;
virtual void drawData(const void* data, size_t length) SK_OVERRIDE;
+protected:
+ virtual void onDrawRect(const SkRect&, const SkPaint& paint) SK_OVERRIDE;
+ virtual void onDrawPath(const SkPath& path, const SkPaint& paint) SK_OVERRIDE;
+
private:
lua_State* fL;
SkString fFunc;
diff --git a/include/utils/SkNWayCanvas.h b/include/utils/SkNWayCanvas.h
index c48bcab3c4..6791c51d58 100644
--- a/include/utils/SkNWayCanvas.h
+++ b/include/utils/SkNWayCanvas.h
@@ -43,9 +43,7 @@ public:
virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[],
const SkPaint&) SK_OVERRIDE;
virtual void drawOval(const SkRect&, const SkPaint&) SK_OVERRIDE;
- virtual void drawRect(const SkRect&, const SkPaint&) SK_OVERRIDE;
virtual void drawRRect(const SkRRect&, const SkPaint&) SK_OVERRIDE;
- virtual void drawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE;
virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
const SkPaint*) SK_OVERRIDE;
virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src,
@@ -80,6 +78,8 @@ public:
virtual void endCommentGroup() SK_OVERRIDE;
protected:
+ virtual void onDrawRect(const SkRect&, const SkPaint&) SK_OVERRIDE;
+ virtual void onDrawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE;
SkTDArray<SkCanvas*> fList;
class Iter;
diff --git a/include/utils/SkProxyCanvas.h b/include/utils/SkProxyCanvas.h
index 383e532fbf..54cdc3b2b0 100644
--- a/include/utils/SkProxyCanvas.h
+++ b/include/utils/SkProxyCanvas.h
@@ -48,9 +48,7 @@ public:
virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[],
const SkPaint& paint) SK_OVERRIDE;
virtual void drawOval(const SkRect&, const SkPaint& paint) SK_OVERRIDE;
- virtual void drawRect(const SkRect&, const SkPaint& paint) SK_OVERRIDE;
virtual void drawRRect(const SkRRect&, const SkPaint& paint) SK_OVERRIDE;
- virtual void drawPath(const SkPath& path, const SkPaint& paint) SK_OVERRIDE;
virtual void drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
const SkPaint* paint = NULL) SK_OVERRIDE;
virtual void drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src,
@@ -85,6 +83,10 @@ public:
virtual SkBounder* setBounder(SkBounder* bounder) SK_OVERRIDE;
virtual SkDrawFilter* setDrawFilter(SkDrawFilter* filter) SK_OVERRIDE;
+protected:
+ virtual void onDrawRect(const SkRect&, const SkPaint& paint) SK_OVERRIDE;
+ virtual void onDrawPath(const SkPath& path, const SkPaint& paint) SK_OVERRIDE;
+
private:
SkCanvas* fProxy;
diff --git a/src/core/SkBBoxRecord.cpp b/src/core/SkBBoxRecord.cpp
index 1e6c69ba09..08ae990135 100644
--- a/src/core/SkBBoxRecord.cpp
+++ b/src/core/SkBBoxRecord.cpp
@@ -20,23 +20,23 @@ void SkBBoxRecord::drawRRect(const SkRRect& rrect, const SkPaint& paint) {
}
}
-void SkBBoxRecord::drawRect(const SkRect& rect, const SkPaint& paint) {
+void SkBBoxRecord::onDrawRect(const SkRect& rect, const SkPaint& paint) {
if (this->transformBounds(rect, &paint)) {
- INHERITED::drawRect(rect, paint);
+ INHERITED::onDrawRect(rect, paint);
}
}
-void SkBBoxRecord::drawPath(const SkPath& path, const SkPaint& paint) {
+void SkBBoxRecord::onDrawPath(const SkPath& path, const SkPaint& paint) {
if (path.isInverseFillType()) {
// If path is inverse filled, use the current clip bounds as the
// path's device-space bounding box.
SkIRect clipBounds;
if (this->getClipDeviceBounds(&clipBounds)) {
this->handleBBox(SkRect::MakeFromIRect(clipBounds));
- INHERITED::drawPath(path, paint);
+ INHERITED::onDrawPath(path, paint);
}
} else if (this->transformBounds(path.getBounds(), &paint)) {
- INHERITED::drawPath(path, paint);
+ INHERITED::onDrawPath(path, paint);
}
}
diff --git a/src/core/SkBBoxRecord.h b/src/core/SkBBoxRecord.h
index fa8b282247..e95ece4954 100644
--- a/src/core/SkBBoxRecord.h
+++ b/src/core/SkBBoxRecord.h
@@ -31,8 +31,6 @@ public:
virtual void drawOval(const SkRect& rect, const SkPaint& paint) SK_OVERRIDE;
virtual void drawRRect(const SkRRect& rrect, const SkPaint& paint) SK_OVERRIDE;
- virtual void drawRect(const SkRect& rect, const SkPaint& paint) SK_OVERRIDE;
- virtual void drawPath(const SkPath& path, const SkPaint& paint) SK_OVERRIDE;
virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[],
const SkPaint& paint) SK_OVERRIDE;
virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE;
@@ -65,6 +63,10 @@ public:
const SkPaint& paint) SK_OVERRIDE;
virtual void drawPicture(SkPicture& picture) SK_OVERRIDE;
+protected:
+ virtual void onDrawRect(const SkRect& rect, const SkPaint& paint) SK_OVERRIDE;
+ virtual void onDrawPath(const SkPath& path, const SkPaint& paint) SK_OVERRIDE;
+
private:
/**
* Takes a bounding box in current canvas view space, accounts for stroking and effects, and
diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp
index 6036186fc2..511f39f6a9 100644
--- a/src/core/SkCanvas.cpp
+++ b/src/core/SkCanvas.cpp
@@ -1631,7 +1631,7 @@ void SkCanvas::drawPoints(PointMode mode, size_t count, const SkPoint pts[],
LOOPER_END
}
-void SkCanvas::drawRect(const SkRect& r, const SkPaint& paint) {
+void SkCanvas::onDrawRect(const SkRect& r, const SkPaint& paint) {
CHECK_SHADER_NOSETCONTEXT(paint);
if (paint.canComputeFastBounds()) {
@@ -1699,7 +1699,7 @@ void SkCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) {
}
-void SkCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
+void SkCanvas::onDrawPath(const SkPath& path, const SkPaint& paint) {
CHECK_SHADER_NOSETCONTEXT(paint);
if (!path.isFinite()) {
diff --git a/src/core/SkPictureRecord.cpp b/src/core/SkPictureRecord.cpp
index f7a7633faa..bf7a34eef0 100644
--- a/src/core/SkPictureRecord.cpp
+++ b/src/core/SkPictureRecord.cpp
@@ -868,7 +868,7 @@ void SkPictureRecord::drawOval(const SkRect& oval, const SkPaint& paint) {
this->validate(initialOffset, size);
}
-void SkPictureRecord::drawRect(const SkRect& rect, const SkPaint& paint) {
+void SkPictureRecord::onDrawRect(const SkRect& rect, const SkPaint& paint) {
// op + paint index + rect
uint32_t size = 2 * kUInt32Size + sizeof(rect);
size_t initialOffset = this->addDraw(DRAW_RECT, &size);
@@ -895,7 +895,7 @@ void SkPictureRecord::drawRRect(const SkRRect& rrect, const SkPaint& paint) {
}
}
-void SkPictureRecord::drawPath(const SkPath& path, const SkPaint& paint) {
+void SkPictureRecord::onDrawPath(const SkPath& path, const SkPaint& paint) {
// op + paint index + path index
uint32_t size = 3 * kUInt32Size;
size_t initialOffset = this->addDraw(DRAW_PATH, &size);
diff --git a/src/core/SkPictureRecord.h b/src/core/SkPictureRecord.h
index d80182cf8c..33229cf45d 100644
--- a/src/core/SkPictureRecord.h
+++ b/src/core/SkPictureRecord.h
@@ -53,9 +53,7 @@ public:
virtual void drawPoints(PointMode, size_t count, const SkPoint pts[],
const SkPaint&) SK_OVERRIDE;
virtual void drawOval(const SkRect&, const SkPaint&) SK_OVERRIDE;
- virtual void drawRect(const SkRect&, const SkPaint&) SK_OVERRIDE;
virtual void drawRRect(const SkRRect&, const SkPaint&) SK_OVERRIDE;
- virtual void drawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE;
virtual void drawBitmap(const SkBitmap&, SkScalar left, SkScalar top,
const SkPaint*) SK_OVERRIDE;
virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src,
@@ -106,6 +104,10 @@ public:
void beginRecording();
void endRecording();
+protected:
+ virtual void onDrawRect(const SkRect&, const SkPaint&) SK_OVERRIDE;
+ virtual void onDrawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE;
+
private:
void handleOptimization(int opt);
void recordRestoreOffsetPlaceholder(SkRegion::Op);
diff --git a/src/pipe/SkGPipeWrite.cpp b/src/pipe/SkGPipeWrite.cpp
index 57d4a0fdc3..f14cdacc9b 100644
--- a/src/pipe/SkGPipeWrite.cpp
+++ b/src/pipe/SkGPipeWrite.cpp
@@ -224,9 +224,7 @@ public:
virtual void drawPoints(PointMode, size_t count, const SkPoint pts[],
const SkPaint&) SK_OVERRIDE;
virtual void drawOval(const SkRect&, const SkPaint&) SK_OVERRIDE;
- virtual void drawRect(const SkRect& rect, const SkPaint&) SK_OVERRIDE;
virtual void drawRRect(const SkRRect&, const SkPaint&) SK_OVERRIDE;
- virtual void drawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE;
virtual void drawBitmap(const SkBitmap&, SkScalar left, SkScalar top,
const SkPaint*) SK_OVERRIDE;
virtual void drawBitmapRectToRect(const SkBitmap&, const SkRect* src,
@@ -264,6 +262,11 @@ public:
* according to slot.
*/
bool shuttleBitmap(const SkBitmap&, int32_t slot);
+
+protected:
+ virtual void onDrawRect(const SkRect& rect, const SkPaint&) SK_OVERRIDE;
+ virtual void onDrawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE;
+
private:
enum {
kNoSaveLayer = -1,
@@ -715,7 +718,7 @@ void SkGPipeCanvas::drawOval(const SkRect& rect, const SkPaint& paint) {
}
}
-void SkGPipeCanvas::drawRect(const SkRect& rect, const SkPaint& paint) {
+void SkGPipeCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) {
NOTIFY_SETUP(this);
this->writePaint(paint);
if (this->needOpBytes(sizeof(SkRect))) {
@@ -733,7 +736,7 @@ void SkGPipeCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) {
}
}
-void SkGPipeCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
+void SkGPipeCanvas::onDrawPath(const SkPath& path, const SkPaint& paint) {
NOTIFY_SETUP(this);
this->writePaint(paint);
if (this->needOpBytes(path.writeToMemory(NULL))) {
diff --git a/src/utils/SkDeferredCanvas.cpp b/src/utils/SkDeferredCanvas.cpp
index ce5eb5e6ab..bc00ab00d3 100644
--- a/src/utils/SkDeferredCanvas.cpp
+++ b/src/utils/SkDeferredCanvas.cpp
@@ -846,7 +846,7 @@ void SkDeferredCanvas::drawOval(const SkRect& rect, const SkPaint& paint) {
this->recordedDrawCommand();
}
-void SkDeferredCanvas::drawRect(const SkRect& rect, const SkPaint& paint) {
+void SkDeferredCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) {
if (fDeferredDrawing && this->isFullFrame(&rect, &paint) &&
isPaintOpaque(&paint)) {
this->getDeferredDevice()->skipPendingCommands();
@@ -869,7 +869,7 @@ void SkDeferredCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) {
}
}
-void SkDeferredCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
+void SkDeferredCanvas::onDrawPath(const SkPath& path, const SkPaint& paint) {
AutoImmediateDrawIfNeeded autoDraw(*this, &paint);
this->drawingCanvas()->drawPath(path, paint);
this->recordedDrawCommand();
diff --git a/src/utils/SkDumpCanvas.cpp b/src/utils/SkDumpCanvas.cpp
index 0e1a2321e1..6658ee2a93 100644
--- a/src/utils/SkDumpCanvas.cpp
+++ b/src/utils/SkDumpCanvas.cpp
@@ -323,7 +323,7 @@ void SkDumpCanvas::drawOval(const SkRect& rect, const SkPaint& paint) {
this->dump(kDrawOval_Verb, &paint, "drawOval(%s)", str.c_str());
}
-void SkDumpCanvas::drawRect(const SkRect& rect, const SkPaint& paint) {
+void SkDumpCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) {
SkString str;
toString(rect, &str);
this->dump(kDrawRect_Verb, &paint, "drawRect(%s)", str.c_str());
@@ -335,7 +335,7 @@ void SkDumpCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) {
this->dump(kDrawRRect_Verb, &paint, "drawRRect(%s)", str.c_str());
}
-void SkDumpCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
+void SkDumpCanvas::onDrawPath(const SkPath& path, const SkPaint& paint) {
SkString str;
toString(path, &str);
this->dump(kDrawPath_Verb, &paint, "drawPath(%s)", str.c_str());
diff --git a/src/utils/SkLuaCanvas.cpp b/src/utils/SkLuaCanvas.cpp
index c5ec006913..3b74596a8e 100644
--- a/src/utils/SkLuaCanvas.cpp
+++ b/src/utils/SkLuaCanvas.cpp
@@ -187,7 +187,7 @@ void SkLuaCanvas::drawOval(const SkRect& rect, const SkPaint& paint) {
lua.pushPaint(paint, "paint");
}
-void SkLuaCanvas::drawRect(const SkRect& rect, const SkPaint& paint) {
+void SkLuaCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) {
AUTO_LUA("drawRect");
lua.pushRect(rect, "rect");
lua.pushPaint(paint, "paint");
@@ -199,7 +199,7 @@ void SkLuaCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) {
lua.pushPaint(paint, "paint");
}
-void SkLuaCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
+void SkLuaCanvas::onDrawPath(const SkPath& path, const SkPaint& paint) {
AUTO_LUA("drawPath");
lua.pushPath(path, "path");
lua.pushPaint(paint, "paint");
diff --git a/src/utils/SkNWayCanvas.cpp b/src/utils/SkNWayCanvas.cpp
index eeb1bc2a09..8075bc4f35 100644
--- a/src/utils/SkNWayCanvas.cpp
+++ b/src/utils/SkNWayCanvas.cpp
@@ -190,7 +190,7 @@ void SkNWayCanvas::drawOval(const SkRect& rect, const SkPaint& paint) {
}
}
-void SkNWayCanvas::drawRect(const SkRect& rect, const SkPaint& paint) {
+void SkNWayCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) {
Iter iter(fList);
while (iter.next()) {
iter->drawRect(rect, paint);
@@ -204,7 +204,7 @@ void SkNWayCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) {
}
}
-void SkNWayCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
+void SkNWayCanvas::onDrawPath(const SkPath& path, const SkPaint& paint) {
Iter iter(fList);
while (iter.next()) {
iter->drawPath(path, paint);
diff --git a/src/utils/SkProxyCanvas.cpp b/src/utils/SkProxyCanvas.cpp
index f530313b16..3bc9652d29 100644
--- a/src/utils/SkProxyCanvas.cpp
+++ b/src/utils/SkProxyCanvas.cpp
@@ -87,7 +87,7 @@ void SkProxyCanvas::drawOval(const SkRect& rect, const SkPaint& paint) {
fProxy->drawOval(rect, paint);
}
-void SkProxyCanvas::drawRect(const SkRect& rect, const SkPaint& paint) {
+void SkProxyCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) {
fProxy->drawRect(rect, paint);
}
@@ -95,7 +95,7 @@ void SkProxyCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) {
fProxy->drawRRect(rrect, paint);
}
-void SkProxyCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
+void SkProxyCanvas::onDrawPath(const SkPath& path, const SkPaint& paint) {
fProxy->drawPath(path, paint);
}
diff --git a/src/utils/debugger/SkDebugCanvas.cpp b/src/utils/debugger/SkDebugCanvas.cpp
index 53b531cf2d..41d268368d 100644
--- a/src/utils/debugger/SkDebugCanvas.cpp
+++ b/src/utils/debugger/SkDebugCanvas.cpp
@@ -363,7 +363,7 @@ void SkDebugCanvas::drawPaint(const SkPaint& paint) {
addDrawCommand(new SkDrawPaintCommand(paint));
}
-void SkDebugCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
+void SkDebugCanvas::onDrawPath(const SkPath& path, const SkPaint& paint) {
addDrawCommand(new SkDrawPathCommand(path, paint));
}
@@ -387,7 +387,7 @@ void SkDebugCanvas::drawPosTextH(const void* text, size_t byteLength,
new SkDrawPosTextHCommand(text, byteLength, xpos, constY, paint));
}
-void SkDebugCanvas::drawRect(const SkRect& rect, const SkPaint& paint) {
+void SkDebugCanvas::onDrawRect(const SkRect& rect, const SkPaint& paint) {
// NOTE(chudy): Messing up when renamed to DrawRect... Why?
addDrawCommand(new SkDrawRectCommand(rect, paint));
}
diff --git a/src/utils/debugger/SkDebugCanvas.h b/src/utils/debugger/SkDebugCanvas.h
index 7d1166286a..93444ac10b 100644
--- a/src/utils/debugger/SkDebugCanvas.h
+++ b/src/utils/debugger/SkDebugCanvas.h
@@ -189,8 +189,6 @@ public:
virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE;
- virtual void drawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE;
-
virtual void drawPicture(SkPicture& picture) SK_OVERRIDE;
virtual void drawPoints(PointMode, size_t count, const SkPoint pts[],
@@ -203,8 +201,6 @@ public:
const SkScalar xpos[], SkScalar constY,
const SkPaint&) SK_OVERRIDE;
- virtual void drawRect(const SkRect& rect, const SkPaint&) SK_OVERRIDE;
-
virtual void drawRRect(const SkRRect& rrect, const SkPaint& paint) SK_OVERRIDE;
virtual void drawSprite(const SkBitmap&, int left, int top,
@@ -242,6 +238,11 @@ public:
static const int kVizImageHeight = 256;
static const int kVizImageWidth = 256;
+protected:
+ virtual void onDrawRect(const SkRect& rect, const SkPaint&) SK_OVERRIDE;
+
+ virtual void onDrawPath(const SkPath& path, const SkPaint&) SK_OVERRIDE;
+
private:
SkTDArray<SkDrawCommand*> fCommandVector;
int fHeight;
diff --git a/tests/TileGridTest.cpp b/tests/TileGridTest.cpp
index 8f5b18a6e9..3466871220 100644
--- a/tests/TileGridTest.cpp
+++ b/tests/TileGridTest.cpp
@@ -25,13 +25,14 @@ public:
MockCanvas(SkBaseDevice* device) : SkCanvas(device)
{}
- virtual void drawRect(const SkRect& rect, const SkPaint&)
+ SkTDArray<SkRect> fRects;
+
+protected:
+ virtual void onDrawRect(const SkRect& rect, const SkPaint&)
{
// This capture occurs before quick reject.
fRects.push(rect);
}
-
- SkTDArray<SkRect> fRects;
};
class TileGridTest {