1 /* 2 * Copyright 2013 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 SkTTCFHeader_DEFINED 9 #define SkTTCFHeader_DEFINED 10 11 #include "SkOTTableTypes.h" 12 13 #pragma pack(push, 1) 14 15 struct SkTTCFHeader { 16 SK_SFNT_ULONG ttcTag; 17 static const SK_OT_CHAR TAG0 = 't'; 18 static const SK_OT_CHAR TAG1 = 't'; 19 static const SK_OT_CHAR TAG2 = 'c'; 20 static const SK_OT_CHAR TAG3 = 'f'; 21 static const SK_OT_ULONG TAG = SkOTTableTAG<SkTTCFHeader>::value; 22 23 SK_OT_Fixed version; 24 static const SK_OT_Fixed version_1 = SkTEndian_SwapBE32(1 << 16); 25 static const SK_OT_Fixed version_2 = SkTEndian_SwapBE32(2 << 16); 26 27 SK_OT_ULONG numOffsets; 28 //SK_OT_ULONG offset[numOffsets] 29 30 struct Version2Ext { 31 SK_OT_ULONG dsigType; 32 struct dsigType_None { 33 static const SK_OT_CHAR TAG0 = 0; 34 static const SK_OT_CHAR TAG1 = 0; 35 static const SK_OT_CHAR TAG2 = 0; 36 static const SK_OT_CHAR TAG3 = 0; 37 static const SK_OT_ULONG TAG = SkOTTableTAG<dsigType_None>::value; 38 }; 39 struct dsigType_Format1 { 40 static const SK_OT_CHAR TAG0 = 'D'; 41 static const SK_OT_CHAR TAG1 = 'S'; 42 static const SK_OT_CHAR TAG2 = 'I'; 43 static const SK_OT_CHAR TAG3 = 'G'; 44 static const SK_OT_ULONG TAG = SkOTTableTAG<dsigType_Format1>::value; 45 }; 46 SK_OT_ULONG dsigLength; //Length of DSIG table (in bytes). 47 SK_OT_ULONG dsigOffset; //Offset of DSIG table from the beginning of file (in bytes). 48 };// version2ext (if version == version_2) 49 }; 50 51 #pragma pack(pop) 52 53 54 SK_COMPILE_ASSERT(sizeof(SkTTCFHeader) == 12, sizeof_SkTTCFHeader_not_12); 55 56 #endif 57