aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/core/SkImageInfo.h40
-rw-r--r--src/core/SkImageInfo.cpp28
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);
}