From ad254fee73ad70a45acba69dccb9b65f88c3a92a Mon Sep 17 00:00:00 2001 From: "bsalomon@google.com" Date: Tue, 22 Oct 2013 13:19:12 +0000 Subject: 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 --- expectations/gm/ignored-tests.txt | 8 ++++++++ experimental/PdfViewer/SkNulCanvas.h | 4 ++-- experimental/SimpleCocoaApp/SimpleApp.mm | 2 +- include/core/SkCanvas.h | 26 ++++++++++++++++++++++---- include/utils/SkDeferredCanvas.h | 5 ++--- include/utils/SkDumpCanvas.h | 6 ++++-- include/utils/SkLuaCanvas.h | 6 ++++-- include/utils/SkNWayCanvas.h | 4 ++-- include/utils/SkProxyCanvas.h | 6 ++++-- src/core/SkBBoxRecord.cpp | 10 +++++----- src/core/SkBBoxRecord.h | 6 ++++-- src/core/SkCanvas.cpp | 4 ++-- src/core/SkPictureRecord.cpp | 4 ++-- src/core/SkPictureRecord.h | 6 ++++-- src/pipe/SkGPipeWrite.cpp | 11 +++++++---- src/utils/SkDeferredCanvas.cpp | 4 ++-- src/utils/SkDumpCanvas.cpp | 4 ++-- src/utils/SkLuaCanvas.cpp | 4 ++-- src/utils/SkNWayCanvas.cpp | 4 ++-- src/utils/SkProxyCanvas.cpp | 4 ++-- src/utils/debugger/SkDebugCanvas.cpp | 4 ++-- src/utils/debugger/SkDebugCanvas.h | 9 +++++---- tests/TileGridTest.cpp | 7 ++++--- 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 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 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 fRects; + +protected: + virtual void onDrawRect(const SkRect& rect, const SkPaint&) { // This capture occurs before quick reject. fRects.push(rect); } - - SkTDArray fRects; }; class TileGridTest { -- cgit v1.2.3