Index: src/core/SkDevice.cpp |
diff --git a/src/core/SkDevice.cpp b/src/core/SkDevice.cpp |
index dee5bc76afb67a85d796d73905ddd365e3fdce8d..ffb2fcc1e15b1cd56acbc5f793fdebecd4cc0d83 100644 |
--- a/src/core/SkDevice.cpp |
+++ b/src/core/SkDevice.cpp |
@@ -30,6 +30,8 @@ SkDevice::SkDevice(const SkBitmap& bitmap) |
, fAttachedToCanvas(false) |
#endif |
{ |
+ SkASSERT(bitmap.config() != SkBitmap::kIndex8_Config); |
+ SkASSERT(bitmap.premultiplied()); |
fOrigin.setZero(); |
fMetaData = NULL; |
} |
@@ -40,6 +42,8 @@ SkDevice::SkDevice(const SkBitmap& bitmap, const SkDeviceProperties& devicePrope |
, fAttachedToCanvas(false) |
#endif |
{ |
+ SkASSERT(bitmap.config() != SkBitmap::kIndex8_Config); |
+ SkASSERT(bitmap.premultiplied()); |
fOrigin.setZero(); |
fMetaData = NULL; |
} |
@@ -53,6 +57,9 @@ SkDevice::SkDevice(SkBitmap::Config config, int width, int height, bool isOpaque |
fOrigin.setZero(); |
fMetaData = NULL; |
+ if (SkBitmap::kIndex8_Config == config) { |
+ config = SkBitmap::kARGB_8888_Config; |
+ } |
fBitmap.setConfig(config, width, height); |
fBitmap.allocPixels(); |
fBitmap.setIsOpaque(isOpaque); |
@@ -71,6 +78,9 @@ SkDevice::SkDevice(SkBitmap::Config config, int width, int height, bool isOpaque |
fOrigin.setZero(); |
fMetaData = NULL; |
+ if (SkBitmap::kIndex8_Config == config) { |
+ config = SkBitmap::kARGB_8888_Config; |
+ } |
fBitmap.setConfig(config, width, height); |
fBitmap.allocPixels(); |
fBitmap.setIsOpaque(isOpaque); |
@@ -84,6 +94,8 @@ SkDevice::~SkDevice() { |
} |
void SkDevice::replaceBitmapBackendForRasterSurface(const SkBitmap& bm) { |
+ SkASSERT(bm.config() != SkBitmap::kIndex8_Config); |
+ SkASSERT(bm.premultiplied()); |
SkASSERT(bm.width() == fBitmap.width()); |
SkASSERT(bm.height() == fBitmap.height()); |
fBitmap = bm; // intent is to use bm's pixelRef (and rowbytes/config) |
@@ -108,6 +120,9 @@ SkDevice* SkDevice::onCreateCompatibleDevice(SkBitmap::Config config, |
int width, int height, |
bool isOpaque, |
Usage usage) { |
+ if (SkBitmap::kIndex8_Config == config) { |
+ config = SkBitmap::kARGB_8888_Config; |
+ } |
return SkNEW_ARGS(SkDevice,(config, width, height, isOpaque, fLeakyProperties)); |
} |