summaryrefslogtreecommitdiffstats
path: root/skia/include/SkUnitMappers.h
diff options
context:
space:
mode:
Diffstat (limited to 'skia/include/SkUnitMappers.h')
-rw-r--r--skia/include/SkUnitMappers.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/skia/include/SkUnitMappers.h b/skia/include/SkUnitMappers.h
new file mode 100644
index 0000000..a1331bb
--- /dev/null
+++ b/skia/include/SkUnitMappers.h
@@ -0,0 +1,49 @@
+#ifndef SkUnitMappers_DEFINED
+#define SkUnitMappers_DEFINED
+
+#include "SkUnitMapper.h"
+
+/** This discretizes the range [0...1) into N discret values.
+*/
+class SkDiscreteMapper : public SkUnitMapper {
+public:
+ SkDiscreteMapper(int segments);
+ // override from SkUnitMapper
+ virtual uint16_t mapUnit16(uint16_t x);
+
+protected:
+ SkDiscreteMapper(SkFlattenableReadBuffer& );
+ // overrides from SkFlattenable
+ virtual void flatten(SkFlattenableWriteBuffer& );
+ virtual Factory getFactory();
+private:
+ int fSegments;
+ SkFract fScale; // computed from fSegments
+
+ static SkFlattenable* Create(SkFlattenableReadBuffer& buffer);
+
+ typedef SkUnitMapper INHERITED;
+};
+
+/** This returns cos(x), to simulate lighting a sphere, where 0 maps to the
+ center of the sphere, and 1 maps to the edge.
+*/
+class SkCosineMapper : public SkUnitMapper {
+public:
+ SkCosineMapper() {}
+ // override from SkUnitMapper
+ virtual uint16_t mapUnit16(uint16_t x);
+
+protected:
+ SkCosineMapper(SkFlattenableReadBuffer&);
+ // overrides from SkFlattenable
+ virtual Factory getFactory();
+
+private:
+ static SkFlattenable* Create(SkFlattenableReadBuffer&);
+
+ typedef SkUnitMapper INHERITED;
+};
+
+#endif
+