SkOTTable_gasp.h 2.3 KB

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