hl2_src-leak-2017/src/common/quicktime_win32/GXTypes.h

1888 lines
63 KiB
C++

/*
File: GXTypes.h
Contains: QuickDraw GX object and constant definitions
Version: Technology: Quickdraw GX 1.1
Release: QuickTime 7.3
Copyright: (c) 2007 (c) 1994-1999 by Apple Computer, Inc., all rights reserved.
Bugs?: For bug reports, consult the following page on
the World Wide Web:
http://developer.apple.com/bugreporter/
*/
#ifndef __GXTYPES__
#define __GXTYPES__
#ifndef __MACTYPES__
#include <MacTypes.h>
#endif
#ifndef __MIXEDMODE__
#include <MixedMode.h>
#endif
#ifndef __FIXMATH__
#include <FixMath.h>
#endif
#ifndef __GXMATH__
#include <GXMath.h>
#endif
#ifndef __IMAGECODEC__
#include <ImageCodec.h>
#endif
#if PRAGMA_ONCE
#pragma once
#endif
#ifdef __cplusplus
extern "C" {
#endif
#if PRAGMA_IMPORT
#pragma import on
#endif
#if PRAGMA_STRUCT_ALIGN
#pragma options align=mac68k
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(push, 2)
#elif PRAGMA_STRUCT_PACK
#pragma pack(2)
#endif
typedef struct OpaquegxShape* gxShape;
typedef struct OpaquegxStyle* gxStyle;
typedef struct OpaquegxInk* gxInk;
typedef struct OpaquegxTransform* gxTransform;
typedef struct OpaquegxTag* gxTag;
typedef struct OpaquegxColorSet* gxColorSet;
typedef struct OpaquegxColorProfile* gxColorProfile;
typedef struct OpaquegxGraphicsClient* gxGraphicsClient;
typedef struct OpaquegxViewGroup* gxViewGroup;
typedef struct OpaquegxViewPort* gxViewPort;
typedef struct OpaquegxViewDevice* gxViewDevice;
typedef long gxColorSpace;
/* gxShape enumerations */
enum {
gxEmptyType = 1,
gxPointType = 2,
gxLineType = 3,
gxCurveType = 4,
gxRectangleType = 5,
gxPolygonType = 6,
gxPathType = 7,
gxBitmapType = 8,
gxTextType = 9,
gxGlyphType = 10,
gxLayoutType = 11,
gxFullType = 12,
gxPictureType = 13
};
typedef long gxShapeType;
enum {
gxNoFill = 0,
gxOpenFrameFill = 1,
gxFrameFill = gxOpenFrameFill,
gxClosedFrameFill = 2,
gxHollowFill = gxClosedFrameFill,
gxEvenOddFill = 3,
gxSolidFill = gxEvenOddFill,
gxWindingFill = 4,
gxInverseEvenOddFill = 5,
gxInverseSolidFill = gxInverseEvenOddFill,
gxInverseFill = gxInverseEvenOddFill,
gxInverseWindingFill = 6
};
typedef long gxShapeFill;
enum {
gxNoAttributes = 0,
gxDirectShape = 0x0001,
gxRemoteShape = 0x0002,
gxCachedShape = 0x0004,
gxLockedShape = 0x0008,
gxGroupShape = 0x0010,
gxMapTransformShape = 0x0020,
gxUniqueItemsShape = 0x0040,
gxIgnorePlatformShape = 0x0080,
gxNoMetricsGridShape = 0x0100,
gxDiskShape = 0x0200,
gxMemoryShape = 0x0400
};
typedef long gxShapeAttribute;
/* gxShape editing enumerations */
enum {
gxBreakNeitherEdit = 0,
gxBreakLeftEdit = 0x0001,
gxBreakRightEdit = 0x0002,
gxRemoveDuplicatePointsEdit = 0x0004
};
/* if the new first (or last) point exactly matches the point before it in */
/* the same contour, then remove it) */
typedef long gxEditShapeFlag;
enum {
gxSelectToEnd = -1
};
#define gxSetToNil (void *)(-1)
#define gxAnyNumber 1
enum {
gxCounterclockwiseDirection = 0,
gxClockwiseDirection = 1
};
typedef long gxContourDirection;
/* gxShape structures */
/* The type 'gxPoint' is defined in "GXMath.h" */
struct gxLine {
gxPoint first;
gxPoint last;
};
typedef struct gxLine gxLine;
struct gxCurve {
gxPoint first;
gxPoint control;
gxPoint last;
};
typedef struct gxCurve gxCurve;
struct gxRectangle {
Fixed left;
Fixed top;
Fixed right;
Fixed bottom;
};
typedef struct gxRectangle gxRectangle;
struct gxPolygon {
long vectors;
gxPoint vector[1];
};
typedef struct gxPolygon gxPolygon;
struct gxPolygons {
long contours;
gxPolygon contour[1];
};
typedef struct gxPolygons gxPolygons;
/* Now defined in ImageCodec.i*/
#if 0
struct gxPath {
long vectors;
long controlBits[1];
gxPoint vector[1];
};
typedef struct gxPath gxPath;
struct gxPaths {
long contours;
gxPath contour[1];
};
typedef struct gxPaths gxPaths;
#endif /* 0 */
struct gxBitmap {
char *image; /* pointer to pixels */
long width; /* width in pixels */
long height; /* height in pixels */
long rowBytes; /* width in bytes */
long pixelSize; /* physical bits per pixel */
gxColorSpace space;
gxColorSet set;
gxColorProfile profile;
};
typedef struct gxBitmap gxBitmap;
struct gxLongRectangle {
long left;
long top;
long right;
long bottom;
};
typedef struct gxLongRectangle gxLongRectangle;
/* gxStyle enumerations */
enum {
gxCenterFrameStyle = 0,
gxSourceGridStyle = 0x0001,
gxDeviceGridStyle = 0x0002,
gxInsideFrameStyle = 0x0004,
gxOutsideFrameStyle = 0x0008,
gxAutoInsetStyle = 0x0010
};
typedef long gxStyleAttribute;
enum {
gxBendDash = 0x0001,
gxBreakDash = 0x0002,
gxClipDash = 0x0004,
gxLevelDash = 0x0008,
gxAutoAdvanceDash = 0x0010
};
typedef long gxDashAttribute;
enum {
gxPortAlignPattern = 0x0001,
gxPortMapPattern = 0x0002
};
typedef long gxPatternAttribute;
enum {
gxSharpJoin = 0x0000,
gxCurveJoin = 0x0001,
gxLevelJoin = 0x0002,
gxSnapJoin = 0x0004
};
typedef long gxJoinAttribute;
enum {
gxLevelStartCap = 0x0001,
gxLevelEndCap = 0x0002
};
typedef long gxCapAttribute;
enum {
gxAutoAdvanceText = 0x0001,
gxNoContourGridText = 0x0002,
gxNoMetricsGridText = 0x0004,
gxAnchorPointsText = 0x0008,
gxVerticalText = 0x0010,
gxNoOpticalScaleText = 0x0020
};
typedef long gxTextAttribute;
enum {
gxLeftJustify = 0,
gxCenterJustify = fract1 / 2,
gxRightJustify = fract1,
gxFillJustify = -1
};
enum {
gxUnderlineAdvanceLayer = 0x0001, /* a gxLine is drawn through the advances */
gxSkipWhiteSpaceLayer = 0x0002, /* except characters describing white space */
gxUnderlineIntervalLayer = 0x0004, /* (+ gxStringLayer) a gxLine is drawn through the gaps between advances */
gxUnderlineContinuationLayer = 0x0008, /* (+ gxStringLayer) join this underline with another face */
gxWhiteLayer = 0x0010, /* the layer draws to white instead of black */
gxClipLayer = 0x0020, /* the characters define a clip */
gxStringLayer = 0x0040 /* all characters in run are combined */
};
typedef long gxLayerFlag;
/* gxStyle structures */
struct gxFaceLayer {
gxShapeFill outlineFill; /* outline framed or filled */
gxLayerFlag flags; /* various additional effects */
gxStyle outlineStyle; /* outline */
gxTransform outlineTransform; /* italic, condense, extend */
gxPoint boldOutset; /* bold */
};
typedef struct gxFaceLayer gxFaceLayer;
struct gxTextFace {
long faceLayers; /* layer to implement shadow */
gxMapping advanceMapping; /* algorithmic change to advance width */
gxFaceLayer faceLayer[1]; /* zero or more face layers describing the face */
};
typedef struct gxTextFace gxTextFace;
struct gxJoinRecord {
gxJoinAttribute attributes;
gxShape join;
Fixed miter;
};
typedef struct gxJoinRecord gxJoinRecord;
struct gxDashRecord {
gxDashAttribute attributes;
gxShape dash; /* similar to pattern, except rotated to gxLine slope */
Fixed advance; /* specifies repeating frequency of dash */
Fract phase; /* specifies offset into the gxPath to start dashing */
Fixed scale; /* specifies height of dash to be mapped to penWidth */
};
typedef struct gxDashRecord gxDashRecord;
struct gxPatternRecord {
gxPatternAttribute attributes;
gxShape pattern;
gxPoint u;
gxPoint v;
};
typedef struct gxPatternRecord gxPatternRecord;
struct gxCapRecord {
gxCapAttribute attributes;
gxShape startCap;
gxShape endCap;
};
typedef struct gxCapRecord gxCapRecord;
/* gxInk enumerations */
enum {
gxPortAlignDitherInk = 0x0001,
gxForceDitherInk = 0x0002,
gxSuppressDitherInk = 0x0004,
gxSuppressHalftoneInk = 0x0008
};
typedef long gxInkAttribute;
enum {
gxNoMode = 0,
gxCopyMode = 1,
gxAddMode = 2,
gxBlendMode = 3,
gxMigrateMode = 4,
gxMinimumMode = 5,
gxMaximumMode = 6,
gxHighlightMode = 7,
gxAndMode = 8,
gxOrMode = 9,
gxXorMode = 10,
gxRampAndMode = 11,
gxRampOrMode = 12,
gxRampXorMode = 13,
gxOverMode = 14, /* Alpha channel modes */
gxAtopMode = 15, /* Note: In England = Beta channel modes */
gxExcludeMode = 16,
gxFadeMode = 17
};
typedef unsigned char gxComponentMode;
enum {
gxRejectSourceTransfer = 0x0001, /* at least one component must be out of range */
gxRejectDeviceTransfer = 0x0002, /* at least one component must be out of range */
gxSingleComponentTransfer = 0x0004 /* duplicate gxTransferComponent[0] for all components in transfer */
};
typedef long gxTransferFlag;
enum {
gxOverResultComponent = 0x01, /* & result gxColor with 0xFFFF before clamping */
gxReverseComponent = 0x02 /* reverse source and device before moding */
};
typedef unsigned char gxComponentFlag;
/* gxInk structures */
struct gxTransferComponent {
gxComponentMode mode; /* how the component is operated upon */
gxComponentFlag flags; /* flags for each component */
gxColorValue sourceMinimum;
gxColorValue sourceMaximum; /* input filter range */
gxColorValue deviceMinimum;
gxColorValue deviceMaximum; /* output filter range */
gxColorValue clampMinimum;
gxColorValue clampMaximum; /* output clamping range */
gxColorValue operand; /* ratio for blend, step for migrate, gxColor for highlight */
};
typedef struct gxTransferComponent gxTransferComponent;
struct gxTransferMode {
gxColorSpace space; /* the gxColor-space the transfer mode is to operate in */
gxColorSet set;
gxColorProfile profile;
Fixed sourceMatrix[5][4];
Fixed deviceMatrix[5][4];
Fixed resultMatrix[5][4];
gxTransferFlag flags;
gxTransferComponent component[4]; /* how each component is operated upon */
};
typedef struct gxTransferMode gxTransferMode;
/* gxColor space enumerations */
enum {
gxNoColorPacking = 0x0000, /* 16 bits per channel */
gxAlphaSpace = 0x0080, /* space includes alpha channel */
gxWord5ColorPacking = 0x0500, /* 5 bits per channel, right-justified */
gxLong8ColorPacking = 0x0800, /* 8 bits per channel, right-justified */
gxLong10ColorPacking = 0x0A00, /* 10 bits per channel, right-justified */
gxAlphaFirstPacking = 0x1000 /* alpha channel is the first field in the packed space */
};
enum {
gxNoSpace = 0,
gxRGBSpace = 1,
gxCMYKSpace = 2,
gxHSVSpace = 3,
gxHLSSpace = 4,
gxYXYSpace = 5,
gxXYZSpace = 6,
gxLUVSpace = 7,
gxLABSpace = 8,
gxYIQSpace = 9,
gxNTSCSpace = gxYIQSpace,
gxPALSpace = gxYIQSpace,
gxGraySpace = 10,
gxIndexedSpace = 11,
gxRGBASpace = gxRGBSpace + gxAlphaSpace,
gxGrayASpace = gxGraySpace + gxAlphaSpace,
gxRGB16Space = gxWord5ColorPacking + gxRGBSpace,
gxRGB32Space = gxLong8ColorPacking + gxRGBSpace,
gxARGB32Space = gxLong8ColorPacking + gxAlphaFirstPacking + gxRGBASpace,
gxCMYK32Space = gxLong8ColorPacking + gxCMYKSpace,
gxHSV32Space = gxLong10ColorPacking + gxHSVSpace,
gxHLS32Space = gxLong10ColorPacking + gxHLSSpace,
gxYXY32Space = gxLong10ColorPacking + gxYXYSpace,
gxXYZ32Space = gxLong10ColorPacking + gxXYZSpace,
gxLUV32Space = gxLong10ColorPacking + gxLUVSpace,
gxLAB32Space = gxLong10ColorPacking + gxLABSpace,
gxYIQ32Space = gxLong10ColorPacking + gxYIQSpace,
gxNTSC32Space = gxYIQ32Space,
gxPAL32Space = gxYIQ32Space
};
/* gxColor space structures */
struct gxRGBColor {
gxColorValue red;
gxColorValue green;
gxColorValue blue;
};
typedef struct gxRGBColor gxRGBColor;
struct gxRGBAColor {
gxColorValue red;
gxColorValue green;
gxColorValue blue;
gxColorValue alpha;
};
typedef struct gxRGBAColor gxRGBAColor;
struct gxHSVColor {
gxColorValue hue;
gxColorValue saturation;
gxColorValue value;
};
typedef struct gxHSVColor gxHSVColor;
struct gxHLSColor {
gxColorValue hue;
gxColorValue lightness;
gxColorValue saturation;
};
typedef struct gxHLSColor gxHLSColor;
struct gxCMYKColor {
gxColorValue cyan;
gxColorValue magenta;
gxColorValue yellow;
gxColorValue black;
};
typedef struct gxCMYKColor gxCMYKColor;
struct gxXYZColor {
gxColorValue x;
gxColorValue y;
gxColorValue z;
};
typedef struct gxXYZColor gxXYZColor;
struct gxYXYColor {
gxColorValue capY;
gxColorValue x;
gxColorValue y;
};
typedef struct gxYXYColor gxYXYColor;
struct gxLUVColor {
gxColorValue l;
gxColorValue u;
gxColorValue v;
};
typedef struct gxLUVColor gxLUVColor;
struct gxLABColor {
gxColorValue l;
gxColorValue a;
gxColorValue b;
};
typedef struct gxLABColor gxLABColor;
struct gxYIQColor {
gxColorValue y;
gxColorValue i;
gxColorValue q;
};
typedef struct gxYIQColor gxYIQColor;
struct gxGrayAColor {
gxColorValue gray;
gxColorValue alpha;
};
typedef struct gxGrayAColor gxGrayAColor;
typedef long gxColorIndex;
struct gxIndexedColor {
gxColorIndex index;
gxColorSet set;
};
typedef struct gxIndexedColor gxIndexedColor;
struct gxColor {
gxColorSpace space;
gxColorProfile profile;
union {
gxCMYKColor cmyk;
gxRGBColor rgb;
gxRGBAColor rgba;
gxHSVColor hsv;
gxHLSColor hls;
gxXYZColor xyz;
gxYXYColor yxy;
gxLUVColor luv;
gxLABColor lab;
gxYIQColor yiq;
gxColorValue gray;
gxGrayAColor graya;
unsigned short pixel16;
unsigned long pixel32;
gxIndexedColor indexed;
gxColorValue component[4];
} element;
};
typedef struct gxColor gxColor;
/* gxColorSet structures */
union gxSetColor {
gxCMYKColor cmyk;
gxRGBColor rgb;
gxRGBAColor rgba;
gxHSVColor hsv;
gxHLSColor hls;
gxXYZColor xyz;
gxYXYColor yxy;
gxLUVColor luv;
gxLABColor lab;
gxYIQColor yiq;
gxColorValue gray;
gxGrayAColor graya;
unsigned short pixel16;
unsigned long pixel32;
gxColorValue component[4];
};
typedef union gxSetColor gxSetColor;
/* gxTransform enumerations */
/* parts of a gxShape considered in hit testing: */
enum {
gxNoPart = 0, /* (in order of evaluation) */
gxBoundsPart = 0x0001,
gxGeometryPart = 0x0002,
gxPenPart = 0x0004,
gxCornerPointPart = 0x0008,
gxControlPointPart = 0x0010,
gxEdgePart = 0x0020,
gxJoinPart = 0x0040,
gxStartCapPart = 0x0080,
gxEndCapPart = 0x0100,
gxDashPart = 0x0200,
gxPatternPart = 0x0400,
gxGlyphBoundsPart = gxJoinPart,
gxGlyphFirstPart = gxStartCapPart,
gxGlyphLastPart = gxEndCapPart,
gxSideBearingPart = gxDashPart,
gxAnyPart = gxBoundsPart | gxGeometryPart | gxPenPart | gxCornerPointPart | gxControlPointPart | gxEdgePart | gxJoinPart | gxStartCapPart | gxEndCapPart | gxDashPart | gxPatternPart
};
typedef long gxShapePart;
/* gxTransform structures */
struct gxHitTestInfo {
gxShapePart what; /* which part of gxShape */
long index; /* control gxPoint index */
Fixed distance; /* how far from gxPoint or outside of area click was */
/* these fields are only set by GXHitTestPicture */
gxShape which;
gxShape containerPicture; /* picture which contains gxShape hit */
long containerIndex; /* the index within that picture */
long totalIndex; /* the total index within the root picture */
};
typedef struct gxHitTestInfo gxHitTestInfo;
/* gxViewPort enumerations */
enum {
gxGrayPort = 0x0001,
gxAlwaysGridPort = 0x0002,
gxEnableMatchPort = 0x0004
};
typedef long gxPortAttribute;
/* gxViewDevice enumerations */
enum {
gxDirectDevice = 0x01, /* for the device gxBitmap baseAddr pointer */
gxRemoteDevice = 0x02,
gxInactiveDevice = 0x04
};
typedef long gxDeviceAttribute;
enum {
gxRoundDot = 1,
gxSpiralDot = 2,
gxSquareDot = 3,
gxLineDot = 4,
gxEllipticDot = 5,
gxTriangleDot = 6,
gxDispersedDot = 7,
gxCustomDot = 8
};
typedef long gxDotType;
/* gxViewPort structures */
enum {
gxNoTint = 0,
gxLuminanceTint = 1, /* use the luminance of the gxColor */
gxAverageTint = 2, /* add all the components and divide by the number of components */
gxMixtureTint = 3, /* find the closest gxColor on the axis between the foreground and background */
gxComponent1Tint = 4, /* use the value of the first component of the gxColor */
gxComponent2Tint = 5, /* ... etc. */
gxComponent3Tint = 6,
gxComponent4Tint = 7
};
typedef long gxTintType;
struct gxHalftone {
Fixed angle;
Fixed frequency;
gxDotType method;
gxTintType tinting;
gxColor dotColor;
gxColor backgroundColor;
gxColorSpace tintSpace;
};
typedef struct gxHalftone gxHalftone;
struct gxHalftoneMatrix {
Fixed dpiX; /* intended resolution */
Fixed dpiY;
long width; /* width of matrix (in device pixels) */
long height; /* height of matrix (in device pixels) */
long tileShift; /* shift amount (in samples) for rectangular tiling */
unsigned short samples[1]; /* samples from 0..MAX(halftone tintSpace) */
};
typedef struct gxHalftoneMatrix gxHalftoneMatrix;
/* gxViewGroup enumerations */
#define gxAllViewDevices ((gxViewGroup) 0)
#define gxScreenViewDevices ((gxViewGroup) 1)
/* graphics stream constants and structures */
enum {
gxOpenReadSpool = 1,
gxOpenWriteSpool = 2,
gxReadSpool = 3,
gxWriteSpool = 4,
gxCloseSpool = 5
};
typedef long gxSpoolCommand;
typedef unsigned char gxGraphicsOpcode;
typedef struct gxSpoolBlock gxSpoolBlock;
typedef CALLBACK_API_C( long , gxSpoolProcPtr )(gxSpoolCommand command, gxSpoolBlock *block);
typedef STACK_UPP_TYPE(gxSpoolProcPtr) gxSpoolUPP;
struct gxSpoolBlock {
gxSpoolUPP spoolProcedure; /* these fields are read only */
void * buffer; /* source/destination pointer to data */
long bufferSize; /* how many bytes for the system to read (flatten) / write (unflatten) */
/* these fields are written to (but are not read from) */
long count; /* how many bytes for the caller to read (unflatten) /write (flatten) */
long operationSize; /* operation size (including operand byte) */
long operationOffset; /* the data offset, if any, within the current operation */
gxGraphicsOpcode lastTypeOpcode; /* type of last created object */
gxGraphicsOpcode currentOperation; /* operation emitted by flatten, or intrepreted by last unflatten */
gxGraphicsOpcode currentOperand; /* e.g., gxTransformTypeOpcode, gxInkTagOpcode */
unsigned char compressed; /* one of: gxTwoBitCompressionValues */
};
#if CALL_NOT_IN_CARBON
/*
* NewgxSpoolUPP()
*
* Availability:
* Non-Carbon CFM: available as macro/inline
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( gxSpoolUPP )
NewgxSpoolUPP(gxSpoolProcPtr userRoutine);
#if !OPAQUE_UPP_TYPES
enum { uppgxSpoolProcInfo = 0x000003F1 }; /* 4_bytes Func(4_bytes, 4_bytes) */
#ifdef __cplusplus
inline DEFINE_API_C(gxSpoolUPP) NewgxSpoolUPP(gxSpoolProcPtr userRoutine) { return (gxSpoolUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppgxSpoolProcInfo, GetCurrentArchitecture()); }
#else
#define NewgxSpoolUPP(userRoutine) (gxSpoolUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppgxSpoolProcInfo, GetCurrentArchitecture())
#endif
#endif
/*
* DisposegxSpoolUPP()
*
* Availability:
* Non-Carbon CFM: available as macro/inline
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( void )
DisposegxSpoolUPP(gxSpoolUPP userUPP);
#if !OPAQUE_UPP_TYPES
#ifdef __cplusplus
inline DEFINE_API_C(void) DisposegxSpoolUPP(gxSpoolUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
#else
#define DisposegxSpoolUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#endif
#endif
/*
* InvokegxSpoolUPP()
*
* Availability:
* Non-Carbon CFM: available as macro/inline
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( long )
InvokegxSpoolUPP(
gxSpoolCommand command,
gxSpoolBlock * block,
gxSpoolUPP userUPP);
#if !OPAQUE_UPP_TYPES
#ifdef __cplusplus
inline DEFINE_API_C(long) InvokegxSpoolUPP(gxSpoolCommand command, gxSpoolBlock * block, gxSpoolUPP userUPP) { return (long)CALL_TWO_PARAMETER_UPP(userUPP, uppgxSpoolProcInfo, command, block); }
#else
#define InvokegxSpoolUPP(command, block, userUPP) (long)CALL_TWO_PARAMETER_UPP((userUPP), uppgxSpoolProcInfo, (command), (block))
#endif
#endif
#endif /* CALL_NOT_IN_CARBON */
#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
/* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
#define NewgxSpoolProc(userRoutine) NewgxSpoolUPP(userRoutine)
#define CallgxSpoolProc(userRoutine, command, block) InvokegxSpoolUPP(command, block, userRoutine)
#endif /* CALL_NOT_IN_CARBON */
enum {
gxFontListFlatten = 0x01, /* if set, generate a gxTag containing list of each gxFont referenced */
gxFontGlyphsFlatten = 0x02, /* if set, generate a gxTag containing the list of glyphs referenced inside the gxFont */
gxFontVariationsFlatten = 0x04, /* if set, append the gxTag with separate [variation] coordinates */
gxBitmapAliasFlatten = 0x08 /* if set, open bitmap alias files and flatten out their image data */
};
typedef long gxFlattenFlag;
/* gxGraphicsClient constants */
#define gxGraphicsSystemClient (gxGraphicsClient)(-1)
enum {
gxStaticHeapClient = 0x0001
};
typedef long gxClientAttribute;
/* graphics patching constants */
enum {
gxOriginalGraphicsFunction = -1,
gxOriginalGraphicsIdentifier = FOUR_CHAR_CODE('grfx')
};
struct gxBitmapDataSourceAlias {
unsigned long fileOffset; /* file offset (in bytes) of top-left pixel */
unsigned long aliasRecordSize; /* size of alias record below */
unsigned char aliasRecord[1]; /* the actual alias record data */
};
typedef struct gxBitmapDataSourceAlias gxBitmapDataSourceAlias;
enum {
gxBitmapFileAliasTagType = FOUR_CHAR_CODE('bfil'),
gxPICTFileAliasTagType = FOUR_CHAR_CODE('pict'),
gxBitmapFileAliasImageValue = 1L
};
typedef struct OpaquegxFont* gxFont;
enum {
gxNoPlatform = 0,
gxNoScript = 0,
gxNoLanguage = 0,
gxNoFontName = 0,
gxGlyphPlatform = -1
};
enum {
gxUnicodePlatform = 1,
gxMacintoshPlatform = 2,
gxReservedPlatform = 3,
gxMicrosoftPlatform = 4,
gxCustomPlatform = 5
};
typedef long gxFontPlatform;
enum {
gxUnicodeDefaultSemantics = 1,
gxUnicodeV1_1Semantics = 2,
gxISO10646_1993Semantics = 3
};
enum {
gxRomanScript = 1,
gxJapaneseScript = 2,
gxTraditionalChineseScript = 3,
gxChineseScript = gxTraditionalChineseScript,
gxKoreanScript = 4,
gxArabicScript = 5,
gxHebrewScript = 6,
gxGreekScript = 7,
gxCyrillicScript = 8,
gxRussian = gxCyrillicScript,
gxRSymbolScript = 9,
gxDevanagariScript = 10,
gxGurmukhiScript = 11,
gxGujaratiScript = 12,
gxOriyaScript = 13,
gxBengaliScript = 14,
gxTamilScript = 15,
gxTeluguScript = 16,
gxKannadaScript = 17,
gxMalayalamScript = 18,
gxSinhaleseScript = 19,
gxBurmeseScript = 20,
gxKhmerScript = 21,
gxThaiScript = 22,
gxLaotianScript = 23,
gxGeorgianScript = 24,
gxArmenianScript = 25,
gxSimpleChineseScript = 26,
gxTibetanScript = 27,
gxMongolianScript = 28,
gxGeezScript = 29,
gxEthiopicScript = gxGeezScript,
gxAmharicScript = gxGeezScript,
gxSlavicScript = 30,
gxEastEuropeanRomanScript = gxSlavicScript,
gxVietnameseScript = 31,
gxExtendedArabicScript = 32,
gxSindhiScript = gxExtendedArabicScript,
gxUninterpretedScript = 33
};
enum {
gxMicrosoftSymbolScript = 1,
gxMicrosoftStandardScript = 2
};
enum {
gxCustom8BitScript = 1,
gxCustom816BitScript = 2,
gxCustom16BitScript = 3
};
typedef long gxFontScript;
enum {
gxEnglishLanguage = 1,
gxFrenchLanguage = 2,
gxGermanLanguage = 3,
gxItalianLanguage = 4,
gxDutchLanguage = 5,
gxSwedishLanguage = 6,
gxSpanishLanguage = 7,
gxDanishLanguage = 8,
gxPortugueseLanguage = 9,
gxNorwegianLanguage = 10,
gxHebrewLanguage = 11,
gxJapaneseLanguage = 12,
gxArabicLanguage = 13,
gxFinnishLanguage = 14,
gxGreekLanguage = 15,
gxIcelandicLanguage = 16,
gxMalteseLanguage = 17,
gxTurkishLanguage = 18,
gxCroatianLanguage = 19,
gxTradChineseLanguage = 20,
gxUrduLanguage = 21,
gxHindiLanguage = 22,
gxThaiLanguage = 23,
gxKoreanLanguage = 24,
gxLithuanianLanguage = 25,
gxPolishLanguage = 26,
gxHungarianLanguage = 27,
gxEstonianLanguage = 28,
gxLettishLanguage = 29,
gxLatvianLanguage = gxLettishLanguage,
gxSaamiskLanguage = 30,
gxLappishLanguage = gxSaamiskLanguage,
gxFaeroeseLanguage = 31,
gxFarsiLanguage = 32,
gxPersianLanguage = gxFarsiLanguage,
gxRussianLanguage = 33,
gxSimpChineseLanguage = 34,
gxFlemishLanguage = 35,
gxIrishLanguage = 36,
gxAlbanianLanguage = 37,
gxRomanianLanguage = 38,
gxCzechLanguage = 39,
gxSlovakLanguage = 40,
gxSlovenianLanguage = 41,
gxYiddishLanguage = 42,
gxSerbianLanguage = 43,
gxMacedonianLanguage = 44,
gxBulgarianLanguage = 45,
gxUkrainianLanguage = 46,
gxByelorussianLanguage = 47,
gxUzbekLanguage = 48,
gxKazakhLanguage = 49,
gxAzerbaijaniLanguage = 50,
gxAzerbaijanArLanguage = 51,
gxArmenianLanguage = 52,
gxGeorgianLanguage = 53,
gxMoldavianLanguage = 54,
gxKirghizLanguage = 55,
gxTajikiLanguage = 56,
gxTurkmenLanguage = 57,
gxMongolianLanguage = 58,
gxMongolianCyrLanguage = 59,
gxPashtoLanguage = 60,
gxKurdishLanguage = 61,
gxKashmiriLanguage = 62,
gxSindhiLanguage = 63,
gxTibetanLanguage = 64,
gxNepaliLanguage = 65,
gxSanskritLanguage = 66,
gxMarathiLanguage = 67,
gxBengaliLanguage = 68,
gxAssameseLanguage = 69,
gxGujaratiLanguage = 70,
gxPunjabiLanguage = 71,
gxOriyaLanguage = 72,
gxMalayalamLanguage = 73,
gxKannadaLanguage = 74,
gxTamilLanguage = 75,
gxTeluguLanguage = 76,
gxSinhaleseLanguage = 77,
gxBurmeseLanguage = 78,
gxKhmerLanguage = 79,
gxLaoLanguage = 80,
gxVietnameseLanguage = 81,
gxIndonesianLanguage = 82,
gxTagalogLanguage = 83,
gxMalayRomanLanguage = 84,
gxMalayArabicLanguage = 85,
gxAmharicLanguage = 86,
gxTigrinyaLanguage = 87,
gxGallaLanguage = 88,
gxOromoLanguage = gxGallaLanguage,
gxSomaliLanguage = 89,
gxSwahiliLanguage = 90,
gxRuandaLanguage = 91,
gxRundiLanguage = 92,
gxChewaLanguage = 93,
gxMalagasyLanguage = 94,
gxEsperantoLanguage = 95,
gxWelshLanguage = 129,
gxBasqueLanguage = 130,
gxCatalanLanguage = 131,
gxLatinLanguage = 132,
gxQuechuaLanguage = 133,
gxGuaraniLanguage = 134,
gxAymaraLanguage = 135,
gxTatarLanguage = 136,
gxUighurLanguage = 137,
gxDzongkhaLanguage = 138,
gxJavaneseRomLanguage = 139,
gxSundaneseRomLanguage = 140
};
typedef long gxFontLanguage;
enum {
gxCopyrightFontName = 1,
gxFamilyFontName = 2,
gxStyleFontName = 3,
gxUniqueFontName = 4,
gxFullFontName = 5,
gxVersionFontName = 6,
gxPostscriptFontName = 7,
gxTrademarkFontName = 8,
gxManufacturerFontName = 9,
gxLastReservedFontName = 256
};
typedef long gxFontName;
typedef long gxFontTableTag;
typedef long gxFontVariationTag;
typedef long gxFontFormatTag;
typedef long gxFontStorageTag;
typedef gxFontVariationTag gxFontDescriptorTag;
struct gxFontVariation {
gxFontVariationTag name;
Fixed value;
};
typedef struct gxFontVariation gxFontVariation;
typedef gxFontVariation gxFontDescriptor;
struct gxFontFeatureSetting {
unsigned short setting;
unsigned short nameID;
};
typedef struct gxFontFeatureSetting gxFontFeatureSetting;
enum {
gxSystemFontAttribute = 0x0001,
gxReadOnlyFontAttribute = 0x0002
};
typedef long gxFontAttribute;
enum {
gxMutuallyExclusiveFeature = 0x00008000
};
typedef long gxFontFeatureFlag;
typedef long gxFontFeature;
enum {
gxResourceFontStorage = FOUR_CHAR_CODE('rsrc'),
gxHandleFontStorage = FOUR_CHAR_CODE('hndl'),
gxFileFontStorage = FOUR_CHAR_CODE('bass'),
gxNfntFontStorage = FOUR_CHAR_CODE('nfnt')
};
typedef void * gxFontStorageReference;
typedef unsigned short gxGlyphcode;
/* single glyph in a font */
/* byte offset within backing store */
typedef long gxByteOffset;
/* The actual constants for feature types and selectors have been moved to a library. */
typedef unsigned short gxRunFeatureType;
typedef unsigned short gxRunFeatureSelector;
/* If tracking is not desired, specify the following value in the track field in the
gxRunControls record (note that a track of 0 does *not* mean to turn tracking off;
rather, it means to use normal tracking). */
enum {
gxNoTracking = gxNegativeInfinity
};
/* The special "gxNoStake" value is returned by the GXGetLayoutBreakOffset call to
indicate the absence of a character offset that is stable with respect to
metamorphosis and contextual kerning. */
enum {
gxNoStake = -1
};
/* A glyph's behavior with respect to other glyphs on its line is defined in part by its
gxBaselineType. These types allow correct alignment of the baselines of all glyphs on
the line. */
enum {
gxRomanBaseline = 0,
gxIdeographicCenterBaseline = 1,
gxIdeographicLowBaseline = 2,
gxHangingBaseline = 3,
gxMathBaseline = 4,
gxLastBaseline = 31,
gxNumberOfBaselineTypes = gxLastBaseline + 1,
gxNoOverrideBaseline = 255
};
typedef unsigned long gxBaselineType;
typedef Fixed gxBaselineDeltas[32];
/* gxJustificationPriority defines the point during the justification process at which a
glyph will begin to receive deltas before and after itself. */
enum {
gxKashidaPriority = 0,
gxWhiteSpacePriority = 1,
gxInterCharPriority = 2,
gxNullJustificationPriority = 3,
gxNumberOfJustificationPriorities = 4
};
typedef unsigned char gxJustificationPriority;
/* gxJustificationFlags are used to control which fields of a gxWidthDeltaRecord are to
be overridden and which are not if a gxPriorityJustificationOverride or
gxGlyphJustificationOverride (qq.v.) is specified. */
enum {
gxOverridePriority = 0x8000, /* use priority value from override */
gxOverrideLimits = 0x4000, /* use limits values from override */
gxOverrideUnlimited = 0x2000, /* use unlimited flag from override */
gxUnlimitedGapAbsorption = 0x1000, /* glyph can take unlimited gap */
gxJustificationPriorityMask = 0x000F, /* justification priority */
gxAllJustificationFlags = (gxOverridePriority | gxOverrideLimits | gxOverrideUnlimited | gxUnlimitedGapAbsorption | gxJustificationPriorityMask)
};
typedef unsigned short gxJustificationFlags;
/* The directional behavior of a glyph can be overridden using a gxDirectionOverride. */
enum {
gxNoDirectionOverride = 0,
gxImposeLeftToRight = 1,
gxImposeRightToLeft = 2,
gxImposeArabic = 3
};
typedef unsigned short gxDirectionOverride;
/* gxRunControlFlags describe the nonparametric layout options contained in a gxStyle. */
enum {
gxNoCaretAngle = 0x40000000,
gxImposeWidth = 0x20000000,
gxNoCrossKerning = 0x10000000,
gxNoOpticalAlignment = 0x08000000,
gxForceHanging = 0x04000000,
gxNoSpecialJustification = 0x02000000,
gxDirectionOverrideMask = 0x00000003,
gxNoLigatureSplits = (long)0x80000000
};
enum {
gxAllRunControlFlags = (gxNoLigatureSplits | gxNoCaretAngle | gxImposeWidth | gxNoCrossKerning | gxNoOpticalAlignment | gxForceHanging | gxNoSpecialJustification | gxDirectionOverrideMask)
};
typedef unsigned long gxRunControlFlags;
/* gxHighlightType is used to distinguish various highlighting methods, both in terms of
character offset based vs. visual based, and in terms of angled sides vs. non-angled
sides. */
enum {
gxHighlightStraight = 0, /* straight-edged simple highlighting */
gxHighlightAverageAngle = 1 /* takes average of two edge angles */
};
typedef unsigned long gxHighlightType;
/* gxCaretType is used to control whether the caret that is returned from GXGetLayoutCaret
is a split caret or a (keyboard-syncronized) single caret. */
enum {
gxSplitCaretType = 0, /* returns Mac-style split caret (default) */
gxLeftRightKeyboardCaret = 1, /* single caret in left-right position */
gxRightLeftKeyboardCaret = 2 /* single caret in right-left position */
};
typedef unsigned long gxCaretType;
/* gxLayoutOffsetState describes the characteristics of a given gxByteOffset in some
layout. It is returned by the GXGetOffsetGlyphs call. Note that the
gxOffsetInsideLigature value is returned in addition to the 8/16 (or invalid)
indication. */
enum {
gxOffset8_8 = 0,
gxOffset8_16 = 1,
gxOffset16_8 = 2,
gxOffset16_16 = 3,
gxOffsetInvalid = 4
};
enum {
gxOffsetInsideLigature = 0x8000
};
typedef unsigned short gxLayoutOffsetState;
/* gxLayoutOptionsFlags are single-bit flags contained in a gxLayoutOptions record. We
also define here some utility constants that are useful in setting various fields in
the gxLayoutOptions record. */
enum {
gxNoLayoutOptions = 0,
gxLineIsDisplayOnly = 0x00000001,
gxKeepSpacesInMargin = 0x00000002,
gxLimitReorderingToTwoLevels = 0x00000004,
gxLineLeftEdgeNotAtMargin = 0x00000008,
gxLineRightEdgeNotAtMargin = 0x00000010,
gxAllLayoutOptionsFlags = gxLineIsDisplayOnly | gxKeepSpacesInMargin | gxLimitReorderingToTwoLevels | gxLineLeftEdgeNotAtMargin | gxLineRightEdgeNotAtMargin,
gxMaxRunLevel = 15,
gxFlushLeft = 0,
gxFlushCenter = fract1 / 2,
gxFlushRight = fract1,
gxNoJustification = 0,
gxFullJustification = fract1
};
typedef unsigned long gxLayoutOptionsFlags;
/* A gxRunFeature describes a feature and a level for that feature. */
struct gxRunFeature {
gxRunFeatureType featureType;
gxRunFeatureSelector featureSelector;
};
typedef struct gxRunFeature gxRunFeature;
/* A gxWidthDeltaRecord contains all of the information needed to describe the behavior of one
class of glyphs during the justification process. */
struct gxWidthDeltaRecord {
Fixed beforeGrowLimit; /* ems AW can grow by at most on LT */
Fixed beforeShrinkLimit; /* ems AW can shrink by at most on LT */
Fixed afterGrowLimit; /* ems AW can grow by at most on RB */
Fixed afterShrinkLimit; /* ems AW can shrink by at most on RB */
gxJustificationFlags growFlags; /* flags controlling grow case */
gxJustificationFlags shrinkFlags; /* flags controlling shrink case */
};
typedef struct gxWidthDeltaRecord gxWidthDeltaRecord;
/* A gxPriorityJustificationOverride contains an array of WidthDeltaRecords, one for each
gxJustificationPriority. */
struct gxPriorityJustificationOverride {
gxWidthDeltaRecord deltas[4]; /* overrides for each of the priorities */
};
typedef struct gxPriorityJustificationOverride gxPriorityJustificationOverride;
/* A gxGlyphJustificationOverride contains a gxWidthDeltaRecord that is to be used for a
specific glyph in a specific run (this limitation is because glyphcodes vary by font). */
struct gxGlyphJustificationOverride {
gxGlyphcode glyph;
gxWidthDeltaRecord override;
};
typedef struct gxGlyphJustificationOverride gxGlyphJustificationOverride;
/* gxRunControls contains flags, shifts, imposed widths and overrides for a run. */
/* NOTE: a value of "gxNoTracking" (see above) in track disables tracking */
struct gxRunControls {
gxRunControlFlags flags;
Fixed beforeWithStreamShift;
Fixed afterWithStreamShift;
Fixed crossStreamShift;
Fixed imposedWidth;
Fixed track;
Fract hangingInhibitFactor;
Fract kerningInhibitFactor;
Fixed decompositionAdjustmentFactor;
gxBaselineType baselineType;
};
typedef struct gxRunControls gxRunControls;
/* A gxGlyphSubstitution describes one client-provided substitution that occurs after all
other automatic glyph changes have happened. */
struct gxGlyphSubstitution {
gxGlyphcode originalGlyph; /* Whenever you see this glyph... */
gxGlyphcode substituteGlyph; /* ...change it to this one. */
};
typedef struct gxGlyphSubstitution gxGlyphSubstitution;
/* gxKerningAdjustmentFactors specify an adjustment to automatic kerning. The adjustment
is ax + b where x is the automatic kerning value, a is scaleFactor, and b is
adjustmentPointSizeFactor times the run's point size. */
struct gxKerningAdjustmentFactors {
Fract scaleFactor;
Fixed adjustmentPointSizeFactor;
};
typedef struct gxKerningAdjustmentFactors gxKerningAdjustmentFactors;
/* A gxKerningAdjustment identifies with- and cross-stream kerning adjustments
for specific glyph pairs. */
struct gxKerningAdjustment {
gxGlyphcode firstGlyph;
gxGlyphcode secondGlyph;
gxKerningAdjustmentFactors withStreamFactors;
gxKerningAdjustmentFactors crossStreamFactors;
};
typedef struct gxKerningAdjustment gxKerningAdjustment;
/* A value of gxResetCrossStreamFactor in crossStreamFactors.adjustmentPointSizeFactor
will reset the cross-stream kerning to the baseline. */
enum {
gxResetCrossStreamFactor = gxNegativeInfinity
};
/* gxLayoutHitInfo contains the output from the GXHitTestLayout call. */
struct gxLayoutHitInfo {
Fixed firstPartialDist;
Fixed lastPartialDist;
gxByteOffset hitSideOffset;
gxByteOffset nonHitSideOffset;
Boolean leadingEdge;
Boolean inLoose;
};
typedef struct gxLayoutHitInfo gxLayoutHitInfo;
/* A gxLineBaselineRecord contains the deltas from 0 to all the different baselines for
the layout. It can be filled via a call to GetBaselineDeltas (q.v.). */
struct gxLineBaselineRecord {
gxBaselineDeltas deltas;
};
typedef struct gxLineBaselineRecord gxLineBaselineRecord;
/* The gxLayoutOptions type contains information about the layout characteristics of the
whole line. */
struct gxLayoutOptions {
Fixed width;
Fract flush;
Fract just;
gxLayoutOptionsFlags flags;
gxLineBaselineRecord * baselineRec;
};
typedef struct gxLayoutOptions gxLayoutOptions;
enum {
gxNewObjectOpcode = 0x00, /* create new object */
gxSetDataOpcode = 0x40, /* add reference to current object */
gxSetDefaultOpcode = 0x80, /* replace current default with this object */
gxReservedOpcode = 0xC0, /* (may be used in future expansion) */
gxNextOpcode = 0xFF /* used by currentOperand field to say opcode is coming */
};
/* new object types (new object opcode) */
enum {
gxHeaderTypeOpcode = 0x00, /* byte following new object uses bottom 6 bits for type */
/* gxShape types use values 1 (gxEmptyType) through 13 (gxPictureType) */
gxStyleTypeOpcode = 0x28,
gxInkTypeOpcode = 0x29,
gxTransformTypeOpcode = 0x2A,
gxColorProfileTypeOpcode = 0x2B,
gxColorSetTypeOpcode = 0x2C,
gxTagTypeOpcode = 0x2D,
gxBitImageOpcode = 0x2E,
gxFontNameTypeOpcode = 0x2F,
gxTrailerTypeOpcode = 0x3F
};
/* fields of objects (set data opcodes) */
enum {
gxShapeAttributesOpcode = 0,
gxShapeTagOpcode = 1,
gxShapeFillOpcode = 2
};
enum {
gxOmitPathPositionXMask = 0xC0,
gxOmitPathPositionYMask = 0x30,
gxOmitPathDeltaXMask = 0x0C,
gxOmitPathDeltaYMask = 0x03
};
enum {
gxOmitPathPositionXShift = 6,
gxOmitPathPositionYShift = 4,
gxOmitPathDeltaXShift = 2,
gxOmitPathDeltaYShift = 0
};
enum {
gxOmitBitmapImageMask = 0xC0,
gxOmitBitmapWidthMask = 0x30,
gxOmitBitmapHeightMask = 0x0C,
gxOmitBitmapRowBytesMask = 0x03
};
enum {
gxOmitBitmapImageShift = 6,
gxOmitBitmapWidthShift = 4,
gxOmitBitmapHeightShift = 2,
gxOmitBitmapRowBytesShift = 0
};
enum {
gxOmitBitmapPixelSizeMask = 0xC0,
gxOmitBitmapSpaceMask = 0x30,
gxOmitBitmapSetMask = 0x0C,
gxOmitBitmapProfileMask = 0x03
};
enum {
gxOmitBitmapPixelSizeShift = 6,
gxOmitBitmapSpaceShift = 4,
gxOmitBitmapSetShift = 2,
gxOmitBitmapProfileShift = 0
};
enum {
gxOmitBitmapPositionXMask = 0xC0,
gxOmitBitmapPositionYMask = 0x30
};
enum {
gxOmitBitmapPositionXShift = 6,
gxOmitBitmapPositionYShift = 4
};
enum {
gxOmitBitImageRowBytesMask = 0xC0,
gxOmitBitImageHeightMask = 0x30,
gxOmitBitImageDataMask = 0x08
};
enum {
gxOmitBitImageRowBytesShift = 6,
gxOmitBitImageHeightShift = 4,
gxOmitBitImageDataShift = 3
};
enum {
gxCopyBitImageBytesOpcode = 0x00,
gxRepeatBitImageBytesOpcode = 0x40,
gxLookupBitImageBytesOpcode = 0x80,
gxRepeatBitImageScanOpcode = 0xC0
};
enum {
gxOmitTextCharactersMask = 0xC0,
gxOmitTextPositionXMask = 0x30,
gxOmitTextPositionYMask = 0x0C,
gxOmitTextDataMask = 0x02
};
enum {
gxOmitTextCharactersShift = 6,
gxOmitTextPositionXShift = 4,
gxOmitTextPositionYShift = 2,
gxOmitTextDataShift = 1
};
enum {
gxOmitGlyphCharactersMask = 0xC0,
gxOmitGlyphLengthMask = 0x30,
gxOmitGlyphRunNumberMask = 0x0C,
gxOmitGlyphOnePositionMask = 0x02,
gxOmitGlyphDataMask = 0x01
};
enum {
gxOmitGlyphCharactersShift = 6,
gxOmitGlyphLengthShift = 4,
gxOmitGlyphRunNumberShift = 2,
gxOmitGlyphOnePositionShift = 1,
gxOmitGlyphDataShift = 0
};
enum {
gxOmitGlyphPositionsMask = 0xC0,
gxOmitGlyphAdvancesMask = 0x20,
gxOmitGlyphTangentsMask = 0x18,
gxOmitGlyphRunsMask = 0x04,
gxOmitGlyphStylesMask = 0x03
};
enum {
gxOmitGlyphPositionsShift = 6,
gxOmitGlyphAdvancesShift = 5,
gxOmitGlyphTangentsShift = 3,
gxOmitGlyphRunsShift = 2,
gxOmitGlyphStylesShift = 0
};
enum {
gxOmitLayoutLengthMask = 0xC0,
gxOmitLayoutPositionXMask = 0x30,
gxOmitLayoutPositionYMask = 0x0C,
gxOmitLayoutDataMask = 0x02
};
enum {
gxOmitLayoutLengthShift = 6,
gxOmitLayoutPositionXShift = 4,
gxOmitLayoutPositionYShift = 2,
gxOmitLayoutDataShift = 1
};
enum {
gxOmitLayoutWidthMask = 0xC0,
gxOmitLayoutFlushMask = 0x30,
gxOmitLayoutJustMask = 0x0C,
gxOmitLayoutOptionsMask = 0x03
};
enum {
gxOmitLayoutWidthShift = 6,
gxOmitLayoutFlushShift = 4,
gxOmitLayoutJustShift = 2,
gxOmitLayoutOptionsShift = 0
};
enum {
gxOmitLayoutStyleRunNumberMask = 0xC0,
gxOmitLayoutLevelRunNumberMask = 0x30,
gxOmitLayoutHasBaselineMask = 0x08,
gxOmitLayoutStyleRunsMask = 0x04,
gxOmitLayoutStylesMask = 0x03
};
enum {
gxOmitLayoutStyleRunNumberShift = 6,
gxOmitLayoutLevelRunNumberShift = 4,
gxOmitLayoutHasBaselineShift = 3,
gxOmitLayoutStyleRunsShift = 2,
gxOmitLayoutStylesShift = 0
};
enum {
gxOmitLayoutLevelRunsMask = 0x80,
gxOmitLayoutLevelsMask = 0x40
};
enum {
gxOmitLayoutLevelRunsShift = 7,
gxOmitLayoutLevelsShift = 6
};
enum {
gxInkAttributesOpcode = 0,
gxInkTagOpcode = 1,
gxInkColorOpcode = 2,
gxInkTransferModeOpcode = 3
};
enum {
gxOmitColorsSpaceMask = 0xC0,
gxOmitColorsProfileMask = 0x30,
gxOmitColorsComponentsMask = 0x0F,
gxOmitColorsIndexMask = 0x0C,
gxOmitColorsIndexSetMask = 0x03
};
enum {
gxOmitColorsSpaceShift = 6,
gxOmitColorsProfileShift = 4,
gxOmitColorsComponentsShift = 0,
gxOmitColorsIndexShift = 2,
gxOmitColorsIndexSetShift = 0
};
enum {
gxOmitTransferSpaceMask = 0xC0,
gxOmitTransferSetMask = 0x30,
gxOmitTransferProfileMask = 0x0C
};
enum {
gxOmitTransferSpaceShift = 6,
gxOmitTransferSetShift = 4,
gxOmitTransferProfileShift = 2
};
enum {
gxOmitTransferSourceMatrixMask = 0xC0,
gxOmitTransferDeviceMatrixMask = 0x30,
gxOmitTransferResultMatrixMask = 0x0C,
gxOmitTransferFlagsMask = 0x03
};
enum {
gxOmitTransferSourceMatrixShift = 6,
gxOmitTransferDeviceMatrixShift = 4,
gxOmitTransferResultMatrixShift = 2,
gxOmitTransferFlagsShift = 0
};
enum {
gxOmitTransferComponentModeMask = 0x80,
gxOmitTransferComponentFlagsMask = 0x40,
gxOmitTransferComponentSourceMinimumMask = 0x30,
gxOmitTransferComponentSourceMaximumMask = 0x0C,
gxOmitTransferComponentDeviceMinimumMask = 0x03
};
enum {
gxOmitTransferComponentModeShift = 7,
gxOmitTransferComponentFlagsShift = 6,
gxOmitTransferComponentSourceMinimumShift = 4,
gxOmitTransferComponentSourceMaximumShift = 2,
gxOmitTransferComponentDeviceMinimumShift = 0
};
enum {
gxOmitTransferComponentDeviceMaximumMask = 0xC0,
gxOmitTransferComponentClampMinimumMask = 0x30,
gxOmitTransferComponentClampMaximumMask = 0x0C,
gxOmitTransferComponentOperandMask = 0x03
};
enum {
gxOmitTransferComponentDeviceMaximumShift = 6,
gxOmitTransferComponentClampMinimumShift = 4,
gxOmitTransferComponentClampMaximumShift = 2,
gxOmitTransferComponentOperandShift = 0
};
enum {
gxStyleAttributesOpcode = 0,
gxStyleTagOpcode = 1,
gxStyleCurveErrorOpcode = 2,
gxStylePenOpcode = 3,
gxStyleJoinOpcode = 4,
gxStyleDashOpcode = 5,
gxStyleCapsOpcode = 6,
gxStylePatternOpcode = 7,
gxStyleTextAttributesOpcode = 8,
gxStyleTextSizeOpcode = 9,
gxStyleFontOpcode = 10,
gxStyleTextFaceOpcode = 11,
gxStylePlatformOpcode = 12,
gxStyleFontVariationsOpcode = 13,
gxStyleRunControlsOpcode = 14,
gxStyleRunPriorityJustOverrideOpcode = 15,
gxStyleRunGlyphJustOverridesOpcode = 16,
gxStyleRunGlyphSubstitutionsOpcode = 17,
gxStyleRunFeaturesOpcode = 18,
gxStyleRunKerningAdjustmentsOpcode = 19,
gxStyleJustificationOpcode = 20
};
enum {
gxOmitDashAttributesMask = 0xC0,
gxOmitDashShapeMask = 0x30,
gxOmitDashAdvanceMask = 0x0C,
gxOmitDashPhaseMask = 0x03
};
enum {
gxOmitDashAttributesShift = 6,
gxOmitDashShapeShift = 4,
gxOmitDashAdvanceShift = 2,
gxOmitDashPhaseShift = 0
};
enum {
gxOmitDashScaleMask = 0xC0
};
enum {
gxOmitDashScaleShift = 6
};
enum {
gxOmitPatternAttributesMask = 0xC0,
gxOmitPatternShapeMask = 0x30,
gxOmitPatternUXMask = 0x0C,
gxOmitPatternUYMask = 0x03
};
enum {
gxOmitPatternAttributesShift = 6,
gxOmitPatternShapeShift = 4,
gxOmitPatternUXShift = 2,
gxOmitPatternUYShift = 0
};
enum {
gxOmitPatternVXMask = 0xC0,
gxOmitPatternVYMask = 0x30
};
enum {
gxOmitPatternVXShift = 6,
gxOmitPatternVYShift = 4
};
enum {
gxOmitJoinAttributesMask = 0xC0,
gxOmitJoinShapeMask = 0x30,
gxOmitJoinMiterMask = 0x0C
};
enum {
gxOmitJoinAttributesShift = 6,
gxOmitJoinShapeShift = 4,
gxOmitJoinMiterShift = 2
};
enum {
gxOmitCapAttributesMask = 0xC0,
gxOmitCapStartShapeMask = 0x30,
gxOmitCapEndShapeMask = 0x0C
};
enum {
gxOmitCapAttributesShift = 6,
gxOmitCapStartShapeShift = 4,
gxOmitCapEndShapeShift = 2
};
enum {
gxOmitFaceLayersMask = 0xC0,
gxOmitFaceMappingMask = 0x30
};
enum {
gxOmitFaceLayersShift = 6,
gxOmitFaceMappingShift = 4
};
enum {
gxOmitFaceLayerFillMask = 0xC0,
gxOmitFaceLayerFlagsMask = 0x30,
gxOmitFaceLayerStyleMask = 0x0C,
gxOmitFaceLayerTransformMask = 0x03
};
enum {
gxOmitFaceLayerFillShift = 6,
gxOmitFaceLayerFlagsShift = 4,
gxOmitFaceLayerStyleShift = 2,
gxOmitFaceLayerTransformShift = 0
};
enum {
gxOmitFaceLayerBoldXMask = 0xC0,
gxOmitFaceLayerBoldYMask = 0x30
};
enum {
gxOmitFaceLayerBoldXShift = 6,
gxOmitFaceLayerBoldYShift = 4
};
enum {
gxColorSetReservedOpcode = 0,
gxColorSetTagOpcode = 1
};
enum {
gxColorProfileReservedOpcode = 0,
gxColorProfileTagOpcode = 1
};
enum {
gxTransformReservedOpcode = 0,
gxTransformTagOpcode = 1,
gxTransformClipOpcode = 2,
gxTransformMappingOpcode = 3,
gxTransformPartMaskOpcode = 4,
gxTransformToleranceOpcode = 5
};
enum {
gxTypeOpcode = 0,
gxSizeOpcode = 1
};
/* used by currentOperand when currentOperation is gxNextOpcode */
/* format of top byte:
xx yyyyyy xx == 0x00, 0x40, 0x80, 0xC0: defines graphics operation (see gxGraphicsOperationOpcode)
yyyyyy == size of operation in bytes
if (yyyyyy == 0), byte size follows. If byte following == 0, word size follows; if == 0, long follows
word and long, if present, are specified in high-endian order (first byte is largest magnitude)
format of byte following size specifiers, if any:
xx yyyyyy xx == 0x00, 0x40, 0x80, 0xC0: defines compression level (0 == none, 0xC0 == most)
exact method of compression is defined by type of data
yyyyyy == data type selector (0 to 63): see gxGraphicsNewOpcode, __DataOpcode
*/
enum {
gxOpcodeShift = 6,
gxObjectSizeMask = 0x3F,
gxCompressionShift = 6,
gxObjectTypeMask = 0x3F,
gxBitImageOpcodeMask = 0xC0,
gxBitImageCountMask = 0x3F,
gxBitImageOpcodeShift = 6
};
enum {
gxNoCompression = 0,
gxWordCompression = 1,
gxByteCompression = 2,
gxOmitCompression = 3,
gxCompressionMask = 0x03
};
/* the following structures define how primitives without a public geometry
are stored (their format mirrors that of the New call to create them) */
struct gxFlatFontName {
unsigned char name; /* gxFontName */
unsigned char platform; /* gxFontPlatform */
unsigned char script; /* gxFontScript */
unsigned char language; /* gxFontLanguage */
short length; /* byte length */
};
typedef struct gxFlatFontName gxFlatFontName;
enum {
gxFlatFontListItemTag = FOUR_CHAR_CODE('flst')
};
struct gxFlatFontListItem {
gxFont fontID; /*** if we get rid of this, remove #include "font types.h", above */
unsigned char name; /* gxFontName */
unsigned char platform; /* gxFontPlatform */
unsigned char script; /* gxFontScript */
unsigned char language; /* gxFontLanguage */
short length; /* byte length of the name that follows */
unsigned short glyphCount; /* CountFontGlyphs or 0 if gxFontGlyphsFlatten is false */
unsigned short axisCount; /* CountFontVariations or 0 if gxFontVariationsFlatten is false */
unsigned short variationCount; /* number of bitsVariationPairs that follow the (optional) glyphBits */
};
typedef struct gxFlatFontListItem gxFlatFontListItem;
struct gxFlatFontList {
long count;
gxFlatFontListItem items[1];
};
typedef struct gxFlatFontList gxFlatFontList;
struct gxFlattenHeader {
Fixed version;
unsigned char flatFlags;
SInt8 padding;
};
typedef struct gxFlattenHeader gxFlattenHeader;
enum {
gxOmitPictureShapeMask = 0xC0,
gxOmitOverrideStyleMask = 0x30,
gxOmitOverrideInkMask = 0x0C,
gxOmitOverrideTransformMask = 0x03
};
enum {
gxOmitPictureShapeShift = 0x06,
gxOmitOverrideStyleShift = 0x04,
gxOmitOverrideInkShift = 0x02,
gxOmitOverrideTransformShift = 0x00
};
enum {
gxPostScriptTag = FOUR_CHAR_CODE('post'),
gxPostControlTag = FOUR_CHAR_CODE('psct')
};
enum {
gxNoSave = 1, /* don't do save-restore around PS data */
gxPSContinueNext = 2 /* next shape is continuation of this shape's PS -- only obeyed if gxNoSave is true */
};
struct gxPostControl {
long flags; /* PostScript state flags */
};
typedef struct gxPostControl gxPostControl;
enum {
gxDashSynonymTag = FOUR_CHAR_CODE('sdsh')
};
struct gxDashSynonym {
long size; /* number of elements in array */
Fixed dashLength[1]; /* Array of dash lengths */
};
typedef struct gxDashSynonym gxDashSynonym;
enum {
gxLineCapSynonymTag = FOUR_CHAR_CODE('lcap')
};
enum {
gxButtCap = 0,
gxRoundCap = 1,
gxSquareCap = 2,
gxTriangleCap = 3
};
/* gxLine cap type */
typedef long gxLineCapSynonym;
enum {
gxCubicSynonymTag = FOUR_CHAR_CODE('cubx')
};
enum {
gxIgnoreFlag = 0x0000, /* Ignore this word, get next one */
gxLineToFlag = 0x0001, /* Draw a gxLine to gxPoint following this flag */
gxCurveToFlag = 0x0002, /* Draw a gxCurve through the 3 points following this flag */
gxMoveToFlag = 0x0003, /* Start a new contour at the gxPoint following this flag */
gxClosePathFlag = 0x0004 /* Close the contour */
};
typedef long gxCubicSynonym;
enum {
gxCubicInstructionMask = 0x000F /* low four bits are gxPoint instructions */
};
/* Low four bits are instruction (moveto, lineto, curveto, closepath) */
typedef short gxCubicSynonymFlags;
enum {
gxPatternSynonymTag = FOUR_CHAR_CODE('ptrn')
};
enum {
gxHatch = 0,
gxCrossHatch = 1
};
struct gxPatternSynonym {
long patternType; /* one of the gxPatterns: gxHatch or gxCrossHatch */
Fixed angle; /* angle at which pattern is drawn */
Fixed spacing; /* distance between two parallel pattern lines */
Fixed thickness; /* thickness of the pattern */
gxPoint anchorPoint; /* gxPoint with with respect to which pattern position is calculated */
};
typedef struct gxPatternSynonym gxPatternSynonym;
enum {
gxURLTag = FOUR_CHAR_CODE('urlt')
};
#if PRAGMA_STRUCT_ALIGN
#pragma options align=reset
#elif PRAGMA_STRUCT_PACKPUSH
#pragma pack(pop)
#elif PRAGMA_STRUCT_PACK
#pragma pack()
#endif
#ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
#endif
#ifdef __cplusplus
}
#endif
#endif /* __GXTYPES__ */