reverting r3259 because of gm/test failure.

git-svn-id: http://skia.googlecode.com/svn/trunk@3260 2bbb7eff-a529-9590-31e7-b0007b416f81
This commit is contained in:
djsollen@google.com 2012-02-24 21:21:51 +00:00
parent 42bbef71c7
commit 3cc0d8a6f0
2 changed files with 25 additions and 7 deletions

View File

@ -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

View File

@ -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) {