aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorGravatar djsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-06-12 15:17:27 +0000
committerGravatar djsollen@google.com <djsollen@google.com@2bbb7eff-a529-9590-31e7-b0007b416f81>2012-06-12 15:17:27 +0000
commit64a0ec36555352ec31aa7c5a7630a5d042b010ba (patch)
tree4efc07f3ff20286b3e67ce4c0184850d28a5c554 /include
parent777442d52e10e517a737ccd465a884564fdbf772 (diff)
Move SkColorTable into its own header and reduce includes in SkFlattenable.h
Review URL: https://codereview.appspot.com/6299072 git-svn-id: http://skia.googlecode.com/svn/trunk@4236 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'include')
-rw-r--r--include/core/SkBitmap.h90
-rw-r--r--include/core/SkColorTable.h110
-rw-r--r--include/core/SkFlattenable.h6
-rw-r--r--include/utils/SkSfntUtils.h1
4 files changed, 115 insertions, 92 deletions
diff --git a/include/core/SkBitmap.h b/include/core/SkBitmap.h
index 8ce3f67604..514357f6cc 100644
--- a/include/core/SkBitmap.h
+++ b/include/core/SkBitmap.h
@@ -12,6 +12,7 @@
#include "Sk64.h"
#include "SkColor.h"
+#include "SkColorTable.h"
#include "SkPoint.h"
#include "SkRefCnt.h"
@@ -645,95 +646,6 @@ private:
static SkFixed ComputeMipLevel(SkFixed sx, SkFixed dy);
};
-/** \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.
-*/
-class SkColorTable : public SkRefCnt {
-public:
- /** 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);
- explicit SkColorTable(SkFlattenableReadBuffer&);
- SkColorTable(const SkPMColor colors[], int count);
- 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);
-
- bool isOpaque() const { return (fFlags & kColorsAreOpaque_Flag) != 0; }
- void setIsOpaque(bool isOpaque);
-
- /** Returns the number of colors in the table.
- */
- int count() const { return fCount; }
-
- /** Returns the specified color from the table. In the debug build, this asserts that
- the index is in range (0 <= index < count).
- */
- SkPMColor operator[](int index) const {
- SkASSERT(fColors != NULL && (unsigned)index < fCount);
- 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() {
- SkDEBUGCODE(fColorLockCount += 1;)
- return fColors;
- }
- /** 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
- will return null if kColorsAreOpaque_Flag is not set.
- Also, unlike lockColors(), the returned array here cannot be modified.
- */
- const uint16_t* lock16BitCache();
- /** Balancing call to lock16BitCache().
- */
- void unlock16BitCache() {
- SkASSERT(f16BitCacheLockCount > 0);
- SkDEBUGCODE(f16BitCacheLockCount -= 1);
- }
-
- void flatten(SkFlattenableWriteBuffer&) const;
-
-private:
- SkPMColor* fColors;
- uint16_t* f16BitCache;
- uint16_t fCount;
- uint8_t fFlags;
- SkDEBUGCODE(int fColorLockCount;)
- SkDEBUGCODE(int f16BitCacheLockCount;)
-
- void inval16BitCache();
-};
-
class SkAutoLockPixels : public SkNoncopyable {
public:
SkAutoLockPixels(const SkBitmap& bm, bool doLock = true) : fBitmap(bm) {
diff --git a/include/core/SkColorTable.h b/include/core/SkColorTable.h
new file mode 100644
index 0000000000..de6cb832f4
--- /dev/null
+++ b/include/core/SkColorTable.h
@@ -0,0 +1,110 @@
+
+/*
+ * Copyright 2012 Google Inc.
+ *
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+
+#ifndef SkColorTable_DEFINED
+#define SkColorTable_DEFINED
+
+#include "SkColor.h"
+#include "SkFlattenable.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.
+*/
+class SkColorTable : public SkFlattenable {
+public:
+ /** 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);
+ 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);
+
+ bool isOpaque() const { return (fFlags & kColorsAreOpaque_Flag) != 0; }
+ void setIsOpaque(bool isOpaque);
+
+ /** Returns the number of colors in the table.
+ */
+ int count() const { return fCount; }
+
+ /** Returns the specified color from the table. In the debug build, this asserts that
+ the index is in range (0 <= index < count).
+ */
+ SkPMColor operator[](int index) const {
+ SkASSERT(fColors != NULL && (unsigned)index < fCount);
+ 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() {
+ SkDEBUGCODE(fColorLockCount += 1;)
+ return fColors;
+ }
+ /** 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
+ will return null if kColorsAreOpaque_Flag is not set.
+ Also, unlike lockColors(), the returned array here cannot be modified.
+ */
+ const uint16_t* lock16BitCache();
+ /** Balancing call to lock16BitCache().
+ */
+ void unlock16BitCache() {
+ SkASSERT(f16BitCacheLockCount > 0);
+ SkDEBUGCODE(f16BitCacheLockCount -= 1);
+ }
+
+ SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkColorTable)
+
+protected:
+ explicit SkColorTable(SkFlattenableReadBuffer&);
+ void flatten(SkFlattenableWriteBuffer&) const;
+
+private:
+ SkPMColor* fColors;
+ uint16_t* f16BitCache;
+ uint16_t fCount;
+ uint8_t fFlags;
+ SkDEBUGCODE(int fColorLockCount;)
+ SkDEBUGCODE(int f16BitCacheLockCount;)
+
+ void inval16BitCache();
+
+ typedef SkFlattenable INHERITED;
+};
+
+#endif
diff --git a/include/core/SkFlattenable.h b/include/core/SkFlattenable.h
index 253f5710e0..c33ff67ddd 100644
--- a/include/core/SkFlattenable.h
+++ b/include/core/SkFlattenable.h
@@ -11,15 +11,15 @@
#define SkFlattenable_DEFINED
#include "SkRefCnt.h"
-#include "SkBitmap.h"
-#include "SkPath.h"
-#include "SkPoint.h"
#include "SkReader32.h"
#include "SkTDArray.h"
#include "SkWriter32.h"
+class SkBitmap;
class SkFlattenableReadBuffer;
class SkFlattenableWriteBuffer;
+class SkPath;
+class SkPoint;
class SkString;
#if SK_ALLOW_STATIC_GLOBAL_INITIALIZERS
diff --git a/include/utils/SkSfntUtils.h b/include/utils/SkSfntUtils.h
index 69c9c03980..d87a4ed665 100644
--- a/include/utils/SkSfntUtils.h
+++ b/include/utils/SkSfntUtils.h
@@ -9,6 +9,7 @@
#ifndef SkSfntUtils_DEFINED
#define SkSfntUtils_DEFINED
+#include "Sk64.h"
#include "SkFontHost.h"
struct SkSfntTable_head {