move SkImage::ColorType into SkColorType
objective -- move clients over to SkImage
tasks
- use SkImageInfo instead of SkBitmap::Config
- add support for colortables to SkImage
- add drawImage to SkCanvas
- return SkImage from readPixels
This CL works towards the first task
R=robertphillips@google.com
Review URL: https://codereview.chromium.org/54363008
git-svn-id: http://skia.googlecode.com/svn/trunk/src@12077 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/image/SkImagePriv.cpp b/image/SkImagePriv.cpp
index eeeb9d8..a79f8db 100644
--- a/image/SkImagePriv.cpp
+++ b/image/SkImagePriv.cpp
@@ -9,15 +9,15 @@
#include "SkCanvas.h"
#include "SkPicture.h"
-SkBitmap::Config SkImageInfoToBitmapConfig(const SkImage::Info& info) {
+SkBitmap::Config SkImageInfoToBitmapConfig(const SkImageInfo& info) {
switch (info.fColorType) {
- case SkImage::kAlpha_8_ColorType:
+ case kAlpha_8_SkColorType:
return SkBitmap::kA8_Config;
- case SkImage::kRGB_565_ColorType:
+ case kRGB_565_SkColorType:
return SkBitmap::kRGB_565_Config;
- case SkImage::kPMColor_ColorType:
+ case kPMColor_SkColorType:
return SkBitmap::kARGB_8888_Config;
default:
@@ -27,31 +27,31 @@
return SkBitmap::kNo_Config;
}
-int SkImageBytesPerPixel(SkImage::ColorType ct) {
+int SkImageBytesPerPixel(SkColorType ct) {
static const uint8_t gColorTypeBytesPerPixel[] = {
- 1, // kAlpha_8_ColorType
- 2, // kRGB_565_ColorType
- 4, // kRGBA_8888_ColorType
- 4, // kBGRA_8888_ColorType
- 4, // kPMColor_ColorType
+ 1, // kAlpha_8_SkColorType
+ 2, // kRGB_565_SkColorType
+ 4, // kRGBA_8888_SkColorType
+ 4, // kBGRA_8888_SkColorType
+ 4, // kPMColor_SkColorType
};
SkASSERT((size_t)ct < SK_ARRAY_COUNT(gColorTypeBytesPerPixel));
return gColorTypeBytesPerPixel[ct];
}
-bool SkBitmapToImageInfo(const SkBitmap& bm, SkImage::Info* info) {
+bool SkBitmapToImageInfo(const SkBitmap& bm, SkImageInfo* info) {
switch (bm.config()) {
case SkBitmap::kA8_Config:
- info->fColorType = SkImage::kAlpha_8_ColorType;
+ info->fColorType = kAlpha_8_SkColorType;
break;
case SkBitmap::kRGB_565_Config:
- info->fColorType = SkImage::kRGB_565_ColorType;
+ info->fColorType = kRGB_565_SkColorType;
break;
case SkBitmap::kARGB_8888_Config:
- info->fColorType = SkImage::kPMColor_ColorType;
+ info->fColorType = kPMColor_SkColorType;
break;
default:
@@ -66,7 +66,7 @@
}
SkImage* SkNewImageFromBitmap(const SkBitmap& bm, bool canSharePixelRef) {
- SkImage::Info info;
+ SkImageInfo info;
if (!SkBitmapToImageInfo(bm, &info)) {
return NULL;
}
diff --git a/image/SkImagePriv.h b/image/SkImagePriv.h
index 5d93605..188b16d 100644
--- a/image/SkImagePriv.h
+++ b/image/SkImagePriv.h
@@ -13,14 +13,14 @@
class SkPicture;
-extern SkBitmap::Config SkImageInfoToBitmapConfig(const SkImage::Info&);
+extern SkBitmap::Config SkImageInfoToBitmapConfig(const SkImageInfo&);
-extern int SkImageBytesPerPixel(SkImage::ColorType);
+extern int SkImageBytesPerPixel(SkColorType);
-extern bool SkBitmapToImageInfo(const SkBitmap&, SkImage::Info*);
+extern bool SkBitmapToImageInfo(const SkBitmap&, SkImageInfo*);
// Call this if you explicitly want to use/share this pixelRef in the image
-extern SkImage* SkNewImageFromPixelRef(const SkImage::Info&, SkPixelRef*,
+extern SkImage* SkNewImageFromPixelRef(const SkImageInfo&, SkPixelRef*,
size_t rowBytes);
/**
@@ -30,7 +30,7 @@
* is true.
*
* If the bitmap's config cannot be converted into a corresponding
- * SkImage::Info, or the bitmap's pixels cannot be accessed, this will return
+ * SkImageInfo, or the bitmap's pixels cannot be accessed, this will return
* NULL.
*/
extern SkImage* SkNewImageFromBitmap(const SkBitmap&, bool canSharePixelRef);
@@ -47,7 +47,7 @@
*/
extern SkImage* SkNewImageFromPicture(const SkPicture*);
-static inline size_t SkImageMinRowBytes(const SkImage::Info& info) {
+static inline size_t SkImageMinRowBytes(const SkImageInfo& info) {
size_t rb = info.fWidth * SkImageBytesPerPixel(info.fColorType);
return SkAlign4(rb);
}
diff --git a/image/SkImage_Raster.cpp b/image/SkImage_Raster.cpp
index a208d83..a872ae3 100644
--- a/image/SkImage_Raster.cpp
+++ b/image/SkImage_Raster.cpp
@@ -24,7 +24,7 @@
if (info.fWidth > maxDimension || info.fHeight > maxDimension) {
return false;
}
- if ((unsigned)info.fColorType > (unsigned)kLastEnum_ColorType) {
+ if ((unsigned)info.fColorType > (unsigned)kLastEnum_SkColorType) {
return false;
}
if ((unsigned)info.fAlphaType > (unsigned)kLastEnum_SkAlphaType) {
@@ -50,7 +50,7 @@
static SkImage* NewEmpty();
- SkImage_Raster(const SkImage::Info&, SkData*, size_t rb);
+ SkImage_Raster(const SkImageInfo&, SkData*, size_t rb);
virtual ~SkImage_Raster();
virtual void onDraw(SkCanvas*, SkScalar, SkScalar, const SkPaint*) SK_OVERRIDE;
@@ -58,7 +58,7 @@
virtual bool getROPixels(SkBitmap*) const SK_OVERRIDE;
// exposed for SkSurface_Raster via SkNewImageFromPixelRef
- SkImage_Raster(const SkImage::Info&, SkPixelRef*, size_t rowBytes);
+ SkImage_Raster(const SkImageInfo&, SkPixelRef*, size_t rowBytes);
SkPixelRef* getPixelRef() const { return fBitmap.pixelRef(); }
@@ -116,7 +116,7 @@
///////////////////////////////////////////////////////////////////////////////
-SkImage* SkImage::NewRasterCopy(const SkImage::Info& info, const void* pixels, size_t rowBytes) {
+SkImage* SkImage::NewRasterCopy(const SkImageInfo& info, const void* pixels, size_t rowBytes) {
if (!SkImage_Raster::ValidArgs(info, rowBytes)) {
return NULL;
}
@@ -134,7 +134,7 @@
}
-SkImage* SkImage::NewRasterData(const SkImage::Info& info, SkData* pixelData, size_t rowBytes) {
+SkImage* SkImage::NewRasterData(const SkImageInfo& info, SkData* pixelData, size_t rowBytes) {
if (!SkImage_Raster::ValidArgs(info, rowBytes)) {
return NULL;
}
@@ -156,7 +156,7 @@
return SkNEW_ARGS(SkImage_Raster, (info, data, rowBytes));
}
-SkImage* SkNewImageFromPixelRef(const SkImage::Info& info, SkPixelRef* pr,
+SkImage* SkNewImageFromPixelRef(const SkImageInfo& info, SkPixelRef* pr,
size_t rowBytes) {
return SkNEW_ARGS(SkImage_Raster, (info, pr, rowBytes));
}
diff --git a/image/SkSurface.cpp b/image/SkSurface.cpp
index 1dff7ec..2fd4e10 100644
--- a/image/SkSurface.cpp
+++ b/image/SkSurface.cpp
@@ -101,7 +101,7 @@
return image;
}
-SkSurface* SkSurface::newSurface(const SkImage::Info& info) {
+SkSurface* SkSurface::newSurface(const SkImageInfo& info) {
return asSB(this)->onNewSurface(info);
}
diff --git a/image/SkSurface_Base.h b/image/SkSurface_Base.h
index 6ea8d60..cbae5bc 100644
--- a/image/SkSurface_Base.h
+++ b/image/SkSurface_Base.h
@@ -24,7 +24,7 @@
*/
virtual SkCanvas* onNewCanvas() = 0;
- virtual SkSurface* onNewSurface(const SkImage::Info&) = 0;
+ virtual SkSurface* onNewSurface(const SkImageInfo&) = 0;
/**
* Allocate an SkImage that represents the current contents of the surface.
diff --git a/image/SkSurface_Gpu.cpp b/image/SkSurface_Gpu.cpp
index 6c3f0ed..e9049ae 100644
--- a/image/SkSurface_Gpu.cpp
+++ b/image/SkSurface_Gpu.cpp
@@ -14,12 +14,12 @@
public:
SK_DECLARE_INST_COUNT(SkSurface_Gpu)
- SkSurface_Gpu(GrContext*, const SkImage::Info&, int sampleCount);
+ SkSurface_Gpu(GrContext*, const SkImageInfo&, int sampleCount);
SkSurface_Gpu(GrContext*, GrRenderTarget*);
virtual ~SkSurface_Gpu();
virtual SkCanvas* onNewCanvas() SK_OVERRIDE;
- virtual SkSurface* onNewSurface(const SkImage::Info&) SK_OVERRIDE;
+ virtual SkSurface* onNewSurface(const SkImageInfo&) SK_OVERRIDE;
virtual SkImage* onNewImageSnapshot() SK_OVERRIDE;
virtual void onDraw(SkCanvas*, SkScalar x, SkScalar y,
const SkPaint*) SK_OVERRIDE;
@@ -35,7 +35,7 @@
///////////////////////////////////////////////////////////////////////////////
-SkSurface_Gpu::SkSurface_Gpu(GrContext* ctx, const SkImage::Info& info,
+SkSurface_Gpu::SkSurface_Gpu(GrContext* ctx, const SkImageInfo& info,
int sampleCount)
: INHERITED(info.fWidth, info.fHeight) {
SkBitmap::Config config = SkImageInfoToBitmapConfig(info);
@@ -64,7 +64,7 @@
return SkNEW_ARGS(SkCanvas, (fDevice));
}
-SkSurface* SkSurface_Gpu::onNewSurface(const SkImage::Info& info) {
+SkSurface* SkSurface_Gpu::onNewSurface(const SkImageInfo& info) {
GrRenderTarget* rt = fDevice->accessRenderTarget();
int sampleCount = rt->numSamples();
return SkSurface::NewRenderTarget(fDevice->context(), info, sampleCount);
@@ -113,7 +113,7 @@
return SkNEW_ARGS(SkSurface_Gpu, (ctx, target));
}
-SkSurface* SkSurface::NewRenderTarget(GrContext* ctx, const SkImage::Info& info, int sampleCount) {
+SkSurface* SkSurface::NewRenderTarget(GrContext* ctx, const SkImageInfo& info, int sampleCount) {
if (NULL == ctx) {
return NULL;
}
diff --git a/image/SkSurface_Picture.cpp b/image/SkSurface_Picture.cpp
index 915530c..8cfe6e8 100644
--- a/image/SkSurface_Picture.cpp
+++ b/image/SkSurface_Picture.cpp
@@ -20,7 +20,7 @@
virtual ~SkSurface_Picture();
virtual SkCanvas* onNewCanvas() SK_OVERRIDE;
- virtual SkSurface* onNewSurface(const SkImage::Info&) SK_OVERRIDE;
+ virtual SkSurface* onNewSurface(const SkImageInfo&) SK_OVERRIDE;
virtual SkImage* onNewImageSnapshot() SK_OVERRIDE;
virtual void onDraw(SkCanvas*, SkScalar x, SkScalar y,
const SkPaint*) SK_OVERRIDE;
@@ -51,7 +51,7 @@
return canvas;
}
-SkSurface* SkSurface_Picture::onNewSurface(const SkImage::Info& info) {
+SkSurface* SkSurface_Picture::onNewSurface(const SkImageInfo& info) {
return SkSurface::NewPicture(info.fWidth, info.fHeight);
}
@@ -59,9 +59,9 @@
if (fPicture) {
return SkNewImageFromPicture(fPicture);
} else {
- SkImage::Info info;
+ SkImageInfo info;
info.fWidth = info.fHeight = 0;
- info.fColorType = SkImage::kPMColor_ColorType;
+ info.fColorType = kPMColor_SkColorType;
info.fAlphaType = kOpaque_SkAlphaType;
return SkImage::NewRasterCopy(info, NULL, 0);
}
diff --git a/image/SkSurface_Raster.cpp b/image/SkSurface_Raster.cpp
index 5beabf7..27db504 100644
--- a/image/SkSurface_Raster.cpp
+++ b/image/SkSurface_Raster.cpp
@@ -15,13 +15,13 @@
class SkSurface_Raster : public SkSurface_Base {
public:
- static bool Valid(const SkImage::Info&, size_t rb = kIgnoreRowBytesValue);
+ static bool Valid(const SkImageInfo&, size_t rb = kIgnoreRowBytesValue);
- SkSurface_Raster(const SkImage::Info&, void*, size_t rb);
- SkSurface_Raster(const SkImage::Info&, SkPixelRef*, size_t rb);
+ SkSurface_Raster(const SkImageInfo&, void*, size_t rb);
+ SkSurface_Raster(const SkImageInfo&, SkPixelRef*, size_t rb);
virtual SkCanvas* onNewCanvas() SK_OVERRIDE;
- virtual SkSurface* onNewSurface(const SkImage::Info&) SK_OVERRIDE;
+ virtual SkSurface* onNewSurface(const SkImageInfo&) SK_OVERRIDE;
virtual SkImage* onNewImageSnapshot() SK_OVERRIDE;
virtual void onDraw(SkCanvas*, SkScalar x, SkScalar y,
const SkPaint*) SK_OVERRIDE;
@@ -36,7 +36,7 @@
///////////////////////////////////////////////////////////////////////////////
-bool SkSurface_Raster::Valid(const SkImage::Info& info, size_t rowBytes) {
+bool SkSurface_Raster::Valid(const SkImageInfo& info, size_t rowBytes) {
static const size_t kMaxTotalSize = SK_MaxS32;
SkBitmap::Config config = SkImageInfoToBitmapConfig(info);
@@ -80,7 +80,7 @@
return true;
}
-SkSurface_Raster::SkSurface_Raster(const SkImage::Info& info, void* pixels, size_t rb)
+SkSurface_Raster::SkSurface_Raster(const SkImageInfo& info, void* pixels, size_t rb)
: INHERITED(info.fWidth, info.fHeight) {
SkBitmap::Config config = SkImageInfoToBitmapConfig(info);
fBitmap.setConfig(config, info.fWidth, info.fHeight, rb, info.fAlphaType);
@@ -88,7 +88,7 @@
fWeOwnThePixels = false; // We are "Direct"
}
-SkSurface_Raster::SkSurface_Raster(const SkImage::Info& info, SkPixelRef* pr, size_t rb)
+SkSurface_Raster::SkSurface_Raster(const SkImageInfo& info, SkPixelRef* pr, size_t rb)
: INHERITED(info.fWidth, info.fHeight) {
SkBitmap::Config config = SkImageInfoToBitmapConfig(info);
fBitmap.setConfig(config, info.fWidth, info.fHeight, rb, info.fAlphaType);
@@ -104,7 +104,7 @@
return SkNEW_ARGS(SkCanvas, (fBitmap));
}
-SkSurface* SkSurface_Raster::onNewSurface(const SkImage::Info& info) {
+SkSurface* SkSurface_Raster::onNewSurface(const SkImageInfo& info) {
return SkSurface::NewRaster(info);
}
@@ -139,7 +139,7 @@
///////////////////////////////////////////////////////////////////////////////
-SkSurface* SkSurface::NewRasterDirect(const SkImage::Info& info, void* pixels, size_t rowBytes) {
+SkSurface* SkSurface::NewRasterDirect(const SkImageInfo& info, void* pixels, size_t rowBytes) {
if (!SkSurface_Raster::Valid(info, rowBytes)) {
return NULL;
}
@@ -150,7 +150,7 @@
return SkNEW_ARGS(SkSurface_Raster, (info, pixels, rowBytes));
}
-SkSurface* SkSurface::NewRaster(const SkImage::Info& info) {
+SkSurface* SkSurface::NewRaster(const SkImageInfo& info) {
if (!SkSurface_Raster::Valid(info)) {
return NULL;
}
diff --git a/images/SkImageDecoder.cpp b/images/SkImageDecoder.cpp
index 74c80bc..1ba9365 100644
--- a/images/SkImageDecoder.cpp
+++ b/images/SkImageDecoder.cpp
@@ -403,7 +403,7 @@
}
bool SkImageDecoder::DecodeMemoryToTarget(const void* buffer, size_t size,
- SkImage::Info* info,
+ SkImageInfo* info,
const SkBitmapFactory::Target* target) {
// FIXME: Just to get this working, implement in terms of existing
// ImageDecoder calls.
diff --git a/lazy/SkBitmapFactory.cpp b/lazy/SkBitmapFactory.cpp
index 5464851..1bbb6f0 100644
--- a/lazy/SkBitmapFactory.cpp
+++ b/lazy/SkBitmapFactory.cpp
@@ -48,7 +48,7 @@
return false;
}
- SkImage::Info info;
+ SkImageInfo info;
if (!fDecodeProc(data->data(), data->size(), &info, NULL)) {
return false;
}
diff --git a/lazy/SkLazyPixelRef.cpp b/lazy/SkLazyPixelRef.cpp
index 59df15f..c2ca041 100644
--- a/lazy/SkLazyPixelRef.cpp
+++ b/lazy/SkLazyPixelRef.cpp
@@ -68,7 +68,7 @@
fImageCache->unref();
}
-static size_t ComputeMinRowBytesAndSize(const SkImage::Info& info, size_t* rowBytes) {
+static size_t ComputeMinRowBytesAndSize(const SkImageInfo& info, size_t* rowBytes) {
*rowBytes = SkImageMinRowBytes(info);
Sk64 safeSize;
@@ -80,9 +80,9 @@
return safeSize.is32() ? safeSize.get32() : 0;
}
-const SkImage::Info* SkLazyPixelRef::getCachedInfo() {
+const SkImageInfo* SkLazyPixelRef::getCachedInfo() {
if (fLazilyCachedInfo.fWidth < 0) {
- SkImage::Info info;
+ SkImageInfo info;
fErrorInDecoding = !fDecodeProc(fData->data(), fData->size(), &info, NULL);
if (fErrorInDecoding) {
return NULL;
@@ -94,7 +94,7 @@
/**
Returns bitmap->getPixels() on success; NULL on failure */
-static void* decode_into_bitmap(SkImage::Info* info,
+static void* decode_into_bitmap(SkImageInfo* info,
SkBitmapFactory::DecodeProc decodeProc,
size_t* rowBytes,
SkData* data,
@@ -122,7 +122,7 @@
SkASSERT(!fErrorInDecoding);
SkASSERT(NULL == fImageCache);
SkBitmap bitmap;
- const SkImage::Info* info = this->getCachedInfo();
+ const SkImageInfo* info = this->getCachedInfo();
if (info == NULL) {
return NULL;
}
@@ -147,7 +147,7 @@
return pixels;
} else {
// Cache has been purged, must re-decode.
- void* pixels = decode_into_bitmap(const_cast<SkImage::Info*>(info),
+ void* pixels = decode_into_bitmap(const_cast<SkImageInfo*>(info),
fDecodeProc, &fRowBytes, fData,
&bitmap);
if (NULL == pixels) {
@@ -204,7 +204,7 @@
SkASSERT(fData != NULL && fData->size() > 0);
if (NULL == target.fAddr) {
- const SkImage::Info* info = this->getCachedInfo();
+ const SkImageInfo* info = this->getCachedInfo();
if (NULL == info) {
SkASSERT(SkImageCache::UNINITIALIZED_ID == fCacheId);
return NULL;
@@ -262,7 +262,7 @@
return fData;
}
-static bool init_from_info(SkBitmap* bm, const SkImage::Info& info,
+static bool init_from_info(SkBitmap* bm, const SkImageInfo& info,
size_t rowBytes) {
SkBitmap::Config config = SkImageInfoToBitmapConfig(info);
if (SkBitmap::kNo_Config == config) {
@@ -284,7 +284,7 @@
return false;
}
- SkImage::Info info;
+ SkImageInfo info;
// Determine the size of the image in order to determine how much memory to allocate.
// FIXME: As an optimization, only do this part once.
fErrorInDecoding = !fDecodeProc(fData->data(), fData->size(), &info, NULL);
diff --git a/lazy/SkLazyPixelRef.h b/lazy/SkLazyPixelRef.h
index c7fbd7b..f8a16d1 100644
--- a/lazy/SkLazyPixelRef.h
+++ b/lazy/SkLazyPixelRef.h
@@ -77,7 +77,7 @@
SkScaledImageCache::ID* fScaledCacheId;
};
size_t fRowBytes;
- SkImage::Info fLazilyCachedInfo;
+ SkImageInfo fLazilyCachedInfo;
#if LAZY_CACHE_STATS
static int32_t gCacheHits;
diff --git a/ports/SkImageDecoder_empty.cpp b/ports/SkImageDecoder_empty.cpp
index ff2fa02..8a45dfa 100644
--- a/ports/SkImageDecoder_empty.cpp
+++ b/ports/SkImageDecoder_empty.cpp
@@ -84,7 +84,7 @@
void SkImageDecoder::setSampleSize(int) {}
-bool SkImageDecoder::DecodeMemoryToTarget(const void*, size_t, SkImage::Info*,
+bool SkImageDecoder::DecodeMemoryToTarget(const void*, size_t, SkImageInfo*,
const SkBitmapFactory::Target*) {
return false;
}