Index: include/core/SkColorTable.h |
diff --git a/include/core/SkColorTable.h b/include/core/SkColorTable.h |
index 20d18d26143530b90db3b3d9ec9a9b56b267a84b..c8cc3d0fb43a5ef1d662819c28d1767bf877fc60 100644 |
--- a/include/core/SkColorTable.h |
+++ b/include/core/SkColorTable.h |
@@ -13,19 +13,19 @@ |
#include "SkColor.h" |
#include "SkFlattenable.h" |
#include "SkImageInfo.h" |
+#include "SkLazyPtr.h" |
/** \class SkColorTable |
SkColorTable holds an array SkPMColors (premultiplied 32-bit colors) used by |
8-bit bitmaps, where the bitmap bytes are interpreted as indices into the colortable. |
+ |
+ SkColorTable is thread-safe. |
*/ |
class SK_API SkColorTable : public SkRefCnt { |
public: |
SK_DECLARE_INST_COUNT(SkColorTable) |
- /** Makes a deep copy of colors. |
- */ |
- SkColorTable(const SkColorTable& src); |
SkColorTable(const SkPMColor colors[], int count); |
virtual ~SkColorTable(); |
@@ -41,23 +41,23 @@ public: |
return fColors[index]; |
} |
- // TODO: Would making the read() methods const allow us to avoid copies? |
- |
/** Return the array of colors for reading. |
*/ |
- const SkPMColor* readColors() { return fColors; } |
+ const SkPMColor* readColors() const { return fColors; } |
/** read16BitCache() returns the array of RGB16 colors that mirror the 32bit colors. |
*/ |
- const uint16_t* read16BitCache(); |
+ const uint16_t* read16BitCache() const; |
explicit SkColorTable(SkReadBuffer&); |
void writeToBuffer(SkWriteBuffer&) const; |
private: |
- SkPMColor* fColors; |
- uint16_t* f16BitCache; |
- int fCount; |
+ static void Free16BitCache(uint16_t* cache) { sk_free(cache); } |
+ |
+ SkPMColor* fColors; |
+ SkLazyPtr<uint16_t, Free16BitCache> f16BitCache; |
+ int fCount; |
reed1
2014/12/02 17:46:31
can we make fColors and fCount const?
mtklein
2014/12/02 17:51:18
Maybe, but it'll be an awkward enough rewrite of S
|
void init(const SkPMColor* colors, int count); |