Index: src/image/SkSurface_Raster.cpp |
diff --git a/src/image/SkSurface_Raster.cpp b/src/image/SkSurface_Raster.cpp |
index 48afe4fc206a27d4e194460929985e6a12a34c2b..1b218eb446222a1e64802c357b8a7ab3c28e362e 100644 |
--- a/src/image/SkSurface_Raster.cpp |
+++ b/src/image/SkSurface_Raster.cpp |
@@ -18,7 +18,7 @@ public: |
static bool Valid(const SkImageInfo&, size_t rb = kIgnoreRowBytesValue); |
SkSurface_Raster(const SkImageInfo&, void*, size_t rb); |
- SkSurface_Raster(const SkImageInfo&, SkPixelRef*, size_t rb); |
+ SkSurface_Raster(SkPixelRef*); |
virtual SkCanvas* onNewCanvas() SK_OVERRIDE; |
virtual SkSurface* onNewSurface(const SkImageInfo&) SK_OVERRIDE; |
@@ -39,25 +39,21 @@ private: |
bool SkSurface_Raster::Valid(const SkImageInfo& info, size_t rowBytes) { |
static const size_t kMaxTotalSize = SK_MaxS32; |
- SkBitmap::Config config = SkImageInfoToBitmapConfig(info); |
- |
int shift = 0; |
- switch (config) { |
- case SkBitmap::kA8_Config: |
+ switch (info.fColorType) { |
+ case kAlpha_8_SkColorType: |
shift = 0; |
break; |
- case SkBitmap::kRGB_565_Config: |
+ case kRGB_565_SkColorType: |
shift = 1; |
break; |
- case SkBitmap::kARGB_8888_Config: |
+ case kPMColor_SkColorType: |
shift = 2; |
break; |
default: |
return false; |
} |
- // TODO: examine colorspace |
- |
if (kIgnoreRowBytesValue == rowBytes) { |
return true; |
} |
@@ -72,7 +68,7 @@ bool SkSurface_Raster::Valid(const SkImageInfo& info, size_t rowBytes) { |
return false; |
} |
- uint64_t size = (uint64_t)info.fHeight * rowBytes; |
+ uint64_t size = sk_64_mul(info.fHeight, rowBytes); |
if (size > kMaxTotalSize) { |
return false; |
} |
@@ -81,21 +77,23 @@ bool SkSurface_Raster::Valid(const SkImageInfo& info, size_t rowBytes) { |
} |
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); |
+ : INHERITED(info) |
+{ |
+ fBitmap.setConfig(info, rb); |
fBitmap.setPixels(pixels); |
fWeOwnThePixels = false; // We are "Direct" |
} |
-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); |
+SkSurface_Raster::SkSurface_Raster(SkPixelRef* pr) |
+ : INHERITED(pr->info().fWidth, pr->info().fHeight) |
+{ |
+ const SkImageInfo& info = pr->info(); |
+ |
+ fBitmap.setConfig(info, info.minRowBytes()); |
fBitmap.setPixelRef(pr); |
fWeOwnThePixels = true; |
- if (!SkAlphaTypeIsOpaque(info.fAlphaType)) { |
+ if (!info.isOpaque()) { |
fBitmap.eraseColor(SK_ColorTRANSPARENT); |
} |
} |
@@ -159,5 +157,5 @@ SkSurface* SkSurface::NewRaster(const SkImageInfo& info) { |
if (NULL == pr.get()) { |
return NULL; |
} |
- return SkNEW_ARGS(SkSurface_Raster, (info, pr, info.minRowBytes())); |
+ return SkNEW_ARGS(SkSurface_Raster, (pr)); |
} |