Add a zoom filter to Skia. This will be used on ChromeOS to implement the screen magnifier.

Committed on behalf of zork@chromium.org

Review URL: http://codereview.appspot.com/6354065/


git-svn-id: http://skia.googlecode.com/svn/trunk@5056 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/gpu/GrContext.h b/include/gpu/GrContext.h
index 6252cc2..52dafd0 100644
--- a/include/gpu/GrContext.h
+++ b/include/gpu/GrContext.h
@@ -605,6 +605,23 @@
                              float sigmaX, float sigmaY);
 
     /**
+     * Zooms a subset of the texture to a larger size with a nice edge.
+     * The inner rectangle is a simple scaling of the texture by a factor of
+     * |zoom|.  The outer |inset| pixels transition from the background texture
+     * to the zoomed coordinate system at a rate of
+     * (distance_to_edge / inset) ^2, producing a rounded lens effect.
+     * @param srcTexture      The source texture to be zoomed.
+     * @param dstRect         The destination rectangle.
+     * @param srcRect         The source rectangle.  Must be smaller than
+     *                        dstRect
+     * @param inset           Number of pixels to blend along the edges.
+     * @return the zoomed texture, which is dstTexture.
+     */
+     GrTexture* zoom(GrTexture* srcTexture,
+                     const SkRect& dstRect, const SkRect& srcRect, float inset);
+
+
+    /**
      * This enum is used with the function below, applyMorphology.
      */
     enum MorphologyType {