diff options
Diffstat (limited to 'src/image')
-rw-r--r-- | src/image/SkImage.cpp | 4 | ||||
-rw-r--r-- | src/image/SkImage_Base.h | 2 | ||||
-rw-r--r-- | src/image/SkImage_Raster.cpp | 8 |
3 files changed, 14 insertions, 0 deletions
diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp index 109808842e..35fff1f242 100644 --- a/src/image/SkImage.cpp +++ b/src/image/SkImage.cpp @@ -118,6 +118,10 @@ SkImage* SkImage::newImage(int newWidth, int newHeight, const SkIRect* subset, return as_IB(this)->onNewImage(newWidth, newHeight, subset, quality); } +void SkImage::preroll() const { + as_IB(this)->onPreroll(); +} + /////////////////////////////////////////////////////////////////////////////// static bool raster_canvas_supports(const SkImageInfo& info) { diff --git a/src/image/SkImage_Base.h b/src/image/SkImage_Base.h index 512c80c44b..ca0559ffd0 100644 --- a/src/image/SkImage_Base.h +++ b/src/image/SkImage_Base.h @@ -63,6 +63,8 @@ public: virtual SkImage* onNewImage(int newWidth, int newHeight, const SkIRect* subset, SkFilterQuality) const; + virtual void onPreroll() const {} + private: const SkSurfaceProps fProps; diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp index 1dd57d6dc2..940d532378 100644 --- a/src/image/SkImage_Raster.cpp +++ b/src/image/SkImage_Raster.cpp @@ -58,6 +58,7 @@ public: bool onReadPixels(const SkImageInfo&, void*, size_t, int srcX, int srcY) const SK_OVERRIDE; const void* onPeekPixels(SkImageInfo*, size_t* /*rowBytes*/) const SK_OVERRIDE; bool getROPixels(SkBitmap*) const SK_OVERRIDE; + void onPreroll() const SK_OVERRIDE; // exposed for SkSurface_Raster via SkNewImageFromPixelRef SkImage_Raster(const SkImageInfo&, SkPixelRef*, size_t rowBytes, const SkSurfaceProps*); @@ -154,6 +155,12 @@ bool SkImage_Raster::getROPixels(SkBitmap* dst) const { return true; } +void SkImage_Raster::onPreroll() const { + SkBitmap bm(fBitmap); + bm.lockPixels(); + bm.unlockPixels(); +} + /////////////////////////////////////////////////////////////////////////////// SkImage* SkImage::NewRasterCopy(const SkImageInfo& info, const void* pixels, size_t rowBytes) { @@ -208,3 +215,4 @@ const SkPixelRef* SkBitmapImageGetPixelRef(const SkImage* image) { bool SkImage_Raster::isOpaque() const { return fBitmap.isOpaque(); } + |