|
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(SkReadBuffer& ); |
|
27 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; |
|
28 |
|
29 private: |
|
30 int fSegments; |
|
31 int32_t 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: |
|
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(SkReadBuffer&); |
|
49 |
|
50 private: |
|
51 |
|
52 typedef SkUnitMapper INHERITED; |
|
53 }; |
|
54 |
|
55 #endif |