OLD | NEW |
| (Empty) |
1 /* libs/graphics/sgl/SkAutoKern.h | |
2 ** | |
3 ** Copyright 2006, The Android Open Source Project | |
4 ** | |
5 ** Licensed under the Apache License, Version 2.0 (the "License"); | |
6 ** you may not use this file except in compliance with the License. | |
7 ** You may obtain a copy of the License at | |
8 ** | |
9 ** http://www.apache.org/licenses/LICENSE-2.0 | |
10 ** | |
11 ** Unless required by applicable law or agreed to in writing, software | |
12 ** distributed under the License is distributed on an "AS IS" BASIS, | |
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 ** See the License for the specific language governing permissions and | |
15 ** limitations under the License. | |
16 */ | |
17 | |
18 #ifndef SkAutoKern_DEFINED | |
19 #define SkAutoKern_DEFINED | |
20 | |
21 #include "SkScalerContext.h" | |
22 | |
23 #define SkAutoKern_AdjustF(prev, next) (((next) - (prev) + 32) >> 6 << 16) | |
24 #define SkAutoKern_AdjustS(prev, next) SkIntToScalar(((next) - (prev) + 32) >
> 6) | |
25 | |
26 /* this is a helper class to perform auto-kerning | |
27 * the adjust() method returns a SkFixed corresponding | |
28 * to a +1/0/-1 pixel adjustment | |
29 */ | |
30 | |
31 class SkAutoKern { | |
32 public: | |
33 SkAutoKern() : fPrevRsbDelta(0) {} | |
34 | |
35 SkFixed adjust(const SkGlyph& glyph) | |
36 { | |
37 // if (SkAbs32(glyph.fLsbDelta) > 47 || SkAbs32(glyph.fRsbDelta) > 47) | |
38 // printf("------- %d> L %d R %d\n", glyph.f_GlyphID, glyph.fLsbDelta
, glyph.fRsbDelta); | |
39 | |
40 #if 0 | |
41 int distort = fPrevRsbDelta - glyph.fLsbDelta; | |
42 | |
43 fPrevRsbDelta = glyph.fRsbDelta; | |
44 | |
45 if (distort >= 32) | |
46 return -SK_Fixed1; | |
47 else if (distort < -32) | |
48 return +SK_Fixed1; | |
49 else | |
50 return 0; | |
51 #else | |
52 SkFixed adjust = SkAutoKern_AdjustF(fPrevRsbDelta, glyph.fLsbDelta); | |
53 fPrevRsbDelta = glyph.fRsbDelta; | |
54 return adjust; | |
55 #endif | |
56 } | |
57 private: | |
58 int fPrevRsbDelta; | |
59 }; | |
60 | |
61 #endif | |
62 | |
OLD | NEW |