]> git.saurik.com Git - apple/icu.git/blob - icuSources/samples/layout/cmaps.h
ICU-461.18.tar.gz
[apple/icu.git] / icuSources / samples / layout / cmaps.h
1 /*
2 ****************************************************************************** *
3 *
4 * Copyright (C) 1999-2003, International Business Machines
5 * Corporation and others. All Rights Reserved.
6 *
7 ****************************************************************************** *
8 * file name: cmaps.h
9 *
10 * created on: ??/??/2001
11 * created by: Eric R. Mader
12 */
13
14 #ifndef __CMAPS_H
15 #define __CMAPS_H
16
17 #include "layout/LETypes.h"
18 #include "sfnt.h"
19
20 class CMAPMapper
21 {
22 public:
23 virtual LEGlyphID unicodeToGlyph(LEUnicode32 unicode32) const = 0;
24
25 virtual ~CMAPMapper();
26
27 static CMAPMapper *createUnicodeMapper(const CMAPTable *cmap);
28
29 protected:
30 CMAPMapper(const CMAPTable *cmap);
31
32 CMAPMapper() {};
33
34 private:
35 const CMAPTable *fcmap;
36 };
37
38 class CMAPFormat4Mapper : public CMAPMapper
39 {
40 public:
41 CMAPFormat4Mapper(const CMAPTable *cmap, const CMAPFormat4Encoding *header);
42
43 virtual ~CMAPFormat4Mapper();
44
45 virtual LEGlyphID unicodeToGlyph(LEUnicode32 unicode32) const;
46
47 protected:
48 CMAPFormat4Mapper() {};
49
50 private:
51 le_uint16 fEntrySelector;
52 le_uint16 fRangeShift;
53 const le_uint16 *fEndCodes;
54 const le_uint16 *fStartCodes;
55 const le_uint16 *fIdDelta;
56 const le_uint16 *fIdRangeOffset;
57 };
58
59 class CMAPGroupMapper : public CMAPMapper
60 {
61 public:
62 CMAPGroupMapper(const CMAPTable *cmap, const CMAPGroup *groups, le_uint32 nGroups);
63
64 virtual ~CMAPGroupMapper();
65
66 virtual LEGlyphID unicodeToGlyph(LEUnicode32 unicode32) const;
67
68 protected:
69 CMAPGroupMapper() {};
70
71 private:
72 le_int32 fPower;
73 le_int32 fRangeOffset;
74 const CMAPGroup *fGroups;
75 };
76
77 inline CMAPMapper::CMAPMapper(const CMAPTable *cmap)
78 : fcmap(cmap)
79 {
80 // nothing else to do
81 }
82
83 inline CMAPMapper::~CMAPMapper()
84 {
85 LE_DELETE_ARRAY(fcmap);
86 }
87
88 #endif
89