00001 #ifndef __AIGeometry__
00002 #define __AIGeometry__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #include "AIArt.h"
00027 #include "AIPathStyle.h"
00028 #include "AIRaster.h"
00029
00030
00031 #include "AIHeaderBegin.h"
00032
00035
00036
00037
00038
00039
00040
00041 #define kAIGeometrySuite "AI Geometry Suite"
00042 #define kAIGeometryVersion6 AIAPI_VERSION(6)
00043 #define kAIGeometrySuiteVersion kAIGeometryVersion6
00044
00045
00047 #define kCancelledErr kCanceledErr
00048
00049 #define kFormatErr 'FRM!'
00050
00051
00056 typedef enum {
00058 kAIGeometryOrganizeNull = 0,
00060 kAIGeometryOrganizePath,
00062 kAIGeometryOrganizeGroup,
00064 kAIGeometryOrganizeCompound,
00066 kAIGeometryOrganizePlaced,
00068 kAIGeometryOrganizeRaster,
00071 kAIGeometryOrganizeText,
00075 kAIGeometryOrganizeTextPath,
00078 kAIGeometryOrganizeTextLine,
00080 kAIGeometryOrganizeClipGroup,
00082 kAIGeometryOrganizeMask,
00084 kAIGeometryOrganizeMesh,
00086 kAIGeometryOrganizeSymbol,
00089 kAIGeometryOrganizeForeignObject,
00092 kAIGeometryOrganizeLegacyText,
00094 kAIGeometryOrganizeChart,
00097 kAIGeometryOrganizePluginArt,
00099 kAIGeometryOrganizeGraph,
00101 kAIGeometryOrganizeRepeat,
00103 kAIGeometryOrganizeDummy = 0xFFFFFFFF
00104
00105 } AIGeometryOrganizationType;
00106
00107
00108
00109
00110
00111
00112
00113
00117 typedef void *AIGeometryUserData;
00118
00126 typedef ai::int16 (*AIGeometryBeginProc)(AIGeometryUserData userData, AIArtHandle object);
00127
00135 typedef ai::int16 (*AIGeometryEndProc)(AIGeometryUserData userData, AIArtHandle object);
00136
00144 typedef ai::int16 (*AIGeometryMoveToProc)(AIGeometryUserData userData, AIRealPoint *p);
00145
00153 typedef ai::int16 (*AIGeometryLineToProc)(AIGeometryUserData userData, AIRealPoint *p);
00154
00164 typedef ai::int16 (*AIGeometryCurveToProc)(AIGeometryUserData userData, AIRealPoint *p1, AIRealPoint *p2, AIRealPoint *p3);
00165
00172 typedef ai::int16 (*AIGeometryClosePathProc)(AIGeometryUserData userData);
00173
00180 typedef ai::int16 (*AIGeometryFillProc)(AIGeometryUserData userData);
00181
00188 typedef ai::int16 (*AIGeometryStrokeProc)(AIGeometryUserData userData);
00189
00196 typedef ai::int16 (*AIGeometryClipProc)(AIGeometryUserData userData);
00197
00205 typedef ai::int16 (*AIGeometryImageProc)(AIGeometryUserData userData, AIArtHandle raster);
00206
00214 typedef ai::int16 (*AIGeometryImageMaskProc)(AIGeometryUserData userData, AIArtHandle raster);
00215
00223 typedef ai::int16 (*AIGeometrySetGrayProc)(AIGeometryUserData userData, AIReal gray);
00224
00235 typedef ai::int16 (*AIGeometrySetCMYKColorProc)(AIGeometryUserData userData, AIReal cyan, AIReal magenta, AIReal yellow, AIReal black);
00236
00246 typedef ai::int16 (*AIGeometrySetRGBColorProc)(AIGeometryUserData userData, AIReal red, AIReal green, AIReal blue);
00247
00255 typedef ai::int16 (*AIGeometrySetAlphaProc)(AIGeometryUserData userData, AIReal alpha);
00256
00265 typedef ai::int16 (*AIGeometrySetCustomColorProc)(AIGeometryUserData userData, AICustomColorHandle customColor, AIReal tint);
00266
00281 typedef ai::int16 (*AIGeometrySetGradientColorProc)(AIGeometryUserData userData,
00282 AIGradientHandle gradient,
00283 AIRealPoint *gradientOrigin,
00284 AIReal gradientAngle,
00285 AIReal gradientLength,
00286 AIReal hiliteAngle,
00287 AIReal hiliteLength,
00288 AIRealMatrix *matrix);
00289
00306 typedef ai::int16 (*AIGeometrySetPatternColorProc)(AIGeometryUserData userData,
00307 AIPatternHandle pattern,
00308 AIReal shiftDistance,
00309 AIReal shiftAngle,
00310 AIRealPoint *scale,
00311 AIReal rotateAngle,
00312 AIBoolean reflect,
00313 AIReal reflectAngle,
00314 AIReal shearAngle,
00315 AIReal shearAxis,
00316 AIRealMatrix *matrix);
00324 typedef ai::int16 (*AIGeometryImageCallback)(AIGeometryUserData userData,
00325 AIArtHandle raster,
00326 AISlice *artSlice,
00327 AITile *workTile,
00328 AISlice *workSlice);
00329
00337 typedef ai::int16 (*AIGeometrySetLineWidthProc)(AIGeometryUserData userData, AIReal lineWidth);
00338
00346 typedef ai::int16 (*AIGeometrySetLineCapProc)(AIGeometryUserData userData, AILineCap lineCap);
00347
00355 typedef ai::int16 (*AIGeometrySetLineJoinProc)(AIGeometryUserData userData, AILineJoin lineJoin);
00356
00364 typedef ai::int16 (*AIGeometrySetMiterLimitProc)(AIGeometryUserData userData, AIReal miterLimit);
00365
00375 typedef ai::int16 (*AIGeometrySetDashProc)(AIGeometryUserData userData, AIReal offset, ai::int16 length, AIReal array[]);
00376
00382 typedef struct {
00383
00385 AIGeometryOrganizationType type;
00387 AIGeometryBeginProc begin;
00389 AIGeometryEndProc end;
00390
00391 } AIGeometryOrganizationProcs;
00392
00397 typedef struct {
00398 AIGeometryMoveToProc moveTo;
00399 AIGeometryLineToProc lineTo;
00400 AIGeometryCurveToProc curveTo;
00401 AIGeometryClosePathProc closePath;
00402
00403 } AIGeometryConstructionProcs;
00404
00413 typedef struct {
00414
00415 AIGeometryFillProc fill;
00416 AIGeometryFillProc eofill;
00417 AIGeometryStrokeProc stroke;
00418 AIGeometryClipProc clip;
00419 AIGeometryClipProc eoclip;
00420 AIGeometryImageProc image;
00421 AIGeometryImageMaskProc imageMask;
00422
00423 } AIGeometryPaintingProcs;
00424
00429 typedef struct {
00430
00431 AIGeometrySetGrayProc setWhiteColor;
00432 AIGeometrySetGrayProc setBlackColor;
00433 AIGeometrySetGrayProc setGrayColor;
00434 AIGeometrySetCMYKColorProc setCMYKColor;
00435 AIGeometrySetRGBColorProc setRGBColor;
00436 AIGeometrySetAlphaProc setAlpha;
00437 AIGeometrySetCustomColorProc setCustomColor;
00438 AIGeometrySetGradientColorProc setGradientColor;
00439 AIGeometrySetPatternColorProc setPatternColor;
00440
00441 AIGeometrySetLineWidthProc setLineWidth;
00442 AIGeometrySetLineCapProc setLineCap;
00443 AIGeometrySetLineJoinProc setLineJoin;
00444 AIGeometrySetMiterLimitProc setMiterLimit;
00445 AIGeometrySetDashProc setDash;
00446
00447 } AIGeometryStateProcs;
00448
00449
00450
00451
00452
00453
00454
00455
00477 typedef struct {
00478
00496 ASAPI AIErr (*GeometryIterate) ( AIArtHandle art,
00497 AIGeometryOrganizationProcs *organizationProcs,
00498 AIGeometryConstructionProcs *constructionProcs,
00499 AIGeometryPaintingProcs *paintingProcs,
00500 AIGeometryStateProcs *stateProcs,
00501 AIGeometryUserData userData,
00502 ai::int32 skipArtTypes);
00503
00504 } AIGeometrySuite;
00505
00506
00507 #include "AIHeaderEnd.h"
00508
00509
00510 #endif