move static arrays into impl, to avoid multiple copies
authorreed <reed@google.com>
Fri, 15 Apr 2016 17:03:03 +0000 (10:03 -0700)
committerCommit bot <commit-bot@chromium.org>
Fri, 15 Apr 2016 17:03:03 +0000 (10:03 -0700)
BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1889793007

Review URL: https://codereview.chromium.org/1889793007

include/core/SkImageInfo.h
src/core/SkImageInfo.cpp

index 4b308c05d88ca736d69451f3b970c1bd71b30b12..1cac7ebc4deb44b1394b391c6151e4240a437478 100644 (file)
@@ -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) {
index 16f0a0109cc3b8b694cd56dda6bcbe0d8f83485d..6b6fb17d35fffe5a3acb4b797cf257b00732c45a 100644 (file)
@@ -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);
 }