diff options
-rw-r--r-- | include/core/SkImage.h | 4 | ||||
-rw-r--r-- | src/image/SkImage.cpp | 5 | ||||
-rw-r--r-- | src/image/SkImage_Base.h | 6 | ||||
-rw-r--r-- | src/image/SkImage_Codec.cpp | 19 | ||||
-rw-r--r-- | src/image/SkImage_Gpu.cpp | 16 | ||||
-rw-r--r-- | src/image/SkImage_Raster.cpp | 20 |
6 files changed, 36 insertions, 34 deletions
diff --git a/include/core/SkImage.h b/include/core/SkImage.h index 04e184370f..581129e720 100644 --- a/include/core/SkImage.h +++ b/include/core/SkImage.h @@ -62,7 +62,7 @@ public: SkShader::TileMode, const SkMatrix* localMatrix = NULL) const; - void draw(SkCanvas*, SkScalar x, SkScalar y, const SkPaint*); + void draw(SkCanvas*, SkScalar x, SkScalar y, const SkPaint*) const; /** * Draw the image, cropped to the src rect, to the dst rect of a canvas. @@ -71,7 +71,7 @@ public: * * See SkCanvas::drawBitmapRectToRect for similar behavior. */ - void draw(SkCanvas*, const SkRect* src, const SkRect& dst, const SkPaint*); + void draw(SkCanvas*, const SkRect* src, const SkRect& dst, const SkPaint*) const; /** * If the image has direct access to its pixels (i.e. they are in local diff --git a/src/image/SkImage.cpp b/src/image/SkImage.cpp index c812f58eff..795b8420e6 100644 --- a/src/image/SkImage.cpp +++ b/src/image/SkImage.cpp @@ -29,13 +29,12 @@ uint32_t SkImage::NextUniqueID() { return id; } -void SkImage::draw(SkCanvas* canvas, SkScalar x, SkScalar y, - const SkPaint* paint) { +void SkImage::draw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) const { as_IB(this)->onDraw(canvas, x, y, paint); } void SkImage::draw(SkCanvas* canvas, const SkRect* src, const SkRect& dst, - const SkPaint* paint) { + const SkPaint* paint) const { as_IB(this)->onDrawRectToRect(canvas, src, dst, paint); } diff --git a/src/image/SkImage_Base.h b/src/image/SkImage_Base.h index 752afedc09..9542ba3b2e 100644 --- a/src/image/SkImage_Base.h +++ b/src/image/SkImage_Base.h @@ -14,9 +14,9 @@ class SkImage_Base : public SkImage { public: SkImage_Base(int width, int height) : INHERITED(width, height) {} - virtual void onDraw(SkCanvas*, SkScalar x, SkScalar y, const SkPaint*) = 0; + virtual void onDraw(SkCanvas*, SkScalar x, SkScalar y, const SkPaint*) const = 0; virtual void onDrawRectToRect(SkCanvas*, const SkRect* src, - const SkRect& dst, const SkPaint*) = 0; + const SkRect& dst, const SkPaint*) const = 0; // Default impl calls onDraw virtual bool onReadPixels(SkBitmap*, const SkIRect& subset) const; @@ -25,7 +25,7 @@ public: return NULL; } - virtual GrTexture* onGetTexture() { return NULL; } + virtual GrTexture* onGetTexture() const { return NULL; } // return a read-only copy of the pixels. We promise to not modify them, // but only inspect them (or encode them). diff --git a/src/image/SkImage_Codec.cpp b/src/image/SkImage_Codec.cpp index 3d815ce7f4..21c844d01d 100644 --- a/src/image/SkImage_Codec.cpp +++ b/src/image/SkImage_Codec.cpp @@ -18,8 +18,9 @@ public: SkImage_Codec(SkData* encodedData, int width, int height); virtual ~SkImage_Codec(); - virtual void onDraw(SkCanvas*, SkScalar, SkScalar, const SkPaint*) SK_OVERRIDE; - virtual void onDrawRectToRect(SkCanvas*, const SkRect*, const SkRect&, const SkPaint*) SK_OVERRIDE; + virtual void onDraw(SkCanvas*, SkScalar, SkScalar, const SkPaint*) const SK_OVERRIDE; + virtual void onDrawRectToRect(SkCanvas*, const SkRect*, const SkRect&, + const SkPaint*) const SK_OVERRIDE; private: SkData* fEncodedData; @@ -39,19 +40,23 @@ SkImage_Codec::~SkImage_Codec() { fEncodedData->unref(); } -void SkImage_Codec::onDraw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) { +void SkImage_Codec::onDraw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) const { if (!fBitmap.pixelRef()) { - if (!SkImageDecoder::DecodeMemory(fEncodedData->bytes(), fEncodedData->size(), &fBitmap)) { + // todo: this needs to be thread-safe + SkBitmap* bitmap = const_cast<SkBitmap*>(&fBitmap); + if (!SkImageDecoder::DecodeMemory(fEncodedData->bytes(), fEncodedData->size(), bitmap)) { return; } } canvas->drawBitmap(fBitmap, x, y, paint); } -void SkImage_Codec::onDrawRectToRect(SkCanvas* canvas, const SkRect* src, - const SkRect& dst, const SkPaint* paint) { +void SkImage_Codec::onDrawRectToRect(SkCanvas* canvas, const SkRect* src, const SkRect& dst, + const SkPaint* paint) const { if (!fBitmap.pixelRef()) { - if (!SkImageDecoder::DecodeMemory(fEncodedData->bytes(), fEncodedData->size(), &fBitmap)) { + // todo: this needs to be thread-safe + SkBitmap* bitmap = const_cast<SkBitmap*>(&fBitmap); + if (!SkImageDecoder::DecodeMemory(fEncodedData->bytes(), fEncodedData->size(), bitmap)) { return; } } diff --git a/src/image/SkImage_Gpu.cpp b/src/image/SkImage_Gpu.cpp index 81114b0fe8..0918412e83 100644 --- a/src/image/SkImage_Gpu.cpp +++ b/src/image/SkImage_Gpu.cpp @@ -20,12 +20,13 @@ public: explicit SkImage_Gpu(const SkBitmap&); virtual ~SkImage_Gpu(); - virtual void onDraw(SkCanvas*, SkScalar x, SkScalar y, const SkPaint*) SK_OVERRIDE; - virtual void onDrawRectToRect(SkCanvas*, const SkRect* src, const SkRect& dst, const SkPaint*) SK_OVERRIDE; - virtual GrTexture* onGetTexture() SK_OVERRIDE; + virtual void onDraw(SkCanvas*, SkScalar x, SkScalar y, const SkPaint*) const SK_OVERRIDE; + virtual void onDrawRectToRect(SkCanvas*, const SkRect* src, const SkRect& dst, + const SkPaint*) const SK_OVERRIDE; + virtual GrTexture* onGetTexture() const SK_OVERRIDE; virtual bool getROPixels(SkBitmap*) const SK_OVERRIDE; - GrTexture* getTexture() { return fBitmap.getTexture(); } + GrTexture* getTexture() const { return fBitmap.getTexture(); } virtual SkShader* onNewShader(SkShader::TileMode, SkShader::TileMode, @@ -54,17 +55,16 @@ SkShader* SkImage_Gpu::onNewShader(SkShader::TileMode tileX, return SkShader::CreateBitmapShader(fBitmap, tileX, tileY, localMatrix); } -void SkImage_Gpu::onDraw(SkCanvas* canvas, SkScalar x, SkScalar y, - const SkPaint* paint) { +void SkImage_Gpu::onDraw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) const { canvas->drawBitmap(fBitmap, x, y, paint); } void SkImage_Gpu::onDrawRectToRect(SkCanvas* canvas, const SkRect* src, const SkRect& dst, - const SkPaint* paint) { + const SkPaint* paint) const { canvas->drawBitmapRectToRect(fBitmap, src, dst, paint); } -GrTexture* SkImage_Gpu::onGetTexture() { +GrTexture* SkImage_Gpu::onGetTexture() const { return fBitmap.getTexture(); } diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp index 828d80276c..e4768af0ac 100644 --- a/src/image/SkImage_Raster.cpp +++ b/src/image/SkImage_Raster.cpp @@ -53,8 +53,9 @@ public: SkImage_Raster(const SkImageInfo&, SkData*, size_t rb); virtual ~SkImage_Raster(); - virtual void onDraw(SkCanvas*, SkScalar, SkScalar, const SkPaint*) SK_OVERRIDE; - virtual void onDrawRectToRect(SkCanvas*, const SkRect*, const SkRect&, const SkPaint*) SK_OVERRIDE; + virtual void onDraw(SkCanvas*, SkScalar, SkScalar, const SkPaint*) const SK_OVERRIDE; + virtual void onDrawRectToRect(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; @@ -115,19 +116,17 @@ SkImage_Raster::SkImage_Raster(const Info& info, SkPixelRef* pr, size_t rowBytes SkImage_Raster::~SkImage_Raster() {} -SkShader* SkImage_Raster::onNewShader(SkShader::TileMode tileX, - SkShader::TileMode tileY, - const SkMatrix* localMatrix) const -{ +SkShader* SkImage_Raster::onNewShader(SkShader::TileMode tileX, SkShader::TileMode tileY, + const SkMatrix* localMatrix) const { return SkShader::CreateBitmapShader(fBitmap, tileX, tileY, localMatrix); } -void SkImage_Raster::onDraw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) { +void SkImage_Raster::onDraw(SkCanvas* canvas, SkScalar x, SkScalar y, const SkPaint* paint) const { canvas->drawBitmap(fBitmap, x, y, paint); } -void SkImage_Raster::onDrawRectToRect(SkCanvas* canvas, const SkRect* src, - const SkRect& dst, const SkPaint* paint) { +void SkImage_Raster::onDrawRectToRect(SkCanvas* canvas, const SkRect* src, const SkRect& dst, + const SkPaint* paint) const { canvas->drawBitmapRectToRect(fBitmap, src, dst, paint); } @@ -143,8 +142,7 @@ bool SkImage_Raster::onReadPixels(SkBitmap* dst, const SkIRect& subset) const { } } -const void* SkImage_Raster::onPeekPixels(SkImageInfo* infoPtr, - size_t* rowBytesPtr) const { +const void* SkImage_Raster::onPeekPixels(SkImageInfo* infoPtr, size_t* rowBytesPtr) const { const SkImageInfo info = fBitmap.info(); if ((kUnknown_SkColorType == info.colorType()) || !fBitmap.getPixels()) { return NULL; |