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;
 }