00001
00002
00003 typedef double vector[3];
00004 typedef long point[3];
00005 typedef long twoLongs[2];
00006
00014 typedef struct VECTOR4_design_tag {
00015 double x,y,z,w;
00016 BOOL selected;
00017 } vector4;
00018
00026 typedef struct Designer_VERTEX_tag {
00027 struct Designer_SKELETON_tag *sp;
00028 char status,status_undo;
00029 char gp;
00030 long id;
00031 float x,y;
00032 long xyz[3],xyz_undo[3];
00033 } vertex;
00034
00042 typedef struct Designer_EDGE_tag {
00043 long V[2];
00044 } edge;
00045
00056 typedef struct Designer_FACE_tag {
00057 long V[3];
00058 BOOL bSmooth;
00059 unsigned char color[3];
00060 short material;
00061 short imagemap;
00062 float x[3],y[3];
00063 BOOL gp;
00064 } face;
00065
00074 typedef struct Designer_SKELETON_tag {
00075 struct Designer_SKELETON_tag *at,
00076 *next,*last;
00077 long id,offset;
00078 vector u,v,w;
00079 double t[4][4],tr[4][4];
00080 point xyz_last,xyz,xyz_undo,tp,bx[8],bx_undo[8];
00081 char name[16];
00082 LPARAM lParam;
00083 double wrange,wzone;
00084 double weight,r_scale;
00085 double l,len,len_last,r_dist;
00086 vector d,d_last,r;
00087 } skel;
00088
00098 typedef struct Designer_NURBSSurfSample_tag {
00099 vector point, normal;
00100 double normLen;
00101 double u, v;
00102 } NurbsSurfSample;
00103
00111 typedef struct Designer_NURBSProperties_tag {
00112 char name[32];
00113 long GranularityMax,
00114 GranularityMin;
00115 long u_scale,
00116 v_scale;
00117 long shader,
00118 map,
00119 axis,
00120 param,
00121 smoothing,
00122 shiny,
00123 brilliance,
00124 reflectivity,
00125 transparency,
00126 glasstype,
00127 maptiled,
00128 mapshaded,
00129 mapdecal;
00130 long pad[4];
00131 unsigned char colour[3],
00132 material_colour[3];
00133 char hidden;
00134 char padc[5];
00135 } NurbsProperties;
00136
00153 typedef struct Designer_NURBS_tag {
00154 struct Designer_NURBS_tag *next,*last;
00155 struct Designer_SKELETON_tag *sp;
00156 long numU, numV;
00157 long orderU, orderV;
00158 double * kvU, * kvV;
00159 vector4 **points;
00160 BOOL selected;
00161 NurbsProperties properties;
00162
00163 BOOL strV0, strVn,
00164 strU0, strUn;
00165 BOOL flatV, flatU;
00166 NurbsSurfSample c00, c0n,
00167 cn0, cnn;
00168 } nurbs;
00169
00179 typedef struct Designer_RAMIMAGE_tag {
00180 long version;
00181 long in_use;
00182 long size;
00183 char *filename;
00184 unsigned char *data;
00185 short thumbx,thumby;
00186 unsigned char *thumb;
00187 } RAMIMAGE;
00188
00197 typedef struct Designer_IMAGEMAP_tag {
00198 short in_use;
00199 long version;
00200 char N[32],*S,*R,*B,*T;
00201 char s,r,b,t;
00202 RAMIMAGE si,ri,bi,ti;
00203 short sp,rp,bp,tp;
00204 char Type,TypeR,TypeB,TypeT,
00205 Map,
00206 Lock,Key;
00207 short Angle;
00208 BOOL bTiled,bShaded,bDecal;
00209 point P,X,Y;
00210 long Vlock[3];
00211 unsigned char d_colour[3],s_colour[3],a_colour[3],t_colour[3],k_colour[3];
00212 short AnimFF,AnimDL,AnimLF;
00213 short AnimFFr,AnimDLr,AnimLFr;
00214 short AnimFFb,AnimDLb,AnimLFb;
00215 short AnimFFt,AnimDLt,AnimLFt;
00216 } IMAGEMAP;
00217
00218
00227 typedef struct Designer_WIREFRAME_tag {
00228 long Np,Ne;
00229 twoLongs *e;
00230 point *p;
00231 } wireframe;
00232
00240 typedef struct Designer_MATERIALAXIS_tag {
00241 point P,X,Y;
00242 } MATERIALAXIS;
00243
00251 typedef struct Designer_XSHADER_tag {
00252 BOOL bActive;
00253 long version;
00254 long in_use;
00255 unsigned char mixx;
00256 char *xname,
00257 *parameters;
00258 } XSHADER;
00259
00267 typedef struct Designer_SURFACEMATERIAL_tag {
00268 long version;
00269 char name[32];
00270 unsigned char mcolour1[3],mcolour2[3];
00271 unsigned char acolour[3],scolour[3];
00272 unsigned char xcolour[3],ycolour[3],zcolour[3];
00273 unsigned char gloss;
00274 unsigned char refl;
00275 unsigned char transp;
00276 long refractive_index;
00277 BOOL bInternalShader; int internalShaderID;
00278 struct Designer_MATERIALAXIS_tag ax;
00279 struct Designer_XSHADER_tag Shader[4];
00280 BOOL bSmooth,bShiny,bClear,bGlassEdge,bUseSurfaceMapping;
00281 unsigned char params[16];
00282 long pad[16];
00283 unsigned char other_properties[512];
00284 double mmw[16];
00285 char mmw_brdf[256];
00286 } SURFACEMATERIAL;
00287
00288
00300 typedef struct X__STRUCTUREtag {
00301 unsigned long *Nvert,
00302 *Nedge,
00303 *Nface,
00304 *Nskel,
00305 *NvertSelect,
00306 *NvertDeselect,
00307 *NvertG;
00308 int *nImaps,
00309 *nMats;
00310 struct Designer_VERTEX_tag **MainVp;
00311 struct Designer_EDGE_tag **MainEp;
00312 struct Designer_FACE_tag **MainFp;
00313 struct Designer_SKELETON_tag **MainSp,
00314 **FirstSp;
00315 struct Designer_IMAGEMAP_tag *iMap;
00316 struct Designer_SURFACEMATERIAL_tag *iMat;
00317 struct Designer_XSHADER_tag *xShaders;
00318 long *NpointerX,*NpointerY,*NpointerZ,
00319 *TVpointX, *TVpointY, *TVpointZ,
00320 *TVsizeX, *TVsizeY, *TVsizeZ;
00321 double *ruler;
00322 long *rulerx,*rulery,*rulerz,
00323 *orulerx,*orulery,*orulerz;
00324 long *ActiveView;
00325 struct Designer_WIREFRAME_tag *w_frame;
00326 long version;
00327 struct Designer_NURBS_tag **MainNp;
00328 unsigned long *Nnurbs;
00329 long *dummyv[60];
00330 void (*fpDA)(short);
00331 void (*fpCV)(void);
00332 void (*fpCE)(long, long);
00333 void (*fpCF)(long, long, long);
00334 void (*fpCS)(struct Designer_SKELETON_tag *);
00335 BOOL (*fpUVH)(long);
00336 BOOL (*fpUEH)(long);
00337 BOOL (*fpUFH)(long);
00338 void (*fpTool_UP)(void);
00339 void (*fpTool_RD)(void);
00340 BOOL (*fpTool_CP)(int);
00341 int (*fpTool_FC)(int,int,int,double,double);
00342 BOOL (*fpTool_AC)(int);
00343 void (*fpChooseColour)(unsigned char [], char *, HWND);
00344 int (*fpChooseFile)(int, char *, char *, char *, char *, HWND);
00345 void (*fpCentreDlgOnC)(HWND);
00346 void (*fpCentreDlgOnS)(HWND);
00347 void (*fpCopyFaceProp)(struct Designer_FACE_tag *, struct Designer_FACE_tag *);
00348 void (*fpZeroSkeletonBoundingBox)(struct Designer_SKELETON_tag *);
00349 void (*fpGetSkeletonBoundBox)(struct Designer_SKELETON_tag *, int);
00350 int (*fpEraseVertex)(int);
00351 void (*fpEraseVertexMapping)(void);
00352 short (*fpEraseSkeleton)(struct Designer_SKELETON_tag *);
00353 long (*fpGetClosestVertex)(void);
00354 int (*fpConnected)(long, long);
00355 int (*fpNormalize)(vector);
00356 void (*fpArbitraryRotate)(double, point, point, double [4][4]);
00357 void (*fpOrientateFaceNormals)(long, long, long *);
00358 void (*fpReverseFaceOrientation)(long, long *);
00359 BOOL (*fpIsFOSame)(long, long, long, long, long, long);
00360 void (*fpOrientateSelectedFaces)(void);
00361 void (*fpAppendFileExtension)(char *, char *);
00362 void (*fpEraseAllNurbs)(void);
00363 void (*fpEraseNurbs)(struct Designer_NURBS_tag *);
00364 void (*fpCreateNurbs)(void);
00365 void (*fpClearNurbsSkeleton)(struct Designer_SKELETON_tag *);
00366 BOOL (*fpAllocNurbs)(struct Designer_NURBS_tag *, double *, double *);
00367 BOOL (*fpCloneNurbs)(struct Designer_NURBS_tag *, struct Designer_NURBS_tag *);
00368 void (*fpReleaseNurbs)(struct Designer_NURBS_tag *);
00369
00370 int (*fpCreateMaterial)(BOOL ask);
00371 int (*fpCreateImageMap)(void);
00372
00373 void *dummyf[50];
00374 } X__STRUCTURE;