17710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com/* 27710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com * Copyright 2012 Google Inc. 37710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com * 47710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com * Use of this source code is governed by a BSD-style license that can be 57710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com * found in the LICENSE file. 67710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com */ 77710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com 87710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com#ifndef SkOTTableTypes_DEFINED 97710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com#define SkOTTableTypes_DEFINED 107710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com 117710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com#include "SkTypes.h" 127710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com#include "SkEndian.h" 137710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com 147710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com//All SK_OT_ prefixed types should be considered as big endian. 157710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.comtypedef uint8_t SK_OT_BYTE; 167710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com#if CHAR_BIT == 8 177710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.comtypedef signed char SK_OT_CHAR; //easier to debug 187710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com#else 197710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.comtypedef int8_t SK_OT_CHAR; 207710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com#endif 21aaab6e34d88096b45a4a334d5c704c689c151a83bungeman@google.comtypedef uint16_t SK_OT_SHORT; 227710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.comtypedef uint16_t SK_OT_USHORT; 237710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.comtypedef uint32_t SK_OT_ULONG; 24aaab6e34d88096b45a4a334d5c704c689c151a83bungeman@google.comtypedef uint32_t SK_OT_LONG; 25aaab6e34d88096b45a4a334d5c704c689c151a83bungeman@google.com//16.16 Signed fixed point representation. 267710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.comtypedef int32_t SK_OT_Fixed; 27aaab6e34d88096b45a4a334d5c704c689c151a83bungeman@google.com//2.14 Signed fixed point representation. 28aaab6e34d88096b45a4a334d5c704c689c151a83bungeman@google.comtypedef uint16_t SK_OT_F2DOT14; 297710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com//F units are the units of measurement in em space. 30aaab6e34d88096b45a4a334d5c704c689c151a83bungeman@google.comtypedef uint16_t SK_OT_FWORD; 317710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.comtypedef uint16_t SK_OT_UFWORD; 327710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com//Number of seconds since 12:00 midnight, January 1, 1904. 337710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.comtypedef uint64_t SK_OT_LONGDATETIME; 347710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com 357710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com#define SK_OT_BYTE_BITFIELD SK_UINT8_BITFIELD 367710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com 37a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.comtemplate<typename T> class SkOTTableTAG { 38a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.compublic: 39a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com /** 40a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com * SkOTTableTAG<T>::value is the big endian value of an OpenType table tag. 41a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com * It may be directly compared with raw big endian table data. 42a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com */ 43a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com static const SK_OT_ULONG value = SkTEndian_SwapBE32( 44a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com SkSetFourByteTag(T::TAG0, T::TAG1, T::TAG2, T::TAG3) 45a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com ); 46a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com}; 47a5a2dd09a06ea70800f9649de41a975a118a9426bungeman@google.com 487710150b67d1feb1b3f8f4ab19d60105a26b8112bungeman@google.com#endif 49