| Index: include/effects/SkPictureImageFilter.h | 
| diff --git a/include/effects/SkPictureImageFilter.h b/include/effects/SkPictureImageFilter.h | 
| index f4f1fff4effa65fd386520edc16b1b8b056ceb09..8c3c9c46ec9d24188a2afbb27448ccf65ffc172a 100644 | 
| --- a/include/effects/SkPictureImageFilter.h | 
| +++ b/include/effects/SkPictureImageFilter.h | 
| @@ -24,15 +24,37 @@ public: | 
| *  Refs the passed-in picture. cropRect can be used to crop or expand the destination rect when | 
| *  the picture is drawn. (No scaling is implied by the dest rect; only the CTM is applied.) | 
| */ | 
| -    static SkPictureImageFilter* Create(const SkPicture* picture, const SkRect& cropRect, uint32_t uniqueID = 0) { | 
| -        return SkNEW_ARGS(SkPictureImageFilter, (picture, cropRect, uniqueID)); | 
| +    static SkPictureImageFilter* Create(const SkPicture* picture, const SkRect& cropRect, | 
| +                                        uint32_t uniqueID = 0) { | 
| +        return SkNEW_ARGS(SkPictureImageFilter, (picture, cropRect, uniqueID, | 
| +                                                 kDeviceSpace_PictureResolution)); | 
| +    } | 
| + | 
| +    /** | 
| +     *  Refs the passed-in picture. The picture is rasterized at a resolution that matches the | 
| +     *  local coordinate space. If the picture needs to be resampled for drawing it into the | 
| +     *  destination canvas, bilinear filtering will be used. cropRect can be used to crop or | 
| +     *  expand the destination rect when the picture is drawn. (No scaling is implied by the | 
| +     *  dest rect; only the CTM is applied.) | 
| +     */ | 
| +    static SkPictureImageFilter* CreateForLocalSpace(const SkPicture* picture, | 
| +                                                     const SkRect& cropRect, | 
| +                                                     uint32_t uniqueID = 0) { | 
| +        return SkNEW_ARGS(SkPictureImageFilter, (picture, cropRect, uniqueID, | 
| +                                                 kLocalSpace_PictureResolution)); | 
| } | 
|  | 
| SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkPictureImageFilter) | 
|  | 
| protected: | 
| +    enum PictureResolution { | 
| +        kDeviceSpace_PictureResolution, | 
| +        kLocalSpace_PictureResolution | 
| +    }; | 
| + | 
| explicit SkPictureImageFilter(const SkPicture* picture, uint32_t uniqueID); | 
| -    SkPictureImageFilter(const SkPicture* picture, const SkRect& cropRect, uint32_t uniqueID); | 
| +    SkPictureImageFilter(const SkPicture* picture, const SkRect& cropRect, uint32_t uniqueID, | 
| +                         PictureResolution); | 
| virtual ~SkPictureImageFilter(); | 
| /*  Constructs an SkPictureImageFilter object from an SkReadBuffer. | 
| *  Note: If the SkPictureImageFilter object construction requires bitmap | 
| @@ -45,8 +67,16 @@ protected: | 
| SkBitmap* result, SkIPoint* offset) const SK_OVERRIDE; | 
|  | 
| private: | 
| -    const SkPicture* fPicture; | 
| -    SkRect           fCropRect; | 
| + | 
| + | 
| +    void drawPictureAtDeviceResolution(Proxy*, SkBaseDevice*, const SkIRect& deviceBounds, | 
| +                                       const Context&) const; | 
| +    void drawPictureAtLocalResolution(Proxy*, SkBaseDevice*, const SkIRect& deviceBounds, | 
| +                                      const Context&) const; | 
| + | 
| +    const SkPicture*      fPicture; | 
| +    SkRect                fCropRect; | 
| +    PictureResolution     fPictureResolution; | 
| typedef SkImageFilter INHERITED; | 
| }; | 
|  | 
|  |