OSDN Git Service

Fix bug where we incorrectly clipped the bounds to the device size.
authorDerek Sollenberger <djsollen@google.com>
Thu, 9 May 2013 13:49:41 +0000 (09:49 -0400)
committerDerek Sollenberger <djsollen@google.com>
Thu, 9 May 2013 18:00:29 +0000 (14:00 -0400)
This CL also updates the documenation to make it clear that the API
returns in local space, not clipped to the size of the bitmap/device.

bug: 8747526
Change-Id: I389844672ce955341863f9940c3b401ab00dc1dc

core/jni/android/graphics/Canvas.cpp
graphics/java/android/graphics/Canvas.java

index 11c7053..eb97a9c 100644 (file)
@@ -964,16 +964,10 @@ static void doDrawTextDecorations(SkCanvas* canvas, jfloat x, jfloat y, jfloat l
                               jobject bounds) {
         SkRect   r;
         SkIRect ir;
-        bool     result = canvas->getClipBounds(&r);
+        bool result = canvas->getClipBounds(&r);
 
         if (!result) {
             r.setEmpty();
-        } else {
-            // ensure the clip is not larger than the canvas
-            SkRect canvasRect;
-            SkISize deviceSize = canvas->getDeviceSize();
-            canvasRect.iset(0, 0, deviceSize.fWidth, deviceSize.fHeight);
-            r.intersect(canvasRect);
         }
         r.round(&ir);
 
index 79bf54b..c851844 100644 (file)
@@ -781,7 +781,10 @@ public class Canvas {
     }
 
     /**
-     * Retrieve the clip bounds, returning true if they are non-empty.
+     * 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
+     * in a way similar to quickReject, in that it tells you that drawing
+     * outside of these bounds will be clipped out.
      *
      * @param bounds Return the clip bounds here. If it is null, ignore it but
      *               still return true if the current clip is non-empty.
@@ -792,7 +795,7 @@ public class Canvas {
     }
     
     /**
-     * Retrieve the clip bounds.
+     * Retrieve the bounds of the current clip (in local coordinates).
      *
      * @return the clip bounds, or [0, 0, 0, 0] if the clip is empty.
      */