| Index: include/core/SkColorTable.h
|
| diff --git a/include/core/SkColorTable.h b/include/core/SkColorTable.h
|
| index c6e31b94d421e7f7c18ea2f458640b70bc62b719..f8d1ccf07b7a45325c7dcf7e01347316befa8724 100644
|
| --- a/include/core/SkColorTable.h
|
| +++ b/include/core/SkColorTable.h
|
| @@ -10,7 +10,6 @@
|
| #ifndef SkColorTable_DEFINED
|
| #define SkColorTable_DEFINED
|
|
|
| -#include "SkAlpha.h"
|
| #include "SkColor.h"
|
| #include "SkFlattenable.h"
|
|
|
| @@ -26,15 +25,25 @@ public:
|
| /** Makes a deep copy of colors.
|
| */
|
| SkColorTable(const SkColorTable& src);
|
| - SkColorTable(const SkPMColor colors[], int count,
|
| - SkAlphaType alphaType = kPremul_SkAlphaType);
|
| + /** Preallocates the colortable to have 'count' colors, which
|
| + * are initially set to 0.
|
| + */
|
| + explicit SkColorTable(int count);
|
| + SkColorTable(const SkPMColor colors[], int count);
|
| virtual ~SkColorTable();
|
|
|
| - SkAlphaType alphaType() const { return (SkAlphaType)fAlphaType; }
|
| + 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);
|
|
|
| - bool isOpaque() const {
|
| - return SkAlphaTypeIsOpaque(this->alphaType());
|
| - }
|
| + bool isOpaque() const { return (fFlags & kColorsAreOpaque_Flag) != 0; }
|
| + void setIsOpaque(bool isOpaque);
|
|
|
| /** Returns the number of colors in the table.
|
| */
|
| @@ -48,19 +57,25 @@ public:
|
| return fColors[index];
|
| }
|
|
|
| - /**
|
| - * Return the array of colors for reading. This must be balanced by a call
|
| - * to unlockColors().
|
| - */
|
| - const SkPMColor* lockColors() {
|
| + /** 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() {
|
| SkDEBUGCODE(sk_atomic_inc(&fColorLockCount);)
|
| return fColors;
|
| }
|
| -
|
| - /**
|
| - * Balancing call to lockColors().
|
| - */
|
| - void unlockColors();
|
| + /** Balancing call to lockColors(). If the colors have been changed, pass true.
|
| + */
|
| + void unlockColors(bool changed);
|
|
|
| /** Similar to lockColors(), lock16BitCache() returns the array of
|
| RGB16 colors that mirror the 32bit colors. However, this function
|
| @@ -85,7 +100,7 @@ private:
|
| SkPMColor* fColors;
|
| uint16_t* f16BitCache;
|
| uint16_t fCount;
|
| - uint8_t fAlphaType;
|
| + uint8_t fFlags;
|
| SkDEBUGCODE(int fColorLockCount;)
|
| SkDEBUGCODE(int f16BitCacheLockCount;)
|
|
|
|
|