#include "SkImagePriv.h"
#include "SkCanvas.h"
#include "SkPicture.h"
SkBitmap::Config SkColorTypeToBitmapConfig(SkColorType colorType) {
switch (colorType) {
case kAlpha_8_SkColorType:
return SkBitmap::kA8_Config;
case kARGB_4444_SkColorType:
return SkBitmap::kARGB_4444_Config;
case kRGB_565_SkColorType:
return SkBitmap::kRGB_565_Config;
case kN32_SkColorType:
return SkBitmap::kARGB_8888_Config;
case kIndex_8_SkColorType:
return SkBitmap::kIndex8_Config;
default:
break;
}
return SkBitmap::kNo_Config;
}
SkColorType SkBitmapConfigToColorType(SkBitmap::Config config) {
static const SkColorType gCT[] = {
kUnknown_SkColorType, kAlpha_8_SkColorType, kIndex_8_SkColorType, kRGB_565_SkColorType, kARGB_4444_SkColorType, kN32_SkColorType, };
SkASSERT((unsigned)config < SK_ARRAY_COUNT(gCT));
return gCT[config];
}
SkImage* SkNewImageFromBitmap(const SkBitmap& bm, bool canSharePixelRef) {
const SkImageInfo info = bm.info();
if (kUnknown_SkColorType == info.colorType()) {
return NULL;
}
SkImage* image = NULL;
if (canSharePixelRef || bm.isImmutable()) {
image = SkNewImageFromPixelRef(info, bm.pixelRef(), bm.rowBytes());
} else {
bm.lockPixels();
if (bm.getPixels()) {
image = SkImage::NewRasterCopy(info, bm.getPixels(), bm.rowBytes());
}
bm.unlockPixels();
}
return image;
}