Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Unified Diff: src/image/SkImage_Raster.cpp

Issue 577063004: Refactoring in SkImage implementations backed by a SkBitmap (Closed) Base URL: https://skia.googlesource.com/skia.git@small_refactor_skimageCodec
Patch Set: Get rid of SkImage_Codec Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« src/image/SkImage_Gpu.cpp ('K') | « src/image/SkImage_Gpu.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/image/SkImage_Raster.cpp
diff --git a/src/image/SkImage_Raster.cpp b/src/image/SkImage_Raster.cpp
index f1d1fcd27ff3b5438bed4763a2ed83013a1922d3..80a575cd1d9da953d0249f139988c6c62a175418 100644
--- a/src/image/SkImage_Raster.cpp
+++ b/src/image/SkImage_Raster.cpp
@@ -5,15 +5,14 @@
* found in the LICENSE file.
*/
-#include "SkImage_Base.h"
-#include "SkImagePriv.h"
+#include "SkImage_BitmapBase.h"
+
#include "SkBitmap.h"
-#include "SkCanvas.h"
#include "SkData.h"
#include "SkDecodingImageGenerator.h"
-#include "SkMallocPixelRef.h"
+#include "SkImagePriv.h"
-class SkImage_Raster : public SkImage_Base {
+class SkImage_Raster : public SkImage_BitmapBase {
public:
static bool ValidArgs(const Info& info, size_t rowBytes) {
const int maxDimension = SK_MaxS32 >> 2;
@@ -54,9 +53,6 @@ public:
SkImage_Raster(const SkImageInfo&, SkData*, size_t rb);
virtual ~SkImage_Raster();
- 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;
@@ -64,24 +60,17 @@ public:
// exposed for SkSurface_Raster via SkNewImageFromPixelRef
SkImage_Raster(const SkImageInfo&, SkPixelRef*, size_t rowBytes);
- SkPixelRef* getPixelRef() const { return fBitmap.pixelRef(); }
-
- virtual SkShader* onNewShader(SkShader::TileMode,
- SkShader::TileMode,
- const SkMatrix* localMatrix) const SK_OVERRIDE;
-
- virtual bool isOpaque() const SK_OVERRIDE;
+ SkPixelRef* getPixelRef() const { return this->getBitmap().pixelRef(); }
SkImage_Raster(const SkBitmap& bm)
- : INHERITED(bm.width(), bm.height())
- , fBitmap(bm) {}
+ : INHERITED(bm) {}
private:
SkImage_Raster() : INHERITED(0, 0) {}
- SkBitmap fBitmap;
+// SkBitmap fBitmap;
- typedef SkImage_Base INHERITED;
+ typedef SkImage_BitmapBase INHERITED;
};
///////////////////////////////////////////////////////////////////////////////
@@ -108,41 +97,33 @@ SkImage_Raster::SkImage_Raster(const Info& info, SkData* data, size_t rowBytes)
void* addr = const_cast<void*>(data->data());
SkColorTable* ctable = NULL;
- fBitmap.installPixels(info, addr, rowBytes, ctable, release_data, data);
- fBitmap.setImmutable();
- fBitmap.lockPixels();
+ // Safe (in constructor) but ugly, maybe we should add a constructor with the same sig. as
+ // this one in SkImage_BitmapBase ?
+ SkBitmap* bitmap = const_cast<SkBitmap*>(&this->getBitmap());
+ bitmap->installPixels(info, addr, rowBytes, ctable, release_data, data);
+ bitmap->setImmutable();
+ bitmap->lockPixels();
}
SkImage_Raster::SkImage_Raster(const Info& info, SkPixelRef* pr, size_t rowBytes)
: INHERITED(info.width(), info.height())
{
- fBitmap.setInfo(info, rowBytes);
- fBitmap.setPixelRef(pr);
- fBitmap.lockPixels();
+ // Safe (in constructor) but ugly, maybe we should add a constructor with the same sig. as
+ // this one in SkImage_BitmapBase ?
+ SkBitmap* bitmap = const_cast<SkBitmap*>(&this->getBitmap());
+ bitmap->setInfo(info, rowBytes);
+ bitmap->setPixelRef(pr);
+ bitmap->lockPixels();
}
SkImage_Raster::~SkImage_Raster() {}
-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) const {
- canvas->drawBitmap(fBitmap, x, y, paint);
-}
-
-void SkImage_Raster::onDrawRectToRect(SkCanvas* canvas, const SkRect* src, const SkRect& dst,
- const SkPaint* paint) const {
- canvas->drawBitmapRectToRect(fBitmap, src, dst, paint);
-}
-
bool SkImage_Raster::onReadPixels(SkBitmap* dst, const SkIRect& subset) const {
if (dst->pixelRef()) {
return this->INHERITED::onReadPixels(dst, subset);
} else {
SkBitmap src;
- if (!fBitmap.extractSubset(&src, subset)) {
+ if (!this->getBitmap().extractSubset(&src, subset)) {
return false;
}
return src.copyTo(dst, src.colorType());
@@ -150,17 +131,17 @@ bool SkImage_Raster::onReadPixels(SkBitmap* dst, const SkIRect& subset) const {
}
const void* SkImage_Raster::onPeekPixels(SkImageInfo* infoPtr, size_t* rowBytesPtr) const {
- const SkImageInfo info = fBitmap.info();
- if ((kUnknown_SkColorType == info.colorType()) || !fBitmap.getPixels()) {
+ const SkImageInfo info = this->getBitmap().info();
+ if ((kUnknown_SkColorType == info.colorType()) || !this->getBitmap().getPixels()) {
return NULL;
}
*infoPtr = info;
- *rowBytesPtr = fBitmap.rowBytes();
- return fBitmap.getPixels();
+ *rowBytesPtr = this->getBitmap().rowBytes();
+ return this->getBitmap().getPixels();
}
bool SkImage_Raster::getROPixels(SkBitmap* dst) const {
- *dst = fBitmap;
+ *dst = this->getBitmap();
return true;
}
@@ -221,7 +202,3 @@ SkImage* SkNewImageFromPixelRef(const SkImageInfo& info, SkPixelRef* pr,
SkPixelRef* SkBitmapImageGetPixelRef(SkImage* image) {
return ((SkImage_Raster*)image)->getPixelRef();
}
-
-bool SkImage_Raster::isOpaque() const {
- return fBitmap.isOpaque();
-}
« src/image/SkImage_Gpu.cpp ('K') | « src/image/SkImage_Gpu.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698