blob: 45d9822f506faaa47aa0e4bcd5ec198d6eb97179 [file] [log] [blame]
bungeman@google.comf8d1aee2012-02-02 19:15:21 +00001/*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#ifndef SkIBMFamilyClass_DEFINED
9#define SkIBMFamilyClass_DEFINED
10
11#include "SkOTTableTypes.h"
12#include "SkTypedEnum.h"
13
14#pragma pack(push, 1)
15
16struct SkIBMFamilyClass {
17 SK_TYPED_ENUM(Class, SK_OT_BYTE,
18 ((NoClassification, 0))
19 ((OldstyleSerifs, 1))
20 ((TransitionalSerifs, 2))
21 ((ModernSerifs, 3))
22 ((ClarendonSerifs, 4))
23 ((SlabSerifs, 5))
24 //6 reserved for future use
25 ((FreeformSerifs, 7))
26 ((SansSerif, 8))
27 ((Ornamentals, 9))
28 ((Scripts, 10))
29 //11 reserved for future use
30 ((Symbolic, 12))
31 //13-15 reserved for future use
32 SK_SEQ_END,
33 (familyClass)SK_SEQ_END)
34 union SubClass {
35 struct OldstyleSerifs {
36 SK_TYPED_ENUM(Value, SK_OT_BYTE,
37 ((NoClassification, 0))
38 ((IBMRoundedLegibility, 1))
39 ((Garalde, 2))
40 ((Venetian, 3))
41 ((ModifiedVenetian, 4))
42 ((DutchModern, 5))
43 ((DutchTraditional, 6))
44 ((Contemporary, 7))
45 ((Calligraphic, 8))
46 //9-14 reserved for future use
47 ((Miscellaneous, 15))
48 SK_SEQ_END,
49 (value)SK_SEQ_END)
50 } oldstyleSerifs;
51 struct TransitionalSerifs {
52 SK_TYPED_ENUM(Value, SK_OT_BYTE,
53 ((NoClassification, 0))
54 ((DirectLine, 1))
55 ((Script, 2))
56 //3-14 reserved for future use
57 ((Miscellaneous, 15))
58 SK_SEQ_END,
59 (value)SK_SEQ_END)
60 } transitionalSerifs;
61 struct ModernSerifs {
62 SK_TYPED_ENUM(Value, SK_OT_BYTE,
63 ((NoClassification, 0))
64 ((Italian, 1))
65 ((Script, 2))
66 //3-14 reserved for future use
67 ((Miscellaneous, 15))
68 SK_SEQ_END,
69 (value)SK_SEQ_END)
70 } modernSerifs;
71 struct ClarendonSerifs {
72 SK_TYPED_ENUM(Value, SK_OT_BYTE,
73 ((NoClassification, 0))
74 ((Clarendon, 1))
75 ((Modern, 2))
76 ((Traditional, 3))
77 ((Newspaper, 4))
78 ((StubSerif, 5))
79 ((Monotone, 6))
80 ((Typewriter, 7))
81 //8-14 reserved for future use
82 ((Miscellaneous, 15))
83 SK_SEQ_END,
84 (value)SK_SEQ_END)
85 } clarendonSerifs;
86 struct SlabSerifs {
87 SK_TYPED_ENUM(Value, SK_OT_BYTE,
88 ((NoClassification, 0))
89 ((Monotone, 1))
90 ((Humanist, 2))
91 ((Geometric, 3))
92 ((Swiss, 4))
93 ((Typewriter, 5))
94 //6-14 reserved for future use
95 ((Miscellaneous, 15))
96 SK_SEQ_END,
97 (value)SK_SEQ_END)
98 } slabSerifs;
99 struct FreeformSerifs {
100 SK_TYPED_ENUM(Value, SK_OT_BYTE,
101 ((NoClassification, 0))
102 ((Modern, 1))
103 //2-14 reserved for future use
104 ((Miscellaneous, 15))
105 SK_SEQ_END,
106 (value)SK_SEQ_END)
107 } freeformSerifs;
108 struct SansSerif {
109 SK_TYPED_ENUM(Value, SK_OT_BYTE,
110 ((NoClassification, 0))
111 ((IBMNeoGrotesqueGothic, 1))
112 ((Humanist, 2))
113 ((LowXRoundGeometric, 3))
114 ((HighXRoundGeometric, 4))
115 ((NeoGrotesqueGothic, 5))
116 ((ModifiedNeoGrotesqueGothic, 6))
117 //7-8 reserved for future use
118 ((TypewriterGothic, 9))
119 ((Matrix, 10))
120 //11-14 reserved for future use
121 ((Miscellaneous, 15))
122 SK_SEQ_END,
123 (value)SK_SEQ_END)
124 } sansSerif;
125 struct Ornamentals {
126 SK_TYPED_ENUM(Value, SK_OT_BYTE,
127 ((NoClassification, 0))
128 ((Engraver, 1))
129 ((BlackLetter, 2))
130 ((Decorative, 3))
131 ((ThreeDimensional, 4))
132 //5-14 reserved for future use
133 ((Miscellaneous, 15))
134 SK_SEQ_END,
135 (value)SK_SEQ_END)
136 } ornamentals;
137 struct Scripts {
138 SK_TYPED_ENUM(Value, SK_OT_BYTE,
139 ((NoClassification, 0))
140 ((Uncial, 1))
141 ((Brush_Joined, 2))
142 ((Formal_Joined, 3))
143 ((Monotone_Joined, 4))
144 ((Calligraphic, 5))
145 ((Brush_Unjoined, 6))
146 ((Formal_Unjoined, 7))
147 ((Monotone_Unjoined, 8))
148 //9-14 reserved for future use
149 ((Miscellaneous, 15))
150 SK_SEQ_END,
151 (value)SK_SEQ_END)
152 } scripts;
153 struct Symbolic {
154 SK_TYPED_ENUM(Value, SK_OT_BYTE,
155 ((NoClassification, 0))
156 //1-2 reserved for future use
157 ((MixedSerif, 3))
158 //4-5 reserved for future use
159 ((OldstyleSerif, 6))
160 ((NeoGrotesqueSansSerif, 7))
161 //8-14 reserved for future use
162 ((Miscellaneous, 15))
163 SK_SEQ_END,
164 (value)SK_SEQ_END)
165 } symbolic;
166 } familySubClass;
167};
168
169#pragma pack(pop)
170
171
172SK_COMPILE_ASSERT(sizeof(SkIBMFamilyClass) == 2, sizeof_SkIBMFamilyClass_not_2);
173
174#endif