diff options
-rw-r--r-- | include/core/SkImageInfo.h | 40 | ||||
-rw-r--r-- | src/core/SkImageInfo.cpp | 28 |
2 files changed, 36 insertions, 32 deletions
diff --git a/include/core/SkImageInfo.h b/include/core/SkImageInfo.h index 4b308c05d8..1cac7ebc4d 100644 --- a/include/core/SkImageInfo.h +++ b/include/core/SkImageInfo.h @@ -86,42 +86,18 @@ enum SkColorType { #endif }; +extern const uint8_t gPrivate_SkColorTypeBytesPerPixel[]; + static int SkColorTypeBytesPerPixel(SkColorType ct) { - static const uint8_t gSize[] = { - 0, // Unknown - 1, // Alpha_8 - 2, // RGB_565 - 2, // ARGB_4444 - 4, // RGBA_8888 - 4, // BGRA_8888 - 1, // kIndex_8 - 1, // kGray_8 - 8, // kRGBA_F16 - }; - static_assert(SK_ARRAY_COUNT(gSize) == (size_t)(kLastEnum_SkColorType + 1), - "size_mismatch_with_SkColorType_enum"); - - SkASSERT((size_t)ct < SK_ARRAY_COUNT(gSize)); - return gSize[ct]; + SkASSERT((unsigned)ct <= (unsigned)kLastEnum_SkColorType); + return gPrivate_SkColorTypeBytesPerPixel[ct]; } +extern const uint8_t gPrivate_SkColorTypeShiftPerPixel[]; + static int SkColorTypeShiftPerPixel(SkColorType ct) { - static const uint8_t gShift[] = { - 0, // Unknown - 0, // Alpha_8 - 1, // RGB_565 - 1, // ARGB_4444 - 2, // RGBA_8888 - 2, // BGRA_8888 - 0, // kIndex_8 - 0, // kGray_8 - 3, // kRGBA_F16 - }; - static_assert(SK_ARRAY_COUNT(gShift) == (size_t)(kLastEnum_SkColorType + 1), - "size_mismatch_with_SkColorType_enum"); - - SkASSERT((size_t)ct < SK_ARRAY_COUNT(gShift)); - return gShift[ct]; + SkASSERT((unsigned)ct <= (unsigned)kLastEnum_SkColorType); + return gPrivate_SkColorTypeShiftPerPixel[ct]; } static inline size_t SkColorTypeMinRowBytes(SkColorType ct, int width) { diff --git a/src/core/SkImageInfo.cpp b/src/core/SkImageInfo.cpp index 16f0a0109c..6b6fb17d35 100644 --- a/src/core/SkImageInfo.cpp +++ b/src/core/SkImageInfo.cpp @@ -9,6 +9,34 @@ #include "SkReadBuffer.h" #include "SkWriteBuffer.h" +const uint8_t gPrivate_SkColorTypeBytesPerPixel[] = { + 0, // Unknown + 1, // Alpha_8 + 2, // RGB_565 + 2, // ARGB_4444 + 4, // RGBA_8888 + 4, // BGRA_8888 + 1, // kIndex_8 + 1, // kGray_8 + 8, // kRGBA_F16 +}; +static_assert(SK_ARRAY_COUNT(gPrivate_SkColorTypeBytesPerPixel) == (size_t)(kLastEnum_SkColorType + 1), + "size_mismatch_with_SkColorType_enum"); + +const uint8_t gPrivate_SkColorTypeShiftPerPixel[] = { + 0, // Unknown + 0, // Alpha_8 + 1, // RGB_565 + 1, // ARGB_4444 + 2, // RGBA_8888 + 2, // BGRA_8888 + 0, // kIndex_8 + 0, // kGray_8 + 3, // kRGBA_F16 +}; +static_assert(SK_ARRAY_COUNT(gPrivate_SkColorTypeShiftPerPixel) == (size_t)(kLastEnum_SkColorType + 1), + "size_mismatch_with_SkColorType_enum"); + static bool profile_type_is_valid(SkColorProfileType profileType) { return (profileType >= 0) && (profileType <= kLastEnum_SkColorProfileType); } |