michael@0: /* michael@0: * Copyright 2012 Google Inc. michael@0: * michael@0: * Use of this source code is governed by a BSD-style license that can be michael@0: * found in the LICENSE file. michael@0: */ michael@0: michael@0: #ifndef SkIBMFamilyClass_DEFINED michael@0: #define SkIBMFamilyClass_DEFINED michael@0: michael@0: #include "SkOTTableTypes.h" michael@0: #include "SkTypedEnum.h" michael@0: michael@0: #pragma pack(push, 1) michael@0: michael@0: struct SkIBMFamilyClass { michael@0: SK_TYPED_ENUM(Class, SK_OT_BYTE, michael@0: ((NoClassification, 0)) michael@0: ((OldstyleSerifs, 1)) michael@0: ((TransitionalSerifs, 2)) michael@0: ((ModernSerifs, 3)) michael@0: ((ClarendonSerifs, 4)) michael@0: ((SlabSerifs, 5)) michael@0: //6 reserved for future use michael@0: ((FreeformSerifs, 7)) michael@0: ((SansSerif, 8)) michael@0: ((Ornamentals, 9)) michael@0: ((Scripts, 10)) michael@0: //11 reserved for future use michael@0: ((Symbolic, 12)) michael@0: //13-15 reserved for future use michael@0: SK_SEQ_END, michael@0: (familyClass)SK_SEQ_END) michael@0: union SubClass { michael@0: struct OldstyleSerifs { michael@0: SK_TYPED_ENUM(Value, SK_OT_BYTE, michael@0: ((NoClassification, 0)) michael@0: ((IBMRoundedLegibility, 1)) michael@0: ((Garalde, 2)) michael@0: ((Venetian, 3)) michael@0: ((ModifiedVenetian, 4)) michael@0: ((DutchModern, 5)) michael@0: ((DutchTraditional, 6)) michael@0: ((Contemporary, 7)) michael@0: ((Calligraphic, 8)) michael@0: //9-14 reserved for future use michael@0: ((Miscellaneous, 15)) michael@0: SK_SEQ_END, michael@0: (value)SK_SEQ_END) michael@0: } oldstyleSerifs; michael@0: struct TransitionalSerifs { michael@0: SK_TYPED_ENUM(Value, SK_OT_BYTE, michael@0: ((NoClassification, 0)) michael@0: ((DirectLine, 1)) michael@0: ((Script, 2)) michael@0: //3-14 reserved for future use michael@0: ((Miscellaneous, 15)) michael@0: SK_SEQ_END, michael@0: (value)SK_SEQ_END) michael@0: } transitionalSerifs; michael@0: struct ModernSerifs { michael@0: SK_TYPED_ENUM(Value, SK_OT_BYTE, michael@0: ((NoClassification, 0)) michael@0: ((Italian, 1)) michael@0: ((Script, 2)) michael@0: //3-14 reserved for future use michael@0: ((Miscellaneous, 15)) michael@0: SK_SEQ_END, michael@0: (value)SK_SEQ_END) michael@0: } modernSerifs; michael@0: struct ClarendonSerifs { michael@0: SK_TYPED_ENUM(Value, SK_OT_BYTE, michael@0: ((NoClassification, 0)) michael@0: ((Clarendon, 1)) michael@0: ((Modern, 2)) michael@0: ((Traditional, 3)) michael@0: ((Newspaper, 4)) michael@0: ((StubSerif, 5)) michael@0: ((Monotone, 6)) michael@0: ((Typewriter, 7)) michael@0: //8-14 reserved for future use michael@0: ((Miscellaneous, 15)) michael@0: SK_SEQ_END, michael@0: (value)SK_SEQ_END) michael@0: } clarendonSerifs; michael@0: struct SlabSerifs { michael@0: SK_TYPED_ENUM(Value, SK_OT_BYTE, michael@0: ((NoClassification, 0)) michael@0: ((Monotone, 1)) michael@0: ((Humanist, 2)) michael@0: ((Geometric, 3)) michael@0: ((Swiss, 4)) michael@0: ((Typewriter, 5)) michael@0: //6-14 reserved for future use michael@0: ((Miscellaneous, 15)) michael@0: SK_SEQ_END, michael@0: (value)SK_SEQ_END) michael@0: } slabSerifs; michael@0: struct FreeformSerifs { michael@0: SK_TYPED_ENUM(Value, SK_OT_BYTE, michael@0: ((NoClassification, 0)) michael@0: ((Modern, 1)) michael@0: //2-14 reserved for future use michael@0: ((Miscellaneous, 15)) michael@0: SK_SEQ_END, michael@0: (value)SK_SEQ_END) michael@0: } freeformSerifs; michael@0: struct SansSerif { michael@0: SK_TYPED_ENUM(Value, SK_OT_BYTE, michael@0: ((NoClassification, 0)) michael@0: ((IBMNeoGrotesqueGothic, 1)) michael@0: ((Humanist, 2)) michael@0: ((LowXRoundGeometric, 3)) michael@0: ((HighXRoundGeometric, 4)) michael@0: ((NeoGrotesqueGothic, 5)) michael@0: ((ModifiedNeoGrotesqueGothic, 6)) michael@0: //7-8 reserved for future use michael@0: ((TypewriterGothic, 9)) michael@0: ((Matrix, 10)) michael@0: //11-14 reserved for future use michael@0: ((Miscellaneous, 15)) michael@0: SK_SEQ_END, michael@0: (value)SK_SEQ_END) michael@0: } sansSerif; michael@0: struct Ornamentals { michael@0: SK_TYPED_ENUM(Value, SK_OT_BYTE, michael@0: ((NoClassification, 0)) michael@0: ((Engraver, 1)) michael@0: ((BlackLetter, 2)) michael@0: ((Decorative, 3)) michael@0: ((ThreeDimensional, 4)) michael@0: //5-14 reserved for future use michael@0: ((Miscellaneous, 15)) michael@0: SK_SEQ_END, michael@0: (value)SK_SEQ_END) michael@0: } ornamentals; michael@0: struct Scripts { michael@0: SK_TYPED_ENUM(Value, SK_OT_BYTE, michael@0: ((NoClassification, 0)) michael@0: ((Uncial, 1)) michael@0: ((Brush_Joined, 2)) michael@0: ((Formal_Joined, 3)) michael@0: ((Monotone_Joined, 4)) michael@0: ((Calligraphic, 5)) michael@0: ((Brush_Unjoined, 6)) michael@0: ((Formal_Unjoined, 7)) michael@0: ((Monotone_Unjoined, 8)) michael@0: //9-14 reserved for future use michael@0: ((Miscellaneous, 15)) michael@0: SK_SEQ_END, michael@0: (value)SK_SEQ_END) michael@0: } scripts; michael@0: struct Symbolic { michael@0: SK_TYPED_ENUM(Value, SK_OT_BYTE, michael@0: ((NoClassification, 0)) michael@0: //1-2 reserved for future use michael@0: ((MixedSerif, 3)) michael@0: //4-5 reserved for future use michael@0: ((OldstyleSerif, 6)) michael@0: ((NeoGrotesqueSansSerif, 7)) michael@0: //8-14 reserved for future use michael@0: ((Miscellaneous, 15)) michael@0: SK_SEQ_END, michael@0: (value)SK_SEQ_END) michael@0: } symbolic; michael@0: } familySubClass; michael@0: }; michael@0: michael@0: #pragma pack(pop) michael@0: michael@0: michael@0: SK_COMPILE_ASSERT(sizeof(SkIBMFamilyClass) == 2, sizeof_SkIBMFamilyClass_not_2); michael@0: michael@0: #endif