You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1887 lines
63 KiB
1887 lines
63 KiB
/* |
|
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__ */ |
|
|
|
|