• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 /*
3  * Copyright 2008 The Android Open Source Project
4  *
5  * Use of this source code is governed by a BSD-style license that can be
6  * found in the LICENSE file.
7  */
8 
9 
10 #ifndef SkUnitMappers_DEFINED
11 #define SkUnitMappers_DEFINED
12 
13 #include "SkUnitMapper.h"
14 
15 /** This discretizes the range [0...1) into N discret values.
16 */
17 class SkDiscreteMapper : public SkUnitMapper {
18 public:
19     SkDiscreteMapper(int segments);
20     // override from SkUnitMapper
21     virtual uint16_t mapUnit16(uint16_t x);
22 
23     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkDiscreteMapper)
24 
25 protected:
26     SkDiscreteMapper(SkFlattenableReadBuffer& );
27     virtual void flatten(SkFlattenableWriteBuffer&) const SK_OVERRIDE;
28 
29 private:
30     int     fSegments;
31     SkFract fScale;    // computed from fSegments
32 
33     typedef SkUnitMapper INHERITED;
34 };
35 
36 /** This returns cos(x), to simulate lighting a sphere, where 0 maps to the
37     center of the sphere, and 1 maps to the edge.
38 */
39 class SkCosineMapper : public SkUnitMapper {
40 public:
SkCosineMapper()41     SkCosineMapper() {}
42     // override from SkUnitMapper
43     virtual uint16_t mapUnit16(uint16_t x);
44 
45     SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkCosineMapper)
46 
47 protected:
48     SkCosineMapper(SkFlattenableReadBuffer&);
49 
50 private:
51 
52     typedef SkUnitMapper INHERITED;
53 };
54 
55 #endif
56