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 kAIGeometryOrganizeDummy = 0xFFFFFFFF
00102
00103 } AIGeometryOrganizationType;
00104
00105
00106
00107
00108
00109
00110
00111
00115 typedef void *AIGeometryUserData;
00116
00124 typedef ai::int16 (*AIGeometryBeginProc)(AIGeometryUserData userData, AIArtHandle object);
00125
00133 typedef ai::int16 (*AIGeometryEndProc)(AIGeometryUserData userData, AIArtHandle object);
00134
00142 typedef ai::int16 (*AIGeometryMoveToProc)(AIGeometryUserData userData, AIRealPoint *p);
00143
00151 typedef ai::int16 (*AIGeometryLineToProc)(AIGeometryUserData userData, AIRealPoint *p);
00152
00162 typedef ai::int16 (*AIGeometryCurveToProc)(AIGeometryUserData userData, AIRealPoint *p1, AIRealPoint *p2, AIRealPoint *p3);
00163
00170 typedef ai::int16 (*AIGeometryClosePathProc)(AIGeometryUserData userData);
00171
00178 typedef ai::int16 (*AIGeometryFillProc)(AIGeometryUserData userData);
00179
00186 typedef ai::int16 (*AIGeometryStrokeProc)(AIGeometryUserData userData);
00187
00194 typedef ai::int16 (*AIGeometryClipProc)(AIGeometryUserData userData);
00195
00203 typedef ai::int16 (*AIGeometryImageProc)(AIGeometryUserData userData, AIArtHandle raster);
00204
00212 typedef ai::int16 (*AIGeometryImageMaskProc)(AIGeometryUserData userData, AIArtHandle raster);
00213
00221 typedef ai::int16 (*AIGeometrySetGrayProc)(AIGeometryUserData userData, AIReal gray);
00222
00233 typedef ai::int16 (*AIGeometrySetCMYKColorProc)(AIGeometryUserData userData, AIReal cyan, AIReal magenta, AIReal yellow, AIReal black);
00234
00244 typedef ai::int16 (*AIGeometrySetRGBColorProc)(AIGeometryUserData userData, AIReal red, AIReal green, AIReal blue);
00245
00253 typedef ai::int16 (*AIGeometrySetAlphaProc)(AIGeometryUserData userData, AIReal alpha);
00254
00263 typedef ai::int16 (*AIGeometrySetCustomColorProc)(AIGeometryUserData userData, AICustomColorHandle customColor, AIReal tint);
00264
00279 typedef ai::int16 (*AIGeometrySetGradientColorProc)(AIGeometryUserData userData,
00280 AIGradientHandle gradient,
00281 AIRealPoint *gradientOrigin,
00282 AIReal gradientAngle,
00283 AIReal gradientLength,
00284 AIReal hiliteAngle,
00285 AIReal hiliteLength,
00286 AIRealMatrix *matrix);
00287
00304 typedef ai::int16 (*AIGeometrySetPatternColorProc)(AIGeometryUserData userData,
00305 AIPatternHandle pattern,
00306 AIReal shiftDistance,
00307 AIReal shiftAngle,
00308 AIRealPoint *scale,
00309 AIReal rotateAngle,
00310 AIBoolean reflect,
00311 AIReal reflectAngle,
00312 AIReal shearAngle,
00313 AIReal shearAxis,
00314 AIRealMatrix *matrix);
00322 typedef ai::int16 (*AIGeometryImageCallback)(AIGeometryUserData userData,
00323 AIArtHandle raster,
00324 AISlice *artSlice,
00325 AITile *workTile,
00326 AISlice *workSlice);
00327
00335 typedef ai::int16 (*AIGeometrySetLineWidthProc)(AIGeometryUserData userData, AIReal lineWidth);
00336
00344 typedef ai::int16 (*AIGeometrySetLineCapProc)(AIGeometryUserData userData, AILineCap lineCap);
00345
00353 typedef ai::int16 (*AIGeometrySetLineJoinProc)(AIGeometryUserData userData, AILineJoin lineJoin);
00354
00362 typedef ai::int16 (*AIGeometrySetMiterLimitProc)(AIGeometryUserData userData, AIReal miterLimit);
00363
00373 typedef ai::int16 (*AIGeometrySetDashProc)(AIGeometryUserData userData, AIReal offset, ai::int16 length, AIReal array[]);
00374
00380 typedef struct {
00381
00383 AIGeometryOrganizationType type;
00385 AIGeometryBeginProc begin;
00387 AIGeometryEndProc end;
00388
00389 } AIGeometryOrganizationProcs;
00390
00395 typedef struct {
00396 AIGeometryMoveToProc moveTo;
00397 AIGeometryLineToProc lineTo;
00398 AIGeometryCurveToProc curveTo;
00399 AIGeometryClosePathProc closePath;
00400
00401 } AIGeometryConstructionProcs;
00402
00411 typedef struct {
00412
00413 AIGeometryFillProc fill;
00414 AIGeometryFillProc eofill;
00415 AIGeometryStrokeProc stroke;
00416 AIGeometryClipProc clip;
00417 AIGeometryClipProc eoclip;
00418 AIGeometryImageProc image;
00419 AIGeometryImageMaskProc imageMask;
00420
00421 } AIGeometryPaintingProcs;
00422
00427 typedef struct {
00428
00429 AIGeometrySetGrayProc setWhiteColor;
00430 AIGeometrySetGrayProc setBlackColor;
00431 AIGeometrySetGrayProc setGrayColor;
00432 AIGeometrySetCMYKColorProc setCMYKColor;
00433 AIGeometrySetRGBColorProc setRGBColor;
00434 AIGeometrySetAlphaProc setAlpha;
00435 AIGeometrySetCustomColorProc setCustomColor;
00436 AIGeometrySetGradientColorProc setGradientColor;
00437 AIGeometrySetPatternColorProc setPatternColor;
00438
00439 AIGeometrySetLineWidthProc setLineWidth;
00440 AIGeometrySetLineCapProc setLineCap;
00441 AIGeometrySetLineJoinProc setLineJoin;
00442 AIGeometrySetMiterLimitProc setMiterLimit;
00443 AIGeometrySetDashProc setDash;
00444
00445 } AIGeometryStateProcs;
00446
00447
00448
00449
00450
00451
00452
00453
00475 typedef struct {
00476
00494 ASAPI AIErr (*GeometryIterate) ( AIArtHandle art,
00495 AIGeometryOrganizationProcs *organizationProcs,
00496 AIGeometryConstructionProcs *constructionProcs,
00497 AIGeometryPaintingProcs *paintingProcs,
00498 AIGeometryStateProcs *stateProcs,
00499 AIGeometryUserData userData,
00500 ai::int32 skipArtTypes);
00501
00502 } AIGeometrySuite;
00503
00504
00505 #include "AIHeaderEnd.h"
00506
00507
00508 #endif