aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/core/SkImage.h4
-rw-r--r--src/image/SkImage.cpp5
-rw-r--r--src/image/SkImage_Base.h6
-rw-r--r--src/image/SkImage_Codec.cpp19
-rw-r--r--src/image/SkImage_Gpu.cpp16
-rw-r--r--src/image/SkImage_Raster.cpp20
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;