blob: 5af590e5cc53889e94ecc8378e5b837f1e4b2f62 [file] [log] [blame]
bungeman740c3f12014-06-23 08:29:23 -07001/*
2 * Copyright 2014 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 SkOTTable_gasp_DEFINED
9#define SkOTTable_gasp_DEFINED
10
11#include "SkEndian.h"
12#include "SkOTTableTypes.h"
bungeman740c3f12014-06-23 08:29:23 -070013
14#pragma pack(push, 1)
15
16struct SkOTTableGridAndScanProcedure {
17 static const SK_OT_CHAR TAG0 = 'g';
18 static const SK_OT_CHAR TAG1 = 'a';
19 static const SK_OT_CHAR TAG2 = 's';
20 static const SK_OT_CHAR TAG3 = 'p';
21 static const SK_OT_ULONG TAG = SkOTTableTAG<SkOTTableGridAndScanProcedure>::value;
22
23 SK_OT_USHORT version;
24 static const SK_OT_USHORT version0 = SkTEndian_SwapBE16(0);
25 static const SK_OT_USHORT version1 = SkTEndian_SwapBE16(1);
26
27 SK_OT_USHORT numRanges;
28
29 struct GaspRange {
30 SK_OT_USHORT maxPPEM;
31 union behavior {
32 struct Field {
33 //8-15
34 SK_OT_BYTE_BITFIELD(
35 Reserved08,
36 Reserved09,
37 Reserved10,
38 Reserved11,
39 Reserved12,
40 Reserved13,
41 Reserved14,
42 Reserved15)
43 //0-7
44 SK_OT_BYTE_BITFIELD(
45 Gridfit,
46 DoGray,
47 SymmetricGridfit, // Version 1
48 SymmetricSmoothing, // Version 1
49 Reserved04,
50 Reserved05,
51 Reserved06,
52 Reserved07)
53 } field;
54 struct Raw {
55 static const SK_OT_USHORT GridfitMask = SkTEndian_SwapBE16(1 << 0);
56 static const SK_OT_USHORT DoGrayMask = SkTEndian_SwapBE16(1 << 1);
57 static const SK_OT_USHORT SymmetricGridfitMask = SkTEndian_SwapBE16(1 << 2);
58 static const SK_OT_USHORT SymmetricSmoothingMask = SkTEndian_SwapBE16(1 << 3);
59 SK_OT_USHORT value;
60 } raw;
61 } flags;
62 }; //gaspRange[numRanges]
63};
64
65#pragma pack(pop)
66
67
68#include <stddef.h>
bungeman99fe8222015-08-20 07:57:51 -070069static_assert(offsetof(SkOTTableGridAndScanProcedure, numRanges) == 2, "SkOTTableGridAndScanProcedure_numRanges_not_at_2");
70static_assert(sizeof(SkOTTableGridAndScanProcedure) == 4, "sizeof_SkOTTableGridAndScanProcedure_not_4");
bungeman740c3f12014-06-23 08:29:23 -070071
72#endif