change SkColorTable to be immutable

BUG=
R=scroggo@google.com

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

git-svn-id: http://skia.googlecode.com/svn/trunk/include@11676 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/core/SkAlpha.h b/core/SkAlpha.h
index 9e0fcab..74ea687 100644
--- a/core/SkAlpha.h
+++ b/core/SkAlpha.h
@@ -47,4 +47,7 @@
     kLastEnum_SkAlphaType = kUnpremul_SkAlphaType
 };
 
+static inline bool SkAlphaTypeIsOpaque(SkAlphaType at) {
+    return (unsigned)at <= kOpaque_SkAlphaType;
+}
 #endif
diff --git a/core/SkBitmap.h b/core/SkBitmap.h
index 887169c..07d2b95 100644
--- a/core/SkBitmap.h
+++ b/core/SkBitmap.h
@@ -748,7 +748,7 @@
     }
     ~SkAutoLockColors() {
         if (fCTable) {
-            fCTable->unlockColors(false);
+            fCTable->unlockColors();
         }
     }
 
@@ -762,7 +762,7 @@
      */
     const SkPMColor* lockColors(SkColorTable* ctable) {
         if (fCTable) {
-            fCTable->unlockColors(false);
+            fCTable->unlockColors();
         }
         fCTable = ctable;
         fColors = ctable ? ctable->lockColors() : NULL;
diff --git a/core/SkColorTable.h b/core/SkColorTable.h
index f8d1ccf..c6e31b9 100644
--- a/core/SkColorTable.h
+++ b/core/SkColorTable.h
@@ -10,6 +10,7 @@
 #ifndef SkColorTable_DEFINED
 #define SkColorTable_DEFINED
 
+#include "SkAlpha.h"
 #include "SkColor.h"
 #include "SkFlattenable.h"
 
@@ -25,25 +26,15 @@
     /** Makes a deep copy of colors.
      */
     SkColorTable(const SkColorTable& src);
-    /** Preallocates the colortable to have 'count' colors, which
-     *  are initially set to 0.
-    */
-    explicit SkColorTable(int count);
-    SkColorTable(const SkPMColor colors[], int count);
+    SkColorTable(const SkPMColor colors[], int count,
+                 SkAlphaType alphaType = kPremul_SkAlphaType);
     virtual ~SkColorTable();
 
-    enum Flags {
-        kColorsAreOpaque_Flag   = 0x01  //!< if set, all of the colors in the table are opaque (alpha==0xFF)
-    };
-    /** Returns the flag bits for the color table. These can be changed with setFlags().
-    */
-    unsigned getFlags() const { return fFlags; }
-    /** Set the flags for the color table. See the Flags enum for possible values.
-    */
-    void    setFlags(unsigned flags);
+    SkAlphaType alphaType() const { return (SkAlphaType)fAlphaType; }
 
-    bool isOpaque() const { return (fFlags & kColorsAreOpaque_Flag) != 0; }
-    void setIsOpaque(bool isOpaque);
+    bool isOpaque() const {
+        return SkAlphaTypeIsOpaque(this->alphaType());
+    }
 
     /** Returns the number of colors in the table.
     */
@@ -57,25 +48,19 @@
         return fColors[index];
     }
 
-    /** Specify the number of colors in the color table. This does not initialize the colors
-        to any value, just allocates memory for them. To initialize the values, either call
-        setColors(array, count), or follow setCount(count) with a call to
-        lockColors()/{set the values}/unlockColors(true).
-    */
-//    void    setColors(int count) { this->setColors(NULL, count); }
-//    void    setColors(const SkPMColor[], int count);
-
-    /** Return the array of colors for reading and/or writing. This must be
-        balanced by a call to unlockColors(changed?), telling the colortable if
-        the colors were changed during the lock.
-    */
-    SkPMColor* lockColors() {
+    /**
+     *  Return the array of colors for reading. This must be balanced by a call
+     *  to unlockColors().
+     */
+    const SkPMColor* lockColors() {
         SkDEBUGCODE(sk_atomic_inc(&fColorLockCount);)
         return fColors;
     }
-    /** Balancing call to lockColors(). If the colors have been changed, pass true.
-    */
-    void unlockColors(bool changed);
+
+    /**
+     *  Balancing call to lockColors().
+     */
+    void unlockColors();
 
     /** Similar to lockColors(), lock16BitCache() returns the array of
         RGB16 colors that mirror the 32bit colors. However, this function
@@ -100,7 +85,7 @@
     SkPMColor*  fColors;
     uint16_t*   f16BitCache;
     uint16_t    fCount;
-    uint8_t     fFlags;
+    uint8_t     fAlphaType;
     SkDEBUGCODE(int fColorLockCount;)
     SkDEBUGCODE(int f16BitCacheLockCount;)