From 3cc0d8a6f0feb66a60d3edac12c5a12a0e92ae93 Mon Sep 17 00:00:00 2001 From: "djsollen@google.com" Date: Fri, 24 Feb 2012 21:21:51 +0000 Subject: [PATCH] reverting r3259 because of gm/test failure. git-svn-id: http://skia.googlecode.com/svn/trunk@3260 2bbb7eff-a529-9590-31e7-b0007b416f81 --- include/core/SkCanvas.h | 8 +------- src/core/SkCanvas.cpp | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/include/core/SkCanvas.h b/include/core/SkCanvas.h index aa400d6..058979d 100644 --- a/include/core/SkCanvas.h +++ b/include/core/SkCanvas.h @@ -429,13 +429,7 @@ public: @return true if the horizontal band is completely clipped out (i.e. does not intersect the current clip) */ - bool quickRejectY(SkScalar top, SkScalar bottom, EdgeType et) const { - SkASSERT(SkScalarToCompareType(top) >= SkScalarToCompareType(bottom)); - - const SkRectCompareType& clipR = this->getLocalClipBoundsCompareType(et); - return SkScalarToCompareType(top) >= clipR.fBottom || - SkScalarToCompareType(bottom) <= clipR.fTop; - } + bool quickRejectY(SkScalar top, SkScalar bottom, EdgeType et) const; /** Return the bounds of the current clip (in local coordinates) in the bounds parameter, and return true if it is non-empty. This can be useful diff --git a/src/core/SkCanvas.cpp b/src/core/SkCanvas.cpp index 984549a..6e061c2 100644 --- a/src/core/SkCanvas.cpp +++ b/src/core/SkCanvas.cpp @@ -1184,6 +1184,30 @@ bool SkCanvas::quickReject(const SkPath& path, EdgeType et) const { return path.isEmpty() || this->quickReject(path.getBounds(), et); } +bool SkCanvas::quickRejectY(SkScalar top, SkScalar bottom, EdgeType et) const { + /* current impl ignores edgetype, and relies on + getLocalClipBoundsCompareType(), which always returns a value assuming + antialiasing (worst case) + */ + + if (fMCRec->fRasterClip->isEmpty()) { + return true; + } + + SkScalarCompareType userT = SkScalarToCompareType(top); + SkScalarCompareType userB = SkScalarToCompareType(bottom); + + // check for invalid user Y coordinates (i.e. empty) + // reed: why do we need to do this check, since it slows us down? + if (userT >= userB) { + return true; + } + + // check if we are above or below the local clip bounds + const SkRectCompareType& clipR = this->getLocalClipBoundsCompareType(); + return userT >= clipR.fBottom || userB <= clipR.fTop; +} + static inline int pinIntForScalar(int x) { #ifdef SK_SCALAR_IS_FIXED if (x < SK_MinS16) { -- 2.7.4