diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/GXTypes.h | |
| download | archived-source-engine-2018-hl2-src-master.tar.xz archived-source-engine-2018-hl2-src-master.zip | |
Diffstat (limited to 'common/quicktime_win32/GXTypes.h')
| -rw-r--r-- | common/quicktime_win32/GXTypes.h | 1887 |
1 files changed, 1887 insertions, 0 deletions
diff --git a/common/quicktime_win32/GXTypes.h b/common/quicktime_win32/GXTypes.h new file mode 100644 index 0000000..6c6fd69 --- /dev/null +++ b/common/quicktime_win32/GXTypes.h @@ -0,0 +1,1887 @@ +/* + 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__ */ + |