Trim the copy of the dst made for dst-reading effects using the clip and dev-bounds of draw.

Adds dev bounds to circles and rects drawn by GrDrawTarget base class (GrIODB already provides rect bounds).

Author: bsalomon@google.com

Reviewed By: robertphilips@google.com,jvanverth@google.com,robertphillips@google.com

Review URL: https://chromiumcodereview.appspot.com/13222004

git-svn-id: http://skia.googlecode.com/svn/trunk@8453 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/src/gpu/GrOvalRenderer.cpp b/src/gpu/GrOvalRenderer.cpp
index 2d25d54..7da89bd 100644
--- a/src/gpu/GrOvalRenderer.cpp
+++ b/src/gpu/GrOvalRenderer.cpp
@@ -136,24 +136,21 @@
         verts[i].fInnerRadius = innerRadius - 0.5f;
     }
 
-    SkScalar L = -outerRadius;
-    SkScalar R = +outerRadius;
-    SkScalar T = -outerRadius;
-    SkScalar B = +outerRadius;
-
     // We've extended the outer radius out half a pixel to antialias.
     // Expand the drawn rect here so all the pixels will be captured.
-    L += center.fX - SK_ScalarHalf;
-    R += center.fX + SK_ScalarHalf;
-    T += center.fY - SK_ScalarHalf;
-    B += center.fY + SK_ScalarHalf;
+    SkRect bounds = SkRect::MakeLTRB(
+        center.fX - outerRadius - SK_ScalarHalf,
+        center.fY - outerRadius - SK_ScalarHalf,
+        center.fX + outerRadius + SK_ScalarHalf,
+        center.fY + outerRadius + SK_ScalarHalf
+    );
 
-    verts[0].fPos = SkPoint::Make(L, T);
-    verts[1].fPos = SkPoint::Make(R, T);
-    verts[2].fPos = SkPoint::Make(L, B);
-    verts[3].fPos = SkPoint::Make(R, B);
+    verts[0].fPos = SkPoint::Make(bounds.fLeft,  bounds.fTop);
+    verts[1].fPos = SkPoint::Make(bounds.fRight, bounds.fTop);
+    verts[2].fPos = SkPoint::Make(bounds.fLeft,  bounds.fBottom);
+    verts[3].fPos = SkPoint::Make(bounds.fRight, bounds.fBottom);
 
-    target->drawNonIndexed(kTriangleStrip_GrPrimitiveType, 0, 4);
+    target->drawNonIndexed(kTriangleStrip_GrPrimitiveType, 0, 4, &bounds);
 }
 
 void GrOvalRenderer::drawEllipse(GrDrawTarget* target,