Fix texture domain clipping assertion. It is OK to have a degenerate domain.
authorbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 8 Nov 2012 20:32:13 +0000 (20:32 +0000)
committerbsalomon@google.com <bsalomon@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>
Thu, 8 Nov 2012 20:32:13 +0000 (20:32 +0000)
Review URL: https://codereview.appspot.com/6812101

git-svn-id: http://skia.googlecode.com/svn/trunk@6356 2bbb7eff-a529-9590-31e7-b0007b416f81

src/gpu/effects/GrTextureDomainEffect.cpp

index e500fad..6884682 100644 (file)
@@ -132,7 +132,16 @@ GrEffect* GrTextureDomainEffect::Create(GrTexture* texture,
     } else {
         SkRect clippedDomain;
         // We don't currently handle domains that are empty or don't intersect the texture.
-        SkAssertResult(clippedDomain.intersect(kFullRect, domain));
+        // It is OK if the domain rect is a line or point, but it should not be inverted. We do not
+        // handle rects that do not intersect the [0..1]x[0..1] rect.
+        GrAssert(domain.fLeft <= domain.fRight);
+        GrAssert(domain.fTop <= domain.fBottom);
+        clippedDomain.fLeft = SkMaxScalar(domain.fLeft, kFullRect.fLeft);
+        clippedDomain.fRight = SkMinScalar(domain.fRight, kFullRect.fRight);
+        clippedDomain.fTop = SkMaxScalar(domain.fTop, kFullRect.fTop);
+        clippedDomain.fBottom = SkMinScalar(domain.fBottom, kFullRect.fBottom);
+        GrAssert(clippedDomain.fLeft <= clippedDomain.fRight);
+        GrAssert(clippedDomain.fTop <= clippedDomain.fBottom);
         return SkNEW_ARGS(GrTextureDomainEffect,
                           (texture, matrix, clippedDomain, wrapMode, bilerp));
     }