17839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger/*
27839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * Copyright 2013 Google Inc.
37839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger *
47839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * Use of this source code is governed by a BSD-style license that can be
57839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger * found in the LICENSE file.
67839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger */
77839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
87839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#ifndef SkTTCFHeader_DEFINED
97839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#define SkTTCFHeader_DEFINED
107839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
117839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#include "SkOTTableTypes.h"
127839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
137839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#pragma pack(push, 1)
147839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
157839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenbergerstruct SkTTCFHeader {
167839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    SK_SFNT_ULONG ttcTag;
177839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    static const SK_OT_CHAR TAG0 = 't';
187839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    static const SK_OT_CHAR TAG1 = 't';
197839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    static const SK_OT_CHAR TAG2 = 'c';
207839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    static const SK_OT_CHAR TAG3 = 'f';
217839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    static const SK_OT_ULONG TAG = SkOTTableTAG<SkTTCFHeader>::value;
227839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
237839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    SK_OT_Fixed version;
247839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    static const SK_OT_Fixed version_1 = SkTEndian_SwapBE32(1 << 16);
257839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    static const SK_OT_Fixed version_2 = SkTEndian_SwapBE32(2 << 16);
267839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
277839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    SK_OT_ULONG numOffsets;
287839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    //SK_OT_ULONG offset[numOffsets]
297839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
307839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    struct Version2Ext {
317839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger        SK_OT_ULONG dsigType;
327839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger        struct dsigType_None {
337839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger            static const SK_OT_CHAR TAG0 = 0;
347839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger            static const SK_OT_CHAR TAG1 = 0;
357839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger            static const SK_OT_CHAR TAG2 = 0;
367839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger            static const SK_OT_CHAR TAG3 = 0;
377839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger            static const SK_OT_ULONG TAG = SkOTTableTAG<dsigType_None>::value;
387839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger        };
397839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger        struct dsigType_Format1 {
407839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger            static const SK_OT_CHAR TAG0 = 'D';
417839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger            static const SK_OT_CHAR TAG1 = 'S';
427839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger            static const SK_OT_CHAR TAG2 = 'I';
437839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger            static const SK_OT_CHAR TAG3 = 'G';
447839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger            static const SK_OT_ULONG TAG = SkOTTableTAG<dsigType_Format1>::value;
457839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger        };
467839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger        SK_OT_ULONG dsigLength; //Length of DSIG table (in bytes).
477839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger        SK_OT_ULONG dsigOffset; //Offset of DSIG table from the beginning of file (in bytes).
487839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger    };// version2ext (if version == version_2)
497839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger};
507839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
517839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#pragma pack(pop)
527839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
537839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
547839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek SollenbergerSK_COMPILE_ASSERT(sizeof(SkTTCFHeader) == 12, sizeof_SkTTCFHeader_not_12);
557839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger
567839ce1af63bf12fe7b3caa866970bbbb3afb13dDerek Sollenberger#endif
57