00001 #ifndef __AIRealBezier__
00002 #define __AIRealBezier__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef __AITypes__
00028 #include "AITypes.h"
00029 #endif
00030
00031 #include "AIHeaderBegin.h"
00032
00036
00037
00038
00039
00040
00041
00042 #define kAIRealBezierSuite "AI Real Bezier Suite"
00043 #define kAIRealBezierSuiteVersion4 AIAPI_VERSION(4)
00044 #define kAIRealBezierSuiteVersion kAIRealBezierSuiteVersion4
00045 #define kAIRealBezierVersion kAIRealBezierSuiteVersion
00046
00048 enum AIAdjustThroughPointResult {
00050 kAIBezierAdjustReflectedp1 = 1,
00052 kAIBezierAdjustReflectedp2 = 2,
00054 kAIBezierAdjustRotatedp1 = 4,
00056 kAIBezierAdjustRotatedp2 = 8
00057 };
00058
00059
00060
00061
00062
00063
00064
00066 typedef struct {
00067 AIRealPoint p0;
00068 AIRealPoint p1;
00069 AIRealPoint p2;
00070 AIRealPoint p3;
00071 } AIRealBezier, *AIRealBezierPtr;
00072
00073
00074
00075
00076
00077
00078
00079
00089 typedef struct {
00090
00098 AIAPI void (*Set) (AIRealBezier* b, AIRealPoint* p0, AIRealPoint* p1,
00099 AIRealPoint* p2, AIRealPoint* p3);
00105 AIAPI void (*Offset) (AIRealBezier* b, AIReal dh, AIReal dv);
00106
00111 AIAPI void (*Transform) (AIRealBezier* b, AIRealMatrix* m);
00112
00118 AIAPI void (*Evaluate) (AIRealBezier* b, AIReal t, AIRealPoint* p);
00119
00125 AIAPI void (*Tangent) (AIRealBezier* b, AIReal t, AIRealPoint* v);
00126
00132 AIAPI void (*Normal) (AIRealBezier* b, AIReal t, AIRealPoint* v);
00133
00141 AIAPI void (*Divide) (AIRealBezier* b, AIReal t, AIRealBezier* b1,
00142 AIRealBezier* b2);
00143
00154 AIAPI AIBoolean (*IntersectsRect)(AIRealBezier* b, AIRealRect* r, AIReal scale);
00155
00156
00157
00167 AIAPI AIReal (*Length) (AIRealBezier* b, AIReal flatness);
00168
00177 AIAPI void (*PointAndTangent) (AIRealBezier* b, AIReal t, AIRealPoint* p, AIRealPoint *v);
00178
00187 AIAPI ai::uint16 (*AdjustThroughPoint) (AIRealBezier* b, AIRealPoint* p, AIReal t);
00188
00189
00190
00201 AIAPI AIErr (*TAtLength) ( AIRealBezier* bez ,
00202 AIReal length ,
00203 AIReal total_length ,
00204 AIReal flatness,
00205 AIReal* t );
00206
00207 } AIRealBezierSuite;
00208
00209
00210 #include "AIHeaderEnd.h"
00211
00212
00213 #endif