Index: src/core/SkColorLookUpTable.h |
diff --git a/src/core/SkColorLookUpTable.h b/src/core/SkColorLookUpTable.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b9eb81acc137fb7e7a9f8f8060a395d0c2ea9616 |
--- /dev/null |
+++ b/src/core/SkColorLookUpTable.h |
@@ -0,0 +1,40 @@ |
+/* |
+ * Copyright 2016 Google Inc. |
+ * |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ */ |
+ |
+#ifndef SkColorLookUpTable_DEFINED |
+#define SkColorLookUpTable_DEFINED |
+ |
+#include "SkRefCnt.h" |
+#include "SkTemplates.h" |
+ |
+class SkColorLookUpTable : public SkRefCnt { |
+public: |
+ static constexpr uint8_t kOutputChannels = 3; |
+ |
+ SkColorLookUpTable(uint8_t inputChannels, const uint8_t gridPoints[3]) { |
+ SkASSERT(3 == inputChannels); |
+ memcpy(fGridPoints, gridPoints, 3 * sizeof(uint8_t)); |
+ } |
+ |
+ void interp3D(float dst[3], float src[3]) const; |
+ |
+private: |
+ const float* table() const { |
+ return SkTAddOffset<const float>(this, sizeof(SkColorLookUpTable)); |
+ } |
+ |
+ uint8_t fGridPoints[3]; |
+ |
+public: |
+ // Objects of this type are created in a custom fashion using sk_malloc_throw |
+ // and therefore must be sk_freed. |
+ void* operator new(size_t size) = delete; |
+ void* operator new(size_t, void* p) { return p; } |
+ void operator delete(void* p) { sk_free(p); } |
+}; |
+ |
+#endif |