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.
1888 lines
63 KiB
1888 lines
63 KiB
4 years ago
|
/*
|
||
|
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__ */
|
||
|
|