Index: src/image/SkImage_Raster.cpp |
diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp |
index 18d6a8cabb2bd871292021c94375becdcda4221e..9ae3d364269c1dcb678d90da6c277b6889b7b2bb 100644 |
--- a/src/image/SkImage_Raster.cpp |
+++ b/src/image/SkImage_Raster.cpp |
@@ -11,6 +11,7 @@ |
#include "SkCanvas.h" |
#include "SkData.h" |
#include "SkDecodingImageGenerator.h" |
+#include "SkSurface.h" |
class SkImage_Raster : public SkImage_Base { |
public: |
@@ -50,18 +51,18 @@ public: |
static SkImage* NewEmpty(); |
- SkImage_Raster(const SkImageInfo&, SkData*, size_t rb); |
+ SkImage_Raster(const SkImageInfo&, SkData*, size_t rb, const SkSurfaceProps*); |
virtual ~SkImage_Raster(); |
- virtual void onDraw(SkCanvas*, SkScalar, SkScalar, const SkPaint*) const SK_OVERRIDE; |
- virtual void onDrawRect(SkCanvas*, const SkRect*, const SkRect&, |
- const SkPaint*) const SK_OVERRIDE; |
- virtual bool onReadPixels(SkBitmap*, const SkIRect&) const SK_OVERRIDE; |
- virtual const void* onPeekPixels(SkImageInfo*, size_t* /*rowBytes*/) const SK_OVERRIDE; |
- virtual bool getROPixels(SkBitmap*) const SK_OVERRIDE; |
+ void onDraw(SkCanvas*, SkScalar, SkScalar, const SkPaint*) const SK_OVERRIDE; |
+ void onDrawRect(SkCanvas*, const SkRect*, const SkRect&, const SkPaint*) const SK_OVERRIDE; |
+ SkSurface* onNewSurface(const SkImageInfo&, const SkSurfaceProps&) const SK_OVERRIDE; |
+ bool onReadPixels(SkBitmap*, const SkIRect&) const SK_OVERRIDE; |
+ const void* onPeekPixels(SkImageInfo*, size_t* /*rowBytes*/) const SK_OVERRIDE; |
+ bool getROPixels(SkBitmap*) const SK_OVERRIDE; |
// exposed for SkSurface_Raster via SkNewImageFromPixelRef |
- SkImage_Raster(const SkImageInfo&, SkPixelRef*, size_t rowBytes); |
+ SkImage_Raster(const SkImageInfo&, SkPixelRef*, size_t rowBytes, const SkSurfaceProps*); |
SkPixelRef* getPixelRef() const { return fBitmap.pixelRef(); } |
@@ -71,12 +72,12 @@ public: |
virtual bool isOpaque() const SK_OVERRIDE; |
- SkImage_Raster(const SkBitmap& bm) |
- : INHERITED(bm.width(), bm.height()) |
+ SkImage_Raster(const SkBitmap& bm, const SkSurfaceProps* props) |
+ : INHERITED(bm.width(), bm.height(), props) |
, fBitmap(bm) {} |
private: |
- SkImage_Raster() : INHERITED(0, 0) {} |
+ SkImage_Raster() : INHERITED(0, 0, NULL) {} |
SkBitmap fBitmap; |
@@ -100,8 +101,9 @@ static void release_data(void* addr, void* context) { |
data->unref(); |
} |
-SkImage_Raster::SkImage_Raster(const Info& info, SkData* data, size_t rowBytes) |
- : INHERITED(info.width(), info.height()) |
+SkImage_Raster::SkImage_Raster(const Info& info, SkData* data, size_t rowBytes, |
+ const SkSurfaceProps* props) |
+ : INHERITED(info.width(), info.height(), props) |
{ |
data->ref(); |
void* addr = const_cast<void*>(data->data()); |
@@ -112,8 +114,9 @@ SkImage_Raster::SkImage_Raster(const Info& info, SkData* data, size_t rowBytes) |
fBitmap.lockPixels(); |
} |
-SkImage_Raster::SkImage_Raster(const Info& info, SkPixelRef* pr, size_t rowBytes) |
- : INHERITED(info.width(), info.height()) |
+SkImage_Raster::SkImage_Raster(const Info& info, SkPixelRef* pr, size_t rowBytes, |
+ const SkSurfaceProps* props) |
+ : INHERITED(info.width(), info.height(), props) |
{ |
fBitmap.setInfo(info, rowBytes); |
fBitmap.setPixelRef(pr); |
@@ -136,6 +139,10 @@ void SkImage_Raster::onDrawRect(SkCanvas* canvas, const SkRect* src, const SkRec |
canvas->drawBitmapRectToRect(fBitmap, src, dst, paint); |
} |
+SkSurface* SkImage_Raster::onNewSurface(const SkImageInfo& info, const SkSurfaceProps& props) const { |
+ return SkSurface::NewRaster(info, &props); |
+} |
+ |
bool SkImage_Raster::onReadPixels(SkBitmap* dst, const SkIRect& subset) const { |
if (dst->pixelRef()) { |
return this->INHERITED::onReadPixels(dst, subset); |
@@ -179,7 +186,7 @@ SkImage* SkImage::NewRasterCopy(const SkImageInfo& info, const void* pixels, siz |
// Here we actually make a copy of the caller's pixel data |
SkAutoDataUnref data(SkData::NewWithCopy(pixels, info.height() * rowBytes)); |
- return SkNEW_ARGS(SkImage_Raster, (info, data, rowBytes)); |
+ return SkNEW_ARGS(SkImage_Raster, (info, data, rowBytes, NULL)); |
} |
@@ -201,7 +208,7 @@ SkImage* SkImage::NewRasterData(const SkImageInfo& info, SkData* data, size_t ro |
return NULL; |
} |
- return SkNEW_ARGS(SkImage_Raster, (info, data, rowBytes)); |
+ return SkNEW_ARGS(SkImage_Raster, (info, data, rowBytes, NULL)); |
} |
SkImage* SkImage::NewFromGenerator(SkImageGenerator* generator) { |
@@ -209,12 +216,12 @@ SkImage* SkImage::NewFromGenerator(SkImageGenerator* generator) { |
if (!SkInstallDiscardablePixelRef(generator, &bitmap)) { |
return NULL; |
} |
- return SkNEW_ARGS(SkImage_Raster, (bitmap)); |
+ return SkNEW_ARGS(SkImage_Raster, (bitmap, NULL)); |
} |
-SkImage* SkNewImageFromPixelRef(const SkImageInfo& info, SkPixelRef* pr, |
- size_t rowBytes) { |
- return SkNEW_ARGS(SkImage_Raster, (info, pr, rowBytes)); |
+SkImage* SkNewImageFromPixelRef(const SkImageInfo& info, SkPixelRef* pr, size_t rowBytes, |
+ const SkSurfaceProps* props) { |
+ return SkNEW_ARGS(SkImage_Raster, (info, pr, rowBytes, props)); |
} |
const SkPixelRef* SkBitmapImageGetPixelRef(const SkImage* image) { |