зеркало из https://github.com/mozilla/pjs.git
Bug 761890; build Skia on Windows. r=gw280
This commit is contained in:
Родитель
b000c775c0
Коммит
56d5e63167
|
@ -7850,7 +7850,7 @@ dnl ========================================================
|
|||
dnl Graphics checks.
|
||||
dnl ========================================================
|
||||
|
||||
if test "${OS_ARCH}" = "Darwin" -o "${MOZ_WIDGET_TOOLKIT}" = "android" -o "${MOZ_WIDGET_TOOLKIT}" = "gtk2"; then
|
||||
if test "${OS_TARGET}" = "WINNT" -o "${OS_ARCH}" = "Darwin" -o "${MOZ_WIDGET_TOOLKIT}" = "android" -o "${MOZ_WIDGET_TOOLKIT}" = "gtk2"; then
|
||||
MOZ_ENABLE_SKIA=1
|
||||
else
|
||||
MOZ_ENABLE_SKIA=
|
||||
|
|
|
@ -30,6 +30,8 @@ LOCAL_INCLUDES += \
|
|||
-I$(srcdir)/include/utils/win \
|
||||
-I$(srcdir)/include/views \
|
||||
-I$(srcdir)/include/effects \
|
||||
-I$(srcdir)/src/utils \
|
||||
-I$(srcdir)/src/sfnt \
|
||||
$(NULL)
|
||||
|
||||
VPATH += \
|
||||
|
@ -39,6 +41,7 @@ VPATH += \
|
|||
$(srcdir)/src/effects \
|
||||
$(srcdir)/src/utils \
|
||||
$(srcdir)/src/utils/mac \
|
||||
$(srcdir)/src/sfnt \
|
||||
$(NULL)
|
||||
|
||||
EXPORTS_skia = \
|
||||
|
@ -234,6 +237,7 @@ CPPSRCS = \
|
|||
SkOrderedReadBuffer.cpp \
|
||||
SkOrderedWriteBuffer.cpp \
|
||||
SkOSFile_stdio.cpp \
|
||||
SkOTUtils.cpp \
|
||||
SkPackBits.cpp \
|
||||
SkPaint.cpp \
|
||||
SkPath.cpp \
|
||||
|
@ -352,6 +356,7 @@ EXPORTS_skia += \
|
|||
$(NULL)
|
||||
CPPSRCS += \
|
||||
SkFontHost_win.cpp \
|
||||
SkFontHost_tables.cpp \
|
||||
SkFontHost_sandbox_none.cpp \
|
||||
SkTime_win.cpp \
|
||||
$(NULL)
|
||||
|
|
|
@ -0,0 +1,174 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkIBMFamilyClass_DEFINED
|
||||
#define SkIBMFamilyClass_DEFINED
|
||||
|
||||
#include "SkOTTableTypes.h"
|
||||
#include "SkTypedEnum.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct SkIBMFamilyClass {
|
||||
SK_TYPED_ENUM(Class, SK_OT_BYTE,
|
||||
((NoClassification, 0))
|
||||
((OldstyleSerifs, 1))
|
||||
((TransitionalSerifs, 2))
|
||||
((ModernSerifs, 3))
|
||||
((ClarendonSerifs, 4))
|
||||
((SlabSerifs, 5))
|
||||
//6 reserved for future use
|
||||
((FreeformSerifs, 7))
|
||||
((SansSerif, 8))
|
||||
((Ornamentals, 9))
|
||||
((Scripts, 10))
|
||||
//11 reserved for future use
|
||||
((Symbolic, 12))
|
||||
//13-15 reserved for future use
|
||||
SK_SEQ_END,
|
||||
(familyClass)SK_SEQ_END)
|
||||
union SubClass {
|
||||
struct OldstyleSerifs {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((NoClassification, 0))
|
||||
((IBMRoundedLegibility, 1))
|
||||
((Garalde, 2))
|
||||
((Venetian, 3))
|
||||
((ModifiedVenetian, 4))
|
||||
((DutchModern, 5))
|
||||
((DutchTraditional, 6))
|
||||
((Contemporary, 7))
|
||||
((Calligraphic, 8))
|
||||
//9-14 reserved for future use
|
||||
((Miscellaneous, 15))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} oldstyleSerifs;
|
||||
struct TransitionalSerifs {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((NoClassification, 0))
|
||||
((DirectLine, 1))
|
||||
((Script, 2))
|
||||
//3-14 reserved for future use
|
||||
((Miscellaneous, 15))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} transitionalSerifs;
|
||||
struct ModernSerifs {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((NoClassification, 0))
|
||||
((Italian, 1))
|
||||
((Script, 2))
|
||||
//3-14 reserved for future use
|
||||
((Miscellaneous, 15))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} modernSerifs;
|
||||
struct ClarendonSerifs {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((NoClassification, 0))
|
||||
((Clarendon, 1))
|
||||
((Modern, 2))
|
||||
((Traditional, 3))
|
||||
((Newspaper, 4))
|
||||
((StubSerif, 5))
|
||||
((Monotone, 6))
|
||||
((Typewriter, 7))
|
||||
//8-14 reserved for future use
|
||||
((Miscellaneous, 15))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} clarendonSerifs;
|
||||
struct SlabSerifs {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((NoClassification, 0))
|
||||
((Monotone, 1))
|
||||
((Humanist, 2))
|
||||
((Geometric, 3))
|
||||
((Swiss, 4))
|
||||
((Typewriter, 5))
|
||||
//6-14 reserved for future use
|
||||
((Miscellaneous, 15))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} slabSerifs;
|
||||
struct FreeformSerifs {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((NoClassification, 0))
|
||||
((Modern, 1))
|
||||
//2-14 reserved for future use
|
||||
((Miscellaneous, 15))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} freeformSerifs;
|
||||
struct SansSerif {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((NoClassification, 0))
|
||||
((IBMNeoGrotesqueGothic, 1))
|
||||
((Humanist, 2))
|
||||
((LowXRoundGeometric, 3))
|
||||
((HighXRoundGeometric, 4))
|
||||
((NeoGrotesqueGothic, 5))
|
||||
((ModifiedNeoGrotesqueGothic, 6))
|
||||
//7-8 reserved for future use
|
||||
((TypewriterGothic, 9))
|
||||
((Matrix, 10))
|
||||
//11-14 reserved for future use
|
||||
((Miscellaneous, 15))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} sansSerif;
|
||||
struct Ornamentals {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((NoClassification, 0))
|
||||
((Engraver, 1))
|
||||
((BlackLetter, 2))
|
||||
((Decorative, 3))
|
||||
((ThreeDimensional, 4))
|
||||
//5-14 reserved for future use
|
||||
((Miscellaneous, 15))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} ornamentals;
|
||||
struct Scripts {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((NoClassification, 0))
|
||||
((Uncial, 1))
|
||||
((Brush_Joined, 2))
|
||||
((Formal_Joined, 3))
|
||||
((Monotone_Joined, 4))
|
||||
((Calligraphic, 5))
|
||||
((Brush_Unjoined, 6))
|
||||
((Formal_Unjoined, 7))
|
||||
((Monotone_Unjoined, 8))
|
||||
//9-14 reserved for future use
|
||||
((Miscellaneous, 15))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} scripts;
|
||||
struct Symbolic {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((NoClassification, 0))
|
||||
//1-2 reserved for future use
|
||||
((MixedSerif, 3))
|
||||
//4-5 reserved for future use
|
||||
((OldstyleSerif, 6))
|
||||
((NeoGrotesqueSansSerif, 7))
|
||||
//8-14 reserved for future use
|
||||
((Miscellaneous, 15))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} symbolic;
|
||||
} familySubClass;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
SK_COMPILE_ASSERT(sizeof(SkIBMFamilyClass) == 2, sizeof_SkIBMFamilyClass_not_2);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkOTTableTypes_DEFINED
|
||||
#define SkOTTableTypes_DEFINED
|
||||
|
||||
#include "SkTypes.h"
|
||||
#include "SkEndian.h"
|
||||
|
||||
//All SK_OT_ prefixed types should be considered as big endian.
|
||||
typedef uint8_t SK_OT_BYTE;
|
||||
#if CHAR_BIT == 8
|
||||
typedef signed char SK_OT_CHAR; //easier to debug
|
||||
#else
|
||||
typedef int8_t SK_OT_CHAR;
|
||||
#endif
|
||||
typedef int16_t SK_OT_SHORT;
|
||||
typedef uint16_t SK_OT_USHORT;
|
||||
typedef uint32_t SK_OT_ULONG;
|
||||
typedef int32_t SK_OT_LONG;
|
||||
//16.16 Fixed point representation.
|
||||
typedef int32_t SK_OT_Fixed;
|
||||
//F units are the units of measurement in em space.
|
||||
typedef int16_t SK_OT_FWORD;
|
||||
typedef uint16_t SK_OT_UFWORD;
|
||||
//Number of seconds since 12:00 midnight, January 1, 1904.
|
||||
typedef uint64_t SK_OT_LONGDATETIME;
|
||||
|
||||
#define SK_OT_BYTE_BITFIELD SK_UINT8_BITFIELD
|
||||
|
||||
#endif
|
|
@ -0,0 +1,42 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkOTTable_OS_2_DEFINED
|
||||
#define SkOTTable_OS_2_DEFINED
|
||||
|
||||
#include "SkOTTable_OS_2_VA.h"
|
||||
#include "SkOTTable_OS_2_V0.h"
|
||||
#include "SkOTTable_OS_2_V1.h"
|
||||
#include "SkOTTable_OS_2_V2.h"
|
||||
#include "SkOTTable_OS_2_V3.h"
|
||||
#include "SkOTTable_OS_2_V4.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
union SkOTTableOS2 {
|
||||
//original V0 TT
|
||||
struct VA : SkOTTableOS2_VA { } vA;
|
||||
struct V0 : SkOTTableOS2_V0 { } v0;
|
||||
struct V1 : SkOTTableOS2_V1 { } v1;
|
||||
struct V2 : SkOTTableOS2_V2 { } v2;
|
||||
//makes fsType 0-3 exclusive
|
||||
struct V3 : SkOTTableOS2_V3 { } v3;
|
||||
//defines fsSelection bits 7-9
|
||||
struct V4 : SkOTTableOS2_V4 { } v4;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableOS2::VA) == 68, sizeof_SkOTTableOS2__VA_not_68);
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableOS2::V0) == 78, sizeof_SkOTTableOS2__V0_not_78);
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableOS2::V1) == 86, sizeof_SkOTTableOS2__V1_not_86);
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableOS2::V2) == 96, sizeof_SkOTTableOS2__V2_not_96);
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableOS2::V3) == 96, sizeof_SkOTTableOS2__V3_not_96);
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableOS2::V4) == 96, sizeof_SkOTTableOS2__V4_not_96);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,147 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkOTTable_OS_2_V0_DEFINED
|
||||
#define SkOTTable_OS_2_V0_DEFINED
|
||||
|
||||
#include "SkEndian.h"
|
||||
#include "SkIBMFamilyClass.h"
|
||||
#include "SkOTTableTypes.h"
|
||||
#include "SkPanose.h"
|
||||
#include "SkTypedEnum.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct SkOTTableOS2_V0 {
|
||||
SK_OT_USHORT version;
|
||||
//The only way to differentiate versionA and version0 is by size.
|
||||
static const SK_OT_USHORT version0 = SkTEndian_SwapBE16(0);
|
||||
SK_OT_SHORT xAvgCharWidth;
|
||||
struct WeightClass {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((Thin, SkTEndian_SwapBE16(100)))
|
||||
((ExtraLight, SkTEndian_SwapBE16(200)))
|
||||
((Light, SkTEndian_SwapBE16(300)))
|
||||
((Normal, SkTEndian_SwapBE16(400)))
|
||||
((Medium, SkTEndian_SwapBE16(500)))
|
||||
((SemiBold, SkTEndian_SwapBE16(600)))
|
||||
((Bold, SkTEndian_SwapBE16(700)))
|
||||
((ExtraBold, SkTEndian_SwapBE16(800)))
|
||||
((Black, SkTEndian_SwapBE16(900)))
|
||||
SK_SEQ_END,
|
||||
SK_SEQ_END)
|
||||
SK_OT_USHORT value;
|
||||
} usWeightClass;
|
||||
struct WidthClass {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((UltraCondensed, SkTEndian_SwapBE16(1)))
|
||||
((ExtraCondensed, SkTEndian_SwapBE16(2)))
|
||||
((Condensed, SkTEndian_SwapBE16(3)))
|
||||
((SemiCondensed, SkTEndian_SwapBE16(4)))
|
||||
((Medium, SkTEndian_SwapBE16(5)))
|
||||
((SemiExpanded, SkTEndian_SwapBE16(6)))
|
||||
((Expanded, SkTEndian_SwapBE16(7)))
|
||||
((ExtraExpanded, SkTEndian_SwapBE16(8)))
|
||||
((UltraExpanded, SkTEndian_SwapBE16(9)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} usWidthClass;
|
||||
union Type {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved08,
|
||||
Reserved09,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved00,
|
||||
Restricted,
|
||||
PreviewPrint,
|
||||
Editable,
|
||||
Reserved04,
|
||||
Reserved05,
|
||||
Reserved06,
|
||||
Reserved07)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT Installable = SkTEndian_SwapBE16(0);
|
||||
static const SK_OT_USHORT RestrictedMask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT PreviewPrintMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT EditableMask = SkTEndian_SwapBE16(1 << 3);
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} fsType;
|
||||
SK_OT_SHORT ySubscriptXSize;
|
||||
SK_OT_SHORT ySubscriptYSize;
|
||||
SK_OT_SHORT ySubscriptXOffset;
|
||||
SK_OT_SHORT ySubscriptYOffset;
|
||||
SK_OT_SHORT ySuperscriptXSize;
|
||||
SK_OT_SHORT ySuperscriptYSize;
|
||||
SK_OT_SHORT ySuperscriptXOffset;
|
||||
SK_OT_SHORT ySuperscriptYOffset;
|
||||
SK_OT_SHORT yStrikeoutSize;
|
||||
SK_OT_SHORT yStrikeoutPosition;
|
||||
SkIBMFamilyClass sFamilyClass;
|
||||
SkPanose panose;
|
||||
SK_OT_ULONG ulCharRange[4];
|
||||
SK_OT_CHAR achVendID[4];
|
||||
union Selection {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved08,
|
||||
Reserved09,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Italic,
|
||||
Underscore,
|
||||
Negative,
|
||||
Outlined,
|
||||
Strikeout,
|
||||
Bold,
|
||||
Regular,
|
||||
Reserved07)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT ItalicMask = SkTEndian_SwapBE16(1 << 0);
|
||||
static const SK_OT_USHORT UnderscoreMask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT NegativeMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT OutlinedMask = SkTEndian_SwapBE16(1 << 3);
|
||||
static const SK_OT_USHORT StrikeoutMask = SkTEndian_SwapBE16(1 << 4);
|
||||
static const SK_OT_USHORT BoldMask = SkTEndian_SwapBE16(1 << 5);
|
||||
static const SK_OT_USHORT RegularMask = SkTEndian_SwapBE16(1 << 6);
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} fsSelection;
|
||||
SK_OT_USHORT usFirstCharIndex;
|
||||
SK_OT_USHORT usLastCharIndex;
|
||||
//version0
|
||||
SK_OT_SHORT sTypoAscender;
|
||||
SK_OT_SHORT sTypoDescender;
|
||||
SK_OT_SHORT sTypoLineGap;
|
||||
SK_OT_USHORT usWinAscent;
|
||||
SK_OT_USHORT usWinDescent;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableOS2_V0) == 78, sizeof_SkOTTableOS2_V0_not_78);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,517 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkOTTable_OS_2_V1_DEFINED
|
||||
#define SkOTTable_OS_2_V1_DEFINED
|
||||
|
||||
#include "SkEndian.h"
|
||||
#include "SkIBMFamilyClass.h"
|
||||
#include "SkOTTableTypes.h"
|
||||
#include "SkPanose.h"
|
||||
#include "SkTypedEnum.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct SkOTTableOS2_V1 {
|
||||
SK_OT_USHORT version;
|
||||
static const SK_OT_USHORT version1 = SkTEndian_SwapBE16(1);
|
||||
SK_OT_SHORT xAvgCharWidth;
|
||||
struct WeightClass {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((Thin, SkTEndian_SwapBE16(100)))
|
||||
((ExtraLight, SkTEndian_SwapBE16(200)))
|
||||
((Light, SkTEndian_SwapBE16(300)))
|
||||
((Normal, SkTEndian_SwapBE16(400)))
|
||||
((Medium, SkTEndian_SwapBE16(500)))
|
||||
((SemiBold, SkTEndian_SwapBE16(600)))
|
||||
((Bold, SkTEndian_SwapBE16(700)))
|
||||
((ExtraBold, SkTEndian_SwapBE16(800)))
|
||||
((Black, SkTEndian_SwapBE16(900)))
|
||||
SK_SEQ_END,
|
||||
SK_SEQ_END)
|
||||
SK_OT_USHORT value;
|
||||
} usWeightClass;
|
||||
struct WidthClass {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((UltraCondensed, SkTEndian_SwapBE16(1)))
|
||||
((ExtraCondensed, SkTEndian_SwapBE16(2)))
|
||||
((Condensed, SkTEndian_SwapBE16(3)))
|
||||
((SemiCondensed, SkTEndian_SwapBE16(4)))
|
||||
((Medium, SkTEndian_SwapBE16(5)))
|
||||
((SemiExpanded, SkTEndian_SwapBE16(6)))
|
||||
((Expanded, SkTEndian_SwapBE16(7)))
|
||||
((ExtraExpanded, SkTEndian_SwapBE16(8)))
|
||||
((UltraExpanded, SkTEndian_SwapBE16(9)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} usWidthClass;
|
||||
union Type {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved08,
|
||||
Reserved09,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved00,
|
||||
Restricted,
|
||||
PreviewPrint,
|
||||
Editable,
|
||||
Reserved04,
|
||||
Reserved05,
|
||||
Reserved06,
|
||||
Reserved07)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT Installable = SkTEndian_SwapBE16(0);
|
||||
static const SK_OT_USHORT RestrictedMask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT PreviewPrintMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT EditableMask = SkTEndian_SwapBE16(1 << 3);
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} fsType;
|
||||
SK_OT_SHORT ySubscriptXSize;
|
||||
SK_OT_SHORT ySubscriptYSize;
|
||||
SK_OT_SHORT ySubscriptXOffset;
|
||||
SK_OT_SHORT ySubscriptYOffset;
|
||||
SK_OT_SHORT ySuperscriptXSize;
|
||||
SK_OT_SHORT ySuperscriptYSize;
|
||||
SK_OT_SHORT ySuperscriptXOffset;
|
||||
SK_OT_SHORT ySuperscriptYOffset;
|
||||
SK_OT_SHORT yStrikeoutSize;
|
||||
SK_OT_SHORT yStrikeoutPosition;
|
||||
SkIBMFamilyClass sFamilyClass;
|
||||
SkPanose panose;
|
||||
union UnicodeRange {
|
||||
struct Field {
|
||||
//l0 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Thai,
|
||||
Lao,
|
||||
BasicGeorgian,
|
||||
GeorgianExtended,
|
||||
HangulJamo,
|
||||
LatinExtendedAdditional,
|
||||
GreekExtended,
|
||||
GeneralPunctuation)
|
||||
//l0 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Bengali,
|
||||
Gurmukhi,
|
||||
Gujarati,
|
||||
Oriya,
|
||||
Tamil,
|
||||
Telugu,
|
||||
Kannada,
|
||||
Malayalam)
|
||||
//l0 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
GreekSymbolsAndCoptic,
|
||||
Cyrillic,
|
||||
Armenian,
|
||||
BasicHebrew,
|
||||
HebrewExtendedAB,
|
||||
BasicArabic,
|
||||
ArabicExtended,
|
||||
Devanagari)
|
||||
//l0 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
BasicLatin,
|
||||
Latin1Supplement,
|
||||
LatinExtendedA,
|
||||
LatinExtendedB,
|
||||
IPAExtensions,
|
||||
SpacingModifierLetters,
|
||||
CombiningDiacriticalMarks,
|
||||
BasicGreek)
|
||||
|
||||
//l1 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Hangul,
|
||||
Reserved057,
|
||||
Reserved058,
|
||||
CJKUnifiedIdeographs,
|
||||
PrivateUseArea,
|
||||
CJKCompatibilityIdeographs,
|
||||
AlphabeticPresentationForms,
|
||||
ArabicPresentationFormsA)
|
||||
//l1 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
CJKSymbolsAndPunctuation,
|
||||
Hiragana,
|
||||
Katakana,
|
||||
Bopomofo,
|
||||
HangulCompatibilityJamo,
|
||||
CJKMiscellaneous,
|
||||
EnclosedCJKLettersAndMonths,
|
||||
CJKCompatibility)
|
||||
//l1 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
ControlPictures,
|
||||
OpticalCharacterRecognition,
|
||||
EnclosedAlphanumerics,
|
||||
BoxDrawing,
|
||||
BlockElements,
|
||||
GeometricShapes,
|
||||
MiscellaneousSymbols,
|
||||
Dingbats)
|
||||
//l1 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
SuperscriptsAndSubscripts,
|
||||
CurrencySymbols,
|
||||
CombiningDiacriticalMarksForSymbols,
|
||||
LetterlikeSymbols,
|
||||
NumberForms,
|
||||
Arrows,
|
||||
MathematicalOperators,
|
||||
MiscellaneousTechnical)
|
||||
|
||||
//l2 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved088,
|
||||
Reserved089,
|
||||
Reserved090,
|
||||
Reserved091,
|
||||
Reserved092,
|
||||
Reserved093,
|
||||
Reserved094,
|
||||
Reserved095)
|
||||
//l2 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved080,
|
||||
Reserved081,
|
||||
Reserved082,
|
||||
Reserved083,
|
||||
Reserved084,
|
||||
Reserved085,
|
||||
Reserved086,
|
||||
Reserved087)
|
||||
//l2 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved072,
|
||||
Reserved073,
|
||||
Reserved074,
|
||||
Reserved075,
|
||||
Reserved076,
|
||||
Reserved077,
|
||||
Reserved078,
|
||||
Reserved079)
|
||||
//l2 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
CombiningHalfMarks,
|
||||
CJKCompatibilityForms,
|
||||
SmallFormVariants,
|
||||
ArabicPresentationFormsB,
|
||||
HalfwidthAndFullwidthForms,
|
||||
Specials,
|
||||
Reserved70,
|
||||
Reserved71)
|
||||
|
||||
//l3 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved120,
|
||||
Reserved121,
|
||||
Reserved122,
|
||||
Reserved123,
|
||||
Reserved124,
|
||||
Reserved125,
|
||||
Reserved126,
|
||||
Reserved127)
|
||||
//l3 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved112,
|
||||
Reserved113,
|
||||
Reserved114,
|
||||
Reserved115,
|
||||
Reserved116,
|
||||
Reserved117,
|
||||
Reserved118,
|
||||
Reserved119)
|
||||
//l3 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved104,
|
||||
Reserved105,
|
||||
Reserved106,
|
||||
Reserved107,
|
||||
Reserved108,
|
||||
Reserved109,
|
||||
Reserved110,
|
||||
Reserved111)
|
||||
//l3 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved096,
|
||||
Reserved097,
|
||||
Reserved098,
|
||||
Reserved099,
|
||||
Reserved100,
|
||||
Reserved101,
|
||||
Reserved102,
|
||||
Reserved103)
|
||||
} field;
|
||||
struct Raw {
|
||||
struct l0 {
|
||||
static const SK_OT_ULONG BasicLatinMask = SkTEndian_SwapBE32(1 << 0);
|
||||
static const SK_OT_ULONG Latin1SupplementMask = SkTEndian_SwapBE32(1 << 1);
|
||||
static const SK_OT_ULONG LatinExtendedAMask = SkTEndian_SwapBE32(1 << 2);
|
||||
static const SK_OT_ULONG LatinExtendedBMask = SkTEndian_SwapBE32(1 << 3);
|
||||
static const SK_OT_ULONG IPAExtensionsMask = SkTEndian_SwapBE32(1 << 4);
|
||||
static const SK_OT_ULONG SpacingModifierLettersMask = SkTEndian_SwapBE32(1 << 5);
|
||||
static const SK_OT_ULONG CombiningDiacriticalMarksMask = SkTEndian_SwapBE32(1 << 6);
|
||||
static const SK_OT_ULONG BasicGreekMask = SkTEndian_SwapBE32(1 << 7);
|
||||
static const SK_OT_ULONG GreekSymbolsAndCCopticMask = SkTEndian_SwapBE32(1 << 8);
|
||||
static const SK_OT_ULONG CyrillicMask = SkTEndian_SwapBE32(1 << 9);
|
||||
static const SK_OT_ULONG ArmenianMask = SkTEndian_SwapBE32(1 << 10);
|
||||
static const SK_OT_ULONG BasicHebrewMask = SkTEndian_SwapBE32(1 << 11);
|
||||
static const SK_OT_ULONG HebrewExtendedABMask = SkTEndian_SwapBE32(1 << 12);
|
||||
static const SK_OT_ULONG BasicArabicMask = SkTEndian_SwapBE32(1 << 13);
|
||||
static const SK_OT_ULONG ArabicExtendedMask = SkTEndian_SwapBE32(1 << 14);
|
||||
static const SK_OT_ULONG DevanagariMask = SkTEndian_SwapBE32(1 << 15);
|
||||
static const SK_OT_ULONG BengaliMask = SkTEndian_SwapBE32(1 << 16);
|
||||
static const SK_OT_ULONG GurmukhiMask = SkTEndian_SwapBE32(1 << 17);
|
||||
static const SK_OT_ULONG GujaratiMask = SkTEndian_SwapBE32(1 << 18);
|
||||
static const SK_OT_ULONG OriyaMask = SkTEndian_SwapBE32(1 << 19);
|
||||
static const SK_OT_ULONG TamilMask = SkTEndian_SwapBE32(1 << 20);
|
||||
static const SK_OT_ULONG TeluguMask = SkTEndian_SwapBE32(1 << 21);
|
||||
static const SK_OT_ULONG KannadaMask = SkTEndian_SwapBE32(1 << 22);
|
||||
static const SK_OT_ULONG MalayalamMask = SkTEndian_SwapBE32(1 << 23);
|
||||
static const SK_OT_ULONG ThaiMask = SkTEndian_SwapBE32(1 << 24);
|
||||
static const SK_OT_ULONG LaoMask = SkTEndian_SwapBE32(1 << 25);
|
||||
static const SK_OT_ULONG BasicGeorgianMask = SkTEndian_SwapBE32(1 << 26);
|
||||
static const SK_OT_ULONG GeorgianExtendedMask = SkTEndian_SwapBE32(1 << 27);
|
||||
static const SK_OT_ULONG HangulJamoMask = SkTEndian_SwapBE32(1 << 28);
|
||||
static const SK_OT_ULONG LatinExtendedAdditionalMask = SkTEndian_SwapBE32(1 << 29);
|
||||
static const SK_OT_ULONG GreekExtendedMask = SkTEndian_SwapBE32(1 << 30);
|
||||
static const SK_OT_ULONG GeneralPunctuationMask = SkTEndian_SwapBE32(1 << 31);
|
||||
};
|
||||
struct l1 {
|
||||
static const SK_OT_ULONG SuperscriptsAndSubscriptsMask = SkTEndian_SwapBE32(1 << (32 - 32));
|
||||
static const SK_OT_ULONG CurrencySymbolsMask = SkTEndian_SwapBE32(1 << (33 - 32));
|
||||
static const SK_OT_ULONG CombiningDiacriticalMarksForSymbolsMask = SkTEndian_SwapBE32(1 << (34 - 32));
|
||||
static const SK_OT_ULONG LetterlikeSymbolsMask = SkTEndian_SwapBE32(1 << (35 - 32));
|
||||
static const SK_OT_ULONG NumberFormsMask = SkTEndian_SwapBE32(1 << (36 - 32));
|
||||
static const SK_OT_ULONG ArrowsMask = SkTEndian_SwapBE32(1 << (37 - 32));
|
||||
static const SK_OT_ULONG MathematicalOperatorsMask = SkTEndian_SwapBE32(1 << (38 - 32));
|
||||
static const SK_OT_ULONG MiscellaneousTechnicalMask = SkTEndian_SwapBE32(1 << (39 - 32));
|
||||
static const SK_OT_ULONG ControlPicturesMask = SkTEndian_SwapBE32(1 << (40 - 32));
|
||||
static const SK_OT_ULONG OpticalCharacterRecognitionMask = SkTEndian_SwapBE32(1 << (41 - 32));
|
||||
static const SK_OT_ULONG EnclosedAlphanumericsMask = SkTEndian_SwapBE32(1 << (42 - 32));
|
||||
static const SK_OT_ULONG BoxDrawingMask = SkTEndian_SwapBE32(1 << (43 - 32));
|
||||
static const SK_OT_ULONG BlockElementsMask = SkTEndian_SwapBE32(1 << (44 - 32));
|
||||
static const SK_OT_ULONG GeometricShapesMask = SkTEndian_SwapBE32(1 << (45 - 32));
|
||||
static const SK_OT_ULONG MiscellaneousSymbolsMask = SkTEndian_SwapBE32(1 << (46 - 32));
|
||||
static const SK_OT_ULONG DingbatsMask = SkTEndian_SwapBE32(1 << (47 - 32));
|
||||
static const SK_OT_ULONG CJKSymbolsAndPunctuationMask = SkTEndian_SwapBE32(1 << (48 - 32));
|
||||
static const SK_OT_ULONG HiraganaMask = SkTEndian_SwapBE32(1 << (49 - 32));
|
||||
static const SK_OT_ULONG KatakanaMask = SkTEndian_SwapBE32(1 << (50 - 32));
|
||||
static const SK_OT_ULONG BopomofoMask = SkTEndian_SwapBE32(1 << (51 - 32));
|
||||
static const SK_OT_ULONG HangulCompatibilityJamoMask = SkTEndian_SwapBE32(1 << (52 - 32));
|
||||
static const SK_OT_ULONG CJKMiscellaneousMask = SkTEndian_SwapBE32(1 << (53 - 32));
|
||||
static const SK_OT_ULONG EnclosedCJKLettersAndMonthsMask = SkTEndian_SwapBE32(1 << (54 - 32));
|
||||
static const SK_OT_ULONG CJKCompatibilityMask = SkTEndian_SwapBE32(1 << (55 - 32));
|
||||
static const SK_OT_ULONG HangulMask = SkTEndian_SwapBE32(1 << (56 - 32));
|
||||
//Reserved
|
||||
//Reserved
|
||||
static const SK_OT_ULONG CJKUnifiedIdeographsMask = SkTEndian_SwapBE32(1 << (59 - 32));
|
||||
static const SK_OT_ULONG PrivateUseAreaMask = SkTEndian_SwapBE32(1 << (60 - 32));
|
||||
static const SK_OT_ULONG CJKCompatibilityIdeographsMask = SkTEndian_SwapBE32(1 << (61 - 32));
|
||||
static const SK_OT_ULONG AlphabeticPresentationFormsMask = SkTEndian_SwapBE32(1 << (62 - 32));
|
||||
static const SK_OT_ULONG ArabicPresentationFormsAMask = SkTEndian_SwapBE32(1 << (63 - 32));
|
||||
};
|
||||
struct l2 {
|
||||
static const SK_OT_ULONG CombiningHalfMarksMask = SkTEndian_SwapBE32(1 << (64 - 64));
|
||||
static const SK_OT_ULONG CJKCompatibilityFormsMask = SkTEndian_SwapBE32(1 << (65 - 64));
|
||||
static const SK_OT_ULONG SmallFormVariantsMask = SkTEndian_SwapBE32(1 << (66 - 64));
|
||||
static const SK_OT_ULONG ArabicPresentationFormsBMask = SkTEndian_SwapBE32(1 << (67 - 64));
|
||||
static const SK_OT_ULONG HalfwidthAndFullwidthFormsMask = SkTEndian_SwapBE32(1 << (68 - 64));
|
||||
static const SK_OT_ULONG SpecialsMask = SkTEndian_SwapBE32(1 << (69 - 64));
|
||||
};
|
||||
SK_OT_ULONG value[4];
|
||||
} raw;
|
||||
} ulUnicodeRange;
|
||||
SK_OT_CHAR achVendID[4];
|
||||
union Selection {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved08,
|
||||
Reserved09,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Italic,
|
||||
Underscore,
|
||||
Negative,
|
||||
Outlined,
|
||||
Strikeout,
|
||||
Bold,
|
||||
Regular,
|
||||
Reserved07)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT ItalicMask = SkTEndian_SwapBE16(1 << 0);
|
||||
static const SK_OT_USHORT UnderscoreMask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT NegativeMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT OutlinedMask = SkTEndian_SwapBE16(1 << 3);
|
||||
static const SK_OT_USHORT StrikeoutMask = SkTEndian_SwapBE16(1 << 4);
|
||||
static const SK_OT_USHORT BoldMask = SkTEndian_SwapBE16(1 << 5);
|
||||
static const SK_OT_USHORT RegularMask = SkTEndian_SwapBE16(1 << 6);
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} fsSelection;
|
||||
SK_OT_USHORT usFirstCharIndex;
|
||||
SK_OT_USHORT usLastCharIndex;
|
||||
//version0
|
||||
SK_OT_SHORT sTypoAscender;
|
||||
SK_OT_SHORT sTypoDescender;
|
||||
SK_OT_SHORT sTypoLineGap;
|
||||
SK_OT_USHORT usWinAscent;
|
||||
SK_OT_USHORT usWinDescent;
|
||||
//version1
|
||||
union CodePageRange {
|
||||
struct Field {
|
||||
//l0 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved24,
|
||||
Reserved25,
|
||||
Reserved26,
|
||||
Reserved27,
|
||||
Reserved28,
|
||||
MacintoshCharacterSet,
|
||||
OEMCharacterSet,
|
||||
SymbolCharacterSet)
|
||||
//l0 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Thai_874,
|
||||
JISJapan_932,
|
||||
ChineseSimplified_936,
|
||||
KoreanWansung_949,
|
||||
ChineseTraditional_950,
|
||||
KoreanJohab_1361,
|
||||
Reserved22,
|
||||
Reserved23)
|
||||
//l0 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved08,
|
||||
Reserved09,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//l0 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Latin1_1252,
|
||||
Latin2EasternEurope_1250,
|
||||
Cyrillic_1251,
|
||||
Greek_1253,
|
||||
Turkish_1254,
|
||||
Hebrew_1255,
|
||||
Arabic_1256,
|
||||
WindowsBaltic_1257)
|
||||
|
||||
//l1 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
IBMTurkish_857,
|
||||
IBMCyrillic_855,
|
||||
Latin2_852,
|
||||
MSDOSBaltic_775,
|
||||
Greek_737,
|
||||
Arabic_708,
|
||||
WELatin1_850,
|
||||
US_437)
|
||||
//l1 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
IBMGreek_869,
|
||||
MSDOSRussian_866,
|
||||
MSDOSNordic_865,
|
||||
Arabic_864,
|
||||
MSDOSCanadianFrench_863,
|
||||
Hebrew_862,
|
||||
MSDOSIcelandic_861,
|
||||
MSDOSPortuguese_860)
|
||||
//l1 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved40,
|
||||
Reserved41,
|
||||
Reserved42,
|
||||
Reserved43,
|
||||
Reserved44,
|
||||
Reserved45,
|
||||
Reserved46,
|
||||
Reserved47)
|
||||
//l1 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved32,
|
||||
Reserved33,
|
||||
Reserved34,
|
||||
Reserved35,
|
||||
Reserved36,
|
||||
Reserved37,
|
||||
Reserved38,
|
||||
Reserved39)
|
||||
} field;
|
||||
struct Raw {
|
||||
struct l0 {
|
||||
static const SK_OT_ULONG Latin1_1252Mask = SkTEndian_SwapBE32(1 << 0);
|
||||
static const SK_OT_ULONG Latin2EasternEurope_1250Mask = SkTEndian_SwapBE32(1 << 1);
|
||||
static const SK_OT_ULONG Cyrillic_1251Mask = SkTEndian_SwapBE32(1 << 2);
|
||||
static const SK_OT_ULONG Greek_1253Mask = SkTEndian_SwapBE32(1 << 3);
|
||||
static const SK_OT_ULONG Turkish_1254Mask = SkTEndian_SwapBE32(1 << 4);
|
||||
static const SK_OT_ULONG Hebrew_1255Mask = SkTEndian_SwapBE32(1 << 5);
|
||||
static const SK_OT_ULONG Arabic_1256Mask = SkTEndian_SwapBE32(1 << 6);
|
||||
static const SK_OT_ULONG WindowsBaltic_1257Mask = SkTEndian_SwapBE32(1 << 7);
|
||||
static const SK_OT_ULONG Thai_874Mask = SkTEndian_SwapBE32(1 << 16);
|
||||
static const SK_OT_ULONG JISJapan_932Mask = SkTEndian_SwapBE32(1 << 17);
|
||||
static const SK_OT_ULONG ChineseSimplified_936Mask = SkTEndian_SwapBE32(1 << 18);
|
||||
static const SK_OT_ULONG KoreanWansung_949Mask = SkTEndian_SwapBE32(1 << 19);
|
||||
static const SK_OT_ULONG ChineseTraditional_950Mask = SkTEndian_SwapBE32(1 << 20);
|
||||
static const SK_OT_ULONG KoreanJohab_1361Mask = SkTEndian_SwapBE32(1 << 21);
|
||||
static const SK_OT_ULONG MacintoshCharacterSetMask = SkTEndian_SwapBE32(1 << 29);
|
||||
static const SK_OT_ULONG OEMCharacterSetMask = SkTEndian_SwapBE32(1 << 30);
|
||||
static const SK_OT_ULONG SymbolCharacterSetMask = SkTEndian_SwapBE32(1 << 31);
|
||||
};
|
||||
struct l1 {
|
||||
static const SK_OT_ULONG IBMGreek_869Mask = SkTEndian_SwapBE32(1 << (48 - 32));
|
||||
static const SK_OT_ULONG MSDOSRussian_866Mask = SkTEndian_SwapBE32(1 << (49 - 32));
|
||||
static const SK_OT_ULONG MSDOSNordic_865Mask = SkTEndian_SwapBE32(1 << (50 - 32));
|
||||
static const SK_OT_ULONG Arabic_864Mask = SkTEndian_SwapBE32(1 << (51 - 32));
|
||||
static const SK_OT_ULONG MSDOSCanadianFrench_863Mask = SkTEndian_SwapBE32(1 << (52 - 32));
|
||||
static const SK_OT_ULONG Hebrew_862Mask = SkTEndian_SwapBE32(1 << (53 - 32));
|
||||
static const SK_OT_ULONG MSDOSIcelandic_861Mask = SkTEndian_SwapBE32(1 << (54 - 32));
|
||||
static const SK_OT_ULONG MSDOSPortuguese_860Mask = SkTEndian_SwapBE32(1 << (55 - 32));
|
||||
static const SK_OT_ULONG IBMTurkish_857Mask = SkTEndian_SwapBE32(1 << (56 - 32));
|
||||
static const SK_OT_ULONG IBMCyrillic_855Mask = SkTEndian_SwapBE32(1 << (57 - 32));
|
||||
static const SK_OT_ULONG Latin2_852Mask = SkTEndian_SwapBE32(1 << (58 - 32));
|
||||
static const SK_OT_ULONG MSDOSBaltic_775Mask = SkTEndian_SwapBE32(1 << (59 - 32));
|
||||
static const SK_OT_ULONG Greek_737Mask = SkTEndian_SwapBE32(1 << (60 - 32));
|
||||
static const SK_OT_ULONG Arabic_708Mask = SkTEndian_SwapBE32(1 << (61 - 32));
|
||||
static const SK_OT_ULONG WELatin1_850Mask = SkTEndian_SwapBE32(1 << (62 - 32));
|
||||
static const SK_OT_ULONG US_437Mask = SkTEndian_SwapBE32(1 << (63 - 32));
|
||||
};
|
||||
SK_OT_ULONG value[2];
|
||||
} raw;
|
||||
} ulCodePageRange;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableOS2_V1) == 86, sizeof_SkOTTableOS2_V1_not_86);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,539 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkOTTable_OS_2_V2_DEFINED
|
||||
#define SkOTTable_OS_2_V2_DEFINED
|
||||
|
||||
#include "SkEndian.h"
|
||||
#include "SkIBMFamilyClass.h"
|
||||
#include "SkOTTableTypes.h"
|
||||
#include "SkPanose.h"
|
||||
#include "SkTypedEnum.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct SkOTTableOS2_V2 {
|
||||
SK_OT_USHORT version;
|
||||
static const SK_OT_USHORT version2 = SkTEndian_SwapBE16(2);
|
||||
SK_OT_SHORT xAvgCharWidth;
|
||||
struct WeightClass {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((Thin, SkTEndian_SwapBE16(100)))
|
||||
((ExtraLight, SkTEndian_SwapBE16(200)))
|
||||
((Light, SkTEndian_SwapBE16(300)))
|
||||
((Normal, SkTEndian_SwapBE16(400)))
|
||||
((Medium, SkTEndian_SwapBE16(500)))
|
||||
((SemiBold, SkTEndian_SwapBE16(600)))
|
||||
((Bold, SkTEndian_SwapBE16(700)))
|
||||
((ExtraBold, SkTEndian_SwapBE16(800)))
|
||||
((Black, SkTEndian_SwapBE16(900)))
|
||||
SK_SEQ_END,
|
||||
SK_SEQ_END)
|
||||
SK_OT_USHORT value;
|
||||
} usWeightClass;
|
||||
struct WidthClass {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((UltraCondensed, SkTEndian_SwapBE16(1)))
|
||||
((ExtraCondensed, SkTEndian_SwapBE16(2)))
|
||||
((Condensed, SkTEndian_SwapBE16(3)))
|
||||
((SemiCondensed, SkTEndian_SwapBE16(4)))
|
||||
((Medium, SkTEndian_SwapBE16(5)))
|
||||
((SemiExpanded, SkTEndian_SwapBE16(6)))
|
||||
((Expanded, SkTEndian_SwapBE16(7)))
|
||||
((ExtraExpanded, SkTEndian_SwapBE16(8)))
|
||||
((UltraExpanded, SkTEndian_SwapBE16(9))),
|
||||
(value)SK_SEQ_END)
|
||||
} usWidthClass;
|
||||
union Type {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
NoSubsetting,
|
||||
Bitmap,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved00,
|
||||
Restricted,
|
||||
PreviewPrint,
|
||||
Editable,
|
||||
Reserved04,
|
||||
Reserved05,
|
||||
Reserved06,
|
||||
Reserved07)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT Installable = SkTEndian_SwapBE16(0);
|
||||
static const SK_OT_USHORT RestrictedMask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT PreviewPrintMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT EditableMask = SkTEndian_SwapBE16(1 << 3);
|
||||
static const SK_OT_USHORT NoSubsettingMask = SkTEndian_SwapBE16(1 << 8);
|
||||
static const SK_OT_USHORT BitmapMask = SkTEndian_SwapBE16(1 << 9);
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} fsType;
|
||||
SK_OT_SHORT ySubscriptXSize;
|
||||
SK_OT_SHORT ySubscriptYSize;
|
||||
SK_OT_SHORT ySubscriptXOffset;
|
||||
SK_OT_SHORT ySubscriptYOffset;
|
||||
SK_OT_SHORT ySuperscriptXSize;
|
||||
SK_OT_SHORT ySuperscriptYSize;
|
||||
SK_OT_SHORT ySuperscriptXOffset;
|
||||
SK_OT_SHORT ySuperscriptYOffset;
|
||||
SK_OT_SHORT yStrikeoutSize;
|
||||
SK_OT_SHORT yStrikeoutPosition;
|
||||
SkIBMFamilyClass sFamilyClass;
|
||||
SkPanose panose;
|
||||
union UnicodeRange {
|
||||
struct Field {
|
||||
//l0 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Thai,
|
||||
Lao,
|
||||
Georgian,
|
||||
Reserved027,
|
||||
HangulJamo,
|
||||
LatinExtendedAdditional,
|
||||
GreekExtended,
|
||||
GeneralPunctuation)
|
||||
//l0 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Bengali,
|
||||
Gurmukhi,
|
||||
Gujarati,
|
||||
Oriya,
|
||||
Tamil,
|
||||
Telugu,
|
||||
Kannada,
|
||||
Malayalam)
|
||||
//l0 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved008,
|
||||
Cyrillic,
|
||||
Armenian,
|
||||
Hebrew,
|
||||
Reserved012,
|
||||
Arabic,
|
||||
Reserved014,
|
||||
Devanagari)
|
||||
//l0 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
BasicLatin,
|
||||
Latin1Supplement,
|
||||
LatinExtendedA,
|
||||
LatinExtendedB,
|
||||
IPAExtensions,
|
||||
SpacingModifierLetters,
|
||||
CombiningDiacriticalMarks,
|
||||
Greek)
|
||||
|
||||
//l1 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Hangul,
|
||||
Surrogates,
|
||||
Reserved058,
|
||||
CJKUnifiedIdeographs,
|
||||
PrivateUseArea,
|
||||
CJKCompatibilityIdeographs,
|
||||
AlphabeticPresentationForms,
|
||||
ArabicPresentationFormsA)
|
||||
//l1 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
CJKSymbolsAndPunctuation,
|
||||
Hiragana,
|
||||
Katakana,
|
||||
Bopomofo,
|
||||
HangulCompatibilityJamo,
|
||||
CJKMiscellaneous,
|
||||
EnclosedCJKLettersAndMonths,
|
||||
CJKCompatibility)
|
||||
//l1 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
ControlPictures,
|
||||
OpticalCharacterRecognition,
|
||||
EnclosedAlphanumerics,
|
||||
BoxDrawing,
|
||||
BlockElements,
|
||||
GeometricShapes,
|
||||
MiscellaneousSymbols,
|
||||
Dingbats)
|
||||
//l1 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
SuperscriptsAndSubscripts,
|
||||
CurrencySymbols,
|
||||
CombiningDiacriticalMarksForSymbols,
|
||||
LetterlikeSymbols,
|
||||
NumberForms,
|
||||
Arrows,
|
||||
MathematicalOperators,
|
||||
MiscellaneousTechnical)
|
||||
|
||||
//l2 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved088,
|
||||
Reserved089,
|
||||
Reserved090,
|
||||
Reserved091,
|
||||
Reserved092,
|
||||
Reserved093,
|
||||
Reserved094,
|
||||
Reserved095)
|
||||
//l2 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Khmer,
|
||||
Mongolian,
|
||||
Braille,
|
||||
Yi,
|
||||
Reserved084,
|
||||
Reserved085,
|
||||
Reserved086,
|
||||
Reserved087)
|
||||
//l2 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Thaana,
|
||||
Sinhala,
|
||||
Myanmar,
|
||||
Ethiopic,
|
||||
Cherokee,
|
||||
UnifiedCanadianSyllabics,
|
||||
Ogham,
|
||||
Runic)
|
||||
//l2 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
CombiningHalfMarks,
|
||||
CJKCompatibilityForms,
|
||||
SmallFormVariants,
|
||||
ArabicPresentationFormsB,
|
||||
HalfwidthAndFullwidthForms,
|
||||
Specials,
|
||||
Tibetan,
|
||||
Syriac)
|
||||
|
||||
//l3 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved120,
|
||||
Reserved121,
|
||||
Reserved122,
|
||||
Reserved123,
|
||||
Reserved124,
|
||||
Reserved125,
|
||||
Reserved126,
|
||||
Reserved127)
|
||||
//l3 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved112,
|
||||
Reserved113,
|
||||
Reserved114,
|
||||
Reserved115,
|
||||
Reserved116,
|
||||
Reserved117,
|
||||
Reserved118,
|
||||
Reserved119)
|
||||
//l3 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved104,
|
||||
Reserved105,
|
||||
Reserved106,
|
||||
Reserved107,
|
||||
Reserved108,
|
||||
Reserved109,
|
||||
Reserved110,
|
||||
Reserved111)
|
||||
//l3 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved096,
|
||||
Reserved097,
|
||||
Reserved098,
|
||||
Reserved099,
|
||||
Reserved100,
|
||||
Reserved101,
|
||||
Reserved102,
|
||||
Reserved103)
|
||||
} field;
|
||||
struct Raw {
|
||||
struct l0 {
|
||||
static const SK_OT_ULONG BasicLatinMask = SkTEndian_SwapBE32(1 << 0);
|
||||
static const SK_OT_ULONG Latin1SupplementMask = SkTEndian_SwapBE32(1 << 1);
|
||||
static const SK_OT_ULONG LatinExtendedAMask = SkTEndian_SwapBE32(1 << 2);
|
||||
static const SK_OT_ULONG LatinExtendedBMask = SkTEndian_SwapBE32(1 << 3);
|
||||
static const SK_OT_ULONG IPAExtensionsMask = SkTEndian_SwapBE32(1 << 4);
|
||||
static const SK_OT_ULONG SpacingModifierLettersMask = SkTEndian_SwapBE32(1 << 5);
|
||||
static const SK_OT_ULONG CombiningDiacriticalMarksMask = SkTEndian_SwapBE32(1 << 6);
|
||||
static const SK_OT_ULONG GreekMask = SkTEndian_SwapBE32(1 << 7);
|
||||
//Reserved
|
||||
static const SK_OT_ULONG CyrillicMask = SkTEndian_SwapBE32(1 << 9);
|
||||
static const SK_OT_ULONG ArmenianMask = SkTEndian_SwapBE32(1 << 10);
|
||||
static const SK_OT_ULONG HebrewMask = SkTEndian_SwapBE32(1 << 11);
|
||||
//Reserved
|
||||
static const SK_OT_ULONG ArabicMask = SkTEndian_SwapBE32(1 << 13);
|
||||
//Reserved
|
||||
static const SK_OT_ULONG DevanagariMask = SkTEndian_SwapBE32(1 << 15);
|
||||
static const SK_OT_ULONG BengaliMask = SkTEndian_SwapBE32(1 << 16);
|
||||
static const SK_OT_ULONG GurmukhiMask = SkTEndian_SwapBE32(1 << 17);
|
||||
static const SK_OT_ULONG GujaratiMask = SkTEndian_SwapBE32(1 << 18);
|
||||
static const SK_OT_ULONG OriyaMask = SkTEndian_SwapBE32(1 << 19);
|
||||
static const SK_OT_ULONG TamilMask = SkTEndian_SwapBE32(1 << 20);
|
||||
static const SK_OT_ULONG TeluguMask = SkTEndian_SwapBE32(1 << 21);
|
||||
static const SK_OT_ULONG KannadaMask = SkTEndian_SwapBE32(1 << 22);
|
||||
static const SK_OT_ULONG MalayalamMask = SkTEndian_SwapBE32(1 << 23);
|
||||
static const SK_OT_ULONG ThaiMask = SkTEndian_SwapBE32(1 << 24);
|
||||
static const SK_OT_ULONG LaoMask = SkTEndian_SwapBE32(1 << 25);
|
||||
static const SK_OT_ULONG GeorgianMask = SkTEndian_SwapBE32(1 << 26);
|
||||
//Reserved
|
||||
static const SK_OT_ULONG HangulJamoMask = SkTEndian_SwapBE32(1 << 28);
|
||||
static const SK_OT_ULONG LatinExtendedAdditionalMask = SkTEndian_SwapBE32(1 << 29);
|
||||
static const SK_OT_ULONG GreekExtendedMask = SkTEndian_SwapBE32(1 << 30);
|
||||
static const SK_OT_ULONG GeneralPunctuationMask = SkTEndian_SwapBE32(1 << 31);
|
||||
};
|
||||
struct l1 {
|
||||
static const SK_OT_ULONG SuperscriptsAndSubscriptsMask = SkTEndian_SwapBE32(1 << (32 - 32));
|
||||
static const SK_OT_ULONG CurrencySymbolsMask = SkTEndian_SwapBE32(1 << (33 - 32));
|
||||
static const SK_OT_ULONG CombiningDiacriticalMarksForSymbolsMask = SkTEndian_SwapBE32(1 << (34 - 32));
|
||||
static const SK_OT_ULONG LetterlikeSymbolsMask = SkTEndian_SwapBE32(1 << (35 - 32));
|
||||
static const SK_OT_ULONG NumberFormsMask = SkTEndian_SwapBE32(1 << (36 - 32));
|
||||
static const SK_OT_ULONG ArrowsMask = SkTEndian_SwapBE32(1 << (37 - 32));
|
||||
static const SK_OT_ULONG MathematicalOperatorsMask = SkTEndian_SwapBE32(1 << (38 - 32));
|
||||
static const SK_OT_ULONG MiscellaneousTechnicalMask = SkTEndian_SwapBE32(1 << (39 - 32));
|
||||
static const SK_OT_ULONG ControlPicturesMask = SkTEndian_SwapBE32(1 << (40 - 32));
|
||||
static const SK_OT_ULONG OpticalCharacterRecognitionMask = SkTEndian_SwapBE32(1 << (41 - 32));
|
||||
static const SK_OT_ULONG EnclosedAlphanumericsMask = SkTEndian_SwapBE32(1 << (42 - 32));
|
||||
static const SK_OT_ULONG BoxDrawingMask = SkTEndian_SwapBE32(1 << (43 - 32));
|
||||
static const SK_OT_ULONG BlockElementsMask = SkTEndian_SwapBE32(1 << (44 - 32));
|
||||
static const SK_OT_ULONG GeometricShapesMask = SkTEndian_SwapBE32(1 << (45 - 32));
|
||||
static const SK_OT_ULONG MiscellaneousSymbolsMask = SkTEndian_SwapBE32(1 << (46 - 32));
|
||||
static const SK_OT_ULONG DingbatsMask = SkTEndian_SwapBE32(1 << (47 - 32));
|
||||
static const SK_OT_ULONG CJKSymbolsAndPunctuationMask = SkTEndian_SwapBE32(1 << (48 - 32));
|
||||
static const SK_OT_ULONG HiraganaMask = SkTEndian_SwapBE32(1 << (49 - 32));
|
||||
static const SK_OT_ULONG KatakanaMask = SkTEndian_SwapBE32(1 << (50 - 32));
|
||||
static const SK_OT_ULONG BopomofoMask = SkTEndian_SwapBE32(1 << (51 - 32));
|
||||
static const SK_OT_ULONG HangulCompatibilityJamoMask = SkTEndian_SwapBE32(1 << (52 - 32));
|
||||
static const SK_OT_ULONG CJKMiscellaneousMask = SkTEndian_SwapBE32(1 << (53 - 32));
|
||||
static const SK_OT_ULONG EnclosedCJKLettersAndMonthsMask = SkTEndian_SwapBE32(1 << (54 - 32));
|
||||
static const SK_OT_ULONG CJKCompatibilityMask = SkTEndian_SwapBE32(1 << (55 - 32));
|
||||
static const SK_OT_ULONG HangulMask = SkTEndian_SwapBE32(1 << (56 - 32));
|
||||
static const SK_OT_ULONG SurrogatesMask = SkTEndian_SwapBE32(1 << (57 - 32));
|
||||
//Reserved
|
||||
static const SK_OT_ULONG CJKUnifiedIdeographsMask = SkTEndian_SwapBE32(1 << (59 - 32));
|
||||
static const SK_OT_ULONG PrivateUseAreaMask = SkTEndian_SwapBE32(1 << (60 - 32));
|
||||
static const SK_OT_ULONG CJKCompatibilityIdeographsMask = SkTEndian_SwapBE32(1 << (61 - 32));
|
||||
static const SK_OT_ULONG AlphabeticPresentationFormsMask = SkTEndian_SwapBE32(1 << (62 - 32));
|
||||
static const SK_OT_ULONG ArabicPresentationFormsAMask = SkTEndian_SwapBE32(1 << (63 - 32));
|
||||
};
|
||||
struct l2 {
|
||||
static const SK_OT_ULONG CombiningHalfMarksMask = SkTEndian_SwapBE32(1 << (64 - 64));
|
||||
static const SK_OT_ULONG CJKCompatibilityFormsMask = SkTEndian_SwapBE32(1 << (65 - 64));
|
||||
static const SK_OT_ULONG SmallFormVariantsMask = SkTEndian_SwapBE32(1 << (66 - 64));
|
||||
static const SK_OT_ULONG ArabicPresentationFormsBMask = SkTEndian_SwapBE32(1 << (67 - 64));
|
||||
static const SK_OT_ULONG HalfwidthAndFullwidthFormsMask = SkTEndian_SwapBE32(1 << (68 - 64));
|
||||
static const SK_OT_ULONG SpecialsMask = SkTEndian_SwapBE32(1 << (69 - 64));
|
||||
static const SK_OT_ULONG TibetanMask = SkTEndian_SwapBE32(1 << (70 - 64));
|
||||
static const SK_OT_ULONG SyriacMask = SkTEndian_SwapBE32(1 << (71 - 64));
|
||||
static const SK_OT_ULONG ThaanaMask = SkTEndian_SwapBE32(1 << (72 - 64));
|
||||
static const SK_OT_ULONG SinhalaMask = SkTEndian_SwapBE32(1 << (73 - 64));
|
||||
static const SK_OT_ULONG MyanmarMask = SkTEndian_SwapBE32(1 << (74 - 64));
|
||||
static const SK_OT_ULONG EthiopicMask = SkTEndian_SwapBE32(1 << (75 - 64));
|
||||
static const SK_OT_ULONG CherokeeMask = SkTEndian_SwapBE32(1 << (76 - 64));
|
||||
static const SK_OT_ULONG UnifiedCanadianSyllabicsMask = SkTEndian_SwapBE32(1 << (77 - 64));
|
||||
static const SK_OT_ULONG OghamMask = SkTEndian_SwapBE32(1 << (78 - 64));
|
||||
static const SK_OT_ULONG RunicMask = SkTEndian_SwapBE32(1 << (79 - 64));
|
||||
static const SK_OT_ULONG KhmerMask = SkTEndian_SwapBE32(1 << (80 - 64));
|
||||
static const SK_OT_ULONG MongolianMask = SkTEndian_SwapBE32(1 << (81 - 64));
|
||||
static const SK_OT_ULONG BrailleMask = SkTEndian_SwapBE32(1 << (82 - 64));
|
||||
static const SK_OT_ULONG YiMask = SkTEndian_SwapBE32(1 << (83 - 64));
|
||||
};
|
||||
SK_OT_ULONG value[4];
|
||||
} raw;
|
||||
} ulUnicodeRange;
|
||||
SK_OT_CHAR achVendID[4];
|
||||
union Selection {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved08,
|
||||
Reserved09,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Italic,
|
||||
Underscore,
|
||||
Negative,
|
||||
Outlined,
|
||||
Strikeout,
|
||||
Bold,
|
||||
Regular,
|
||||
Reserved07)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT ItalicMask = SkTEndian_SwapBE16(1 << 0);
|
||||
static const SK_OT_USHORT UnderscoreMask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT NegativeMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT OutlinedMask = SkTEndian_SwapBE16(1 << 3);
|
||||
static const SK_OT_USHORT StrikeoutMask = SkTEndian_SwapBE16(1 << 4);
|
||||
static const SK_OT_USHORT BoldMask = SkTEndian_SwapBE16(1 << 5);
|
||||
static const SK_OT_USHORT RegularMask = SkTEndian_SwapBE16(1 << 6);
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} fsSelection;
|
||||
SK_OT_USHORT usFirstCharIndex;
|
||||
SK_OT_USHORT usLastCharIndex;
|
||||
//version0
|
||||
SK_OT_SHORT sTypoAscender;
|
||||
SK_OT_SHORT sTypoDescender;
|
||||
SK_OT_SHORT sTypoLineGap;
|
||||
SK_OT_USHORT usWinAscent;
|
||||
SK_OT_USHORT usWinDescent;
|
||||
//version1
|
||||
union CodePageRange {
|
||||
struct Field {
|
||||
//l0 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved24,
|
||||
Reserved25,
|
||||
Reserved26,
|
||||
Reserved27,
|
||||
Reserved28,
|
||||
MacintoshCharacterSet,
|
||||
OEMCharacterSet,
|
||||
SymbolCharacterSet)
|
||||
//l0 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Thai_874,
|
||||
JISJapan_932,
|
||||
ChineseSimplified_936,
|
||||
KoreanWansung_949,
|
||||
ChineseTraditional_950,
|
||||
KoreanJohab_1361,
|
||||
Reserved22,
|
||||
Reserved23)
|
||||
//l0 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Vietnamese,
|
||||
Reserved09,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//l0 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Latin1_1252,
|
||||
Latin2EasternEurope_1250,
|
||||
Cyrillic_1251,
|
||||
Greek_1253,
|
||||
Turkish_1254,
|
||||
Hebrew_1255,
|
||||
Arabic_1256,
|
||||
WindowsBaltic_1257)
|
||||
|
||||
//l1 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
IBMTurkish_857,
|
||||
IBMCyrillic_855,
|
||||
Latin2_852,
|
||||
MSDOSBaltic_775,
|
||||
Greek_737,
|
||||
Arabic_708,
|
||||
WELatin1_850,
|
||||
US_437)
|
||||
//l1 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
IBMGreek_869,
|
||||
MSDOSRussian_866,
|
||||
MSDOSNordic_865,
|
||||
Arabic_864,
|
||||
MSDOSCanadianFrench_863,
|
||||
Hebrew_862,
|
||||
MSDOSIcelandic_861,
|
||||
MSDOSPortuguese_860)
|
||||
//l1 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved40,
|
||||
Reserved41,
|
||||
Reserved42,
|
||||
Reserved43,
|
||||
Reserved44,
|
||||
Reserved45,
|
||||
Reserved46,
|
||||
Reserved47)
|
||||
//l1 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved32,
|
||||
Reserved33,
|
||||
Reserved34,
|
||||
Reserved35,
|
||||
Reserved36,
|
||||
Reserved37,
|
||||
Reserved38,
|
||||
Reserved39)
|
||||
} field;
|
||||
struct Raw {
|
||||
struct l0 {
|
||||
static const SK_OT_ULONG Latin1_1252Mask = SkTEndian_SwapBE32(1 << 0);
|
||||
static const SK_OT_ULONG Latin2EasternEurope_1250Mask = SkTEndian_SwapBE32(1 << 1);
|
||||
static const SK_OT_ULONG Cyrillic_1251Mask = SkTEndian_SwapBE32(1 << 2);
|
||||
static const SK_OT_ULONG Greek_1253Mask = SkTEndian_SwapBE32(1 << 3);
|
||||
static const SK_OT_ULONG Turkish_1254Mask = SkTEndian_SwapBE32(1 << 4);
|
||||
static const SK_OT_ULONG Hebrew_1255Mask = SkTEndian_SwapBE32(1 << 5);
|
||||
static const SK_OT_ULONG Arabic_1256Mask = SkTEndian_SwapBE32(1 << 6);
|
||||
static const SK_OT_ULONG WindowsBaltic_1257Mask = SkTEndian_SwapBE32(1 << 7);
|
||||
static const SK_OT_ULONG Vietnamese_1258Mask = SkTEndian_SwapBE32(1 << 8);
|
||||
static const SK_OT_ULONG Thai_874Mask = SkTEndian_SwapBE32(1 << 16);
|
||||
static const SK_OT_ULONG JISJapan_932Mask = SkTEndian_SwapBE32(1 << 17);
|
||||
static const SK_OT_ULONG ChineseSimplified_936Mask = SkTEndian_SwapBE32(1 << 18);
|
||||
static const SK_OT_ULONG KoreanWansung_949Mask = SkTEndian_SwapBE32(1 << 19);
|
||||
static const SK_OT_ULONG ChineseTraditional_950Mask = SkTEndian_SwapBE32(1 << 20);
|
||||
static const SK_OT_ULONG KoreanJohab_1361Mask = SkTEndian_SwapBE32(1 << 21);
|
||||
static const SK_OT_ULONG MacintoshCharacterSetMask = SkTEndian_SwapBE32(1 << 29);
|
||||
static const SK_OT_ULONG OEMCharacterSetMask = SkTEndian_SwapBE32(1 << 30);
|
||||
static const SK_OT_ULONG SymbolCharacterSetMask = SkTEndian_SwapBE32(1 << 31);
|
||||
};
|
||||
struct l1 {
|
||||
static const SK_OT_ULONG IBMGreek_869Mask = SkTEndian_SwapBE32(1 << (48 - 32));
|
||||
static const SK_OT_ULONG MSDOSRussian_866Mask = SkTEndian_SwapBE32(1 << (49 - 32));
|
||||
static const SK_OT_ULONG MSDOSNordic_865Mask = SkTEndian_SwapBE32(1 << (50 - 32));
|
||||
static const SK_OT_ULONG Arabic_864Mask = SkTEndian_SwapBE32(1 << (51 - 32));
|
||||
static const SK_OT_ULONG MSDOSCanadianFrench_863Mask = SkTEndian_SwapBE32(1 << (52 - 32));
|
||||
static const SK_OT_ULONG Hebrew_862Mask = SkTEndian_SwapBE32(1 << (53 - 32));
|
||||
static const SK_OT_ULONG MSDOSIcelandic_861Mask = SkTEndian_SwapBE32(1 << (54 - 32));
|
||||
static const SK_OT_ULONG MSDOSPortuguese_860Mask = SkTEndian_SwapBE32(1 << (55 - 32));
|
||||
static const SK_OT_ULONG IBMTurkish_857Mask = SkTEndian_SwapBE32(1 << (56 - 32));
|
||||
static const SK_OT_ULONG IBMCyrillic_855Mask = SkTEndian_SwapBE32(1 << (57 - 32));
|
||||
static const SK_OT_ULONG Latin2_852Mask = SkTEndian_SwapBE32(1 << (58 - 32));
|
||||
static const SK_OT_ULONG MSDOSBaltic_775Mask = SkTEndian_SwapBE32(1 << (59 - 32));
|
||||
static const SK_OT_ULONG Greek_737Mask = SkTEndian_SwapBE32(1 << (60 - 32));
|
||||
static const SK_OT_ULONG Arabic_708Mask = SkTEndian_SwapBE32(1 << (61 - 32));
|
||||
static const SK_OT_ULONG WELatin1_850Mask = SkTEndian_SwapBE32(1 << (62 - 32));
|
||||
static const SK_OT_ULONG US_437Mask = SkTEndian_SwapBE32(1 << (63 - 32));
|
||||
};
|
||||
SK_OT_ULONG value[2];
|
||||
} raw;
|
||||
} ulCodePageRange;
|
||||
//version2
|
||||
SK_OT_SHORT sxHeight;
|
||||
SK_OT_SHORT sCapHeight;
|
||||
SK_OT_USHORT usDefaultChar;
|
||||
SK_OT_USHORT usBreakChar;
|
||||
SK_OT_USHORT usMaxContext;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableOS2_V2) == 96, sizeof_SkOTTableOS2_V2_not_96);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,549 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkOTTable_OS_2_V3_DEFINED
|
||||
#define SkOTTable_OS_2_V3_DEFINED
|
||||
|
||||
#include "SkEndian.h"
|
||||
#include "SkIBMFamilyClass.h"
|
||||
#include "SkOTTableTypes.h"
|
||||
#include "SkPanose.h"
|
||||
#include "SkTypedEnum.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct SkOTTableOS2_V3 {
|
||||
SK_OT_USHORT version;
|
||||
static const SK_OT_USHORT version3 = SkTEndian_SwapBE16(3);
|
||||
SK_OT_SHORT xAvgCharWidth;
|
||||
struct WeightClass {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((Thin, SkTEndian_SwapBE16(100)))
|
||||
((ExtraLight, SkTEndian_SwapBE16(200)))
|
||||
((Light, SkTEndian_SwapBE16(300)))
|
||||
((Normal, SkTEndian_SwapBE16(400)))
|
||||
((Medium, SkTEndian_SwapBE16(500)))
|
||||
((SemiBold, SkTEndian_SwapBE16(600)))
|
||||
((Bold, SkTEndian_SwapBE16(700)))
|
||||
((ExtraBold, SkTEndian_SwapBE16(800)))
|
||||
((Black, SkTEndian_SwapBE16(900)))
|
||||
SK_SEQ_END,
|
||||
SK_SEQ_END)
|
||||
SK_OT_USHORT value;
|
||||
} usWeightClass;
|
||||
struct WidthClass {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((UltraCondensed, SkTEndian_SwapBE16(1)))
|
||||
((ExtraCondensed, SkTEndian_SwapBE16(2)))
|
||||
((Condensed, SkTEndian_SwapBE16(3)))
|
||||
((SemiCondensed, SkTEndian_SwapBE16(4)))
|
||||
((Medium, SkTEndian_SwapBE16(5)))
|
||||
((SemiExpanded, SkTEndian_SwapBE16(6)))
|
||||
((Expanded, SkTEndian_SwapBE16(7)))
|
||||
((ExtraExpanded, SkTEndian_SwapBE16(8)))
|
||||
((UltraExpanded, SkTEndian_SwapBE16(9)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} usWidthClass;
|
||||
union Type {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
NoSubsetting,
|
||||
Bitmap,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved00,
|
||||
Restricted,
|
||||
PreviewPrint,
|
||||
Editable,
|
||||
Reserved04,
|
||||
Reserved05,
|
||||
Reserved06,
|
||||
Reserved07)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT Installable = SkTEndian_SwapBE16(0);
|
||||
static const SK_OT_USHORT RestrictedMask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT PreviewPrintMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT EditableMask = SkTEndian_SwapBE16(1 << 3);
|
||||
static const SK_OT_USHORT NoSubsettingMask = SkTEndian_SwapBE16(1 << 8);
|
||||
static const SK_OT_USHORT BitmapMask = SkTEndian_SwapBE16(1 << 9);
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} fsType;
|
||||
SK_OT_SHORT ySubscriptXSize;
|
||||
SK_OT_SHORT ySubscriptYSize;
|
||||
SK_OT_SHORT ySubscriptXOffset;
|
||||
SK_OT_SHORT ySubscriptYOffset;
|
||||
SK_OT_SHORT ySuperscriptXSize;
|
||||
SK_OT_SHORT ySuperscriptYSize;
|
||||
SK_OT_SHORT ySuperscriptXOffset;
|
||||
SK_OT_SHORT ySuperscriptYOffset;
|
||||
SK_OT_SHORT yStrikeoutSize;
|
||||
SK_OT_SHORT yStrikeoutPosition;
|
||||
SkIBMFamilyClass sFamilyClass;
|
||||
SkPanose panose;
|
||||
union UnicodeRange {
|
||||
struct Field {
|
||||
//l0 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Thai,
|
||||
Lao,
|
||||
Georgian,
|
||||
Reserved027,
|
||||
HangulJamo,
|
||||
LatinExtendedAdditional,
|
||||
GreekExtended,
|
||||
GeneralPunctuation)
|
||||
//l0 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Bengali,
|
||||
Gurmukhi,
|
||||
Gujarati,
|
||||
Oriya,
|
||||
Tamil,
|
||||
Telugu,
|
||||
Kannada,
|
||||
Malayalam)
|
||||
//l0 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved008,
|
||||
Cyrillic,
|
||||
Armenian,
|
||||
Hebrew,
|
||||
Reserved012,
|
||||
Arabic,
|
||||
Reserved014,
|
||||
Devanagari)
|
||||
//l0 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
BasicLatin,
|
||||
Latin1Supplement,
|
||||
LatinExtendedA,
|
||||
LatinExtendedB,
|
||||
IPAExtensions,
|
||||
SpacingModifierLetters,
|
||||
CombiningDiacriticalMarks,
|
||||
GreekAndCoptic)
|
||||
|
||||
//l1 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Hangul,
|
||||
NonPlane0,
|
||||
Reserved058,
|
||||
CJKUnifiedIdeographs,
|
||||
PrivateUseArea,
|
||||
CJKCompatibilityIdeographs,
|
||||
AlphabeticPresentationForms,
|
||||
ArabicPresentationFormsA)
|
||||
//l1 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
CJKSymbolsAndPunctuation,
|
||||
Hiragana,
|
||||
Katakana,
|
||||
Bopomofo,
|
||||
HangulCompatibilityJamo,
|
||||
Reserved053,
|
||||
EnclosedCJKLettersAndMonths,
|
||||
CJKCompatibility)
|
||||
//l1 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
ControlPictures,
|
||||
OpticalCharacterRecognition,
|
||||
EnclosedAlphanumerics,
|
||||
BoxDrawing,
|
||||
BlockElements,
|
||||
GeometricShapes,
|
||||
MiscellaneousSymbols,
|
||||
Dingbats)
|
||||
//l1 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
SuperscriptsAndSubscripts,
|
||||
CurrencySymbols,
|
||||
CombiningDiacriticalMarksForSymbols,
|
||||
LetterlikeSymbols,
|
||||
NumberForms,
|
||||
Arrows,
|
||||
MathematicalOperators,
|
||||
MiscellaneousTechnical)
|
||||
|
||||
//l2 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
MusicalSymbols,
|
||||
MathematicalAlphanumericSymbols,
|
||||
PrivateUse,
|
||||
VariationSelectors,
|
||||
Tags,
|
||||
Reserved093,
|
||||
Reserved094,
|
||||
Reserved095)
|
||||
//l2 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Khmer,
|
||||
Mongolian,
|
||||
Braille,
|
||||
Yi,
|
||||
Tagalog_Hanunoo_Buhid_Tagbanwa,
|
||||
OldItalic,
|
||||
Gothic,
|
||||
Deseret)
|
||||
//l2 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Thaana,
|
||||
Sinhala,
|
||||
Myanmar,
|
||||
Ethiopic,
|
||||
Cherokee,
|
||||
UnifiedCanadianSyllabics,
|
||||
Ogham,
|
||||
Runic)
|
||||
//l2 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
CombiningHalfMarks,
|
||||
CJKCompatibilityForms,
|
||||
SmallFormVariants,
|
||||
ArabicPresentationFormsB,
|
||||
HalfwidthAndFullwidthForms,
|
||||
Specials,
|
||||
Tibetan,
|
||||
Syriac)
|
||||
|
||||
//l3 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved120,
|
||||
Reserved121,
|
||||
Reserved122,
|
||||
Reserved123,
|
||||
Reserved124,
|
||||
Reserved125,
|
||||
Reserved126,
|
||||
Reserved127)
|
||||
//l3 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved112,
|
||||
Reserved113,
|
||||
Reserved114,
|
||||
Reserved115,
|
||||
Reserved116,
|
||||
Reserved117,
|
||||
Reserved118,
|
||||
Reserved119)
|
||||
//l3 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved104,
|
||||
Reserved105,
|
||||
Reserved106,
|
||||
Reserved107,
|
||||
Reserved108,
|
||||
Reserved109,
|
||||
Reserved110,
|
||||
Reserved111)
|
||||
//l3 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved096,
|
||||
Reserved097,
|
||||
Reserved098,
|
||||
Reserved099,
|
||||
Reserved100,
|
||||
Reserved101,
|
||||
Reserved102,
|
||||
Reserved103)
|
||||
} field;
|
||||
struct Raw {
|
||||
struct l0 {
|
||||
static const SK_OT_ULONG BasicLatinMask = SkTEndian_SwapBE32(1 << 0);
|
||||
static const SK_OT_ULONG Latin1SupplementMask = SkTEndian_SwapBE32(1 << 1);
|
||||
static const SK_OT_ULONG LatinExtendedAMask = SkTEndian_SwapBE32(1 << 2);
|
||||
static const SK_OT_ULONG LatinExtendedBMask = SkTEndian_SwapBE32(1 << 3);
|
||||
static const SK_OT_ULONG IPAExtensionsMask = SkTEndian_SwapBE32(1 << 4);
|
||||
static const SK_OT_ULONG SpacingModifierLettersMask = SkTEndian_SwapBE32(1 << 5);
|
||||
static const SK_OT_ULONG CombiningDiacriticalMarksMask = SkTEndian_SwapBE32(1 << 6);
|
||||
static const SK_OT_ULONG GreekAndCopticMask = SkTEndian_SwapBE32(1 << 7);
|
||||
//Reserved
|
||||
static const SK_OT_ULONG CyrillicMask = SkTEndian_SwapBE32(1 << 9);
|
||||
static const SK_OT_ULONG ArmenianMask = SkTEndian_SwapBE32(1 << 10);
|
||||
static const SK_OT_ULONG HebrewMask = SkTEndian_SwapBE32(1 << 11);
|
||||
//Reserved
|
||||
static const SK_OT_ULONG ArabicMask = SkTEndian_SwapBE32(1 << 13);
|
||||
//Reserved
|
||||
static const SK_OT_ULONG DevanagariMask = SkTEndian_SwapBE32(1 << 15);
|
||||
static const SK_OT_ULONG BengaliMask = SkTEndian_SwapBE32(1 << 16);
|
||||
static const SK_OT_ULONG GurmukhiMask = SkTEndian_SwapBE32(1 << 17);
|
||||
static const SK_OT_ULONG GujaratiMask = SkTEndian_SwapBE32(1 << 18);
|
||||
static const SK_OT_ULONG OriyaMask = SkTEndian_SwapBE32(1 << 19);
|
||||
static const SK_OT_ULONG TamilMask = SkTEndian_SwapBE32(1 << 20);
|
||||
static const SK_OT_ULONG TeluguMask = SkTEndian_SwapBE32(1 << 21);
|
||||
static const SK_OT_ULONG KannadaMask = SkTEndian_SwapBE32(1 << 22);
|
||||
static const SK_OT_ULONG MalayalamMask = SkTEndian_SwapBE32(1 << 23);
|
||||
static const SK_OT_ULONG ThaiMask = SkTEndian_SwapBE32(1 << 24);
|
||||
static const SK_OT_ULONG LaoMask = SkTEndian_SwapBE32(1 << 25);
|
||||
static const SK_OT_ULONG GeorgianMask = SkTEndian_SwapBE32(1 << 26);
|
||||
//Reserved
|
||||
static const SK_OT_ULONG HangulJamoMask = SkTEndian_SwapBE32(1 << 28);
|
||||
static const SK_OT_ULONG LatinExtendedAdditionalMask = SkTEndian_SwapBE32(1 << 29);
|
||||
static const SK_OT_ULONG GreekExtendedMask = SkTEndian_SwapBE32(1 << 30);
|
||||
static const SK_OT_ULONG GeneralPunctuationMask = SkTEndian_SwapBE32(1 << 31);
|
||||
};
|
||||
struct l1 {
|
||||
static const SK_OT_ULONG SuperscriptsAndSubscriptsMask = SkTEndian_SwapBE32(1 << (32 - 32));
|
||||
static const SK_OT_ULONG CurrencySymbolsMask = SkTEndian_SwapBE32(1 << (33 - 32));
|
||||
static const SK_OT_ULONG CombiningDiacriticalMarksForSymbolsMask = SkTEndian_SwapBE32(1 << (34 - 32));
|
||||
static const SK_OT_ULONG LetterlikeSymbolsMask = SkTEndian_SwapBE32(1 << (35 - 32));
|
||||
static const SK_OT_ULONG NumberFormsMask = SkTEndian_SwapBE32(1 << (36 - 32));
|
||||
static const SK_OT_ULONG ArrowsMask = SkTEndian_SwapBE32(1 << (37 - 32));
|
||||
static const SK_OT_ULONG MathematicalOperatorsMask = SkTEndian_SwapBE32(1 << (38 - 32));
|
||||
static const SK_OT_ULONG MiscellaneousTechnicalMask = SkTEndian_SwapBE32(1 << (39 - 32));
|
||||
static const SK_OT_ULONG ControlPicturesMask = SkTEndian_SwapBE32(1 << (40 - 32));
|
||||
static const SK_OT_ULONG OpticalCharacterRecognitionMask = SkTEndian_SwapBE32(1 << (41 - 32));
|
||||
static const SK_OT_ULONG EnclosedAlphanumericsMask = SkTEndian_SwapBE32(1 << (42 - 32));
|
||||
static const SK_OT_ULONG BoxDrawingMask = SkTEndian_SwapBE32(1 << (43 - 32));
|
||||
static const SK_OT_ULONG BlockElementsMask = SkTEndian_SwapBE32(1 << (44 - 32));
|
||||
static const SK_OT_ULONG GeometricShapesMask = SkTEndian_SwapBE32(1 << (45 - 32));
|
||||
static const SK_OT_ULONG MiscellaneousSymbolsMask = SkTEndian_SwapBE32(1 << (46 - 32));
|
||||
static const SK_OT_ULONG DingbatsMask = SkTEndian_SwapBE32(1 << (47 - 32));
|
||||
static const SK_OT_ULONG CJKSymbolsAndPunctuationMask = SkTEndian_SwapBE32(1 << (48 - 32));
|
||||
static const SK_OT_ULONG HiraganaMask = SkTEndian_SwapBE32(1 << (49 - 32));
|
||||
static const SK_OT_ULONG KatakanaMask = SkTEndian_SwapBE32(1 << (50 - 32));
|
||||
static const SK_OT_ULONG BopomofoMask = SkTEndian_SwapBE32(1 << (51 - 32));
|
||||
static const SK_OT_ULONG HangulCompatibilityJamoMask = SkTEndian_SwapBE32(1 << (52 - 32));
|
||||
//Reserved
|
||||
static const SK_OT_ULONG EnclosedCJKLettersAndMonthsMask = SkTEndian_SwapBE32(1 << (54 - 32));
|
||||
static const SK_OT_ULONG CJKCompatibilityMask = SkTEndian_SwapBE32(1 << (55 - 32));
|
||||
static const SK_OT_ULONG HangulMask = SkTEndian_SwapBE32(1 << (56 - 32));
|
||||
static const SK_OT_ULONG NonPlane0Mask = SkTEndian_SwapBE32(1 << (57 - 32));
|
||||
//Reserved
|
||||
static const SK_OT_ULONG CJKUnifiedIdeographsMask = SkTEndian_SwapBE32(1 << (59 - 32));
|
||||
static const SK_OT_ULONG PrivateUseAreaMask = SkTEndian_SwapBE32(1 << (60 - 32));
|
||||
static const SK_OT_ULONG CJKCompatibilityIdeographsMask = SkTEndian_SwapBE32(1 << (61 - 32));
|
||||
static const SK_OT_ULONG AlphabeticPresentationFormsMask = SkTEndian_SwapBE32(1 << (62 - 32));
|
||||
static const SK_OT_ULONG ArabicPresentationFormsAMask = SkTEndian_SwapBE32(1 << (63 - 32));
|
||||
};
|
||||
struct l2 {
|
||||
static const SK_OT_ULONG CombiningHalfMarksMask = SkTEndian_SwapBE32(1 << (64 - 64));
|
||||
static const SK_OT_ULONG CJKCompatibilityFormsMask = SkTEndian_SwapBE32(1 << (65 - 64));
|
||||
static const SK_OT_ULONG SmallFormVariantsMask = SkTEndian_SwapBE32(1 << (66 - 64));
|
||||
static const SK_OT_ULONG ArabicPresentationFormsBMask = SkTEndian_SwapBE32(1 << (67 - 64));
|
||||
static const SK_OT_ULONG HalfwidthAndFullwidthFormsMask = SkTEndian_SwapBE32(1 << (68 - 64));
|
||||
static const SK_OT_ULONG SpecialsMask = SkTEndian_SwapBE32(1 << (69 - 64));
|
||||
static const SK_OT_ULONG TibetanMask = SkTEndian_SwapBE32(1 << (70 - 64));
|
||||
static const SK_OT_ULONG SyriacMask = SkTEndian_SwapBE32(1 << (71 - 64));
|
||||
static const SK_OT_ULONG ThaanaMask = SkTEndian_SwapBE32(1 << (72 - 64));
|
||||
static const SK_OT_ULONG SinhalaMask = SkTEndian_SwapBE32(1 << (73 - 64));
|
||||
static const SK_OT_ULONG MyanmarMask = SkTEndian_SwapBE32(1 << (74 - 64));
|
||||
static const SK_OT_ULONG EthiopicMask = SkTEndian_SwapBE32(1 << (75 - 64));
|
||||
static const SK_OT_ULONG CherokeeMask = SkTEndian_SwapBE32(1 << (76 - 64));
|
||||
static const SK_OT_ULONG UnifiedCanadianSyllabicsMask = SkTEndian_SwapBE32(1 << (77 - 64));
|
||||
static const SK_OT_ULONG OghamMask = SkTEndian_SwapBE32(1 << (78 - 64));
|
||||
static const SK_OT_ULONG RunicMask = SkTEndian_SwapBE32(1 << (79 - 64));
|
||||
static const SK_OT_ULONG KhmerMask = SkTEndian_SwapBE32(1 << (80 - 64));
|
||||
static const SK_OT_ULONG MongolianMask = SkTEndian_SwapBE32(1 << (81 - 64));
|
||||
static const SK_OT_ULONG BrailleMask = SkTEndian_SwapBE32(1 << (82 - 64));
|
||||
static const SK_OT_ULONG YiMask = SkTEndian_SwapBE32(1 << (83 - 64));
|
||||
static const SK_OT_ULONG Tagalog_Hanunoo_Buhid_TagbanwaMask = SkTEndian_SwapBE32(1 << (84 - 64));
|
||||
static const SK_OT_ULONG OldItalicMask = SkTEndian_SwapBE32(1 << (85 - 64));
|
||||
static const SK_OT_ULONG GothicMask = SkTEndian_SwapBE32(1 << (86 - 64));
|
||||
static const SK_OT_ULONG DeseretMask = SkTEndian_SwapBE32(1 << (87 - 64));
|
||||
static const SK_OT_ULONG MusicalSymbolsMask = SkTEndian_SwapBE32(1 << (88 - 64));
|
||||
static const SK_OT_ULONG MathematicalAlphanumericSymbolsMask = SkTEndian_SwapBE32(1 << (89 - 64));
|
||||
static const SK_OT_ULONG PrivateUseMask = SkTEndian_SwapBE32(1 << (90 - 64));
|
||||
static const SK_OT_ULONG VariationSelectorsMask = SkTEndian_SwapBE32(1 << (91 - 64));
|
||||
static const SK_OT_ULONG TagsMask = SkTEndian_SwapBE32(1 << (92 - 64));
|
||||
};
|
||||
SK_OT_ULONG value[4];
|
||||
} raw;
|
||||
} ulUnicodeRange;
|
||||
SK_OT_CHAR achVendID[4];
|
||||
union Selection {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved08,
|
||||
Reserved09,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Italic,
|
||||
Underscore,
|
||||
Negative,
|
||||
Outlined,
|
||||
Strikeout,
|
||||
Bold,
|
||||
Regular,
|
||||
Reserved07)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT ItalicMask = SkTEndian_SwapBE16(1 << 0);
|
||||
static const SK_OT_USHORT UnderscoreMask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT NegativeMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT OutlinedMask = SkTEndian_SwapBE16(1 << 3);
|
||||
static const SK_OT_USHORT StrikeoutMask = SkTEndian_SwapBE16(1 << 4);
|
||||
static const SK_OT_USHORT BoldMask = SkTEndian_SwapBE16(1 << 5);
|
||||
static const SK_OT_USHORT RegularMask = SkTEndian_SwapBE16(1 << 6);
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} fsSelection;
|
||||
SK_OT_USHORT usFirstCharIndex;
|
||||
SK_OT_USHORT usLastCharIndex;
|
||||
//version0
|
||||
SK_OT_SHORT sTypoAscender;
|
||||
SK_OT_SHORT sTypoDescender;
|
||||
SK_OT_SHORT sTypoLineGap;
|
||||
SK_OT_USHORT usWinAscent;
|
||||
SK_OT_USHORT usWinDescent;
|
||||
//version1
|
||||
union CodePageRange {
|
||||
struct Field {
|
||||
//l0 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved24,
|
||||
Reserved25,
|
||||
Reserved26,
|
||||
Reserved27,
|
||||
Reserved28,
|
||||
MacintoshCharacterSet,
|
||||
OEMCharacterSet,
|
||||
SymbolCharacterSet)
|
||||
//l0 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Thai_874,
|
||||
JISJapan_932,
|
||||
ChineseSimplified_936,
|
||||
KoreanWansung_949,
|
||||
ChineseTraditional_950,
|
||||
KoreanJohab_1361,
|
||||
Reserved22,
|
||||
Reserved23)
|
||||
//l0 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Vietnamese,
|
||||
Reserved09,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//l0 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Latin1_1252,
|
||||
Latin2EasternEurope_1250,
|
||||
Cyrillic_1251,
|
||||
Greek_1253,
|
||||
Turkish_1254,
|
||||
Hebrew_1255,
|
||||
Arabic_1256,
|
||||
WindowsBaltic_1257)
|
||||
|
||||
//l1 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
IBMTurkish_857,
|
||||
IBMCyrillic_855,
|
||||
Latin2_852,
|
||||
MSDOSBaltic_775,
|
||||
Greek_737,
|
||||
Arabic_708,
|
||||
WELatin1_850,
|
||||
US_437)
|
||||
//l1 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
IBMGreek_869,
|
||||
MSDOSRussian_866,
|
||||
MSDOSNordic_865,
|
||||
Arabic_864,
|
||||
MSDOSCanadianFrench_863,
|
||||
Hebrew_862,
|
||||
MSDOSIcelandic_861,
|
||||
MSDOSPortuguese_860)
|
||||
//l1 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved40,
|
||||
Reserved41,
|
||||
Reserved42,
|
||||
Reserved43,
|
||||
Reserved44,
|
||||
Reserved45,
|
||||
Reserved46,
|
||||
Reserved47)
|
||||
//l1 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved32,
|
||||
Reserved33,
|
||||
Reserved34,
|
||||
Reserved35,
|
||||
Reserved36,
|
||||
Reserved37,
|
||||
Reserved38,
|
||||
Reserved39)
|
||||
} field;
|
||||
struct Raw {
|
||||
struct l0 {
|
||||
static const SK_OT_ULONG Latin1_1252Mask = SkTEndian_SwapBE32(1 << 0);
|
||||
static const SK_OT_ULONG Latin2EasternEurope_1250Mask = SkTEndian_SwapBE32(1 << 1);
|
||||
static const SK_OT_ULONG Cyrillic_1251Mask = SkTEndian_SwapBE32(1 << 2);
|
||||
static const SK_OT_ULONG Greek_1253Mask = SkTEndian_SwapBE32(1 << 3);
|
||||
static const SK_OT_ULONG Turkish_1254Mask = SkTEndian_SwapBE32(1 << 4);
|
||||
static const SK_OT_ULONG Hebrew_1255Mask = SkTEndian_SwapBE32(1 << 5);
|
||||
static const SK_OT_ULONG Arabic_1256Mask = SkTEndian_SwapBE32(1 << 6);
|
||||
static const SK_OT_ULONG WindowsBaltic_1257Mask = SkTEndian_SwapBE32(1 << 7);
|
||||
static const SK_OT_ULONG Vietnamese_1258Mask = SkTEndian_SwapBE32(1 << 8);
|
||||
static const SK_OT_ULONG Thai_874Mask = SkTEndian_SwapBE32(1 << 16);
|
||||
static const SK_OT_ULONG JISJapan_932Mask = SkTEndian_SwapBE32(1 << 17);
|
||||
static const SK_OT_ULONG ChineseSimplified_936Mask = SkTEndian_SwapBE32(1 << 18);
|
||||
static const SK_OT_ULONG KoreanWansung_949Mask = SkTEndian_SwapBE32(1 << 19);
|
||||
static const SK_OT_ULONG ChineseTraditional_950Mask = SkTEndian_SwapBE32(1 << 20);
|
||||
static const SK_OT_ULONG KoreanJohab_1361Mask = SkTEndian_SwapBE32(1 << 21);
|
||||
static const SK_OT_ULONG MacintoshCharacterSetMask = SkTEndian_SwapBE32(1 << 29);
|
||||
static const SK_OT_ULONG OEMCharacterSetMask = SkTEndian_SwapBE32(1 << 30);
|
||||
static const SK_OT_ULONG SymbolCharacterSetMask = SkTEndian_SwapBE32(1 << 31);
|
||||
};
|
||||
struct l1 {
|
||||
static const SK_OT_ULONG IBMGreek_869Mask = SkTEndian_SwapBE32(1 << (48 - 32));
|
||||
static const SK_OT_ULONG MSDOSRussian_866Mask = SkTEndian_SwapBE32(1 << (49 - 32));
|
||||
static const SK_OT_ULONG MSDOSNordic_865Mask = SkTEndian_SwapBE32(1 << (50 - 32));
|
||||
static const SK_OT_ULONG Arabic_864Mask = SkTEndian_SwapBE32(1 << (51 - 32));
|
||||
static const SK_OT_ULONG MSDOSCanadianFrench_863Mask = SkTEndian_SwapBE32(1 << (52 - 32));
|
||||
static const SK_OT_ULONG Hebrew_862Mask = SkTEndian_SwapBE32(1 << (53 - 32));
|
||||
static const SK_OT_ULONG MSDOSIcelandic_861Mask = SkTEndian_SwapBE32(1 << (54 - 32));
|
||||
static const SK_OT_ULONG MSDOSPortuguese_860Mask = SkTEndian_SwapBE32(1 << (55 - 32));
|
||||
static const SK_OT_ULONG IBMTurkish_857Mask = SkTEndian_SwapBE32(1 << (56 - 32));
|
||||
static const SK_OT_ULONG IBMCyrillic_855Mask = SkTEndian_SwapBE32(1 << (57 - 32));
|
||||
static const SK_OT_ULONG Latin2_852Mask = SkTEndian_SwapBE32(1 << (58 - 32));
|
||||
static const SK_OT_ULONG MSDOSBaltic_775Mask = SkTEndian_SwapBE32(1 << (59 - 32));
|
||||
static const SK_OT_ULONG Greek_737Mask = SkTEndian_SwapBE32(1 << (60 - 32));
|
||||
static const SK_OT_ULONG Arabic_708Mask = SkTEndian_SwapBE32(1 << (61 - 32));
|
||||
static const SK_OT_ULONG WELatin1_850Mask = SkTEndian_SwapBE32(1 << (62 - 32));
|
||||
static const SK_OT_ULONG US_437Mask = SkTEndian_SwapBE32(1 << (63 - 32));
|
||||
};
|
||||
SK_OT_ULONG value[2];
|
||||
} raw;
|
||||
} ulCodePageRange;
|
||||
//version2
|
||||
SK_OT_SHORT sxHeight;
|
||||
SK_OT_SHORT sCapHeight;
|
||||
SK_OT_USHORT usDefaultChar;
|
||||
SK_OT_USHORT usBreakChar;
|
||||
SK_OT_USHORT usMaxContext;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableOS2_V3) == 96, sizeof_SkOTTableOS2_V3_not_96);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,584 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkOTTable_OS_2_V4_DEFINED
|
||||
#define SkOTTable_OS_2_V4_DEFINED
|
||||
|
||||
#include "SkEndian.h"
|
||||
#include "SkIBMFamilyClass.h"
|
||||
#include "SkOTTableTypes.h"
|
||||
#include "SkPanose.h"
|
||||
#include "SkTypedEnum.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct SkOTTableOS2_V4 {
|
||||
SK_OT_USHORT version;
|
||||
static const SK_OT_USHORT version4 = SkTEndian_SwapBE16(4);
|
||||
SK_OT_SHORT xAvgCharWidth;
|
||||
struct WeightClass {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((Thin, SkTEndian_SwapBE16(100)))
|
||||
((ExtraLight, SkTEndian_SwapBE16(200)))
|
||||
((Light, SkTEndian_SwapBE16(300)))
|
||||
((Normal, SkTEndian_SwapBE16(400)))
|
||||
((Medium, SkTEndian_SwapBE16(500)))
|
||||
((SemiBold, SkTEndian_SwapBE16(600)))
|
||||
((Bold, SkTEndian_SwapBE16(700)))
|
||||
((ExtraBold, SkTEndian_SwapBE16(800)))
|
||||
((Black, SkTEndian_SwapBE16(900)))
|
||||
SK_SEQ_END,
|
||||
SK_SEQ_END)
|
||||
SK_OT_USHORT value;
|
||||
} usWeightClass;
|
||||
struct WidthClass {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((UltraCondensed, SkTEndian_SwapBE16(1)))
|
||||
((ExtraCondensed, SkTEndian_SwapBE16(2)))
|
||||
((Condensed, SkTEndian_SwapBE16(3)))
|
||||
((SemiCondensed, SkTEndian_SwapBE16(4)))
|
||||
((Medium, SkTEndian_SwapBE16(5)))
|
||||
((SemiExpanded, SkTEndian_SwapBE16(6)))
|
||||
((Expanded, SkTEndian_SwapBE16(7)))
|
||||
((ExtraExpanded, SkTEndian_SwapBE16(8)))
|
||||
((UltraExpanded, SkTEndian_SwapBE16(9)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} usWidthClass;
|
||||
union Type {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
NoSubsetting,
|
||||
Bitmap,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved00,
|
||||
Restricted,
|
||||
PreviewPrint,
|
||||
Editable,
|
||||
Reserved04,
|
||||
Reserved05,
|
||||
Reserved06,
|
||||
Reserved07)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT Installable = SkTEndian_SwapBE16(0);
|
||||
static const SK_OT_USHORT RestrictedMask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT PreviewPrintMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT EditableMask = SkTEndian_SwapBE16(1 << 3);
|
||||
static const SK_OT_USHORT NoSubsettingMask = SkTEndian_SwapBE16(1 << 8);
|
||||
static const SK_OT_USHORT BitmapMask = SkTEndian_SwapBE16(1 << 9);
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} fsType;
|
||||
SK_OT_SHORT ySubscriptXSize;
|
||||
SK_OT_SHORT ySubscriptYSize;
|
||||
SK_OT_SHORT ySubscriptXOffset;
|
||||
SK_OT_SHORT ySubscriptYOffset;
|
||||
SK_OT_SHORT ySuperscriptXSize;
|
||||
SK_OT_SHORT ySuperscriptYSize;
|
||||
SK_OT_SHORT ySuperscriptXOffset;
|
||||
SK_OT_SHORT ySuperscriptYOffset;
|
||||
SK_OT_SHORT yStrikeoutSize;
|
||||
SK_OT_SHORT yStrikeoutPosition;
|
||||
SkIBMFamilyClass sFamilyClass;
|
||||
SkPanose panose;
|
||||
union UnicodeRange {
|
||||
struct Field {
|
||||
//l0 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Thai,
|
||||
Lao,
|
||||
Georgian,
|
||||
Balinese,
|
||||
HangulJamo,
|
||||
LatinExtendedAdditional,
|
||||
GreekExtended,
|
||||
GeneralPunctuation)
|
||||
//l0 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Bengali,
|
||||
Gurmukhi,
|
||||
Gujarati,
|
||||
Oriya,
|
||||
Tamil,
|
||||
Telugu,
|
||||
Kannada,
|
||||
Malayalam)
|
||||
//l0 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Coptic,
|
||||
Cyrillic,
|
||||
Armenian,
|
||||
Hebrew,
|
||||
Vai,
|
||||
Arabic,
|
||||
NKo,
|
||||
Devanagari)
|
||||
//l0 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
BasicLatin,
|
||||
Latin1Supplement,
|
||||
LatinExtendedA,
|
||||
LatinExtendedB,
|
||||
IPAExtensions,
|
||||
SpacingModifierLetters,
|
||||
CombiningDiacriticalMarks,
|
||||
GreekAndCoptic)
|
||||
|
||||
//l1 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Hangul,
|
||||
NonPlane0,
|
||||
Phoenician,
|
||||
CJKUnifiedIdeographs,
|
||||
PrivateUseArea,
|
||||
CJKCompatibilityIdeographs,
|
||||
AlphabeticPresentationForms,
|
||||
ArabicPresentationFormsA)
|
||||
//l1 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
CJKSymbolsAndPunctuation,
|
||||
Hiragana,
|
||||
Katakana,
|
||||
Bopomofo,
|
||||
HangulCompatibilityJamo,
|
||||
PhagsPa,
|
||||
EnclosedCJKLettersAndMonths,
|
||||
CJKCompatibility)
|
||||
//l1 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
ControlPictures,
|
||||
OpticalCharacterRecognition,
|
||||
EnclosedAlphanumerics,
|
||||
BoxDrawing,
|
||||
BlockElements,
|
||||
GeometricShapes,
|
||||
MiscellaneousSymbols,
|
||||
Dingbats)
|
||||
//l1 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
SuperscriptsAndSubscripts,
|
||||
CurrencySymbols,
|
||||
CombiningDiacriticalMarksForSymbols,
|
||||
LetterlikeSymbols,
|
||||
NumberForms,
|
||||
Arrows,
|
||||
MathematicalOperators,
|
||||
MiscellaneousTechnical)
|
||||
|
||||
//l2 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
MusicalSymbols,
|
||||
MathematicalAlphanumericSymbols,
|
||||
PrivateUse,
|
||||
VariationSelectors,
|
||||
Tags,
|
||||
Limbu,
|
||||
TaiLe,
|
||||
NewTaiLue)
|
||||
//l2 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Khmer,
|
||||
Mongolian,
|
||||
Braille,
|
||||
Yi,
|
||||
Tagalog_Hanunoo_Buhid_Tagbanwa,
|
||||
OldItalic,
|
||||
Gothic,
|
||||
Deseret)
|
||||
//l2 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Thaana,
|
||||
Sinhala,
|
||||
Myanmar,
|
||||
Ethiopic,
|
||||
Cherokee,
|
||||
UnifiedCanadianSyllabics,
|
||||
Ogham,
|
||||
Runic)
|
||||
//l2 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
CombiningHalfMarks,
|
||||
CJKCompatibilityForms,
|
||||
SmallFormVariants,
|
||||
ArabicPresentationFormsB,
|
||||
HalfwidthAndFullwidthForms,
|
||||
Specials,
|
||||
Tibetan,
|
||||
Syriac)
|
||||
|
||||
//l3 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
PhaistosDisc,
|
||||
Carian_Lycian_Lydian,
|
||||
DominoTiles_MahjongTiles,
|
||||
Reserved123,
|
||||
Reserved124,
|
||||
Reserved125,
|
||||
Reserved126,
|
||||
Reserved127)
|
||||
//l3 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Sundanese,
|
||||
Lepcha,
|
||||
OlChiki,
|
||||
Saurashtra,
|
||||
KayahLi,
|
||||
Rejang,
|
||||
Cham,
|
||||
AncientSymbols)
|
||||
//l3 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
OldPersian,
|
||||
Shavian,
|
||||
Osmanya,
|
||||
CypriotSyllabary,
|
||||
Kharoshthi,
|
||||
TaiXuanJingSymbols,
|
||||
Cuneiform,
|
||||
CountingRodNumerals)
|
||||
//l3 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Buginese,
|
||||
Glagolitic,
|
||||
Tifinagh,
|
||||
YijingHexagramSymbols,
|
||||
SylotiNagri,
|
||||
LinearB_AegeanNumbers,
|
||||
AncientGreekNumbers,
|
||||
Ugaritic)
|
||||
} field;
|
||||
struct Raw {
|
||||
struct l0 {
|
||||
static const SK_OT_ULONG BasicLatinMask = SkTEndian_SwapBE32(1 << 0);
|
||||
static const SK_OT_ULONG Latin1SupplementMask = SkTEndian_SwapBE32(1 << 1);
|
||||
static const SK_OT_ULONG LatinExtendedAMask = SkTEndian_SwapBE32(1 << 2);
|
||||
static const SK_OT_ULONG LatinExtendedBMask = SkTEndian_SwapBE32(1 << 3);
|
||||
static const SK_OT_ULONG IPAExtensionsMask = SkTEndian_SwapBE32(1 << 4);
|
||||
static const SK_OT_ULONG SpacingModifierLettersMask = SkTEndian_SwapBE32(1 << 5);
|
||||
static const SK_OT_ULONG CombiningDiacriticalMarksMask = SkTEndian_SwapBE32(1 << 6);
|
||||
static const SK_OT_ULONG GreekAndCopticMask = SkTEndian_SwapBE32(1 << 7);
|
||||
static const SK_OT_ULONG CopticMask = SkTEndian_SwapBE32(1 << 8);
|
||||
static const SK_OT_ULONG CyrillicMask = SkTEndian_SwapBE32(1 << 9);
|
||||
static const SK_OT_ULONG ArmenianMask = SkTEndian_SwapBE32(1 << 10);
|
||||
static const SK_OT_ULONG HebrewMask = SkTEndian_SwapBE32(1 << 11);
|
||||
static const SK_OT_ULONG VaiMask = SkTEndian_SwapBE32(1 << 12);
|
||||
static const SK_OT_ULONG ArabicMask = SkTEndian_SwapBE32(1 << 13);
|
||||
static const SK_OT_ULONG NKoMask = SkTEndian_SwapBE32(1 << 14);
|
||||
static const SK_OT_ULONG DevanagariMask = SkTEndian_SwapBE32(1 << 15);
|
||||
static const SK_OT_ULONG BengaliMask = SkTEndian_SwapBE32(1 << 16);
|
||||
static const SK_OT_ULONG GurmukhiMask = SkTEndian_SwapBE32(1 << 17);
|
||||
static const SK_OT_ULONG GujaratiMask = SkTEndian_SwapBE32(1 << 18);
|
||||
static const SK_OT_ULONG OriyaMask = SkTEndian_SwapBE32(1 << 19);
|
||||
static const SK_OT_ULONG TamilMask = SkTEndian_SwapBE32(1 << 20);
|
||||
static const SK_OT_ULONG TeluguMask = SkTEndian_SwapBE32(1 << 21);
|
||||
static const SK_OT_ULONG KannadaMask = SkTEndian_SwapBE32(1 << 22);
|
||||
static const SK_OT_ULONG MalayalamMask = SkTEndian_SwapBE32(1 << 23);
|
||||
static const SK_OT_ULONG ThaiMask = SkTEndian_SwapBE32(1 << 24);
|
||||
static const SK_OT_ULONG LaoMask = SkTEndian_SwapBE32(1 << 25);
|
||||
static const SK_OT_ULONG GeorgianMask = SkTEndian_SwapBE32(1 << 26);
|
||||
static const SK_OT_ULONG BalineseMask = SkTEndian_SwapBE32(1 << 27);
|
||||
static const SK_OT_ULONG HangulJamoMask = SkTEndian_SwapBE32(1 << 28);
|
||||
static const SK_OT_ULONG LatinExtendedAdditionalMask = SkTEndian_SwapBE32(1 << 29);
|
||||
static const SK_OT_ULONG GreekExtendedMask = SkTEndian_SwapBE32(1 << 30);
|
||||
static const SK_OT_ULONG GeneralPunctuationMask = SkTEndian_SwapBE32(1 << 31);
|
||||
};
|
||||
struct l1 {
|
||||
static const SK_OT_ULONG SuperscriptsAndSubscriptsMask = SkTEndian_SwapBE32(1 << (32 - 32));
|
||||
static const SK_OT_ULONG CurrencySymbolsMask = SkTEndian_SwapBE32(1 << (33 - 32));
|
||||
static const SK_OT_ULONG CombiningDiacriticalMarksForSymbolsMask = SkTEndian_SwapBE32(1 << (34 - 32));
|
||||
static const SK_OT_ULONG LetterlikeSymbolsMask = SkTEndian_SwapBE32(1 << (35 - 32));
|
||||
static const SK_OT_ULONG NumberFormsMask = SkTEndian_SwapBE32(1 << (36 - 32));
|
||||
static const SK_OT_ULONG ArrowsMask = SkTEndian_SwapBE32(1 << (37 - 32));
|
||||
static const SK_OT_ULONG MathematicalOperatorsMask = SkTEndian_SwapBE32(1 << (38 - 32));
|
||||
static const SK_OT_ULONG MiscellaneousTechnicalMask = SkTEndian_SwapBE32(1 << (39 - 32));
|
||||
static const SK_OT_ULONG ControlPicturesMask = SkTEndian_SwapBE32(1 << (40 - 32));
|
||||
static const SK_OT_ULONG OpticalCharacterRecognitionMask = SkTEndian_SwapBE32(1 << (41 - 32));
|
||||
static const SK_OT_ULONG EnclosedAlphanumericsMask = SkTEndian_SwapBE32(1 << (42 - 32));
|
||||
static const SK_OT_ULONG BoxDrawingMask = SkTEndian_SwapBE32(1 << (43 - 32));
|
||||
static const SK_OT_ULONG BlockElementsMask = SkTEndian_SwapBE32(1 << (44 - 32));
|
||||
static const SK_OT_ULONG GeometricShapesMask = SkTEndian_SwapBE32(1 << (45 - 32));
|
||||
static const SK_OT_ULONG MiscellaneousSymbolsMask = SkTEndian_SwapBE32(1 << (46 - 32));
|
||||
static const SK_OT_ULONG DingbatsMask = SkTEndian_SwapBE32(1 << (47 - 32));
|
||||
static const SK_OT_ULONG CJKSymbolsAndPunctuationMask = SkTEndian_SwapBE32(1 << (48 - 32));
|
||||
static const SK_OT_ULONG HiraganaMask = SkTEndian_SwapBE32(1 << (49 - 32));
|
||||
static const SK_OT_ULONG KatakanaMask = SkTEndian_SwapBE32(1 << (50 - 32));
|
||||
static const SK_OT_ULONG BopomofoMask = SkTEndian_SwapBE32(1 << (51 - 32));
|
||||
static const SK_OT_ULONG HangulCompatibilityJamoMask = SkTEndian_SwapBE32(1 << (52 - 32));
|
||||
static const SK_OT_ULONG PhagsPaMask = SkTEndian_SwapBE32(1 << (53 - 32));
|
||||
static const SK_OT_ULONG EnclosedCJKLettersAndMonthsMask = SkTEndian_SwapBE32(1 << (54 - 32));
|
||||
static const SK_OT_ULONG CJKCompatibilityMask = SkTEndian_SwapBE32(1 << (55 - 32));
|
||||
static const SK_OT_ULONG HangulMask = SkTEndian_SwapBE32(1 << (56 - 32));
|
||||
static const SK_OT_ULONG NonPlane0Mask = SkTEndian_SwapBE32(1 << (57 - 32));
|
||||
static const SK_OT_ULONG PhoenicianMask = SkTEndian_SwapBE32(1 << (58 - 32));
|
||||
static const SK_OT_ULONG CJKUnifiedIdeographsMask = SkTEndian_SwapBE32(1 << (59 - 32));
|
||||
static const SK_OT_ULONG PrivateUseAreaMask = SkTEndian_SwapBE32(1 << (60 - 32));
|
||||
static const SK_OT_ULONG CJKCompatibilityIdeographsMask = SkTEndian_SwapBE32(1 << (61 - 32));
|
||||
static const SK_OT_ULONG AlphabeticPresentationFormsMask = SkTEndian_SwapBE32(1 << (62 - 32));
|
||||
static const SK_OT_ULONG ArabicPresentationFormsAMask = SkTEndian_SwapBE32(1 << (63 - 32));
|
||||
};
|
||||
struct l2 {
|
||||
static const SK_OT_ULONG CombiningHalfMarksMask = SkTEndian_SwapBE32(1 << (64 - 64));
|
||||
static const SK_OT_ULONG CJKCompatibilityFormsMask = SkTEndian_SwapBE32(1 << (65 - 64));
|
||||
static const SK_OT_ULONG SmallFormVariantsMask = SkTEndian_SwapBE32(1 << (66 - 64));
|
||||
static const SK_OT_ULONG ArabicPresentationFormsBMask = SkTEndian_SwapBE32(1 << (67 - 64));
|
||||
static const SK_OT_ULONG HalfwidthAndFullwidthFormsMask = SkTEndian_SwapBE32(1 << (68 - 64));
|
||||
static const SK_OT_ULONG SpecialsMask = SkTEndian_SwapBE32(1 << (69 - 64));
|
||||
static const SK_OT_ULONG TibetanMask = SkTEndian_SwapBE32(1 << (70 - 64));
|
||||
static const SK_OT_ULONG SyriacMask = SkTEndian_SwapBE32(1 << (71 - 64));
|
||||
static const SK_OT_ULONG ThaanaMask = SkTEndian_SwapBE32(1 << (72 - 64));
|
||||
static const SK_OT_ULONG SinhalaMask = SkTEndian_SwapBE32(1 << (73 - 64));
|
||||
static const SK_OT_ULONG MyanmarMask = SkTEndian_SwapBE32(1 << (74 - 64));
|
||||
static const SK_OT_ULONG EthiopicMask = SkTEndian_SwapBE32(1 << (75 - 64));
|
||||
static const SK_OT_ULONG CherokeeMask = SkTEndian_SwapBE32(1 << (76 - 64));
|
||||
static const SK_OT_ULONG UnifiedCanadianSyllabicsMask = SkTEndian_SwapBE32(1 << (77 - 64));
|
||||
static const SK_OT_ULONG OghamMask = SkTEndian_SwapBE32(1 << (78 - 64));
|
||||
static const SK_OT_ULONG RunicMask = SkTEndian_SwapBE32(1 << (79 - 64));
|
||||
static const SK_OT_ULONG KhmerMask = SkTEndian_SwapBE32(1 << (80 - 64));
|
||||
static const SK_OT_ULONG MongolianMask = SkTEndian_SwapBE32(1 << (81 - 64));
|
||||
static const SK_OT_ULONG BrailleMask = SkTEndian_SwapBE32(1 << (82 - 64));
|
||||
static const SK_OT_ULONG YiMask = SkTEndian_SwapBE32(1 << (83 - 64));
|
||||
static const SK_OT_ULONG Tagalog_Hanunoo_Buhid_TagbanwaMask = SkTEndian_SwapBE32(1 << (84 - 64));
|
||||
static const SK_OT_ULONG OldItalicMask = SkTEndian_SwapBE32(1 << (85 - 64));
|
||||
static const SK_OT_ULONG GothicMask = SkTEndian_SwapBE32(1 << (86 - 64));
|
||||
static const SK_OT_ULONG DeseretMask = SkTEndian_SwapBE32(1 << (87 - 64));
|
||||
static const SK_OT_ULONG MusicalSymbolsMask = SkTEndian_SwapBE32(1 << (88 - 64));
|
||||
static const SK_OT_ULONG MathematicalAlphanumericSymbolsMask = SkTEndian_SwapBE32(1 << (89 - 64));
|
||||
static const SK_OT_ULONG PrivateUseMask = SkTEndian_SwapBE32(1 << (90 - 64));
|
||||
static const SK_OT_ULONG VariationSelectorsMask = SkTEndian_SwapBE32(1 << (91 - 64));
|
||||
static const SK_OT_ULONG TagsMask = SkTEndian_SwapBE32(1 << (92 - 64));
|
||||
static const SK_OT_ULONG LimbuMask = SkTEndian_SwapBE32(1 << (93 - 64));
|
||||
static const SK_OT_ULONG TaiLeMask = SkTEndian_SwapBE32(1 << (94 - 64));
|
||||
static const SK_OT_ULONG NewTaiLueMask = SkTEndian_SwapBE32(1 << (95 - 64));
|
||||
};
|
||||
struct l3 {
|
||||
static const SK_OT_ULONG BugineseMask = SkTEndian_SwapBE32(1 << (96 - 96));
|
||||
static const SK_OT_ULONG GlagoliticMask = SkTEndian_SwapBE32(1 << (97 - 96));
|
||||
static const SK_OT_ULONG TifinaghMask = SkTEndian_SwapBE32(1 << (98 - 96));
|
||||
static const SK_OT_ULONG YijingHexagramSymbolsMask = SkTEndian_SwapBE32(1 << (99 - 96));
|
||||
static const SK_OT_ULONG SylotiNagriMask = SkTEndian_SwapBE32(1 << (100 - 96));
|
||||
static const SK_OT_ULONG LinearB_AegeanNumbersMask = SkTEndian_SwapBE32(1 << (101 - 96));
|
||||
static const SK_OT_ULONG AncientGreekNumbersMask = SkTEndian_SwapBE32(1 << (102 - 96));
|
||||
static const SK_OT_ULONG UgariticMask = SkTEndian_SwapBE32(1 << (103 - 96));
|
||||
static const SK_OT_ULONG OldPersianMask = SkTEndian_SwapBE32(1 << (104 - 96));
|
||||
static const SK_OT_ULONG ShavianMask = SkTEndian_SwapBE32(1 << (105 - 96));
|
||||
static const SK_OT_ULONG OsmanyaMask = SkTEndian_SwapBE32(1 << (106 - 96));
|
||||
static const SK_OT_ULONG CypriotSyllabaryMask = SkTEndian_SwapBE32(1 << (107 - 96));
|
||||
static const SK_OT_ULONG KharoshthiMask = SkTEndian_SwapBE32(1 << (108 - 96));
|
||||
static const SK_OT_ULONG TaiXuanJingSymbolsMask = SkTEndian_SwapBE32(1 << (109 - 96));
|
||||
static const SK_OT_ULONG CuneiformMask = SkTEndian_SwapBE32(1 << (110 - 96));
|
||||
static const SK_OT_ULONG CountingRodNumeralsMask = SkTEndian_SwapBE32(1 << (111 - 96));
|
||||
static const SK_OT_ULONG SundaneseMask = SkTEndian_SwapBE32(1 << (112 - 96));
|
||||
static const SK_OT_ULONG LepchaMask = SkTEndian_SwapBE32(1 << (113 - 96));
|
||||
static const SK_OT_ULONG OlChikiMask = SkTEndian_SwapBE32(1 << (114 - 96));
|
||||
static const SK_OT_ULONG SaurashtraMask = SkTEndian_SwapBE32(1 << (115 - 96));
|
||||
static const SK_OT_ULONG KayahLiMask = SkTEndian_SwapBE32(1 << (116 - 96));
|
||||
static const SK_OT_ULONG RejangMask = SkTEndian_SwapBE32(1 << (117 - 96));
|
||||
static const SK_OT_ULONG ChamMask = SkTEndian_SwapBE32(1 << (118 - 96));
|
||||
static const SK_OT_ULONG AncientSymbolsMask = SkTEndian_SwapBE32(1 << (119 - 96));
|
||||
static const SK_OT_ULONG PhaistosDiscMask = SkTEndian_SwapBE32(1 << (120 - 96));
|
||||
static const SK_OT_ULONG Carian_Lycian_LydianMask = SkTEndian_SwapBE32(1 << (121 - 96));
|
||||
static const SK_OT_ULONG DominoTiles_MahjongTilesMask = SkTEndian_SwapBE32(1 << (122 - 96));
|
||||
};
|
||||
SK_OT_ULONG value[4];
|
||||
} raw;
|
||||
} ulUnicodeRange;
|
||||
SK_OT_CHAR achVendID[4];
|
||||
union Selection {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
WWS,
|
||||
Oblique,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Italic,
|
||||
Underscore,
|
||||
Negative,
|
||||
Outlined,
|
||||
Strikeout,
|
||||
Bold,
|
||||
Regular,
|
||||
UseTypoMetrics)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT ItalicMask = SkTEndian_SwapBE16(1 << 0);
|
||||
static const SK_OT_USHORT UnderscoreMask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT NegativeMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT OutlinedMask = SkTEndian_SwapBE16(1 << 3);
|
||||
static const SK_OT_USHORT StrikeoutMask = SkTEndian_SwapBE16(1 << 4);
|
||||
static const SK_OT_USHORT BoldMask = SkTEndian_SwapBE16(1 << 5);
|
||||
static const SK_OT_USHORT RegularMask = SkTEndian_SwapBE16(1 << 6);
|
||||
static const SK_OT_USHORT UseTypoMetricsMask = SkTEndian_SwapBE16(1 << 7);
|
||||
static const SK_OT_USHORT WWSMask = SkTEndian_SwapBE16(1 << 8);
|
||||
static const SK_OT_USHORT ObliqueMask = SkTEndian_SwapBE16(1 << 9);
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} fsSelection;
|
||||
SK_OT_USHORT usFirstCharIndex;
|
||||
SK_OT_USHORT usLastCharIndex;
|
||||
//version0
|
||||
SK_OT_SHORT sTypoAscender;
|
||||
SK_OT_SHORT sTypoDescender;
|
||||
SK_OT_SHORT sTypoLineGap;
|
||||
SK_OT_USHORT usWinAscent;
|
||||
SK_OT_USHORT usWinDescent;
|
||||
//version1
|
||||
union CodePageRange {
|
||||
struct Field {
|
||||
//l0 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved24,
|
||||
Reserved25,
|
||||
Reserved26,
|
||||
Reserved27,
|
||||
Reserved28,
|
||||
MacintoshCharacterSet,
|
||||
OEMCharacterSet,
|
||||
SymbolCharacterSet)
|
||||
//l0 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Thai_874,
|
||||
JISJapan_932,
|
||||
ChineseSimplified_936,
|
||||
KoreanWansung_949,
|
||||
ChineseTraditional_950,
|
||||
KoreanJohab_1361,
|
||||
Reserved22,
|
||||
Reserved23)
|
||||
//l0 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Vietnamese,
|
||||
Reserved09,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//l0 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Latin1_1252,
|
||||
Latin2EasternEurope_1250,
|
||||
Cyrillic_1251,
|
||||
Greek_1253,
|
||||
Turkish_1254,
|
||||
Hebrew_1255,
|
||||
Arabic_1256,
|
||||
WindowsBaltic_1257)
|
||||
|
||||
//l1 24-31
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
IBMTurkish_857,
|
||||
IBMCyrillic_855,
|
||||
Latin2_852,
|
||||
MSDOSBaltic_775,
|
||||
Greek_737,
|
||||
Arabic_708,
|
||||
WELatin1_850,
|
||||
US_437)
|
||||
//l1 16-23
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
IBMGreek_869,
|
||||
MSDOSRussian_866,
|
||||
MSDOSNordic_865,
|
||||
Arabic_864,
|
||||
MSDOSCanadianFrench_863,
|
||||
Hebrew_862,
|
||||
MSDOSIcelandic_861,
|
||||
MSDOSPortuguese_860)
|
||||
//l1 8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved40,
|
||||
Reserved41,
|
||||
Reserved42,
|
||||
Reserved43,
|
||||
Reserved44,
|
||||
Reserved45,
|
||||
Reserved46,
|
||||
Reserved47)
|
||||
//l1 0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved32,
|
||||
Reserved33,
|
||||
Reserved34,
|
||||
Reserved35,
|
||||
Reserved36,
|
||||
Reserved37,
|
||||
Reserved38,
|
||||
Reserved39)
|
||||
} field;
|
||||
struct Raw {
|
||||
struct l0 {
|
||||
static const SK_OT_ULONG Latin1_1252Mask = SkTEndian_SwapBE32(1 << 0);
|
||||
static const SK_OT_ULONG Latin2EasternEurope_1250Mask = SkTEndian_SwapBE32(1 << 1);
|
||||
static const SK_OT_ULONG Cyrillic_1251Mask = SkTEndian_SwapBE32(1 << 2);
|
||||
static const SK_OT_ULONG Greek_1253Mask = SkTEndian_SwapBE32(1 << 3);
|
||||
static const SK_OT_ULONG Turkish_1254Mask = SkTEndian_SwapBE32(1 << 4);
|
||||
static const SK_OT_ULONG Hebrew_1255Mask = SkTEndian_SwapBE32(1 << 5);
|
||||
static const SK_OT_ULONG Arabic_1256Mask = SkTEndian_SwapBE32(1 << 6);
|
||||
static const SK_OT_ULONG WindowsBaltic_1257Mask = SkTEndian_SwapBE32(1 << 7);
|
||||
static const SK_OT_ULONG Vietnamese_1258Mask = SkTEndian_SwapBE32(1 << 8);
|
||||
static const SK_OT_ULONG Thai_874Mask = SkTEndian_SwapBE32(1 << 16);
|
||||
static const SK_OT_ULONG JISJapan_932Mask = SkTEndian_SwapBE32(1 << 17);
|
||||
static const SK_OT_ULONG ChineseSimplified_936Mask = SkTEndian_SwapBE32(1 << 18);
|
||||
static const SK_OT_ULONG KoreanWansung_949Mask = SkTEndian_SwapBE32(1 << 19);
|
||||
static const SK_OT_ULONG ChineseTraditional_950Mask = SkTEndian_SwapBE32(1 << 20);
|
||||
static const SK_OT_ULONG KoreanJohab_1361Mask = SkTEndian_SwapBE32(1 << 21);
|
||||
static const SK_OT_ULONG MacintoshCharacterSetMask = SkTEndian_SwapBE32(1 << 29);
|
||||
static const SK_OT_ULONG OEMCharacterSetMask = SkTEndian_SwapBE32(1 << 30);
|
||||
static const SK_OT_ULONG SymbolCharacterSetMask = SkTEndian_SwapBE32(1 << 31);
|
||||
};
|
||||
struct l1 {
|
||||
static const SK_OT_ULONG IBMGreek_869Mask = SkTEndian_SwapBE32(1 << (48 - 32));
|
||||
static const SK_OT_ULONG MSDOSRussian_866Mask = SkTEndian_SwapBE32(1 << (49 - 32));
|
||||
static const SK_OT_ULONG MSDOSNordic_865Mask = SkTEndian_SwapBE32(1 << (50 - 32));
|
||||
static const SK_OT_ULONG Arabic_864Mask = SkTEndian_SwapBE32(1 << (51 - 32));
|
||||
static const SK_OT_ULONG MSDOSCanadianFrench_863Mask = SkTEndian_SwapBE32(1 << (52 - 32));
|
||||
static const SK_OT_ULONG Hebrew_862Mask = SkTEndian_SwapBE32(1 << (53 - 32));
|
||||
static const SK_OT_ULONG MSDOSIcelandic_861Mask = SkTEndian_SwapBE32(1 << (54 - 32));
|
||||
static const SK_OT_ULONG MSDOSPortuguese_860Mask = SkTEndian_SwapBE32(1 << (55 - 32));
|
||||
static const SK_OT_ULONG IBMTurkish_857Mask = SkTEndian_SwapBE32(1 << (56 - 32));
|
||||
static const SK_OT_ULONG IBMCyrillic_855Mask = SkTEndian_SwapBE32(1 << (57 - 32));
|
||||
static const SK_OT_ULONG Latin2_852Mask = SkTEndian_SwapBE32(1 << (58 - 32));
|
||||
static const SK_OT_ULONG MSDOSBaltic_775Mask = SkTEndian_SwapBE32(1 << (59 - 32));
|
||||
static const SK_OT_ULONG Greek_737Mask = SkTEndian_SwapBE32(1 << (60 - 32));
|
||||
static const SK_OT_ULONG Arabic_708Mask = SkTEndian_SwapBE32(1 << (61 - 32));
|
||||
static const SK_OT_ULONG WELatin1_850Mask = SkTEndian_SwapBE32(1 << (62 - 32));
|
||||
static const SK_OT_ULONG US_437Mask = SkTEndian_SwapBE32(1 << (63 - 32));
|
||||
};
|
||||
SK_OT_ULONG value[2];
|
||||
} raw;
|
||||
} ulCodePageRange;
|
||||
//version2
|
||||
SK_OT_SHORT sxHeight;
|
||||
SK_OT_SHORT sCapHeight;
|
||||
SK_OT_USHORT usDefaultChar;
|
||||
SK_OT_USHORT usBreakChar;
|
||||
SK_OT_USHORT usMaxContext;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableOS2_V4) == 96, sizeof_SkOTTableOS2_V4_not_96);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,140 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkOTTable_OS_2_VA_DEFINED
|
||||
#define SkOTTable_OS_2_VA_DEFINED
|
||||
|
||||
#include "SkEndian.h"
|
||||
#include "SkIBMFamilyClass.h"
|
||||
#include "SkOTTableTypes.h"
|
||||
#include "SkPanose.h"
|
||||
#include "SkTypedEnum.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
//Original V0 TT
|
||||
struct SkOTTableOS2_VA {
|
||||
SK_OT_USHORT version;
|
||||
//The only way to differentiate versionA and version0 is by size.
|
||||
static const SK_OT_USHORT version0 = SkTEndian_SwapBE16(0);
|
||||
SK_OT_SHORT xAvgCharWidth;
|
||||
struct WeightClass {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((UltraLight, SkTEndian_SwapBE16(1)))
|
||||
((ExtraLight, SkTEndian_SwapBE16(2)))
|
||||
((Light, SkTEndian_SwapBE16(3)))
|
||||
((SemiLight, SkTEndian_SwapBE16(4)))
|
||||
((Medium, SkTEndian_SwapBE16(5)))
|
||||
((SemiBold, SkTEndian_SwapBE16(6)))
|
||||
((Bold, SkTEndian_SwapBE16(7)))
|
||||
((ExtraBold, SkTEndian_SwapBE16(8)))
|
||||
((UltraBold, SkTEndian_SwapBE16(9)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} usWeightClass;
|
||||
struct WidthClass {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((UltraCondensed, SkTEndian_SwapBE16(1)))
|
||||
((ExtraCondensed, SkTEndian_SwapBE16(2)))
|
||||
((Condensed, SkTEndian_SwapBE16(3)))
|
||||
((SemiCondensed, SkTEndian_SwapBE16(4)))
|
||||
((Medium, SkTEndian_SwapBE16(5)))
|
||||
((SemiExpanded, SkTEndian_SwapBE16(6)))
|
||||
((Expanded, SkTEndian_SwapBE16(7)))
|
||||
((ExtraExpanded, SkTEndian_SwapBE16(8)))
|
||||
((UltraExpanded, SkTEndian_SwapBE16(9)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} usWidthClass;
|
||||
union Type {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved08,
|
||||
Reserved09,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved00,
|
||||
Restricted,
|
||||
PreviewPrint,
|
||||
Editable,
|
||||
Reserved04,
|
||||
Reserved05,
|
||||
Reserved06,
|
||||
Reserved07)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT Installable = SkTEndian_SwapBE16(0);
|
||||
static const SK_OT_USHORT RestrictedMask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT PreviewPrintMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT EditableMask = SkTEndian_SwapBE16(1 << 3);
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} fsType;
|
||||
SK_OT_SHORT ySubscriptXSize;
|
||||
SK_OT_SHORT ySubscriptYSize;
|
||||
SK_OT_SHORT ySubscriptXOffset;
|
||||
SK_OT_SHORT ySubscriptYOffset;
|
||||
SK_OT_SHORT ySuperscriptXSize;
|
||||
SK_OT_SHORT ySuperscriptYSize;
|
||||
SK_OT_SHORT ySuperscriptXOffset;
|
||||
SK_OT_SHORT ySuperscriptYOffset;
|
||||
SK_OT_SHORT yStrikeoutSize;
|
||||
SK_OT_SHORT yStrikeoutPosition;
|
||||
SkIBMFamilyClass sFamilyClass;
|
||||
SkPanose panose;
|
||||
SK_OT_ULONG ulCharRange[4];
|
||||
SK_OT_CHAR achVendID[4];
|
||||
union Selection {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved08,
|
||||
Reserved09,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Italic,
|
||||
Underscore,
|
||||
Negative,
|
||||
Outlined,
|
||||
Strikeout,
|
||||
Bold,
|
||||
Reserved06,
|
||||
Reserved07)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT ItalicMask = SkTEndian_SwapBE16(1 << 0);
|
||||
static const SK_OT_USHORT UnderscoreMask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT NegativeMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT OutlinedMask = SkTEndian_SwapBE16(1 << 3);
|
||||
static const SK_OT_USHORT StrikeoutMask = SkTEndian_SwapBE16(1 << 4);
|
||||
static const SK_OT_USHORT BoldMask = SkTEndian_SwapBE16(1 << 5);
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} fsSelection;
|
||||
SK_OT_USHORT usFirstCharIndex;
|
||||
SK_OT_USHORT usLastCharIndex;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableOS2_VA) == 68, sizeof_SkOTTableOS2_VA_not_68);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,144 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkOTTable_head_DEFINED
|
||||
#define SkOTTable_head_DEFINED
|
||||
|
||||
#include "SkEndian.h"
|
||||
#include "SkOTTableTypes.h"
|
||||
#include "SkTypedEnum.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct SkOTTableHead {
|
||||
SK_OT_Fixed version;
|
||||
static const SK_OT_Fixed version1 = SkTEndian_SwapBE32(0x00010000);
|
||||
SK_OT_Fixed fontRevision;
|
||||
static const uint32_t fontChecksum = 0xB1B0AFBA; //checksum of all TT fonts
|
||||
SK_OT_ULONG checksumAdjustment;
|
||||
SK_OT_ULONG magicNumber;
|
||||
static const SK_OT_ULONG magicNumberConst = SkTEndian_SwapBE32(0x5F0F3CF5);
|
||||
union Flags {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
GXMetamorphosis_Apple,
|
||||
HasStrongRTL_Apple,
|
||||
HasIndicStyleRearrangement,
|
||||
AgfaMicroTypeExpressProcessed,
|
||||
FontConverted,
|
||||
DesignedForClearType,
|
||||
LastResort,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
BaselineAtY0,
|
||||
LeftSidebearingAtX0,
|
||||
InstructionsDependOnPointSize,
|
||||
IntegerScaling,
|
||||
InstructionsAlterAdvanceWidth,
|
||||
VerticalCenteredGlyphs_Apple,
|
||||
Reserved06,
|
||||
RequiresLayout_Apple)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT BaselineAtY0Mask = SkTEndian_SwapBE16(1 << 0);
|
||||
static const SK_OT_USHORT LeftSidebearingAtX0Mask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT InstructionsDependOnPointSizeMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT IntegerScalingMask = SkTEndian_SwapBE16(1 << 3);
|
||||
static const SK_OT_USHORT InstructionsAlterAdvanceWidthMask = SkTEndian_SwapBE16(1 << 4);
|
||||
static const SK_OT_USHORT VerticalCenteredGlyphs_AppleMask = SkTEndian_SwapBE16(1 << 5);
|
||||
//Reserved
|
||||
static const SK_OT_USHORT RequiresLayout_AppleMask = SkTEndian_SwapBE16(1 << 7);
|
||||
|
||||
static const SK_OT_USHORT GXMetamorphosis_AppleMask = SkTEndian_SwapBE16(1 << 8);
|
||||
static const SK_OT_USHORT HasStrongRTL_AppleMask = SkTEndian_SwapBE16(1 << 9);
|
||||
static const SK_OT_USHORT HasIndicStyleRearrangementMask = SkTEndian_SwapBE16(1 << 10);
|
||||
static const SK_OT_USHORT AgfaMicroTypeExpressProcessedMask = SkTEndian_SwapBE16(1 << 11);
|
||||
static const SK_OT_USHORT FontConvertedMask = SkTEndian_SwapBE16(1 << 12);
|
||||
static const SK_OT_USHORT DesignedForClearTypeMask = SkTEndian_SwapBE16(1 << 13);
|
||||
static const SK_OT_USHORT LastResortMask = SkTEndian_SwapBE16(1 << 14);
|
||||
//Reserved
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} flags;
|
||||
SK_OT_USHORT unitsPerEm;
|
||||
SK_OT_LONGDATETIME created;
|
||||
SK_OT_LONGDATETIME modified;
|
||||
SK_OT_SHORT xMin;
|
||||
SK_OT_SHORT yMin;
|
||||
SK_OT_SHORT xMax;
|
||||
SK_OT_SHORT yMax;
|
||||
union MacStyle {
|
||||
struct Field {
|
||||
//8-15
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Reserved08,
|
||||
Reserved09,
|
||||
Reserved10,
|
||||
Reserved11,
|
||||
Reserved12,
|
||||
Reserved13,
|
||||
Reserved14,
|
||||
Reserved15)
|
||||
//0-7
|
||||
SK_OT_BYTE_BITFIELD(
|
||||
Bold,
|
||||
Italic,
|
||||
Underline,
|
||||
Outline,
|
||||
Shadow,
|
||||
Condensed,
|
||||
Extended,
|
||||
Reserved07)
|
||||
} field;
|
||||
struct Raw {
|
||||
static const SK_OT_USHORT BoldMask = SkTEndian_SwapBE16(1);
|
||||
static const SK_OT_USHORT ItalicMask = SkTEndian_SwapBE16(1 << 1);
|
||||
static const SK_OT_USHORT UnderlineMask = SkTEndian_SwapBE16(1 << 2);
|
||||
static const SK_OT_USHORT OutlineMask = SkTEndian_SwapBE16(1 << 3);
|
||||
static const SK_OT_USHORT ShadowMask = SkTEndian_SwapBE16(1 << 4);
|
||||
static const SK_OT_USHORT CondensedMask = SkTEndian_SwapBE16(1 << 5);
|
||||
static const SK_OT_USHORT ExtendedMask = SkTEndian_SwapBE16(1 << 6);
|
||||
|
||||
SK_OT_USHORT value;
|
||||
} raw;
|
||||
} macStyle;
|
||||
SK_OT_USHORT lowestRecPPEM;
|
||||
struct FontDirectionHint {
|
||||
SK_TYPED_ENUM(Value, SK_OT_SHORT,
|
||||
((FullyMixedDirectionalGlyphs, SkTEndian_SwapBE16(0)))
|
||||
((OnlyStronglyLTR, SkTEndian_SwapBE16(1)))
|
||||
((StronglyLTR, SkTEndian_SwapBE16(2)))
|
||||
((OnlyStronglyRTL, static_cast<SK_OT_SHORT>(SkTEndian_SwapBE16(-1))))
|
||||
((StronglyRTL, static_cast<SK_OT_SHORT>(SkTEndian_SwapBE16(-2))))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} fontDirectionHint;
|
||||
struct IndexToLocFormat {
|
||||
SK_TYPED_ENUM(Value, SK_OT_SHORT,
|
||||
((ShortOffsets, SkTEndian_SwapBE16(0)))
|
||||
((LongOffsets, SkTEndian_SwapBE16(1)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} indexToLocFormat;
|
||||
struct GlyphDataFormat {
|
||||
SK_TYPED_ENUM(Value, SK_OT_SHORT,
|
||||
((CurrentFormat, SkTEndian_SwapBE16(0)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} glyphDataFormat;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
#include <stddef.h>
|
||||
SK_COMPILE_ASSERT(offsetof(SkOTTableHead, glyphDataFormat) == 52, SkOTTableHead_glyphDataFormat_not_at_52);
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableHead) == 54, sizeof_SkOTTableHead_not_54);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkOTTable_hhea_DEFINED
|
||||
#define SkOTTable_hhea_DEFINED
|
||||
|
||||
#include "SkEndian.h"
|
||||
#include "SkOTTableTypes.h"
|
||||
#include "SkTypedEnum.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct SkOTTableHorizontalHeader {
|
||||
SK_OT_Fixed version;
|
||||
static const SK_OT_Fixed version1 = SkTEndian_SwapBE32(0x00010000);
|
||||
SK_OT_FWORD Ascender;
|
||||
SK_OT_FWORD Descender;
|
||||
SK_OT_FWORD LineGap;
|
||||
SK_OT_UFWORD advanceWidthMax;
|
||||
SK_OT_FWORD minLeftSideBearing;
|
||||
SK_OT_FWORD minRightSideBearing;
|
||||
SK_OT_FWORD xMaxExtent;
|
||||
SK_OT_SHORT caretSlopeRise;
|
||||
SK_OT_SHORT caretSlopeRun;
|
||||
SK_OT_SHORT caretOffset;
|
||||
SK_OT_SHORT Reserved24;
|
||||
SK_OT_SHORT Reserved26;
|
||||
SK_OT_SHORT Reserved28;
|
||||
SK_OT_SHORT Reserved30;
|
||||
struct MetricDataFormat {
|
||||
SK_TYPED_ENUM(Value, SK_OT_SHORT,
|
||||
((CurrentFormat, SkTEndian_SwapBE16(0)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} metricDataFormat;
|
||||
SK_OT_USHORT numberOfHMetrics;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
#include <stddef.h>
|
||||
SK_COMPILE_ASSERT(offsetof(SkOTTableHorizontalHeader, numberOfHMetrics) == 34, SkOTTableHorizontalHeader_numberOfHMetrics_not_at_34);
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableHorizontalHeader) == 36, sizeof_SkOTTableHorizontalHeader_not_36);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,504 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkOTTable_name_DEFINED
|
||||
#define SkOTTable_name_DEFINED
|
||||
|
||||
#include "SkEndian.h"
|
||||
#include "SkOTTableTypes.h"
|
||||
#include "SkTypedEnum.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct SkOTTableName {
|
||||
SK_OT_USHORT format;
|
||||
static const SK_OT_USHORT format_0 = SkTEndian_SwapBE16(0);
|
||||
static const SK_OT_USHORT format_1 = SkTEndian_SwapBE16(1);
|
||||
SK_OT_USHORT count;
|
||||
SK_OT_USHORT stringOffset; //Offset to start of storage area (from start of table).
|
||||
//SkOTTableNameRecord nameRecord[count];
|
||||
};
|
||||
struct SkOTTableNameF1 {
|
||||
SK_OT_USHORT langTagCount;
|
||||
//SkOTTableNameLangTagRecord langTagRecord[langTagCount];
|
||||
};
|
||||
|
||||
struct SkOTTableNameLangTagRecord {
|
||||
SK_OT_USHORT length;
|
||||
SK_OT_USHORT offset; //From start of storage area.
|
||||
//The string is always UTF-16BE from IETF specification BCP 47.
|
||||
};
|
||||
|
||||
struct SkOTTableNameRecord {
|
||||
//The platform ID specifies how to interpret the encoding and language ID.
|
||||
struct PlatformID {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((Unicode, SkTEndian_SwapBE16(0)))
|
||||
((Macintosh, SkTEndian_SwapBE16(1)))
|
||||
((ISO, SkTEndian_SwapBE16(2))) //deprecated, use Unicode instead
|
||||
((Windows, SkTEndian_SwapBE16(3)))
|
||||
((Custom, SkTEndian_SwapBE16(4)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} platformID;
|
||||
union EncodingID {
|
||||
//Always UTF-16BE
|
||||
struct Unicode {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((Unicode10, SkTEndian_SwapBE16(0)))
|
||||
((Unicode11, SkTEndian_SwapBE16(1)))
|
||||
((ISO10646, SkTEndian_SwapBE16(2))) //deprecated, use Unicode11
|
||||
((Unicode20BMP, SkTEndian_SwapBE16(3)))
|
||||
((Unicode20, SkTEndian_SwapBE16(4)))
|
||||
((UnicodeVariationSequences, SkTEndian_SwapBE16(5)))
|
||||
((UnicodeFull, SkTEndian_SwapBE16(6)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} unicode;
|
||||
struct Macintosh {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((Roman, SkTEndian_SwapBE16(0)))
|
||||
((Japanese, SkTEndian_SwapBE16(1)))
|
||||
((ChineseTraditional, SkTEndian_SwapBE16(2)))
|
||||
((Korean, SkTEndian_SwapBE16(3)))
|
||||
((Arabic, SkTEndian_SwapBE16(4)))
|
||||
((Hebrew, SkTEndian_SwapBE16(5)))
|
||||
((Greek, SkTEndian_SwapBE16(6)))
|
||||
((Russian, SkTEndian_SwapBE16(7)))
|
||||
((RSymbol, SkTEndian_SwapBE16(8)))
|
||||
((Devanagari, SkTEndian_SwapBE16(9)))
|
||||
((Gurmukhi, SkTEndian_SwapBE16(10)))
|
||||
((Gujarati, SkTEndian_SwapBE16(11)))
|
||||
((Oriya, SkTEndian_SwapBE16(12)))
|
||||
((Bengali, SkTEndian_SwapBE16(13)))
|
||||
((Tamil, SkTEndian_SwapBE16(14)))
|
||||
((Telugu, SkTEndian_SwapBE16(15)))
|
||||
((Kannada, SkTEndian_SwapBE16(16)))
|
||||
((Malayalam, SkTEndian_SwapBE16(17)))
|
||||
((Sinhalese, SkTEndian_SwapBE16(18)))
|
||||
((Burmese, SkTEndian_SwapBE16(19)))
|
||||
((Khmer, SkTEndian_SwapBE16(20)))
|
||||
((Thai, SkTEndian_SwapBE16(21)))
|
||||
((Laotian, SkTEndian_SwapBE16(22)))
|
||||
((Georgian, SkTEndian_SwapBE16(23)))
|
||||
((Armenian, SkTEndian_SwapBE16(24)))
|
||||
((ChineseSimplified, SkTEndian_SwapBE16(25)))
|
||||
((Tibetan, SkTEndian_SwapBE16(26)))
|
||||
((Mongolian, SkTEndian_SwapBE16(27)))
|
||||
((Geez, SkTEndian_SwapBE16(28)))
|
||||
((Slavic, SkTEndian_SwapBE16(29)))
|
||||
((Vietnamese, SkTEndian_SwapBE16(30)))
|
||||
((Sindhi, SkTEndian_SwapBE16(31)))
|
||||
((Uninterpreted, SkTEndian_SwapBE16(32)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} macintosh;
|
||||
//deprecated, use Unicode instead
|
||||
struct ISO {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((ASCII7, SkTEndian_SwapBE16(0)))
|
||||
((ISO10646, SkTEndian_SwapBE16(1)))
|
||||
((ISO88591, SkTEndian_SwapBE16(2)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} iso;
|
||||
struct Windows {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((Symbol, SkTEndian_SwapBE16(0)))
|
||||
((UnicodeBMPUCS2, SkTEndian_SwapBE16(1))) //Windows default
|
||||
((ShiftJIS, SkTEndian_SwapBE16(2)))
|
||||
((PRC, SkTEndian_SwapBE16(3)))
|
||||
((Big5, SkTEndian_SwapBE16(4)))
|
||||
((Wansung, SkTEndian_SwapBE16(5)))
|
||||
((Johab, SkTEndian_SwapBE16(6)))
|
||||
((UnicodeUCS4, SkTEndian_SwapBE16(10)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} windows;
|
||||
SK_OT_USHORT custom;
|
||||
} encodingID;
|
||||
union LanguageID {
|
||||
struct Macintosh {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((English, SkTEndian_SwapBE16(0)))
|
||||
((French, SkTEndian_SwapBE16(1)))
|
||||
((German, SkTEndian_SwapBE16(2)))
|
||||
((Italian, SkTEndian_SwapBE16(3)))
|
||||
((Dutch, SkTEndian_SwapBE16(4)))
|
||||
((Swedish, SkTEndian_SwapBE16(5)))
|
||||
((Spanish, SkTEndian_SwapBE16(6)))
|
||||
((Danish, SkTEndian_SwapBE16(7)))
|
||||
((Portuguese, SkTEndian_SwapBE16(8)))
|
||||
((Norwegian, SkTEndian_SwapBE16(9)))
|
||||
((Hebrew, SkTEndian_SwapBE16(10)))
|
||||
((Japanese, SkTEndian_SwapBE16(11)))
|
||||
((Arabic, SkTEndian_SwapBE16(12)))
|
||||
((Finnish, SkTEndian_SwapBE16(13)))
|
||||
((Greek, SkTEndian_SwapBE16(14)))
|
||||
((Icelandic, SkTEndian_SwapBE16(15)))
|
||||
((Maltese, SkTEndian_SwapBE16(16)))
|
||||
((Turkish, SkTEndian_SwapBE16(17)))
|
||||
((Croatian, SkTEndian_SwapBE16(18)))
|
||||
((ChineseTraditional, SkTEndian_SwapBE16(19)))
|
||||
((Urdu, SkTEndian_SwapBE16(20)))
|
||||
((Hindi, SkTEndian_SwapBE16(21)))
|
||||
((Thai, SkTEndian_SwapBE16(22)))
|
||||
((Korean, SkTEndian_SwapBE16(23)))
|
||||
((Lithuanian, SkTEndian_SwapBE16(24)))
|
||||
((Polish, SkTEndian_SwapBE16(25)))
|
||||
((Hungarian, SkTEndian_SwapBE16(26)))
|
||||
((Estonian, SkTEndian_SwapBE16(27)))
|
||||
((Latvian, SkTEndian_SwapBE16(28)))
|
||||
((Sami, SkTEndian_SwapBE16(29)))
|
||||
((Faroese, SkTEndian_SwapBE16(30)))
|
||||
((Farsi_Persian, SkTEndian_SwapBE16(31)))
|
||||
((Russian, SkTEndian_SwapBE16(32)))
|
||||
((ChineseSimplified, SkTEndian_SwapBE16(33)))
|
||||
((Flemish, SkTEndian_SwapBE16(34)))
|
||||
((IrishGaelic, SkTEndian_SwapBE16(35)))
|
||||
((Albanian, SkTEndian_SwapBE16(36)))
|
||||
((Romanian, SkTEndian_SwapBE16(37)))
|
||||
((Czech, SkTEndian_SwapBE16(38)))
|
||||
((Slovak, SkTEndian_SwapBE16(39)))
|
||||
((Slovenian, SkTEndian_SwapBE16(40)))
|
||||
((Yiddish, SkTEndian_SwapBE16(41)))
|
||||
((Serbian, SkTEndian_SwapBE16(42)))
|
||||
((Macedonian, SkTEndian_SwapBE16(43)))
|
||||
((Bulgarian, SkTEndian_SwapBE16(44)))
|
||||
((Ukrainian, SkTEndian_SwapBE16(45)))
|
||||
((Byelorussian, SkTEndian_SwapBE16(46)))
|
||||
((Uzbek, SkTEndian_SwapBE16(47)))
|
||||
((Kazakh, SkTEndian_SwapBE16(48)))
|
||||
((AzerbaijaniCyrillic, SkTEndian_SwapBE16(49)))
|
||||
((AzerbaijaniArabic, SkTEndian_SwapBE16(50)))
|
||||
((Armenian, SkTEndian_SwapBE16(51)))
|
||||
((Georgian, SkTEndian_SwapBE16(52)))
|
||||
((Moldavian, SkTEndian_SwapBE16(53)))
|
||||
((Kirghiz, SkTEndian_SwapBE16(54)))
|
||||
((Tajiki, SkTEndian_SwapBE16(55)))
|
||||
((Turkmen, SkTEndian_SwapBE16(56)))
|
||||
((MongolianTraditional, SkTEndian_SwapBE16(57)))
|
||||
((MongolianCyrillic, SkTEndian_SwapBE16(58)))
|
||||
((Pashto, SkTEndian_SwapBE16(59)))
|
||||
((Kurdish, SkTEndian_SwapBE16(60)))
|
||||
((Kashmiri, SkTEndian_SwapBE16(61)))
|
||||
((Sindhi, SkTEndian_SwapBE16(62)))
|
||||
((Tibetan, SkTEndian_SwapBE16(63)))
|
||||
((Nepali, SkTEndian_SwapBE16(64)))
|
||||
((Sanskrit, SkTEndian_SwapBE16(65)))
|
||||
((Marathi, SkTEndian_SwapBE16(66)))
|
||||
((Bengali, SkTEndian_SwapBE16(67)))
|
||||
((Assamese, SkTEndian_SwapBE16(68)))
|
||||
((Gujarati, SkTEndian_SwapBE16(69)))
|
||||
((Punjabi, SkTEndian_SwapBE16(70)))
|
||||
((Oriya, SkTEndian_SwapBE16(71)))
|
||||
((Malayalam, SkTEndian_SwapBE16(72)))
|
||||
((Kannada, SkTEndian_SwapBE16(73)))
|
||||
((Tamil, SkTEndian_SwapBE16(74)))
|
||||
((Telugu, SkTEndian_SwapBE16(75)))
|
||||
((Sinhalese, SkTEndian_SwapBE16(76)))
|
||||
((Burmese, SkTEndian_SwapBE16(77)))
|
||||
((Khmer, SkTEndian_SwapBE16(78)))
|
||||
((Lao, SkTEndian_SwapBE16(79)))
|
||||
((Vietnamese, SkTEndian_SwapBE16(80)))
|
||||
((Indonesian, SkTEndian_SwapBE16(81)))
|
||||
((Tagalong, SkTEndian_SwapBE16(82)))
|
||||
((MalayRoman, SkTEndian_SwapBE16(83)))
|
||||
((MalayArabic, SkTEndian_SwapBE16(84)))
|
||||
((Amharic, SkTEndian_SwapBE16(85)))
|
||||
((Tigrinya, SkTEndian_SwapBE16(86)))
|
||||
((Galla, SkTEndian_SwapBE16(87)))
|
||||
((Somali, SkTEndian_SwapBE16(88)))
|
||||
((Swahili, SkTEndian_SwapBE16(89)))
|
||||
((Kinyarwanda_Ruanda, SkTEndian_SwapBE16(90)))
|
||||
((Rundi, SkTEndian_SwapBE16(91)))
|
||||
((Nyanja_Chewa, SkTEndian_SwapBE16(92)))
|
||||
((Malagasy, SkTEndian_SwapBE16(93)))
|
||||
((Esperanto, SkTEndian_SwapBE16(94)))
|
||||
((Welsh, SkTEndian_SwapBE16(128)))
|
||||
((Basque, SkTEndian_SwapBE16(129)))
|
||||
((Catalan, SkTEndian_SwapBE16(130)))
|
||||
((Latin, SkTEndian_SwapBE16(131)))
|
||||
((Quenchua, SkTEndian_SwapBE16(132)))
|
||||
((Guarani, SkTEndian_SwapBE16(133)))
|
||||
((Aymara, SkTEndian_SwapBE16(134)))
|
||||
((Tatar, SkTEndian_SwapBE16(135)))
|
||||
((Uighur, SkTEndian_SwapBE16(136)))
|
||||
((Dzongkha, SkTEndian_SwapBE16(137)))
|
||||
((JavaneseRoman, SkTEndian_SwapBE16(138)))
|
||||
((SundaneseRoman, SkTEndian_SwapBE16(139)))
|
||||
((Galician, SkTEndian_SwapBE16(140)))
|
||||
((Afrikaans, SkTEndian_SwapBE16(141)))
|
||||
((Breton, SkTEndian_SwapBE16(142)))
|
||||
((Inuktitut, SkTEndian_SwapBE16(143)))
|
||||
((ScottishGaelic, SkTEndian_SwapBE16(144)))
|
||||
((ManxGaelic, SkTEndian_SwapBE16(145)))
|
||||
((IrishGaelicWithLenition, SkTEndian_SwapBE16(146)))
|
||||
((Tongan, SkTEndian_SwapBE16(147)))
|
||||
((GreekPolytonic, SkTEndian_SwapBE16(148)))
|
||||
((Greenlandic, SkTEndian_SwapBE16(149)))
|
||||
((AzerbaijaniRoman, SkTEndian_SwapBE16(150)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} macintosh;
|
||||
struct Windows {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((Afrikaans_SouthAfrica, SkTEndian_SwapBE16(0x0436)))
|
||||
((Albanian_Albania, SkTEndian_SwapBE16(0x041C)))
|
||||
((Alsatian_France, SkTEndian_SwapBE16(0x0484)))
|
||||
((Amharic_Ethiopia, SkTEndian_SwapBE16(0x045E)))
|
||||
((Arabic_Algeria, SkTEndian_SwapBE16(0x1401)))
|
||||
((Arabic_Bahrain, SkTEndian_SwapBE16(0x3C01)))
|
||||
((Arabic_Egypt, SkTEndian_SwapBE16(0x0C01)))
|
||||
((Arabic_Iraq, SkTEndian_SwapBE16(0x0801)))
|
||||
((Arabic_Jordan, SkTEndian_SwapBE16(0x2C01)))
|
||||
((Arabic_Kuwait, SkTEndian_SwapBE16(0x3401)))
|
||||
((Arabic_Lebanon, SkTEndian_SwapBE16(0x3001)))
|
||||
((Arabic_Libya, SkTEndian_SwapBE16(0x1001)))
|
||||
((Arabic_Morocco, SkTEndian_SwapBE16(0x1801)))
|
||||
((Arabic_Oman, SkTEndian_SwapBE16(0x2001)))
|
||||
((Arabic_Qatar, SkTEndian_SwapBE16(0x4001)))
|
||||
((Arabic_SaudiArabia, SkTEndian_SwapBE16(0x0401)))
|
||||
((Arabic_Syria, SkTEndian_SwapBE16(0x2801)))
|
||||
((Arabic_Tunisia, SkTEndian_SwapBE16(0x1C01)))
|
||||
((Arabic_UAE, SkTEndian_SwapBE16(0x3801)))
|
||||
((Arabic_Yemen, SkTEndian_SwapBE16(0x2401)))
|
||||
((Armenian_Armenia, SkTEndian_SwapBE16(0x042B)))
|
||||
((Assamese_India, SkTEndian_SwapBE16(0x044D)))
|
||||
((AzeriCyrillic_Azerbaijan, SkTEndian_SwapBE16(0x082C)))
|
||||
((AzeriLatin_Azerbaijan, SkTEndian_SwapBE16(0x042C)))
|
||||
((Bashkir_Russia, SkTEndian_SwapBE16(0x046D)))
|
||||
((Basque_Basque, SkTEndian_SwapBE16(0x042D)))
|
||||
((Belarusian_Belarus, SkTEndian_SwapBE16(0x0423)))
|
||||
((Bengali_Bangladesh, SkTEndian_SwapBE16(0x0845)))
|
||||
((Bengali_India, SkTEndian_SwapBE16(0x0445)))
|
||||
((BosnianCyrillic_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x201A)))
|
||||
((BosnianLatin_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x141A)))
|
||||
((Breton_France, SkTEndian_SwapBE16(0x047E)))
|
||||
((Bulgarian_Bulgaria, SkTEndian_SwapBE16(0x0402)))
|
||||
((Catalan_Catalan, SkTEndian_SwapBE16(0x0403)))
|
||||
((Chinese_HongKongSAR, SkTEndian_SwapBE16(0x0C04)))
|
||||
((Chinese_MacaoSAR, SkTEndian_SwapBE16(0x1404)))
|
||||
((Chinese_PeoplesRepublicOfChina, SkTEndian_SwapBE16(0x0804)))
|
||||
((Chinese_Singapore, SkTEndian_SwapBE16(0x1004)))
|
||||
((Chinese_Taiwan, SkTEndian_SwapBE16(0x0404)))
|
||||
((Corsican_France, SkTEndian_SwapBE16(0x0483)))
|
||||
((Croatian_Croatia, SkTEndian_SwapBE16(0x041A)))
|
||||
((CroatianLatin_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x101A)))
|
||||
((Czech_CzechRepublic, SkTEndian_SwapBE16(0x0405)))
|
||||
((Danish_Denmark, SkTEndian_SwapBE16(0x0406)))
|
||||
((Dari_Afghanistan, SkTEndian_SwapBE16(0x048C)))
|
||||
((Divehi_Maldives, SkTEndian_SwapBE16(0x0465)))
|
||||
((Dutch_Belgium, SkTEndian_SwapBE16(0x0813)))
|
||||
((Dutch_Netherlands, SkTEndian_SwapBE16(0x0413)))
|
||||
((English_Australia, SkTEndian_SwapBE16(0x0C09)))
|
||||
((English_Belize, SkTEndian_SwapBE16(0x2809)))
|
||||
((English_Canada, SkTEndian_SwapBE16(0x1009)))
|
||||
((English_Caribbean, SkTEndian_SwapBE16(0x2409)))
|
||||
((English_India, SkTEndian_SwapBE16(0x4009)))
|
||||
((English_Ireland, SkTEndian_SwapBE16(0x1809)))
|
||||
((English_Jamaica, SkTEndian_SwapBE16(0x2009)))
|
||||
((English_Malaysia, SkTEndian_SwapBE16(0x4409)))
|
||||
((English_NewZealand, SkTEndian_SwapBE16(0x1409)))
|
||||
((English_RepublicOfThePhilippines, SkTEndian_SwapBE16(0x3409)))
|
||||
((English_Singapore, SkTEndian_SwapBE16(0x4809)))
|
||||
((English_SouthAfrica, SkTEndian_SwapBE16(0x1C09)))
|
||||
((English_TrinidadAndTobago, SkTEndian_SwapBE16(0x2C09)))
|
||||
((English_UnitedKingdom, SkTEndian_SwapBE16(0x0809)))
|
||||
((English_UnitedStates, SkTEndian_SwapBE16(0x0409)))
|
||||
((English_Zimbabwe, SkTEndian_SwapBE16(0x3009)))
|
||||
((Estonian_Estonia, SkTEndian_SwapBE16(0x0425)))
|
||||
((Faroese_FaroeIslands, SkTEndian_SwapBE16(0x0438)))
|
||||
((Filipino_Philippines, SkTEndian_SwapBE16(0x0464)))
|
||||
((Finnish_Finland, SkTEndian_SwapBE16(0x040B)))
|
||||
((French_Belgium, SkTEndian_SwapBE16(0x080C)))
|
||||
((French_Canada, SkTEndian_SwapBE16(0x0C0C)))
|
||||
((French_France, SkTEndian_SwapBE16(0x040C)))
|
||||
((French_Luxembourg, SkTEndian_SwapBE16(0x140c)))
|
||||
((French_PrincipalityOfMonoco, SkTEndian_SwapBE16(0x180C)))
|
||||
((French_Switzerland, SkTEndian_SwapBE16(0x100C)))
|
||||
((Frisian_Netherlands, SkTEndian_SwapBE16(0x0462)))
|
||||
((Galician_Galician, SkTEndian_SwapBE16(0x0456)))
|
||||
((Georgian_Georgia, SkTEndian_SwapBE16(0x0437)))
|
||||
((German_Austria, SkTEndian_SwapBE16(0x0C07)))
|
||||
((German_Germany, SkTEndian_SwapBE16(0x0407)))
|
||||
((German_Liechtenstein, SkTEndian_SwapBE16(0x1407)))
|
||||
((German_Luxembourg, SkTEndian_SwapBE16(0x1007)))
|
||||
((German_Switzerland, SkTEndian_SwapBE16(0x0807)))
|
||||
((Greek_Greece, SkTEndian_SwapBE16(0x0408)))
|
||||
((Greenlandic_Greenland, SkTEndian_SwapBE16(0x046F)))
|
||||
((Gujarati_India, SkTEndian_SwapBE16(0x0447)))
|
||||
((HausaLatin_Nigeria, SkTEndian_SwapBE16(0x0468)))
|
||||
((Hebrew_Israel, SkTEndian_SwapBE16(0x040D)))
|
||||
((Hindi_India, SkTEndian_SwapBE16(0x0439)))
|
||||
((Hungarian_Hungary, SkTEndian_SwapBE16(0x040E)))
|
||||
((Icelandic_Iceland, SkTEndian_SwapBE16(0x040F)))
|
||||
((Igbo_Nigeria, SkTEndian_SwapBE16(0x0470)))
|
||||
((Indonesian_Indonesia, SkTEndian_SwapBE16(0x0421)))
|
||||
((Inuktitut_Canada, SkTEndian_SwapBE16(0x045D)))
|
||||
((InuktitutLatin_Canada, SkTEndian_SwapBE16(0x085D)))
|
||||
((Irish_Ireland, SkTEndian_SwapBE16(0x083C)))
|
||||
((isiXhosa_SouthAfrica, SkTEndian_SwapBE16(0x0434)))
|
||||
((isiZulu_SouthAfrica, SkTEndian_SwapBE16(0x0435)))
|
||||
((Italian_Italy, SkTEndian_SwapBE16(0x0410)))
|
||||
((Italian_Switzerland, SkTEndian_SwapBE16(0x0810)))
|
||||
((Japanese_Japan, SkTEndian_SwapBE16(0x0411)))
|
||||
((Kannada_India, SkTEndian_SwapBE16(0x044B)))
|
||||
((Kazakh_Kazakhstan, SkTEndian_SwapBE16(0x043F)))
|
||||
((Khmer_Cambodia, SkTEndian_SwapBE16(0x0453)))
|
||||
((Kiche_Guatemala, SkTEndian_SwapBE16(0x0486)))
|
||||
((Kinyarwanda_Rwanda, SkTEndian_SwapBE16(0x0487)))
|
||||
((Kiswahili_Kenya, SkTEndian_SwapBE16(0x0441)))
|
||||
((Konkani_India, SkTEndian_SwapBE16(0x0457)))
|
||||
((Korean_Korea, SkTEndian_SwapBE16(0x0412)))
|
||||
((Kyrgyz_Kyrgyzstan, SkTEndian_SwapBE16(0x0440)))
|
||||
((Lao_LaoPDR, SkTEndian_SwapBE16(0x0454)))
|
||||
((Latvian_Latvia, SkTEndian_SwapBE16(0x0426)))
|
||||
((Lithuanian_Lithuania, SkTEndian_SwapBE16(0x0427)))
|
||||
((LowerSorbian_Germany, SkTEndian_SwapBE16(0x082E)))
|
||||
((Luxembourgish_Luxembourg, SkTEndian_SwapBE16(0x046E)))
|
||||
((MacedonianFYROM_FormerYugoslavRepublicOfMacedonia, SkTEndian_SwapBE16(0x042F)))
|
||||
((Malay_BruneiDarussalam, SkTEndian_SwapBE16(0x083E)))
|
||||
((Malay_Malaysia, SkTEndian_SwapBE16(0x043E)))
|
||||
((Malayalam_India, SkTEndian_SwapBE16(0x044C)))
|
||||
((Maltese_Malta, SkTEndian_SwapBE16(0x043A)))
|
||||
((Maori_NewZealand, SkTEndian_SwapBE16(0x0481)))
|
||||
((Mapudungun_Chile, SkTEndian_SwapBE16(0x047A)))
|
||||
((Marathi_India, SkTEndian_SwapBE16(0x044E)))
|
||||
((Mohawk_Mohawk, SkTEndian_SwapBE16(0x047C)))
|
||||
((MongolianCyrillic_Mongolia, SkTEndian_SwapBE16(0x0450)))
|
||||
((MongolianTraditional_PeoplesRepublicOfChina, SkTEndian_SwapBE16(0x0850)))
|
||||
((Nepali_Nepal, SkTEndian_SwapBE16(0x0461)))
|
||||
((NorwegianBokmal_Norway, SkTEndian_SwapBE16(0x0414)))
|
||||
((NorwegianNynorsk_Norway, SkTEndian_SwapBE16(0x0814)))
|
||||
((Occitan_France, SkTEndian_SwapBE16(0x0482)))
|
||||
((Odia_India, SkTEndian_SwapBE16(0x0448)))
|
||||
((Pashto_Afghanistan, SkTEndian_SwapBE16(0x0463)))
|
||||
((Polish_Poland, SkTEndian_SwapBE16(0x0415)))
|
||||
((Portuguese_Brazil, SkTEndian_SwapBE16(0x0416)))
|
||||
((Portuguese_Portugal, SkTEndian_SwapBE16(0x0816)))
|
||||
((Punjabi_India, SkTEndian_SwapBE16(0x0446)))
|
||||
((Quechua_Bolivia, SkTEndian_SwapBE16(0x046B)))
|
||||
((Quechua_Ecuador, SkTEndian_SwapBE16(0x086B)))
|
||||
((Quechua_Peru, SkTEndian_SwapBE16(0x0C6B)))
|
||||
((Romanian_Romania, SkTEndian_SwapBE16(0x0418)))
|
||||
((Romansh_Switzerland, SkTEndian_SwapBE16(0x0417)))
|
||||
((Russian_Russia, SkTEndian_SwapBE16(0x0419)))
|
||||
((SamiInari_Finland, SkTEndian_SwapBE16(0x243B)))
|
||||
((SamiLule_Norway, SkTEndian_SwapBE16(0x103B)))
|
||||
((SamiLule_Sweden, SkTEndian_SwapBE16(0x143B)))
|
||||
((SamiNorthern_Finland, SkTEndian_SwapBE16(0x0C3B)))
|
||||
((SamiNorthern_Norway, SkTEndian_SwapBE16(0x043B)))
|
||||
((SamiNorthern_Sweden, SkTEndian_SwapBE16(0x083B)))
|
||||
((SamiSkolt_Finland, SkTEndian_SwapBE16(0x203B)))
|
||||
((SamiSouthern_Norway, SkTEndian_SwapBE16(0x183B)))
|
||||
((SamiSouthern_Sweden, SkTEndian_SwapBE16(0x1C3B)))
|
||||
((Sanskrit_India, SkTEndian_SwapBE16(0x044F)))
|
||||
((SerbianCyrillic_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x1C1A)))
|
||||
((SerbianCyrillic_Serbia, SkTEndian_SwapBE16(0x0C1A)))
|
||||
((SerbianLatin_BosniaAndHerzegovina, SkTEndian_SwapBE16(0x181A)))
|
||||
((SerbianLatin_Serbia, SkTEndian_SwapBE16(0x081A)))
|
||||
((SesothoSaLeboa_SouthAfrica, SkTEndian_SwapBE16(0x046C)))
|
||||
((Setswana_SouthAfrica, SkTEndian_SwapBE16(0x0432)))
|
||||
((Sinhala_SriLanka, SkTEndian_SwapBE16(0x045B)))
|
||||
((Slovak_Slovakia, SkTEndian_SwapBE16(0x041B)))
|
||||
((Slovenian_Slovenia, SkTEndian_SwapBE16(0x0424)))
|
||||
((Spanish_Argentina, SkTEndian_SwapBE16(0x2C0A)))
|
||||
((Spanish_Bolivia, SkTEndian_SwapBE16(0x400A)))
|
||||
((Spanish_Chile, SkTEndian_SwapBE16(0x340A)))
|
||||
((Spanish_Colombia, SkTEndian_SwapBE16(0x240A)))
|
||||
((Spanish_CostaRica, SkTEndian_SwapBE16(0x140A)))
|
||||
((Spanish_DominicanRepublic, SkTEndian_SwapBE16(0x1C0A)))
|
||||
((Spanish_Ecuador, SkTEndian_SwapBE16(0x300A)))
|
||||
((Spanish_ElSalvador, SkTEndian_SwapBE16(0x440A)))
|
||||
((Spanish_Guatemala, SkTEndian_SwapBE16(0x100A)))
|
||||
((Spanish_Honduras, SkTEndian_SwapBE16(0x480A)))
|
||||
((Spanish_Mexico, SkTEndian_SwapBE16(0x080A)))
|
||||
((Spanish_Nicaragua, SkTEndian_SwapBE16(0x4C0A)))
|
||||
((Spanish_Panama, SkTEndian_SwapBE16(0x180A)))
|
||||
((Spanish_Paraguay, SkTEndian_SwapBE16(0x3C0A)))
|
||||
((Spanish_Peru, SkTEndian_SwapBE16(0x280A)))
|
||||
((Spanish_PuertoRico, SkTEndian_SwapBE16(0x500A)))
|
||||
((SpanishModernSort_Spain, SkTEndian_SwapBE16(0x0C0A)))
|
||||
((SpanishTraditionalSort_Spain, SkTEndian_SwapBE16(0x040A)))
|
||||
((Spanish_UnitedStates, SkTEndian_SwapBE16(0x540A)))
|
||||
((Spanish_Uruguay, SkTEndian_SwapBE16(0x380A)))
|
||||
((Spanish_Venezuela, SkTEndian_SwapBE16(0x200A)))
|
||||
((Sweden_Finland, SkTEndian_SwapBE16(0x081D)))
|
||||
((Swedish_Sweden, SkTEndian_SwapBE16(0x041D)))
|
||||
((Syriac_Syria, SkTEndian_SwapBE16(0x045A)))
|
||||
((TajikCyrillic_Tajikistan, SkTEndian_SwapBE16(0x0428)))
|
||||
((TamazightLatin_Algeria, SkTEndian_SwapBE16(0x085F)))
|
||||
((Tamil_India, SkTEndian_SwapBE16(0x0449)))
|
||||
((Tatar_Russia, SkTEndian_SwapBE16(0x0444)))
|
||||
((Telugu_India, SkTEndian_SwapBE16(0x044A)))
|
||||
((Thai_Thailand, SkTEndian_SwapBE16(0x041E)))
|
||||
((Tibetan_PRC, SkTEndian_SwapBE16(0x0451)))
|
||||
((Turkish_Turkey, SkTEndian_SwapBE16(0x041F)))
|
||||
((Turkmen_Turkmenistan, SkTEndian_SwapBE16(0x0442)))
|
||||
((Uighur_PRC, SkTEndian_SwapBE16(0x0480)))
|
||||
((Ukrainian_Ukraine, SkTEndian_SwapBE16(0x0422)))
|
||||
((UpperSorbian_Germany, SkTEndian_SwapBE16(0x042E)))
|
||||
((Urdu_IslamicRepublicOfPakistan, SkTEndian_SwapBE16(0x0420)))
|
||||
((UzbekCyrillic_Uzbekistan, SkTEndian_SwapBE16(0x0843)))
|
||||
((UzbekLatin_Uzbekistan, SkTEndian_SwapBE16(0x0443)))
|
||||
((Vietnamese_Vietnam, SkTEndian_SwapBE16(0x042A)))
|
||||
((Welsh_UnitedKingdom, SkTEndian_SwapBE16(0x0452)))
|
||||
((Wolof_Senegal, SkTEndian_SwapBE16(0x0488)))
|
||||
((Yakut_Russia, SkTEndian_SwapBE16(0x0485)))
|
||||
((Yi_PRC, SkTEndian_SwapBE16(0x0478)))
|
||||
((Yoruba_Nigeria, SkTEndian_SwapBE16(0x046A)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} windows;
|
||||
//languageTagID - 0x8000 is an index into the langTagRecord array.
|
||||
SK_OT_USHORT languageTagID;
|
||||
} languageID;
|
||||
union NameID {
|
||||
struct Predefined {
|
||||
SK_TYPED_ENUM(Value, SK_OT_USHORT,
|
||||
((CopyrightNotice, SkTEndian_SwapBE16(0)))
|
||||
((FontFamilyName, SkTEndian_SwapBE16(1)))
|
||||
((FontSubfamilyName, SkTEndian_SwapBE16(2)))
|
||||
((UniqueFontIdentifier, SkTEndian_SwapBE16(3)))
|
||||
((FullFontName, SkTEndian_SwapBE16(4)))
|
||||
((VersionString, SkTEndian_SwapBE16(5))) //Version <number>.<number>
|
||||
((PostscriptName, SkTEndian_SwapBE16(6))) //See spec for constraints.
|
||||
((Trademark, SkTEndian_SwapBE16(7)))
|
||||
((ManufacturerName, SkTEndian_SwapBE16(8)))
|
||||
((Designer, SkTEndian_SwapBE16(9)))
|
||||
((Description, SkTEndian_SwapBE16(10)))
|
||||
((URLVendor, SkTEndian_SwapBE16(11)))
|
||||
((URLDesigner, SkTEndian_SwapBE16(12)))
|
||||
((LicenseDescription, SkTEndian_SwapBE16(13)))
|
||||
((LicenseInfoURL, SkTEndian_SwapBE16(14)))
|
||||
((PreferredFamily, SkTEndian_SwapBE16(16)))
|
||||
((PreferredSubfamily, SkTEndian_SwapBE16(17)))
|
||||
((CompatibleFullName, SkTEndian_SwapBE16(18)))
|
||||
((SampleText, SkTEndian_SwapBE16(19)))
|
||||
((PostscriptCIDFindfontName, SkTEndian_SwapBE16(20)))
|
||||
((WWSFamilyName, SkTEndian_SwapBE16(21)))
|
||||
((WWSSubfamilyName, SkTEndian_SwapBE16(22)))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} predefined;
|
||||
//values > 256 are font specific strings.
|
||||
SK_OT_USHORT fontSpecific;
|
||||
} nameID;
|
||||
SK_OT_USHORT length;
|
||||
SK_OT_USHORT offset; //From start of storage area.
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableName) == 6, sizeof_SkOTTableName_not_6);
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableNameF1) == 2, sizeof_SkOTTableNameF1_not_2);
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableNameLangTagRecord) == 4, sizeof_SkOTTableNameLangTagRecord_not_4);
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTableNameRecord) == 12, sizeof_SkOTTableNameRecord_not_12);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkOTTable_post_DEFINED
|
||||
#define SkOTTable_post_DEFINED
|
||||
|
||||
#include "SkEndian.h"
|
||||
#include "SkOTTableTypes.h"
|
||||
#include "SkTypedEnum.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct SkOTTablePostScript {
|
||||
struct Format {
|
||||
SK_TYPED_ENUM(Value, SK_OT_Fixed,
|
||||
((version1, SkTEndian_SwapBE32(0x00010000)))
|
||||
((version2, SkTEndian_SwapBE32(0x00020000)))
|
||||
((version2_5, SkTEndian_SwapBE32(0x00025000)))
|
||||
((version3, SkTEndian_SwapBE32(0x00030000)))
|
||||
((version4, SkTEndian_SwapBE32(0x00040000)))
|
||||
SK_SEQ_END,
|
||||
SK_SEQ_END)
|
||||
SK_OT_Fixed value;
|
||||
} format;
|
||||
SK_OT_Fixed italicAngle;
|
||||
SK_OT_FWORD underlinePosition;
|
||||
SK_OT_FWORD underlineThickness;
|
||||
SK_OT_ULONG isFixedPitch;
|
||||
SK_OT_ULONG minMemType42;
|
||||
SK_OT_ULONG maxMemType42;
|
||||
SK_OT_ULONG minMemType1;
|
||||
SK_OT_ULONG maxMemType1;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
#include <stddef.h>
|
||||
SK_COMPILE_ASSERT(offsetof(SkOTTablePostScript, maxMemType1) == 28, SkOTTablePostScript_maxMemType1_not_at_28);
|
||||
SK_COMPILE_ASSERT(sizeof(SkOTTablePostScript) == 32, sizeof_SkOTTablePostScript_not_32);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,152 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#include "SkData.h"
|
||||
#include "SkEndian.h"
|
||||
#include "SkSFNTHeader.h"
|
||||
#include "SkStream.h"
|
||||
#include "SkOTTable_head.h"
|
||||
#include "SkOTTable_name.h"
|
||||
#include "SkOTTableTypes.h"
|
||||
#include "SkOTUtils.h"
|
||||
|
||||
uint32_t SkOTUtils::CalcTableChecksum(SK_OT_ULONG *data, size_t length) {
|
||||
uint32_t sum = 0;
|
||||
SK_OT_ULONG *dataEnd = data + ((length + 3) & ~3) / sizeof(SK_OT_ULONG);
|
||||
for (; data < dataEnd; ++data) {
|
||||
sum += SkEndian_SwapBE32(*data);
|
||||
}
|
||||
return sum;
|
||||
}
|
||||
|
||||
SkData* SkOTUtils::RenameFont(SkStream* fontData,
|
||||
const char* fontName, int fontNameLen) {
|
||||
|
||||
// Get the sfnt header.
|
||||
SkSFNTHeader sfntHeader;
|
||||
if (fontData->read(&sfntHeader, sizeof(sfntHeader)) < sizeof(sfntHeader)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// Find the existing 'name' table.
|
||||
int tableIndex;
|
||||
SkSFNTTableDirectoryEntry tableEntry;
|
||||
int numTables = SkEndian_SwapBE16(sfntHeader.numTables);
|
||||
for (tableIndex = 0; tableIndex < numTables; ++tableIndex) {
|
||||
if (fontData->read(&tableEntry, sizeof(tableEntry)) < sizeof(tableEntry)) {
|
||||
return NULL;
|
||||
}
|
||||
if ('name' == SkEndian_SwapBE32(tableEntry.tag)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (tableIndex == numTables) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (!fontData->rewind()) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
// The required 'name' record types: Family, Style, Unique, Full and PostScript.
|
||||
const SkOTTableNameRecord::NameID::Predefined::Value namesToCreate[] = {
|
||||
SkOTTableNameRecord::NameID::Predefined::FontFamilyName,
|
||||
SkOTTableNameRecord::NameID::Predefined::FontSubfamilyName,
|
||||
SkOTTableNameRecord::NameID::Predefined::UniqueFontIdentifier,
|
||||
SkOTTableNameRecord::NameID::Predefined::FullFontName,
|
||||
SkOTTableNameRecord::NameID::Predefined::PostscriptName,
|
||||
};
|
||||
const int namesCount = SK_ARRAY_COUNT(namesToCreate);
|
||||
|
||||
// Copy the data, leaving out the old name table.
|
||||
// In theory, we could also remove the DSIG table if it exists.
|
||||
size_t nameTableLogicalSize = sizeof(SkOTTableName) + (namesCount * sizeof(SkOTTableNameRecord)) + (fontNameLen * sizeof(wchar_t));
|
||||
size_t nameTablePhysicalSize = (nameTableLogicalSize + 3) & ~3; // Rounded up to a multiple of 4.
|
||||
|
||||
size_t oldNameTablePhysicalSize = (SkEndian_SwapBE32(tableEntry.logicalLength) + 3) & ~3; // Rounded up to a multiple of 4.
|
||||
size_t oldNameTableOffset = SkEndian_SwapBE32(tableEntry.offset);
|
||||
|
||||
//originalDataSize is the size of the original data without the name table.
|
||||
size_t originalDataSize = fontData->getLength() - oldNameTablePhysicalSize;
|
||||
size_t newDataSize = originalDataSize + nameTablePhysicalSize;
|
||||
|
||||
SK_OT_BYTE* data = static_cast<SK_OT_BYTE*>(sk_malloc_throw(newDataSize));
|
||||
SkAutoTUnref<SkData> rewrittenFontData(SkData::NewFromMalloc(data, newDataSize));
|
||||
|
||||
if (fontData->read(data, oldNameTableOffset) < oldNameTableOffset) {
|
||||
return NULL;
|
||||
}
|
||||
if (fontData->skip(oldNameTablePhysicalSize) < oldNameTablePhysicalSize) {
|
||||
return NULL;
|
||||
}
|
||||
if (fontData->read(data + oldNameTableOffset, originalDataSize - oldNameTableOffset) < originalDataSize - oldNameTableOffset) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//Fix up the offsets of the directory entries after the old 'name' table entry.
|
||||
SkSFNTTableDirectoryEntry* currentEntry = reinterpret_cast<SkSFNTTableDirectoryEntry*>(data + sizeof(SkSFNTHeader));
|
||||
SkSFNTTableDirectoryEntry* endEntry = currentEntry + numTables;
|
||||
SkSFNTTableDirectoryEntry* headTableEntry = NULL;
|
||||
for (; currentEntry < endEntry; ++currentEntry) {
|
||||
uint32_t oldOffset = SkEndian_SwapBE32(currentEntry->offset);
|
||||
if (oldOffset > oldNameTableOffset) {
|
||||
currentEntry->offset = SkEndian_SwapBE32(oldOffset - oldNameTablePhysicalSize);
|
||||
}
|
||||
if ('head' == SkEndian_SwapBE32(tableEntry.tag)) {
|
||||
headTableEntry = currentEntry;
|
||||
}
|
||||
}
|
||||
|
||||
// Make the table directory entry point to the new 'name' table.
|
||||
SkSFNTTableDirectoryEntry* nameTableEntry = reinterpret_cast<SkSFNTTableDirectoryEntry*>(data + sizeof(SkSFNTHeader)) + tableIndex;
|
||||
nameTableEntry->logicalLength = SkEndian_SwapBE32(nameTableLogicalSize);
|
||||
nameTableEntry->offset = SkEndian_SwapBE32(originalDataSize);
|
||||
|
||||
// Write the new 'name' table after the original font data.
|
||||
SkOTTableName* nameTable = reinterpret_cast<SkOTTableName*>(data + originalDataSize);
|
||||
unsigned short stringOffset = sizeof(SkOTTableName) + (namesCount * sizeof(SkOTTableNameRecord));
|
||||
nameTable->format = SkOTTableName::format_0;
|
||||
nameTable->count = SkEndian_SwapBE16(namesCount);
|
||||
nameTable->stringOffset = SkEndian_SwapBE16(stringOffset);
|
||||
|
||||
SkOTTableNameRecord* nameRecords = reinterpret_cast<SkOTTableNameRecord*>(data + originalDataSize + sizeof(SkOTTableName));
|
||||
for (int i = 0; i < namesCount; ++i) {
|
||||
nameRecords[i].platformID.value = SkOTTableNameRecord::PlatformID::Windows;
|
||||
nameRecords[i].encodingID.windows.value = SkOTTableNameRecord::EncodingID::Windows::UnicodeBMPUCS2;
|
||||
nameRecords[i].languageID.windows.value = SkOTTableNameRecord::LanguageID::Windows::English_UnitedStates;
|
||||
nameRecords[i].nameID.predefined.value = namesToCreate[i];
|
||||
nameRecords[i].offset = SkEndian_SwapBE16(0);
|
||||
nameRecords[i].length = SkEndian_SwapBE16(fontNameLen * sizeof(wchar_t));
|
||||
}
|
||||
|
||||
SK_OT_USHORT* nameString = reinterpret_cast<SK_OT_USHORT*>(data + originalDataSize + stringOffset);
|
||||
for (int i = 0; i < fontNameLen; ++i) {
|
||||
nameString[i] = SkEndian_SwapBE16(fontName[i]);
|
||||
}
|
||||
|
||||
unsigned char* logical = data + originalDataSize + nameTableLogicalSize;
|
||||
unsigned char* physical = data + originalDataSize + nameTablePhysicalSize;
|
||||
for (; logical < physical; ++logical) {
|
||||
*logical = 0;
|
||||
}
|
||||
|
||||
// Update the table checksum in the directory entry.
|
||||
nameTableEntry->checksum = SkEndian_SwapBE32(SkOTUtils::CalcTableChecksum(reinterpret_cast<SK_OT_ULONG*>(nameTable), nameTableLogicalSize));
|
||||
|
||||
// Update the checksum adjustment in the head table.
|
||||
if (headTableEntry) {
|
||||
size_t headTableOffset = SkEndian_SwapBE32(headTableEntry->offset);
|
||||
if (headTableOffset + sizeof(SkOTTableHead) < originalDataSize) {
|
||||
SkOTTableHead* headTable = reinterpret_cast<SkOTTableHead*>(data + headTableOffset);
|
||||
headTable->checksumAdjustment = SkEndian_SwapBE32(0);
|
||||
uint32_t unadjustedFontChecksum = SkOTUtils::CalcTableChecksum(reinterpret_cast<SK_OT_ULONG*>(data), originalDataSize + nameTablePhysicalSize);
|
||||
headTable->checksumAdjustment = SkEndian_SwapBE32(SkOTTableHead::fontChecksum - unadjustedFontChecksum);
|
||||
}
|
||||
}
|
||||
|
||||
return rewrittenFontData.detach();
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkOTUtils_DEFINED
|
||||
#define SkOTUtils_DEFINED
|
||||
|
||||
#include "SkOTTableTypes.h"
|
||||
class SkStream;
|
||||
|
||||
struct SkOTUtils {
|
||||
/**
|
||||
* Calculates the OpenType checksum for data.
|
||||
*/
|
||||
static uint32_t CalcTableChecksum(SK_OT_ULONG *data, size_t length);
|
||||
|
||||
/**
|
||||
* Renames an sfnt font. On failure (invalid data or not an sfnt font)
|
||||
* returns NULL.
|
||||
*
|
||||
* Essentially, this removes any existing 'name' table and replaces it
|
||||
* with a new one in which FontFamilyName, FontSubfamilyName,
|
||||
* UniqueFontIdentifier, FullFontName, and PostscriptName are fontName.
|
||||
*
|
||||
* The new 'name' table records will be written with the Windows,
|
||||
* UnicodeBMPUCS2, and English_UnitedStates settings.
|
||||
*
|
||||
* fontName and fontNameLen must be specified in terms of ASCII chars.
|
||||
*/
|
||||
static SkData* RenameFont(SkStream* fontData,
|
||||
const char* fontName, int fontNameLen);
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,639 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkPanose_DEFINED
|
||||
#define SkPanose_DEFINED
|
||||
|
||||
#include "SkOTTableTypes.h"
|
||||
#include "SkTypedEnum.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct SkPanose {
|
||||
//This value changes the meaning of the following 9 bytes.
|
||||
struct FamilyType {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((TextAndDisplay, 2))
|
||||
((Script, 3))
|
||||
((Decorative, 4))
|
||||
((Pictoral, 5))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bFamilyType;
|
||||
|
||||
union Data {
|
||||
struct TextAndDisplay {
|
||||
struct SerifStyle {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((Cove, 2))
|
||||
((ObtuseCove, 3))
|
||||
((SquareCove, 4))
|
||||
((ObtuseSquareCove, 5))
|
||||
((Square, 6))
|
||||
((Thin, 7))
|
||||
((Bone, 8))
|
||||
((Exaggerated, 9))
|
||||
((Triangle, 10))
|
||||
((NormalSans, 11))
|
||||
((ObtuseSans, 12))
|
||||
((PerpSans, 13))
|
||||
((Flared, 14))
|
||||
((Rounded, 15))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bSerifStyle;
|
||||
|
||||
struct Weight {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((VeryLight, 2))
|
||||
((Light, 3))
|
||||
((Thin, 4))
|
||||
((Book, 5))
|
||||
((Medium, 6))
|
||||
((Demi, 7))
|
||||
((Bold, 8))
|
||||
((Heavy, 9))
|
||||
((Black, 10))
|
||||
((ExtraBlack, 11))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bWeight;
|
||||
|
||||
struct Proportion {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((OldStyle, 2))
|
||||
((Modern, 3))
|
||||
((EvenWidth, 4))
|
||||
((Expanded, 5))
|
||||
((Condensed, 6))
|
||||
((VeryExpanded, 7))
|
||||
((VeryCondensed, 8))
|
||||
((Monospaced, 9))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bProportion;
|
||||
|
||||
struct Contrast {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((None, 2))
|
||||
((VeryLow, 3))
|
||||
((Low, 4))
|
||||
((MediumLow, 5))
|
||||
((Medium, 6))
|
||||
((MediumHigh, 7))
|
||||
((High, 8))
|
||||
((VeryHigh, 9))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bContrast;
|
||||
|
||||
#ifdef SK_WIN_PANOSE
|
||||
//This is what Windows (and FontForge and Apple TT spec) define.
|
||||
//The Impact font uses 9.
|
||||
struct StrokeVariation {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((GradualDiagonal, 2))
|
||||
((GradualTransitional, 3))
|
||||
((GradualVertical, 4))
|
||||
((GradualHorizontal, 5))
|
||||
((RapidVertical, 6))
|
||||
((RapidHorizontal, 7))
|
||||
((InstantVertical, 8))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bStrokeVariation;
|
||||
#else
|
||||
//Stroke variation description in OT OS/2 ver0,ver1 is incorrect.
|
||||
//This is what HP Panose says.
|
||||
struct StrokeVariation {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((NoVariation, 2))
|
||||
((Gradual_Diagonal, 3))
|
||||
((Gradual_Transitional, 4))
|
||||
((Gradual_Vertical, 5))
|
||||
((Gradual_Horizontal, 6))
|
||||
((Rapid_Vertical, 7))
|
||||
((Rapid_Horizontal, 8))
|
||||
((Instant_Vertical, 9))
|
||||
((Instant_Horizontal, 10))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bStrokeVariation;
|
||||
#endif
|
||||
|
||||
struct ArmStyle {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((StraightArms_Horizontal, 2))
|
||||
((StraightArms_Wedge, 3))
|
||||
((StraightArms_Vertical, 4))
|
||||
((StraightArms_SingleSerif, 5))
|
||||
((StraightArms_DoubleSerif, 6))
|
||||
((NonStraightArms_Horizontal, 7))
|
||||
((NonStraightArms_Wedge, 8))
|
||||
((NonStraightArms_Vertical, 9))
|
||||
((NonStraightArms_SingleSerif, 10))
|
||||
((NonStraightArms_DoubleSerif, 11))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bArmStyle;
|
||||
|
||||
struct Letterform {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((Normal_Contact, 2))
|
||||
((Normal_Weighted, 3))
|
||||
((Normal_Boxed, 4))
|
||||
((Normal_Flattened, 5))
|
||||
((Normal_Rounded, 6))
|
||||
((Normal_OffCenter, 7))
|
||||
((Normal_Square, 8))
|
||||
((Oblique_Contact, 9))
|
||||
((Oblique_Weighted, 10))
|
||||
((Oblique_Boxed, 11))
|
||||
((Oblique_Flattened, 12))
|
||||
((Oblique_Rounded, 13))
|
||||
((Oblique_OffCenter, 14))
|
||||
((Oblique_Square, 15))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bLetterform;
|
||||
|
||||
struct Midline {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((Standard_Trimmed, 2))
|
||||
((Standard_Pointed, 3))
|
||||
((Standard_Serifed, 4))
|
||||
((High_Trimmed, 5))
|
||||
((High_Pointed, 6))
|
||||
((High_Serifed, 7))
|
||||
((Constant_Trimmed, 8))
|
||||
((Constant_Pointed, 9))
|
||||
((Constant_Serifed, 10))
|
||||
((Low_Trimmed, 11))
|
||||
((Low_Pointed, 12))
|
||||
((Low_Serifed, 13))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bMidline;
|
||||
|
||||
struct XHeight {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((Constant_Small, 2))
|
||||
((Constant_Standard, 3))
|
||||
((Constant_Large, 4))
|
||||
((Ducking_Small, 5))
|
||||
((Ducking_Standard, 6))
|
||||
((Ducking_Large, 7))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bXHeight;
|
||||
} textAndDisplay;
|
||||
|
||||
struct Script {
|
||||
struct ToolKind {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((FlatNib, 2))
|
||||
((PressurePoint, 3))
|
||||
((Engraved, 4))
|
||||
((Ball, 5))
|
||||
((Brush, 6))
|
||||
((Rough, 7))
|
||||
((FeltPen, 8))
|
||||
((WildBrush, 9))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bToolKind;
|
||||
|
||||
struct Weight {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((VeryLight, 2))
|
||||
((Light, 3))
|
||||
((Thin, 4))
|
||||
((Book, 5))
|
||||
((Medium, 6))
|
||||
((Demi, 7))
|
||||
((Bold, 8))
|
||||
((Heavy, 9))
|
||||
((Black, 10))
|
||||
((ExtraBlack, 11))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bWeight;
|
||||
|
||||
struct Spacing {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((ProportionalSpaced, 2))
|
||||
((Monospaced, 3))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bSpacing;
|
||||
|
||||
struct AspectRatio {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((VeryCondensed, 2))
|
||||
((Condensed, 3))
|
||||
((Normal, 4))
|
||||
((Expanded, 5))
|
||||
((VeryExpanded, 6))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bAspectRatio;
|
||||
|
||||
struct Contrast {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((None, 2))
|
||||
((VeryLow, 3))
|
||||
((Low, 4))
|
||||
((MediumLow, 5))
|
||||
((Medium, 6))
|
||||
((MediumHigh, 7))
|
||||
((High, 8))
|
||||
((VeryHigh, 9))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bContrast;
|
||||
|
||||
struct Topology {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((Roman_Disconnected, 2))
|
||||
((Roman_Trailing, 3))
|
||||
((Roman_Connected, 4))
|
||||
((Cursive_Disconnected, 5))
|
||||
((Cursive_Trailing, 6))
|
||||
((Cursive_Connected, 7))
|
||||
((Blackletter_Disconnected, 8))
|
||||
((Blackletter_Trailing, 9))
|
||||
((Blackletter_Connected, 10))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bTopology;
|
||||
|
||||
struct Form {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((Upright_NoWrapping, 2))
|
||||
((Upright_SomeWrapping, 3))
|
||||
((Upright_MoreWrapping, 4))
|
||||
((Upright_ExtremeWrapping, 5))
|
||||
((Oblique_NoWrapping, 6))
|
||||
((Oblique_SomeWrapping, 7))
|
||||
((Oblique_MoreWrapping, 8))
|
||||
((Oblique_ExtremeWrapping, 9))
|
||||
((Exaggerated_NoWrapping, 10))
|
||||
((Exaggerated_SomeWrapping, 11))
|
||||
((Exaggerated_MoreWrapping, 12))
|
||||
((Exaggerated_ExtremeWrapping, 13))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bForm;
|
||||
|
||||
struct Finials {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((None_NoLoops, 2))
|
||||
((None_ClosedLoops, 3))
|
||||
((None_OpenLoops, 4))
|
||||
((Sharp_NoLoops, 5))
|
||||
((Sharp_ClosedLoops, 6))
|
||||
((Sharp_OpenLoops, 7))
|
||||
((Tapered_NoLoops, 8))
|
||||
((Tapered_ClosedLoops, 9))
|
||||
((Tapered_OpenLoops, 10))
|
||||
((Round_NoLoops, 11))
|
||||
((Round_ClosedLoops, 12))
|
||||
((Round_OpenLoops, 13))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bFinials;
|
||||
|
||||
struct XAscent {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((VeryLow, 2))
|
||||
((Low, 3))
|
||||
((Medium, 4))
|
||||
((High, 5))
|
||||
((VeryHigh, 6))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bXAscent;
|
||||
} script;
|
||||
|
||||
struct Decorative {
|
||||
struct Class {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((Derivative, 2))
|
||||
((NonStandard_Topology, 3))
|
||||
((NonStandard_Elements, 4))
|
||||
((NonStandard_Aspect, 5))
|
||||
((Initials, 6))
|
||||
((Cartoon, 7))
|
||||
((PictureStems, 8))
|
||||
((Ornamented, 9))
|
||||
((TextAndBackground, 10))
|
||||
((Collage, 11))
|
||||
((Montage, 12))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bClass;
|
||||
|
||||
struct Weight {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((VeryLight, 2))
|
||||
((Light, 3))
|
||||
((Thin, 4))
|
||||
((Book, 5))
|
||||
((Medium, 6))
|
||||
((Demi, 7))
|
||||
((Bold, 8))
|
||||
((Heavy, 9))
|
||||
((Black, 10))
|
||||
((ExtraBlack, 11))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bWeight;
|
||||
|
||||
struct Aspect {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((SuperCondensed, 2))
|
||||
((VeryCondensed, 3))
|
||||
((Condensed, 4))
|
||||
((Normal, 5))
|
||||
((Extended, 6))
|
||||
((VeryExtended, 7))
|
||||
((SuperExtended, 8))
|
||||
((Monospaced, 9))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bAspect;
|
||||
|
||||
struct Contrast {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((None, 2))
|
||||
((VeryLow, 3))
|
||||
((Low, 4))
|
||||
((MediumLow, 5))
|
||||
((Medium, 6))
|
||||
((MediumHigh, 7))
|
||||
((High, 8))
|
||||
((VeryHigh, 9))
|
||||
((HorizontalLow, 10))
|
||||
((HorizontalMedium, 11))
|
||||
((HorizontalHigh, 12))
|
||||
((Broken, 13))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bContrast;
|
||||
|
||||
struct SerifVariant {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((Cove, 2))
|
||||
((ObtuseCove, 3))
|
||||
((SquareCove, 4))
|
||||
((ObtuseSquareCove, 5))
|
||||
((Square, 6))
|
||||
((Thin, 7))
|
||||
((Oval, 8))
|
||||
((Exaggerated, 9))
|
||||
((Triangle, 10))
|
||||
((NormalSans, 11))
|
||||
((ObtuseSans, 12))
|
||||
((PerpendicularSans, 13))
|
||||
((Flared, 14))
|
||||
((Rounded, 15))
|
||||
((Script, 16))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bSerifVariant;
|
||||
|
||||
struct Treatment {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((None_StandardSolidFill, 2))
|
||||
((White_NoFill, 3))
|
||||
((PatternedFill, 4))
|
||||
((ComplexFill, 5))
|
||||
((ShapedFill, 6))
|
||||
((DrawnDistressed, 7))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bTreatment;
|
||||
|
||||
struct Lining {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((None, 2))
|
||||
((Inline, 3))
|
||||
((Outline, 4))
|
||||
((Engraved, 5))
|
||||
((Shadow, 6))
|
||||
((Relief, 7))
|
||||
((Backdrop, 8))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bLining;
|
||||
|
||||
struct Topology {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((Standard, 2))
|
||||
((Square, 3))
|
||||
((MultipleSegment, 4))
|
||||
((DecoWacoMidlines, 5))
|
||||
((UnevenWeighting, 6))
|
||||
((DiverseArms, 7))
|
||||
((DiverseForms, 8))
|
||||
((LombardicForms, 9))
|
||||
((UpperCaseInLowerCase, 10))
|
||||
((ImpliedTopology, 11))
|
||||
((HorseshoeEandA, 12))
|
||||
((Cursive, 13))
|
||||
((Blackletter, 14))
|
||||
((SwashVariance, 15))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bTopology;
|
||||
|
||||
struct RangeOfCharacters {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((ExtendedCollection, 2))
|
||||
((Litterals, 3))
|
||||
((NoLowerCase, 4))
|
||||
((SmallCaps, 5))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bRangeOfCharacters;
|
||||
} decorative;
|
||||
|
||||
struct Pictoral {
|
||||
struct Kind {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((Montages, 2))
|
||||
((Pictures, 3))
|
||||
((Shapes, 4))
|
||||
((Scientific, 5))
|
||||
((Music, 6))
|
||||
((Expert, 7))
|
||||
((Patterns, 8))
|
||||
((Boarders, 9))
|
||||
((Icons, 10))
|
||||
((Logos, 11))
|
||||
((IndustrySpecific, 12))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bKind;
|
||||
|
||||
struct Weight {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((NoFit, 1))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bWeight;
|
||||
|
||||
struct Spacing {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((ProportionalSpaced, 2))
|
||||
((Monospaced, 3))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bSpacing;
|
||||
|
||||
struct AspectRatioAndContrast {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((NoFit, 1))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bAspectRatioAndContrast;
|
||||
|
||||
struct AspectRatio94 {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((NoWidth, 2))
|
||||
((ExceptionallyWide, 3))
|
||||
((SuperWide, 4))
|
||||
((VeryWide, 5))
|
||||
((Wide, 6))
|
||||
((Normal, 7))
|
||||
((Narrow, 8))
|
||||
((VeryNarrow, 9))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bAspectRatio94;
|
||||
|
||||
struct AspectRatio119 {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((NoWidth, 2))
|
||||
((ExceptionallyWide, 3))
|
||||
((SuperWide, 4))
|
||||
((VeryWide, 5))
|
||||
((Wide, 6))
|
||||
((Normal, 7))
|
||||
((Narrow, 8))
|
||||
((VeryNarrow, 9))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bAspectRatio119;
|
||||
|
||||
struct AspectRatio157 {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((NoWidth, 2))
|
||||
((ExceptionallyWide, 3))
|
||||
((SuperWide, 4))
|
||||
((VeryWide, 5))
|
||||
((Wide, 6))
|
||||
((Normal, 7))
|
||||
((Narrow, 8))
|
||||
((VeryNarrow, 9))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bAspectRatio157;
|
||||
|
||||
struct AspectRatio163 {
|
||||
SK_TYPED_ENUM(Value, SK_OT_BYTE,
|
||||
((Any, 0))
|
||||
((NoFit, 1))
|
||||
((NoWidth, 2))
|
||||
((ExceptionallyWide, 3))
|
||||
((SuperWide, 4))
|
||||
((VeryWide, 5))
|
||||
((Wide, 6))
|
||||
((Normal, 7))
|
||||
((Narrow, 8))
|
||||
((VeryNarrow, 9))
|
||||
SK_SEQ_END,
|
||||
(value)SK_SEQ_END)
|
||||
} bAspectRatio163;
|
||||
} pictoral;
|
||||
} data;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
SK_COMPILE_ASSERT(sizeof(SkPanose) == 10, sizeof_SkPanose_not_10);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,826 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkPreprocessorSeq_DEFINED
|
||||
#define SkPreprocessorSeq_DEFINED
|
||||
|
||||
#define SK_CONCAT(a, b) SK_CONCAT_I(a, b) // allow for macro expansion
|
||||
#define SK_CONCAT_I(a, b) a ## b
|
||||
|
||||
//A preprocessor pair is of the form '(a, b)'
|
||||
#define SK_PAIR_FIRST(pair) SK_PAIR_FIRST_I pair
|
||||
#define SK_PAIR_FIRST_I(a, b) a
|
||||
#define SK_PAIR_SECOND(pair) SK_PAIR_SECOND_I pair
|
||||
#define SK_PAIR_SECOND_I(a, b) b
|
||||
|
||||
//A preprocessor sequence is of the form (a)(b)(c)SK_SEQ_END
|
||||
#if 0
|
||||
//The following is what we logically want to do.
|
||||
//However, MSVC expands macros at the wrong time, causing an error on use of
|
||||
//SK_SEQ_IGNORE_SECOND_I because it formally takes two parameters, but we only
|
||||
//pass "one" parameter in SK_SEQ_IGNORE_SECOND.
|
||||
|
||||
#define SK_SEQ_HEAD(seq) SK_SEQ_IGNORE_SECOND(SK_SEQ_FIRST seq)
|
||||
#define SK_SEQ_IGNORE_SECOND(x) SK_SEQ_IGNORE_SECOND_I(x) // expand x
|
||||
#define SK_SEQ_IGNORE_SECOND_I(x, _) x
|
||||
#define SK_SEQ_FIRST(x) x, SK_NIL
|
||||
|
||||
#else
|
||||
|
||||
//This is less obvious, but works on GCC, clang, and MSVC.
|
||||
#define SK_SEQ_HEAD(seq) SK_SEQ_HEAD_II((SK_SEQ_FIRST seq))
|
||||
#define SK_SEQ_HEAD_II(x) SK_SEQ_IGNORE_SECOND_I x
|
||||
#define SK_SEQ_IGNORE_SECOND_I(x, _) x
|
||||
#define SK_SEQ_FIRST(x) x, SK_NIL
|
||||
|
||||
#endif
|
||||
|
||||
#define SK_SEQ_TAIL(seq) SK_SEQ_TAIL_I seq
|
||||
#define SK_SEQ_TAIL_I(x)
|
||||
|
||||
#define SK_SEQ_SIZE(seq) SK_CONCAT(SK_SEQ_SIZE_, SK_SEQ_SIZE_TERMINATOR seq)
|
||||
|
||||
#define SK_SEQ_SIZE_TERMINATOR(_) SK_SEQ_SIZE_0
|
||||
#define SK_SEQ_SIZE_0(_) SK_SEQ_SIZE_1
|
||||
#define SK_SEQ_SIZE_1(_) SK_SEQ_SIZE_2
|
||||
#define SK_SEQ_SIZE_2(_) SK_SEQ_SIZE_3
|
||||
#define SK_SEQ_SIZE_3(_) SK_SEQ_SIZE_4
|
||||
#define SK_SEQ_SIZE_4(_) SK_SEQ_SIZE_5
|
||||
#define SK_SEQ_SIZE_5(_) SK_SEQ_SIZE_6
|
||||
#define SK_SEQ_SIZE_6(_) SK_SEQ_SIZE_7
|
||||
#define SK_SEQ_SIZE_7(_) SK_SEQ_SIZE_8
|
||||
#define SK_SEQ_SIZE_8(_) SK_SEQ_SIZE_9
|
||||
#define SK_SEQ_SIZE_9(_) SK_SEQ_SIZE_10
|
||||
#define SK_SEQ_SIZE_10(_) SK_SEQ_SIZE_11
|
||||
#define SK_SEQ_SIZE_11(_) SK_SEQ_SIZE_12
|
||||
#define SK_SEQ_SIZE_12(_) SK_SEQ_SIZE_13
|
||||
#define SK_SEQ_SIZE_13(_) SK_SEQ_SIZE_14
|
||||
#define SK_SEQ_SIZE_14(_) SK_SEQ_SIZE_15
|
||||
#define SK_SEQ_SIZE_15(_) SK_SEQ_SIZE_16
|
||||
#define SK_SEQ_SIZE_16(_) SK_SEQ_SIZE_17
|
||||
#define SK_SEQ_SIZE_17(_) SK_SEQ_SIZE_18
|
||||
#define SK_SEQ_SIZE_18(_) SK_SEQ_SIZE_19
|
||||
#define SK_SEQ_SIZE_19(_) SK_SEQ_SIZE_20
|
||||
#define SK_SEQ_SIZE_20(_) SK_SEQ_SIZE_21
|
||||
#define SK_SEQ_SIZE_21(_) SK_SEQ_SIZE_22
|
||||
#define SK_SEQ_SIZE_22(_) SK_SEQ_SIZE_23
|
||||
#define SK_SEQ_SIZE_23(_) SK_SEQ_SIZE_24
|
||||
#define SK_SEQ_SIZE_24(_) SK_SEQ_SIZE_25
|
||||
#define SK_SEQ_SIZE_25(_) SK_SEQ_SIZE_26
|
||||
#define SK_SEQ_SIZE_26(_) SK_SEQ_SIZE_27
|
||||
#define SK_SEQ_SIZE_27(_) SK_SEQ_SIZE_28
|
||||
#define SK_SEQ_SIZE_28(_) SK_SEQ_SIZE_29
|
||||
#define SK_SEQ_SIZE_29(_) SK_SEQ_SIZE_30
|
||||
#define SK_SEQ_SIZE_30(_) SK_SEQ_SIZE_31
|
||||
#define SK_SEQ_SIZE_31(_) SK_SEQ_SIZE_32
|
||||
#define SK_SEQ_SIZE_32(_) SK_SEQ_SIZE_33
|
||||
#define SK_SEQ_SIZE_33(_) SK_SEQ_SIZE_34
|
||||
#define SK_SEQ_SIZE_34(_) SK_SEQ_SIZE_35
|
||||
#define SK_SEQ_SIZE_35(_) SK_SEQ_SIZE_36
|
||||
#define SK_SEQ_SIZE_36(_) SK_SEQ_SIZE_37
|
||||
#define SK_SEQ_SIZE_37(_) SK_SEQ_SIZE_38
|
||||
#define SK_SEQ_SIZE_38(_) SK_SEQ_SIZE_39
|
||||
#define SK_SEQ_SIZE_39(_) SK_SEQ_SIZE_40
|
||||
#define SK_SEQ_SIZE_40(_) SK_SEQ_SIZE_41
|
||||
#define SK_SEQ_SIZE_41(_) SK_SEQ_SIZE_42
|
||||
#define SK_SEQ_SIZE_42(_) SK_SEQ_SIZE_43
|
||||
#define SK_SEQ_SIZE_43(_) SK_SEQ_SIZE_44
|
||||
#define SK_SEQ_SIZE_44(_) SK_SEQ_SIZE_45
|
||||
#define SK_SEQ_SIZE_45(_) SK_SEQ_SIZE_46
|
||||
#define SK_SEQ_SIZE_46(_) SK_SEQ_SIZE_47
|
||||
#define SK_SEQ_SIZE_47(_) SK_SEQ_SIZE_48
|
||||
#define SK_SEQ_SIZE_48(_) SK_SEQ_SIZE_49
|
||||
#define SK_SEQ_SIZE_49(_) SK_SEQ_SIZE_50
|
||||
#define SK_SEQ_SIZE_50(_) SK_SEQ_SIZE_51
|
||||
#define SK_SEQ_SIZE_51(_) SK_SEQ_SIZE_52
|
||||
#define SK_SEQ_SIZE_52(_) SK_SEQ_SIZE_53
|
||||
#define SK_SEQ_SIZE_53(_) SK_SEQ_SIZE_54
|
||||
#define SK_SEQ_SIZE_54(_) SK_SEQ_SIZE_55
|
||||
#define SK_SEQ_SIZE_55(_) SK_SEQ_SIZE_56
|
||||
#define SK_SEQ_SIZE_56(_) SK_SEQ_SIZE_57
|
||||
#define SK_SEQ_SIZE_57(_) SK_SEQ_SIZE_58
|
||||
#define SK_SEQ_SIZE_58(_) SK_SEQ_SIZE_59
|
||||
#define SK_SEQ_SIZE_59(_) SK_SEQ_SIZE_60
|
||||
#define SK_SEQ_SIZE_60(_) SK_SEQ_SIZE_61
|
||||
#define SK_SEQ_SIZE_61(_) SK_SEQ_SIZE_62
|
||||
#define SK_SEQ_SIZE_62(_) SK_SEQ_SIZE_63
|
||||
#define SK_SEQ_SIZE_63(_) SK_SEQ_SIZE_64
|
||||
#define SK_SEQ_SIZE_64(_) SK_SEQ_SIZE_65
|
||||
#define SK_SEQ_SIZE_65(_) SK_SEQ_SIZE_66
|
||||
#define SK_SEQ_SIZE_66(_) SK_SEQ_SIZE_67
|
||||
#define SK_SEQ_SIZE_67(_) SK_SEQ_SIZE_68
|
||||
#define SK_SEQ_SIZE_68(_) SK_SEQ_SIZE_69
|
||||
#define SK_SEQ_SIZE_69(_) SK_SEQ_SIZE_70
|
||||
#define SK_SEQ_SIZE_70(_) SK_SEQ_SIZE_71
|
||||
#define SK_SEQ_SIZE_71(_) SK_SEQ_SIZE_72
|
||||
#define SK_SEQ_SIZE_72(_) SK_SEQ_SIZE_73
|
||||
#define SK_SEQ_SIZE_73(_) SK_SEQ_SIZE_74
|
||||
#define SK_SEQ_SIZE_74(_) SK_SEQ_SIZE_75
|
||||
#define SK_SEQ_SIZE_75(_) SK_SEQ_SIZE_76
|
||||
#define SK_SEQ_SIZE_76(_) SK_SEQ_SIZE_77
|
||||
#define SK_SEQ_SIZE_77(_) SK_SEQ_SIZE_78
|
||||
#define SK_SEQ_SIZE_78(_) SK_SEQ_SIZE_79
|
||||
#define SK_SEQ_SIZE_79(_) SK_SEQ_SIZE_80
|
||||
#define SK_SEQ_SIZE_80(_) SK_SEQ_SIZE_81
|
||||
#define SK_SEQ_SIZE_81(_) SK_SEQ_SIZE_82
|
||||
#define SK_SEQ_SIZE_82(_) SK_SEQ_SIZE_83
|
||||
#define SK_SEQ_SIZE_83(_) SK_SEQ_SIZE_84
|
||||
#define SK_SEQ_SIZE_84(_) SK_SEQ_SIZE_85
|
||||
#define SK_SEQ_SIZE_85(_) SK_SEQ_SIZE_86
|
||||
#define SK_SEQ_SIZE_86(_) SK_SEQ_SIZE_87
|
||||
#define SK_SEQ_SIZE_87(_) SK_SEQ_SIZE_88
|
||||
#define SK_SEQ_SIZE_88(_) SK_SEQ_SIZE_89
|
||||
#define SK_SEQ_SIZE_89(_) SK_SEQ_SIZE_90
|
||||
#define SK_SEQ_SIZE_90(_) SK_SEQ_SIZE_91
|
||||
#define SK_SEQ_SIZE_91(_) SK_SEQ_SIZE_92
|
||||
#define SK_SEQ_SIZE_92(_) SK_SEQ_SIZE_93
|
||||
#define SK_SEQ_SIZE_93(_) SK_SEQ_SIZE_94
|
||||
#define SK_SEQ_SIZE_94(_) SK_SEQ_SIZE_95
|
||||
#define SK_SEQ_SIZE_95(_) SK_SEQ_SIZE_96
|
||||
#define SK_SEQ_SIZE_96(_) SK_SEQ_SIZE_97
|
||||
#define SK_SEQ_SIZE_97(_) SK_SEQ_SIZE_98
|
||||
#define SK_SEQ_SIZE_98(_) SK_SEQ_SIZE_99
|
||||
#define SK_SEQ_SIZE_99(_) SK_SEQ_SIZE_100
|
||||
#define SK_SEQ_SIZE_100(_) SK_SEQ_SIZE_101
|
||||
#define SK_SEQ_SIZE_101(_) SK_SEQ_SIZE_102
|
||||
#define SK_SEQ_SIZE_102(_) SK_SEQ_SIZE_103
|
||||
#define SK_SEQ_SIZE_103(_) SK_SEQ_SIZE_104
|
||||
#define SK_SEQ_SIZE_104(_) SK_SEQ_SIZE_105
|
||||
#define SK_SEQ_SIZE_105(_) SK_SEQ_SIZE_106
|
||||
#define SK_SEQ_SIZE_106(_) SK_SEQ_SIZE_107
|
||||
#define SK_SEQ_SIZE_107(_) SK_SEQ_SIZE_108
|
||||
#define SK_SEQ_SIZE_108(_) SK_SEQ_SIZE_109
|
||||
#define SK_SEQ_SIZE_109(_) SK_SEQ_SIZE_110
|
||||
#define SK_SEQ_SIZE_110(_) SK_SEQ_SIZE_111
|
||||
#define SK_SEQ_SIZE_111(_) SK_SEQ_SIZE_112
|
||||
#define SK_SEQ_SIZE_112(_) SK_SEQ_SIZE_113
|
||||
#define SK_SEQ_SIZE_113(_) SK_SEQ_SIZE_114
|
||||
#define SK_SEQ_SIZE_114(_) SK_SEQ_SIZE_115
|
||||
#define SK_SEQ_SIZE_115(_) SK_SEQ_SIZE_116
|
||||
#define SK_SEQ_SIZE_116(_) SK_SEQ_SIZE_117
|
||||
#define SK_SEQ_SIZE_117(_) SK_SEQ_SIZE_118
|
||||
#define SK_SEQ_SIZE_118(_) SK_SEQ_SIZE_119
|
||||
#define SK_SEQ_SIZE_119(_) SK_SEQ_SIZE_120
|
||||
#define SK_SEQ_SIZE_120(_) SK_SEQ_SIZE_121
|
||||
#define SK_SEQ_SIZE_121(_) SK_SEQ_SIZE_122
|
||||
#define SK_SEQ_SIZE_122(_) SK_SEQ_SIZE_123
|
||||
#define SK_SEQ_SIZE_123(_) SK_SEQ_SIZE_124
|
||||
#define SK_SEQ_SIZE_124(_) SK_SEQ_SIZE_125
|
||||
#define SK_SEQ_SIZE_125(_) SK_SEQ_SIZE_126
|
||||
#define SK_SEQ_SIZE_126(_) SK_SEQ_SIZE_127
|
||||
#define SK_SEQ_SIZE_127(_) SK_SEQ_SIZE_128
|
||||
#define SK_SEQ_SIZE_128(_) SK_SEQ_SIZE_129
|
||||
#define SK_SEQ_SIZE_129(_) SK_SEQ_SIZE_130
|
||||
#define SK_SEQ_SIZE_130(_) SK_SEQ_SIZE_131
|
||||
#define SK_SEQ_SIZE_131(_) SK_SEQ_SIZE_132
|
||||
#define SK_SEQ_SIZE_132(_) SK_SEQ_SIZE_133
|
||||
#define SK_SEQ_SIZE_133(_) SK_SEQ_SIZE_134
|
||||
#define SK_SEQ_SIZE_134(_) SK_SEQ_SIZE_135
|
||||
#define SK_SEQ_SIZE_135(_) SK_SEQ_SIZE_136
|
||||
#define SK_SEQ_SIZE_136(_) SK_SEQ_SIZE_137
|
||||
#define SK_SEQ_SIZE_137(_) SK_SEQ_SIZE_138
|
||||
#define SK_SEQ_SIZE_138(_) SK_SEQ_SIZE_139
|
||||
#define SK_SEQ_SIZE_139(_) SK_SEQ_SIZE_140
|
||||
#define SK_SEQ_SIZE_140(_) SK_SEQ_SIZE_141
|
||||
#define SK_SEQ_SIZE_141(_) SK_SEQ_SIZE_142
|
||||
#define SK_SEQ_SIZE_142(_) SK_SEQ_SIZE_143
|
||||
#define SK_SEQ_SIZE_143(_) SK_SEQ_SIZE_144
|
||||
#define SK_SEQ_SIZE_144(_) SK_SEQ_SIZE_145
|
||||
#define SK_SEQ_SIZE_145(_) SK_SEQ_SIZE_146
|
||||
#define SK_SEQ_SIZE_146(_) SK_SEQ_SIZE_147
|
||||
#define SK_SEQ_SIZE_147(_) SK_SEQ_SIZE_148
|
||||
#define SK_SEQ_SIZE_148(_) SK_SEQ_SIZE_149
|
||||
#define SK_SEQ_SIZE_149(_) SK_SEQ_SIZE_150
|
||||
#define SK_SEQ_SIZE_150(_) SK_SEQ_SIZE_151
|
||||
#define SK_SEQ_SIZE_151(_) SK_SEQ_SIZE_152
|
||||
#define SK_SEQ_SIZE_152(_) SK_SEQ_SIZE_153
|
||||
#define SK_SEQ_SIZE_153(_) SK_SEQ_SIZE_154
|
||||
#define SK_SEQ_SIZE_154(_) SK_SEQ_SIZE_155
|
||||
#define SK_SEQ_SIZE_155(_) SK_SEQ_SIZE_156
|
||||
#define SK_SEQ_SIZE_156(_) SK_SEQ_SIZE_157
|
||||
#define SK_SEQ_SIZE_157(_) SK_SEQ_SIZE_158
|
||||
#define SK_SEQ_SIZE_158(_) SK_SEQ_SIZE_159
|
||||
#define SK_SEQ_SIZE_159(_) SK_SEQ_SIZE_160
|
||||
#define SK_SEQ_SIZE_160(_) SK_SEQ_SIZE_161
|
||||
#define SK_SEQ_SIZE_161(_) SK_SEQ_SIZE_162
|
||||
#define SK_SEQ_SIZE_162(_) SK_SEQ_SIZE_163
|
||||
#define SK_SEQ_SIZE_163(_) SK_SEQ_SIZE_164
|
||||
#define SK_SEQ_SIZE_164(_) SK_SEQ_SIZE_165
|
||||
#define SK_SEQ_SIZE_165(_) SK_SEQ_SIZE_166
|
||||
#define SK_SEQ_SIZE_166(_) SK_SEQ_SIZE_167
|
||||
#define SK_SEQ_SIZE_167(_) SK_SEQ_SIZE_168
|
||||
#define SK_SEQ_SIZE_168(_) SK_SEQ_SIZE_169
|
||||
#define SK_SEQ_SIZE_169(_) SK_SEQ_SIZE_170
|
||||
#define SK_SEQ_SIZE_170(_) SK_SEQ_SIZE_171
|
||||
#define SK_SEQ_SIZE_171(_) SK_SEQ_SIZE_172
|
||||
#define SK_SEQ_SIZE_172(_) SK_SEQ_SIZE_173
|
||||
#define SK_SEQ_SIZE_173(_) SK_SEQ_SIZE_174
|
||||
#define SK_SEQ_SIZE_174(_) SK_SEQ_SIZE_175
|
||||
#define SK_SEQ_SIZE_175(_) SK_SEQ_SIZE_176
|
||||
#define SK_SEQ_SIZE_176(_) SK_SEQ_SIZE_177
|
||||
#define SK_SEQ_SIZE_177(_) SK_SEQ_SIZE_178
|
||||
#define SK_SEQ_SIZE_178(_) SK_SEQ_SIZE_179
|
||||
#define SK_SEQ_SIZE_179(_) SK_SEQ_SIZE_180
|
||||
#define SK_SEQ_SIZE_180(_) SK_SEQ_SIZE_181
|
||||
#define SK_SEQ_SIZE_181(_) SK_SEQ_SIZE_182
|
||||
#define SK_SEQ_SIZE_182(_) SK_SEQ_SIZE_183
|
||||
#define SK_SEQ_SIZE_183(_) SK_SEQ_SIZE_184
|
||||
#define SK_SEQ_SIZE_184(_) SK_SEQ_SIZE_185
|
||||
#define SK_SEQ_SIZE_185(_) SK_SEQ_SIZE_186
|
||||
#define SK_SEQ_SIZE_186(_) SK_SEQ_SIZE_187
|
||||
#define SK_SEQ_SIZE_187(_) SK_SEQ_SIZE_188
|
||||
#define SK_SEQ_SIZE_188(_) SK_SEQ_SIZE_189
|
||||
#define SK_SEQ_SIZE_189(_) SK_SEQ_SIZE_190
|
||||
#define SK_SEQ_SIZE_190(_) SK_SEQ_SIZE_191
|
||||
#define SK_SEQ_SIZE_191(_) SK_SEQ_SIZE_192
|
||||
#define SK_SEQ_SIZE_192(_) SK_SEQ_SIZE_193
|
||||
#define SK_SEQ_SIZE_193(_) SK_SEQ_SIZE_194
|
||||
#define SK_SEQ_SIZE_194(_) SK_SEQ_SIZE_195
|
||||
#define SK_SEQ_SIZE_195(_) SK_SEQ_SIZE_196
|
||||
#define SK_SEQ_SIZE_196(_) SK_SEQ_SIZE_197
|
||||
#define SK_SEQ_SIZE_197(_) SK_SEQ_SIZE_198
|
||||
#define SK_SEQ_SIZE_198(_) SK_SEQ_SIZE_199
|
||||
#define SK_SEQ_SIZE_199(_) SK_SEQ_SIZE_200
|
||||
#define SK_SEQ_SIZE_200(_) SK_SEQ_SIZE_201
|
||||
#define SK_SEQ_SIZE_201(_) SK_SEQ_SIZE_202
|
||||
#define SK_SEQ_SIZE_202(_) SK_SEQ_SIZE_203
|
||||
#define SK_SEQ_SIZE_203(_) SK_SEQ_SIZE_204
|
||||
#define SK_SEQ_SIZE_204(_) SK_SEQ_SIZE_205
|
||||
#define SK_SEQ_SIZE_205(_) SK_SEQ_SIZE_206
|
||||
#define SK_SEQ_SIZE_206(_) SK_SEQ_SIZE_207
|
||||
#define SK_SEQ_SIZE_207(_) SK_SEQ_SIZE_208
|
||||
#define SK_SEQ_SIZE_208(_) SK_SEQ_SIZE_209
|
||||
#define SK_SEQ_SIZE_209(_) SK_SEQ_SIZE_210
|
||||
#define SK_SEQ_SIZE_210(_) SK_SEQ_SIZE_211
|
||||
#define SK_SEQ_SIZE_211(_) SK_SEQ_SIZE_212
|
||||
#define SK_SEQ_SIZE_212(_) SK_SEQ_SIZE_213
|
||||
#define SK_SEQ_SIZE_213(_) SK_SEQ_SIZE_214
|
||||
#define SK_SEQ_SIZE_214(_) SK_SEQ_SIZE_215
|
||||
#define SK_SEQ_SIZE_215(_) SK_SEQ_SIZE_216
|
||||
#define SK_SEQ_SIZE_216(_) SK_SEQ_SIZE_217
|
||||
#define SK_SEQ_SIZE_217(_) SK_SEQ_SIZE_218
|
||||
#define SK_SEQ_SIZE_218(_) SK_SEQ_SIZE_219
|
||||
#define SK_SEQ_SIZE_219(_) SK_SEQ_SIZE_220
|
||||
#define SK_SEQ_SIZE_220(_) SK_SEQ_SIZE_221
|
||||
#define SK_SEQ_SIZE_221(_) SK_SEQ_SIZE_222
|
||||
#define SK_SEQ_SIZE_222(_) SK_SEQ_SIZE_223
|
||||
#define SK_SEQ_SIZE_223(_) SK_SEQ_SIZE_224
|
||||
#define SK_SEQ_SIZE_224(_) SK_SEQ_SIZE_225
|
||||
#define SK_SEQ_SIZE_225(_) SK_SEQ_SIZE_226
|
||||
#define SK_SEQ_SIZE_226(_) SK_SEQ_SIZE_227
|
||||
#define SK_SEQ_SIZE_227(_) SK_SEQ_SIZE_228
|
||||
#define SK_SEQ_SIZE_228(_) SK_SEQ_SIZE_229
|
||||
#define SK_SEQ_SIZE_229(_) SK_SEQ_SIZE_230
|
||||
#define SK_SEQ_SIZE_230(_) SK_SEQ_SIZE_231
|
||||
#define SK_SEQ_SIZE_231(_) SK_SEQ_SIZE_232
|
||||
#define SK_SEQ_SIZE_232(_) SK_SEQ_SIZE_233
|
||||
#define SK_SEQ_SIZE_233(_) SK_SEQ_SIZE_234
|
||||
#define SK_SEQ_SIZE_234(_) SK_SEQ_SIZE_235
|
||||
#define SK_SEQ_SIZE_235(_) SK_SEQ_SIZE_236
|
||||
#define SK_SEQ_SIZE_236(_) SK_SEQ_SIZE_237
|
||||
#define SK_SEQ_SIZE_237(_) SK_SEQ_SIZE_238
|
||||
#define SK_SEQ_SIZE_238(_) SK_SEQ_SIZE_239
|
||||
#define SK_SEQ_SIZE_239(_) SK_SEQ_SIZE_240
|
||||
#define SK_SEQ_SIZE_240(_) SK_SEQ_SIZE_241
|
||||
#define SK_SEQ_SIZE_241(_) SK_SEQ_SIZE_242
|
||||
#define SK_SEQ_SIZE_242(_) SK_SEQ_SIZE_243
|
||||
#define SK_SEQ_SIZE_243(_) SK_SEQ_SIZE_244
|
||||
#define SK_SEQ_SIZE_244(_) SK_SEQ_SIZE_245
|
||||
#define SK_SEQ_SIZE_245(_) SK_SEQ_SIZE_246
|
||||
#define SK_SEQ_SIZE_246(_) SK_SEQ_SIZE_247
|
||||
#define SK_SEQ_SIZE_247(_) SK_SEQ_SIZE_248
|
||||
#define SK_SEQ_SIZE_248(_) SK_SEQ_SIZE_249
|
||||
#define SK_SEQ_SIZE_249(_) SK_SEQ_SIZE_250
|
||||
#define SK_SEQ_SIZE_250(_) SK_SEQ_SIZE_251
|
||||
#define SK_SEQ_SIZE_251(_) SK_SEQ_SIZE_252
|
||||
#define SK_SEQ_SIZE_252(_) SK_SEQ_SIZE_253
|
||||
#define SK_SEQ_SIZE_253(_) SK_SEQ_SIZE_254
|
||||
#define SK_SEQ_SIZE_254(_) SK_SEQ_SIZE_255
|
||||
#define SK_SEQ_SIZE_255(_) SK_SEQ_SIZE_256
|
||||
|
||||
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_0 0
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_1 1
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_2 2
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_3 3
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_4 4
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_5 5
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_6 6
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_7 7
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_8 8
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_9 9
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_10 10
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_11 11
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_12 12
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_13 13
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_14 14
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_15 15
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_16 16
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_17 17
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_18 18
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_19 19
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_20 20
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_21 21
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_22 22
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_23 23
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_24 24
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_25 25
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_26 26
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_27 27
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_28 28
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_29 29
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_30 30
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_31 31
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_32 32
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_33 33
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_34 34
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_35 35
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_36 36
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_37 37
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_38 38
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_39 39
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_40 40
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_41 41
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_42 42
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_43 43
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_44 44
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_45 45
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_46 46
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_47 47
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_48 48
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_49 49
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_50 50
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_51 51
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_52 52
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_53 53
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_54 54
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_55 55
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_56 56
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_57 57
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_58 58
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_59 59
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_60 60
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_61 61
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_62 62
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_63 63
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_64 64
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_65 65
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_66 66
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_67 67
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_68 68
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_69 69
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_70 70
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_71 71
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_72 72
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_73 73
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_74 74
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_75 75
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_76 76
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_77 77
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_78 78
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_79 79
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_80 80
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_81 81
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_82 82
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_83 83
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_84 84
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_85 85
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_86 86
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_87 87
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_88 88
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_89 89
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_90 90
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_91 91
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_92 92
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_93 93
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_94 94
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_95 95
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_96 96
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_97 97
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_98 98
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_99 99
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_100 100
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_101 101
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_102 102
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_103 103
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_104 104
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_105 105
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_106 106
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_107 107
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_108 108
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_109 109
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_110 110
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_111 111
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_112 112
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_113 113
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_114 114
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_115 115
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_116 116
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_117 117
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_118 118
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_119 119
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_120 120
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_121 121
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_122 122
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_123 123
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_124 124
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_125 125
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_126 126
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_127 127
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_128 128
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_129 129
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_130 130
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_131 131
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_132 132
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_133 133
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_134 134
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_135 135
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_136 136
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_137 137
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_138 138
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_139 139
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_140 140
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_141 141
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_142 142
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_143 143
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_144 144
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_145 145
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_146 146
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_147 147
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_148 148
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_149 149
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_150 150
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_151 151
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_152 152
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_153 153
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_154 154
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_155 155
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_156 156
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_157 157
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_158 158
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_159 159
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_160 160
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_161 161
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_162 162
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_163 163
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_164 164
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_165 165
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_166 166
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_167 167
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_168 168
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_169 169
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_170 170
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_171 171
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_172 172
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_173 173
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_174 174
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_175 175
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_176 176
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_177 177
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_178 178
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_179 179
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_180 180
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_181 181
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_182 182
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_183 183
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_184 184
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_185 185
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_186 186
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_187 187
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_188 188
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_189 189
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_190 190
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_191 191
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_192 192
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_193 193
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_194 194
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_195 195
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_196 196
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_197 197
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_198 198
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_199 199
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_200 200
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_201 201
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_202 202
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_203 203
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_204 204
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_205 205
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_206 206
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_207 207
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_208 208
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_209 209
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_210 210
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_211 211
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_212 212
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_213 213
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_214 214
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_215 215
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_216 216
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_217 217
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_218 218
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_219 219
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_220 220
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_221 221
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_222 222
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_223 223
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_224 224
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_225 225
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_226 226
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_227 227
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_228 228
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_229 229
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_230 230
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_231 231
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_232 232
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_233 233
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_234 234
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_235 235
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_236 236
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_237 237
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_238 238
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_239 239
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_240 240
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_241 241
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_242 242
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_243 243
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_244 244
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_245 245
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_246 246
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_247 247
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_248 248
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_249 249
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_250 250
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_251 251
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_252 252
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_253 253
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_254 254
|
||||
#define SK_SEQ_SIZE_SK_SEQ_SIZE_255 255
|
||||
|
||||
|
||||
#define SK_SEQ_FOREACH(op, data, seq) SK_SEQ_FOREACH_L(op, op, data, seq)
|
||||
#define SK_SEQ_FOREACH_L(op, lop, data, seq) SK_CONCAT(SK_SEQ_FOREACH_, SK_SEQ_SIZE(seq)) (op, lop, data, SK_SEQ_HEAD(seq), SK_SEQ_TAIL(seq))
|
||||
|
||||
#define SK_SEQ_FOREACH_0(op,lop,d,x,t)
|
||||
#define SK_SEQ_FOREACH_1(op,lop,d,x,t) lop(d,x)
|
||||
#define SK_SEQ_FOREACH_2(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_1(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_3(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_2(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_4(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_3(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_5(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_4(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_6(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_5(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_7(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_6(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_8(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_7(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_9(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_8(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_10(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_9(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_11(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_10(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_12(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_11(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_13(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_12(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_14(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_13(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_15(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_14(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_16(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_15(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_17(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_16(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_18(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_17(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_19(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_18(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_20(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_19(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_21(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_20(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_22(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_21(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_23(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_22(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_24(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_23(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_25(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_24(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_26(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_25(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_27(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_26(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_28(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_27(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_29(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_28(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_30(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_29(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_31(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_30(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_32(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_31(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_33(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_32(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_34(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_33(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_35(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_34(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_36(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_35(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_37(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_36(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_38(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_37(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_39(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_38(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_40(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_39(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_41(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_40(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_42(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_41(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_43(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_42(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_44(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_43(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_45(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_44(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_46(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_45(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_47(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_46(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_48(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_47(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_49(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_48(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_50(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_49(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_51(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_50(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_52(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_51(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_53(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_52(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_54(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_53(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_55(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_54(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_56(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_55(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_57(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_56(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_58(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_57(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_59(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_58(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_60(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_59(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_61(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_60(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_62(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_61(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_63(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_62(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_64(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_63(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_65(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_64(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_66(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_65(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_67(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_66(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_68(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_67(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_69(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_68(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_70(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_69(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_71(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_70(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_72(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_71(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_73(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_72(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_74(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_73(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_75(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_74(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_76(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_75(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_77(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_76(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_78(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_77(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_79(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_78(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_80(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_79(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_81(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_80(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_82(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_81(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_83(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_82(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_84(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_83(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_85(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_84(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_86(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_85(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_87(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_86(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_88(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_87(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_89(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_88(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_90(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_89(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_91(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_90(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_92(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_91(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_93(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_92(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_94(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_93(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_95(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_94(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_96(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_95(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_97(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_96(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_98(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_97(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_99(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_98(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_100(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_99(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_101(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_100(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_102(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_101(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_103(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_102(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_104(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_103(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_105(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_104(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_106(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_105(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_107(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_106(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_108(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_107(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_109(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_108(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_110(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_109(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_111(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_110(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_112(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_111(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_113(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_112(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_114(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_113(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_115(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_114(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_116(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_115(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_117(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_116(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_118(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_117(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_119(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_118(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_120(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_119(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_121(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_120(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_122(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_121(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_123(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_122(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_124(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_123(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_125(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_124(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_126(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_125(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_127(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_126(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_128(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_127(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_129(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_128(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_130(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_129(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_131(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_130(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_132(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_131(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_133(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_132(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_134(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_133(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_135(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_134(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_136(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_135(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_137(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_136(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_138(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_137(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_139(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_138(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_140(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_139(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_141(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_140(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_142(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_141(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_143(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_142(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_144(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_143(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_145(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_144(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_146(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_145(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_147(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_146(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_148(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_147(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_149(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_148(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_150(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_149(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_151(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_150(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_152(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_151(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_153(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_152(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_154(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_153(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_155(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_154(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_156(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_155(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_157(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_156(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_158(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_157(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_159(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_158(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_160(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_159(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_161(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_160(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_162(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_161(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_163(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_162(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_164(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_163(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_165(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_164(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_166(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_165(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_167(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_166(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_168(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_167(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_169(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_168(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_170(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_169(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_171(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_170(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_172(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_171(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_173(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_172(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_174(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_173(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_175(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_174(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_176(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_175(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_177(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_176(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_178(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_177(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_179(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_178(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_180(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_179(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_181(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_180(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_182(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_181(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_183(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_182(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_184(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_183(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_185(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_184(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_186(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_185(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_187(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_186(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_188(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_187(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_189(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_188(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_190(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_189(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_191(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_190(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_192(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_191(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_193(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_192(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_194(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_193(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_195(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_194(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_196(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_195(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_197(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_196(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_198(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_197(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_199(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_198(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_200(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_199(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_201(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_200(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_202(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_201(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_203(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_202(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_204(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_203(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_205(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_204(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_206(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_205(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_207(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_206(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_208(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_207(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_209(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_208(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_210(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_209(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_211(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_210(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_212(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_211(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_213(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_212(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_214(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_213(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_215(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_214(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_216(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_215(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_217(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_216(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_218(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_217(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_219(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_218(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_220(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_219(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_221(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_220(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_222(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_221(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_223(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_222(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_224(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_223(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_225(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_224(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_226(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_225(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_227(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_226(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_228(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_227(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_229(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_228(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_230(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_229(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_231(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_230(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_232(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_231(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_233(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_232(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_234(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_233(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_235(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_234(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_236(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_235(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_237(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_236(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_238(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_237(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_239(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_238(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_240(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_239(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_241(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_240(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_242(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_241(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_243(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_242(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_244(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_243(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_245(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_244(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_246(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_245(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_247(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_246(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_248(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_247(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_249(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_248(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_250(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_249(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_251(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_250(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_252(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_251(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_253(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_252(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_254(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_253(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
#define SK_SEQ_FOREACH_255(op,lop,d,x,t) op(d,x) SK_SEQ_FOREACH_254(op, lop, d, SK_SEQ_HEAD(t), SK_SEQ_TAIL(t))
|
||||
|
||||
#define SK_SEQ_END (SK_NIL)
|
||||
|
||||
#endif
|
|
@ -0,0 +1,46 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkSFNTHeader_DEFINED
|
||||
#define SkSFNTHeader_DEFINED
|
||||
|
||||
#include "SkEndian.h"
|
||||
#include "SkOTTableTypes.h"
|
||||
|
||||
//All SK_SFNT_ prefixed types should be considered as big endian.
|
||||
typedef uint16_t SK_SFNT_USHORT;
|
||||
typedef uint32_t SK_SFNT_ULONG;
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
struct SkSFNTHeader {
|
||||
SK_SFNT_ULONG fontType;
|
||||
static const SK_OT_ULONG fontType_WindowsTrueType = SkTEndian_SwapBE32(0x00010000);
|
||||
static const SK_OT_ULONG fontType_MacTrueType = SkTEndian_SwapBE32('true');
|
||||
static const SK_OT_ULONG fontType_PostScript = SkTEndian_SwapBE32('typ1');
|
||||
static const SK_OT_ULONG fontType_OpenTypeCFF = SkTEndian_SwapBE32('OTTO');
|
||||
|
||||
SK_SFNT_USHORT numTables;
|
||||
SK_SFNT_USHORT searchRange;
|
||||
SK_SFNT_USHORT entrySelector;
|
||||
SK_SFNT_USHORT rangeShift;
|
||||
};
|
||||
|
||||
struct SkSFNTTableDirectoryEntry {
|
||||
SK_SFNT_ULONG tag;
|
||||
SK_SFNT_ULONG checksum;
|
||||
SK_SFNT_ULONG offset; //From beginning of header.
|
||||
SK_SFNT_ULONG logicalLength;
|
||||
};
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
SK_COMPILE_ASSERT(sizeof(SkSFNTHeader) == 12, sizeof_SkSFNTHeader_not_12);
|
||||
SK_COMPILE_ASSERT(sizeof(SkSFNTTableDirectoryEntry) == 16, sizeof_SkSFNTTableDirectoryEntry_not_16);
|
||||
|
||||
#endif
|
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* Copyright 2012 Google Inc.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license that can be
|
||||
* found in the LICENSE file.
|
||||
*/
|
||||
|
||||
#ifndef SkTypedEnum_DEFINED
|
||||
#define SkTypedEnum_DEFINED
|
||||
|
||||
#include "SkPreprocessorSeq.h"
|
||||
|
||||
//Compatibility with non-clang compilers.
|
||||
#ifndef __has_feature
|
||||
#define __has_feature(x) 0
|
||||
#endif
|
||||
#ifndef __has_extension
|
||||
#define __has_extension __has_feature
|
||||
#endif
|
||||
|
||||
//Detect if typed enums are supported.
|
||||
#if defined(_MSC_VER) && _MSC_VER >= 1400
|
||||
#define SK_TYPED_ENUMS
|
||||
|
||||
#elif defined(__clang__) && __has_extension(cxx_strong_enums)
|
||||
#define SK_TYPED_ENUMS
|
||||
|
||||
// Scoped enums are buggy in GCC 4.4.0 through 4.5.1.
|
||||
// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064
|
||||
// __cplusplus should actually be accurate now.
|
||||
// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=1773
|
||||
#elif defined(__GNUC__) && (((__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ >= 40501) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || __cplusplus >= 201103L)
|
||||
#define SK_TYPED_ENUMS
|
||||
#endif
|
||||
|
||||
//Define what a typed enum looks like.
|
||||
#ifdef SK_TYPED_ENUMS
|
||||
|
||||
#define SK_TYPED_ENUM_VALUES(data, elem) \
|
||||
SK_PAIR_FIRST(elem) = SK_PAIR_SECOND(elem),
|
||||
|
||||
#define SK_TYPED_ENUM_IDS(data, elem) \
|
||||
elem,
|
||||
|
||||
#define SK_TYPED_ENUM_IDS_L(data, elem) \
|
||||
elem
|
||||
|
||||
#define SK_TYPED_ENUM(enumName, enumType, enumSeq, idSeq) \
|
||||
enum enumName : enumType { \
|
||||
SK_SEQ_FOREACH(SK_TYPED_ENUM_VALUES, _, enumSeq) \
|
||||
} SK_SEQ_FOREACH_L(SK_TYPED_ENUM_IDS, SK_TYPED_ENUM_IDS_L, _, idSeq);
|
||||
|
||||
#else
|
||||
|
||||
#define SK_TYPED_ENUM_VALUES(enumType, elem) \
|
||||
static const enumType SK_PAIR_FIRST(elem) = SK_PAIR_SECOND(elem);
|
||||
|
||||
#define SK_TYPED_ENUM_IDS(enumType, elem) \
|
||||
enumType elem;
|
||||
|
||||
#define SK_TYPED_ENUM(enumName, enumType, enumSeq, idSeq) \
|
||||
typedef enumType enumName; \
|
||||
SK_SEQ_FOREACH(SK_TYPED_ENUM_VALUES, enumType, enumSeq) \
|
||||
SK_SEQ_FOREACH(SK_TYPED_ENUM_IDS, enumType, idSeq)
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
|
@ -50,6 +50,8 @@ cp $1/src/ports/*.h ./src/ports/
|
|||
cp $1/src/ports/*.cpp ./src/ports/
|
||||
cp $1/src/svg/*.cpp ./src/svg/
|
||||
cp $1/src/svg/*.h ./src/svg/
|
||||
cp $1/src/sfnt/*.cpp ./src/sfnt/
|
||||
cp $1/src/sfnt/*.h ./src/sfnt/
|
||||
cp $1/src/text/*.cpp ./src/text/
|
||||
cp $1/src/utils/mac/SampleApp-Info.plist ./src/utils/mac/
|
||||
cp $1/src/utils/mac/SampleApp.xib ./src/utils/mac/
|
||||
|
|
|
@ -115,7 +115,7 @@ endif
|
|||
|
||||
ifeq (WINNT,$(OS_TARGET))
|
||||
EXTRA_DSO_LDOPTS = $(MOZALLOC_LIB) $(NSPR_LIBS)
|
||||
OS_LIBS += $(call EXPAND_LIBNAME,usp10)
|
||||
OS_LIBS += $(call EXPAND_LIBNAME,usp10 ole32)
|
||||
|
||||
# OTS uses uncompress2() from libz, so we need to link with this
|
||||
ifdef MOZ_NATIVE_ZLIB
|
||||
|
|
Загрузка…
Ссылка в новой задаче