diff options
author | robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-02-28 14:35:45 +0000 |
---|---|---|
committer | robertphillips@google.com <robertphillips@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81> | 2014-02-28 14:35:45 +0000 |
commit | 392c9be344549e809d0468abafdbeb6e32135bcd (patch) | |
tree | 20463ae97057623977e1d95c9d284c3db59330e8 /include | |
parent | 0e530754d36d942f6408c65cc93ba0a8ccd93610 (diff) |
add new onClip* methods to SkCanvas
https://codereview.chromium.org/183453002/
git-svn-id: http://skia.googlecode.com/svn/trunk@13620 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include')
-rw-r--r-- | include/core/SkCanvas.h | 25 | ||||
-rw-r--r-- | include/utils/SkDeferredCanvas.h | 13 | ||||
-rw-r--r-- | include/utils/SkDumpCanvas.h | 13 | ||||
-rw-r--r-- | include/utils/SkLuaCanvas.h | 11 | ||||
-rw-r--r-- | include/utils/SkNWayCanvas.h | 10 | ||||
-rw-r--r-- | include/utils/SkProxyCanvas.h | 11 |
6 files changed, 44 insertions, 39 deletions
diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h index b73a1e48ca..27ff8bb493 100644 --- a/include/core/SkCanvas.h +++ b/include/core/SkCanvas.h @@ -481,10 +481,9 @@ public: specified region. This does not intersect or in any other way account for the existing clip region. @param deviceRgn The region to copy into the current clip. - @return true if the new clip region is non-empty */ - bool setClipRegion(const SkRegion& deviceRgn) { - return this->clipRegion(deviceRgn, SkRegion::kReplace_Op); + void setClipRegion(const SkRegion& deviceRgn) { + this->clipRegion(deviceRgn, SkRegion::kReplace_Op); } /** Return true if the specified rectangle, after being transformed by the @@ -548,13 +547,13 @@ public: in a way similar to quickReject, in that it tells you that drawing outside of these bounds will be clipped out. */ - bool getClipBounds(SkRect* bounds) const; + virtual bool getClipBounds(SkRect* bounds) const; /** Return the bounds of the current clip, in device coordinates; returns true if non-empty. Maybe faster than getting the clip explicitly and then taking its bounds. */ - bool getClipDeviceBounds(SkIRect* bounds) const; + virtual bool getClipDeviceBounds(SkIRect* bounds) const; /** Fill the entire canvas' bitmap (restricted to the current clip) with the @@ -1031,7 +1030,7 @@ public: * result, subsequent calls will be cheap (until the clip state changes, * which can happen on any clip..() or restore() call. */ - bool isClipEmpty() const; + virtual bool isClipEmpty() const; /** Return the current matrix on the canvas. This does not account for the translate in any of the devices. @@ -1048,7 +1047,7 @@ public: /** Returns a description of the total clip; may be cheaper than getting the clip and querying it directly. */ - ClipType getClipType() const; + virtual ClipType getClipType() const; /** DEPRECATED -- need to move this guy to private/friend * Return the current device clip (concatenation of all clip calls). @@ -1130,6 +1129,16 @@ protected: virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&); + enum ClipEdgeStyle { + kHard_ClipEdgeStyle, + kSoft_ClipEdgeStyle + }; + + virtual void onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle edgeStyle); + virtual void onClipRRect(const SkRRect& rrect, SkRegion::Op op, ClipEdgeStyle edgeStyle); + virtual void onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyle edgeStyle); + virtual void onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op); + // Returns the canvas to be used by DrawIter. Default implementation // returns this. Subclasses that encapsulate an indirect canvas may // need to overload this method. The impl must keep track of this, as it @@ -1146,7 +1155,7 @@ protected: // Called by child classes that override clipPath and clipRRect to only // track fast conservative clip bounds, rather than exact clips. - bool updateClipConservativelyUsingBounds(const SkRect&, SkRegion::Op, + void updateClipConservativelyUsingBounds(const SkRect&, SkRegion::Op, bool inverseFilled); // notify our surface (if we have one) that we are about to draw, so it diff --git a/include/utils/SkDeferredCanvas.h b/include/utils/SkDeferredCanvas.h index d028282ef2..b26ddbc952 100644 --- a/include/utils/SkDeferredCanvas.h +++ b/include/utils/SkDeferredCanvas.h @@ -149,14 +149,6 @@ public: virtual bool skew(SkScalar sx, SkScalar sy) SK_OVERRIDE; virtual bool concat(const SkMatrix& matrix) SK_OVERRIDE; virtual void setMatrix(const SkMatrix& matrix) SK_OVERRIDE; - virtual bool clipRect(const SkRect& rect, SkRegion::Op op, - bool doAntiAlias) SK_OVERRIDE; - virtual bool clipRRect(const SkRRect& rect, SkRegion::Op op, - bool doAntiAlias) SK_OVERRIDE; - virtual bool clipPath(const SkPath& path, SkRegion::Op op, - bool doAntiAlias) SK_OVERRIDE; - virtual bool clipRegion(const SkRegion& deviceRgn, - SkRegion::Op op) SK_OVERRIDE; virtual void clear(SkColor) SK_OVERRIDE; virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE; virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[], @@ -204,6 +196,11 @@ protected: virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) SK_OVERRIDE; + virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE; + public: class NotificationClient { public: diff --git a/include/utils/SkDumpCanvas.h b/include/utils/SkDumpCanvas.h index fe4d175354..5e3249cbee 100644 --- a/include/utils/SkDumpCanvas.h +++ b/include/utils/SkDumpCanvas.h @@ -86,12 +86,6 @@ public: virtual bool concat(const SkMatrix& matrix) SK_OVERRIDE; virtual void setMatrix(const SkMatrix& matrix) SK_OVERRIDE; - virtual bool clipRect(const SkRect&, SkRegion::Op, bool) SK_OVERRIDE; - virtual bool clipRRect(const SkRRect&, SkRegion::Op, bool) SK_OVERRIDE; - virtual bool clipPath(const SkPath&, SkRegion::Op, bool) SK_OVERRIDE; - virtual bool clipRegion(const SkRegion& deviceRgn, - SkRegion::Op) SK_OVERRIDE; - virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE; virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint) SK_OVERRIDE; @@ -134,6 +128,13 @@ protected: virtual void onPushCull(const SkRect& cullRect) SK_OVERRIDE; virtual void onPopCull() SK_OVERRIDE; + virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE; + + static const char* EdgeStyleToAAString(ClipEdgeStyle edgeStyle); + private: Dumper* fDumper; int fNestLevel; // for nesting recursive elements like pictures diff --git a/include/utils/SkLuaCanvas.h b/include/utils/SkLuaCanvas.h index be1cf4d049..a4f30bc349 100644 --- a/include/utils/SkLuaCanvas.h +++ b/include/utils/SkLuaCanvas.h @@ -32,12 +32,6 @@ public: virtual bool concat(const SkMatrix& matrix) SK_OVERRIDE; virtual void setMatrix(const SkMatrix& matrix) SK_OVERRIDE; - virtual bool clipRect(const SkRect&, SkRegion::Op, bool) SK_OVERRIDE; - virtual bool clipRRect(const SkRRect&, SkRegion::Op, bool) SK_OVERRIDE; - virtual bool clipPath(const SkPath&, SkRegion::Op, bool) SK_OVERRIDE; - virtual bool clipRegion(const SkRegion& deviceRgn, - SkRegion::Op) SK_OVERRIDE; - virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE; virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint) SK_OVERRIDE; @@ -75,6 +69,11 @@ public: protected: virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) SK_OVERRIDE; + virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE; + private: lua_State* fL; SkString fFunc; diff --git a/include/utils/SkNWayCanvas.h b/include/utils/SkNWayCanvas.h index d83dd6ed77..84f4b4a177 100644 --- a/include/utils/SkNWayCanvas.h +++ b/include/utils/SkNWayCanvas.h @@ -33,11 +33,6 @@ public: virtual bool skew(SkScalar sx, SkScalar sy) SK_OVERRIDE; virtual bool concat(const SkMatrix& matrix) SK_OVERRIDE; virtual void setMatrix(const SkMatrix& matrix) SK_OVERRIDE; - virtual bool clipRect(const SkRect&, SkRegion::Op, bool) SK_OVERRIDE; - virtual bool clipRRect(const SkRRect&, SkRegion::Op, bool) SK_OVERRIDE; - virtual bool clipPath(const SkPath&, SkRegion::Op, bool) SK_OVERRIDE; - virtual bool clipRegion(const SkRegion& deviceRgn, - SkRegion::Op) SK_OVERRIDE; virtual void clear(SkColor) SK_OVERRIDE; virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE; virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[], @@ -88,6 +83,11 @@ protected: virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) SK_OVERRIDE; + virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE; + class Iter; private: diff --git a/include/utils/SkProxyCanvas.h b/include/utils/SkProxyCanvas.h index f192e54a51..d682ba3b44 100644 --- a/include/utils/SkProxyCanvas.h +++ b/include/utils/SkProxyCanvas.h @@ -38,12 +38,6 @@ public: virtual bool concat(const SkMatrix& matrix) SK_OVERRIDE; virtual void setMatrix(const SkMatrix& matrix) SK_OVERRIDE; - virtual bool clipRect(const SkRect&, SkRegion::Op, bool) SK_OVERRIDE; - virtual bool clipRRect(const SkRRect&, SkRegion::Op, bool) SK_OVERRIDE; - virtual bool clipPath(const SkPath&, SkRegion::Op, bool) SK_OVERRIDE; - virtual bool clipRegion(const SkRegion& deviceRgn, - SkRegion::Op op = SkRegion::kIntersect_Op) SK_OVERRIDE; - virtual void drawPaint(const SkPaint& paint) SK_OVERRIDE; virtual void drawPoints(PointMode mode, size_t count, const SkPoint pts[], const SkPaint& paint) SK_OVERRIDE; @@ -88,6 +82,11 @@ public: protected: virtual void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) SK_OVERRIDE; + virtual void onClipRect(const SkRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipRRect(const SkRRect&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipPath(const SkPath&, SkRegion::Op, ClipEdgeStyle) SK_OVERRIDE; + virtual void onClipRegion(const SkRegion&, SkRegion::Op) SK_OVERRIDE; + private: SkCanvas* fProxy; |