Revert of It is dangerous to ignore SkRect::intersect's return value (patchset #6 id:100001 of https://codereview.chromium.org/833943002/)

Reason for revert:
Still more Chromium clean up to do

Original issue's description:
> It is dangerous to ignore SkRect::intersect's return value
>
> Committed: https://skia.googlesource.com/skia/+/152f524fd325b7776b01f84afbfe2fa071648a05

TBR=reed@google.com
NOTREECHECKS=true
NOTRY=true

Review URL: https://codereview.chromium.org/825983005
This commit is contained in:
robertphillips 2015-01-07 09:12:43 -08:00 committed by Commit bot
parent 7e44bb1916
commit 690fc594f1
7 changed files with 18 additions and 32 deletions

View File

@ -704,10 +704,8 @@ public:
SkRect content = SkRect::MakeWH(SkIntToScalar(pageSize.width()),
SkIntToScalar(pageSize.height()));
initialTransform.mapRect(&content);
if (!content.intersect(0, 0, SkIntToScalar(pageSize.width()),
SkIntToScalar(pageSize.height()))) {
content.setEmpty();
}
content.intersect(0, 0, SkIntToScalar(pageSize.width()),
SkIntToScalar(pageSize.height()));
SkISize contentSize =
SkISize::Make(SkScalarRoundToInt(content.width()),
SkScalarRoundToInt(content.height()));

View File

@ -82,9 +82,8 @@ protected:
scaleMatrix.setScale(scale, scale);
SkRect cropRectFloat;
scaleMatrix.mapRect(&cropRectFloat, SkRect::Make(cropRect));
if (clipRect.intersect(cropRectFloat)) {
canvas->drawRect(clipRect, strokePaint);
}
clipRect.intersect(cropRectFloat);
canvas->drawRect(clipRect, strokePaint);
}
virtual void onDraw(SkCanvas* canvas) {

View File

@ -267,7 +267,7 @@ struct SK_API SkIRect {
intersection, otherwise return false and do not change this rectangle.
If either rectangle is empty, do nothing and return false.
*/
bool SK_WARN_UNUSED_RESULT intersect(const SkIRect& r) {
bool intersect(const SkIRect& r) {
SkASSERT(&r);
return this->intersect(r.fLeft, r.fTop, r.fRight, r.fBottom);
}
@ -276,7 +276,7 @@ struct SK_API SkIRect {
that intersection, otherwise return false and do not change this
rectangle. If either rectangle is empty, do nothing and return false.
*/
bool SK_WARN_UNUSED_RESULT intersect(const SkIRect& a, const SkIRect& b) {
bool intersect(const SkIRect& a, const SkIRect& b) {
if (!a.isEmpty() && !b.isEmpty() &&
a.fLeft < b.fRight && b.fLeft < a.fRight &&
@ -296,7 +296,7 @@ struct SK_API SkIRect {
If either is, then the return result is undefined. In the debug build,
we assert that both rectangles are non-empty.
*/
bool SK_WARN_UNUSED_RESULT intersectNoEmptyCheck(const SkIRect& a, const SkIRect& b) {
bool intersectNoEmptyCheck(const SkIRect& a, const SkIRect& b) {
SkASSERT(!a.isEmpty() && !b.isEmpty());
if (a.fLeft < b.fRight && b.fLeft < a.fRight &&
@ -315,8 +315,7 @@ struct SK_API SkIRect {
otherwise return false and do not change this rectangle.
If either rectangle is empty, do nothing and return false.
*/
bool SK_WARN_UNUSED_RESULT intersect(int32_t left, int32_t top,
int32_t right, int32_t bottom) {
bool intersect(int32_t left, int32_t top, int32_t right, int32_t bottom) {
if (left < right && top < bottom && !this->isEmpty() &&
fLeft < right && left < fRight && fTop < bottom && top < fBottom) {
if (fLeft < left) fLeft = left;
@ -332,8 +331,8 @@ struct SK_API SkIRect {
*/
static bool Intersects(const SkIRect& a, const SkIRect& b) {
return !a.isEmpty() && !b.isEmpty() && // check for empties
a.fLeft < b.fRight && b.fLeft < a.fRight &&
a.fTop < b.fBottom && b.fTop < a.fBottom;
a.fLeft < b.fRight && b.fLeft < a.fRight &&
a.fTop < b.fBottom && b.fTop < a.fBottom;
}
/**
@ -657,22 +656,21 @@ struct SK_API SkRect {
intersection, otherwise return false and do not change this rectangle.
If either rectangle is empty, do nothing and return false.
*/
bool SK_WARN_UNUSED_RESULT intersect(const SkRect& r);
bool intersect(const SkRect& r);
/** If this rectangle intersects the rectangle specified by left, top, right, bottom,
return true and set this rectangle to that intersection, otherwise return false
and do not change this rectangle.
If either rectangle is empty, do nothing and return false.
*/
bool SK_WARN_UNUSED_RESULT intersect(SkScalar left, SkScalar top,
SkScalar right, SkScalar bottom);
bool intersect(SkScalar left, SkScalar top, SkScalar right, SkScalar bottom);
/**
* If rectangles a and b intersect, return true and set this rectangle to
* that intersection, otherwise return false and do not change this
* rectangle. If either rectangle is empty, do nothing and return false.
*/
bool SK_WARN_UNUSED_RESULT intersect(const SkRect& a, const SkRect& b);
bool intersect(const SkRect& a, const SkRect& b);
private:

View File

@ -454,10 +454,7 @@ MaskSuperBlitter::MaskSuperBlitter(SkBlitter* realBlitter, const SkIRect& ir, co
fMask.fFormat = SkMask::kA8_Format;
fClipRect = ir;
if (!fClipRect.intersect(clip.getBounds())) {
SkASSERT(0);
fClipRect.setEmpty();
}
fClipRect.intersect(clip.getBounds());
// For valgrind, write 1 extra byte at the end so we don't read
// uninitialized memory. See comment in add_aa_span and fStorage[].

View File

@ -1184,9 +1184,7 @@ bool SkBlurMaskFilterImpl::canFilterMaskGPU(const SkRect& srcBounds,
// Outset srcRect and clipRect by 3 * sigma, to compute affected blur area.
srcRect.outset(sigma3, sigma3);
clipRect.outset(sigma3, sigma3);
if (!srcRect.intersect(clipRect)) {
srcRect.setEmpty();
}
srcRect.intersect(clipRect);
*maskRect = srcRect;
return true;
}

View File

@ -409,10 +409,7 @@ void GrReducedClip::ReduceClipStack(const SkClipStack& stack,
if (tighterBounds) {
SkIRect stackIBounds;
stackBounds.roundOut(&stackIBounds);
if (!tighterBounds->intersect(queryBounds, stackIBounds)) {
SkASSERT(0);
tighterBounds->setEmpty();
}
tighterBounds->intersect(queryBounds, stackIBounds);
bounds = tighterBounds;
}
} else {

View File

@ -79,9 +79,8 @@ protected:
SkRect mappedRect;
draw.fMatrix->mapRect(&mappedRect, rect);
SkRect clipRect = SkRect::Make(draw.fRC->getBounds());
if (mappedRect.intersect(clipRect)) {
fPRCont->add(bm.pixelRef(), mappedRect);
}
mappedRect.intersect(clipRect);
fPRCont->add(bm.pixelRef(), mappedRect);
}
}
virtual void drawOval(const SkDraw& draw, const SkRect& rect,