00001 #ifndef __aycore_h__
00002 #define __aycore_h__
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00022 int ay_bbc_get(ay_object *o, double *bbox);
00023
00024
00025
00026
00029 int ay_clear_scene(void);
00030
00033 int ay_clear_scenetcmd(ClientData clientData, Tcl_Interp *interp,
00034 int argc, char *argv[]);
00035
00036
00037
00038
00041 int ay_clevel_find(ay_object *c, ay_object *o, int *found);
00042
00045 int ay_clevel_add(ay_object *o);
00046
00049 void ay_clevel_del(void);
00050
00053 int ay_clevel_delall(void);
00054
00057 int ay_clevel_gotop();
00058
00061 int ay_clevel_gotoptcmd(ClientData clientData, Tcl_Interp *interp,
00062 int argc, char *argv[]);
00063
00066 int ay_clevel_gouptcmd(ClientData clientData, Tcl_Interp *interp,
00067 int argc, char *argv[]);
00068
00072 int ay_clevel_godowntcmd(ClientData clientData, Tcl_Interp *interp,
00073 int argc, char *argv[]);
00074
00077 int ay_clevel_gettcmd(ClientData clientData, Tcl_Interp *interp,
00078 int argc, char *argv[]);
00079
00082 int ay_clevel_cltcmd(ClientData clientData, Tcl_Interp *interp,
00083 int argc, char *argv[]);
00084
00085
00086
00087
00090 int ay_clipb_copytcmd(ClientData clientData, Tcl_Interp *interp,
00091 int argc, char *argv[]);
00092
00095 int ay_clipb_cuttcmd(ClientData clientData, Tcl_Interp *interp,
00096 int argc, char *argv[]);
00097
00101 int ay_clipb_pastetcmd(ClientData clientData, Tcl_Interp *interp,
00102 int argc, char *argv[]);
00103
00107 int ay_clipb_movetcmd(ClientData clientData, Tcl_Interp *interp,
00108 int argc, char *argv[]);
00109
00113 int ay_clipb_replacetcmd(ClientData clientData, Tcl_Interp *interp,
00114 int argc, char *argv[]);
00115
00116
00117
00118
00121 int ay_comp_strcase(char *s1, char *s2);
00122
00125 int ay_comp_register(ay_comparecb *compcb, unsigned int type_id);
00126
00129 int ay_comp_init(void);
00130
00133 int ay_comp_objects(ay_object *o1, ay_object *o2);
00134
00137 int ay_comp_trafos(ay_object *o1, ay_object *o2);
00138
00141 int ay_comp_tags(ay_object *o1, ay_object *o2);
00142
00143
00144
00145
00148 int ay_convert_register(ay_convertcb *convcb, unsigned int type_id);
00149
00152 int ay_convert_force(ay_object *o, int in_place);
00153
00156 int ay_convert_forcetcmd(ClientData clientData, Tcl_Interp *interp,
00157 int argc, char *argv[]);
00158
00159
00160
00161
00164 void ay_draw_selp(ay_object *o);
00165
00168 void ay_draw_object(struct Togl *togl, ay_object *o, int selected);
00169
00172 int ay_draw_view(struct Togl *togl, int draw_offset);
00173
00176 void ay_draw_grid(struct Togl *togl);
00177
00180 void ay_draw_arrow(struct Togl *togl, double *from, double *to);
00181
00184 void ay_draw_bgimage(struct Togl *togl);
00185
00188 void ay_draw_needredraw(ay_list_object *oldsel, ay_list_object *newsel,
00189 int *result);
00190
00193 void ay_draw_trimview(void);
00194
00197 void ay_draw_rectangle(int winwidth, int winheight,
00198 double xmin, double ymin,
00199 double xmax, double ymax);
00200
00203 void ay_draw_cs(struct Togl *togl);
00204
00205
00206
00207
00210 void ay_error(int code, char *where, char *what);
00211
00214 int ay_error_tcmd(ClientData clientData, Tcl_Interp *interp,
00215 int argc, char *argv[]);
00216
00219 void ay_error_glucb(GLenum err);
00220
00223 int ay_error_getglerrortcmd(ClientData clientData, Tcl_Interp *interp,
00224 int argc, char *argv[]);
00225
00226
00227
00228
00231 int ay_geom_intersectlines3D(double *p1, double *t1,
00232 double *p2, double *t2,
00233 double *p);
00234
00237 int ay_geom_intersectlines2D(double *p1, double *t1,
00238 double *p2, double *t2,
00239 double *p);
00240
00243 void ay_geom_calcnfrom3(double *p1, double *p2, double *p3, double *n);
00244
00245
00246
00247
00250 int ay_instt_createoidht(ay_object *o);
00251
00254 int ay_instt_connect(ay_object *o, ay_object **last);
00255
00258 int ay_instt_createoid(char **dest);
00259
00262 int ay_instt_createorigids(ay_object *o);
00263
00266 int ay_instt_createinstanceids(ay_object *o);
00267
00270 int ay_instt_clearoidtags(ay_object *o);
00271
00274 int ay_instt_findinstance(ay_object *r, ay_object *o);
00275
00278 int ay_instt_checkclipboard(ay_object *o);
00279
00282 int ay_instt_wribiarchives(char *file, ay_object *o);
00283
00286 int ay_instt_resolve(ay_object *i);
00287
00290 int ay_instt_resolvetcmd(ClientData clientData, Tcl_Interp *interp,
00291 int argc, char *argv[]);
00292
00295 int ay_instt_checkinstance(ay_object *o, ay_object *target,
00296 ay_object *instance, int *check_this_tree);
00297
00300 int ay_instt_check(ay_object *o, ay_object *target);
00301
00304 int ay_instt_getmastertcmd(ClientData clientData, Tcl_Interp *interp,
00305 int argc, char *argv[]);
00306
00309 int ay_instt_countrefs(ay_object *o, ay_object *m, unsigned int *refs);
00310
00313 void ay_instt_init(Tcl_Interp *interp);
00314
00315
00316
00317
00320 int ay_interpol_1DA4D(double p, int len, double *st, double *en, double *ta);
00321
00324 int ay_interpol_1DA1D(double p, int len, double *st, double *en, double *ta);
00325
00328 int ay_interpol_trafos(double p, ay_object *o1, ay_object *o2, ay_object *ta);
00329
00332 int ay_interpol_ncurves(double p, ay_object *c1, ay_object *c2,
00333 ay_object **ta);
00334
00335
00336
00337
00340 int ay_notify_register(ay_notifycb *notcb, unsigned int type_id);
00341
00344 int ay_notify_parent(void);
00345
00348 int ay_notify_force(ay_object *o);
00349
00352 int ay_notify_forceparent(ay_object *o, int silent);
00353
00356 int ay_notify_forcetcmd(ClientData clientData, Tcl_Interp *interp,
00357 int argc, char *argv[]);
00358
00361 int ay_notify_findparents(ay_object *o, ay_object *r,
00362 ay_list_object **parents);
00363
00366 int ay_notify_complete(ay_object *r);
00367
00370 int ay_notify_init(Tcl_Interp *interp);
00371
00372
00373
00374
00377 Tk_RestrictAction ay_ns_restrictall(ClientData clientData,
00378 XEvent *eventPtr);
00379
00382 int ay_ns_execute(ay_object *o, char *script);
00383
00386 void ay_ns_init(Tcl_Interp *interp);
00387
00388
00389
00390
00393 int ay_oact_parseargs(struct Togl *togl, int argc, char *argv[], char *fname,
00394 double *winx, double *winy,
00395 double *owinx, double *owiny);
00396
00399 int ay_oact_movetcb(struct Togl *togl, int argc, char *argv[]);
00400
00403 int ay_oact_rottcb(struct Togl *togl, int argc, char *argv[]);
00404
00407 int ay_oact_rotatcb(struct Togl *togl, int argc, char *argv[]);
00408
00411 int ay_oact_sc1DXcb(struct Togl *togl, int argc, char *argv[]);
00412
00415 int ay_oact_sc1DXAcb(struct Togl *togl, int argc, char *argv[]);
00416
00419 int ay_oact_sc1DYcb(struct Togl *togl, int argc, char *argv[]);
00420
00423 int ay_oact_sc1DYAcb(struct Togl *togl, int argc, char *argv[]);
00424
00427 int ay_oact_sc1DZcb(struct Togl *togl, int argc, char *argv[]);
00428
00431 int ay_oact_sc1DZAcb(struct Togl *togl, int argc, char *argv[]);
00432
00435 int ay_oact_sc2Dcb(struct Togl *togl, int argc, char *argv[]);
00436
00439 int ay_oact_sc3Dcb(struct Togl *togl, int argc, char *argv[]);
00440
00443 int ay_oact_str2Dcb(struct Togl *togl, int argc, char *argv[]);
00444
00447 int ay_oact_sc2DAcb(struct Togl *togl, int argc, char *argv[]);
00448
00451 int ay_oact_str2DAcb(struct Togl *togl, int argc, char *argv[]);
00452
00455 int ay_oact_sc3DAcb(struct Togl *togl, int argc, char *argv[]);
00456
00457
00458
00459
00462 void ay_object_defaults(ay_object *o);
00463
00466 int ay_object_create(unsigned int index, ay_object **o);
00467
00470 int ay_object_createargs(unsigned int index, int argc, char **argv,
00471 ay_object **o);
00472
00475 int ay_object_createtcmd(ClientData clientData, Tcl_Interp *interp,
00476 int argc, char *argv[]);
00477
00480 int ay_object_delete(ay_object *o);
00481
00484 int ay_object_deletemulti(ay_object *o);
00485
00488 int ay_object_deletetcmd(ClientData clientData, Tcl_Interp *interp,
00489 int argc, char *argv[]);
00490
00493 int ay_object_link(ay_object *o);
00494
00497 int ay_object_unlink(ay_object *o);
00498
00501 char *ay_object_gettypename(unsigned int index);
00502
00505 char *ay_object_getname(ay_object *o);
00506
00509 int ay_object_setnametcmd(ClientData clientData, Tcl_Interp *interp,
00510 int argc, char *argv[]);
00511
00514 int ay_object_copy(ay_object *src, ay_object **dst);
00515
00518 int ay_object_copymulti(ay_object *src, ay_object **dst);
00519
00522 int ay_object_haschildtcmd(ClientData clientData, Tcl_Interp *interp,
00523 int argc, char *argv[]);
00524
00527 int ay_object_gettypetcmd(ClientData clientData, Tcl_Interp *interp,
00528 int argc, char *argv[]);
00529
00532 int ay_object_getnametcmd(ClientData clientData, Tcl_Interp *interp,
00533 int argc, char *argv[]);
00534
00537 int ay_object_crtendlevel(ay_object **o);
00538
00541 int ay_object_deleteinstances(ay_object **o);
00542
00545 int ay_object_replace(ay_object *src, ay_object *dst);
00546
00549 unsigned int ay_object_count(ay_object *o);
00550
00551
00554 int ay_object_candelete(ay_object *p, ay_object *o);
00555
00556
00557
00558
00561 int ay_otype_registercore(char *name,
00562 ay_createcb *crtcb,
00563 ay_deletecb *delcb,
00564 ay_copycb *copycb,
00565 ay_drawcb *drawcb,
00566 ay_drawcb *drawhcb,
00567 ay_drawcb *shadecb,
00568 ay_propcb *setpropcb,
00569 ay_propcb *getpropcb,
00570 ay_getpntcb *getpntcb,
00571 ay_readcb *readcb,
00572 ay_writecb *writecb,
00573 ay_wribcb *wribcb,
00574 ay_bbccb *bbccb,
00575 unsigned int type_index);
00576
00579 int ay_otype_register(char *name,
00580 ay_createcb *crtcb,
00581 ay_deletecb *delcb,
00582 ay_copycb *copycb,
00583 ay_drawcb *drawcb,
00584 ay_drawcb *drawhcb,
00585 ay_drawcb *shadecb,
00586 ay_propcb *setpropcb,
00587 ay_propcb *getpropcb,
00588 ay_getpntcb *getpntcb,
00589 ay_readcb *readcb,
00590 ay_writecb *writecb,
00591 ay_wribcb *wribcb,
00592 ay_bbccb *bbccb,
00593 unsigned int *type_index);
00594
00595
00596
00599 void ay_matt_init(Tcl_Interp *interp);
00600
00603 int ay_matt_registermaterial(char *name, ay_mat_object *mat);
00604
00607 int ay_matt_isregistered(char *name);
00608
00611 int ay_matt_deregister(char *name);
00612
00615 int ay_matt_getmaterial(char *name, ay_mat_object **material);
00616
00619 int ay_matt_removeallrefs(ay_object *o);
00620
00623 int ay_matt_removerefs(ay_object *o, ay_mat_object *material);
00624
00627 int ay_matt_removecliprefs(ay_object *o);
00628
00631 int ay_matt_connect(ay_object *o);
00632
00635 int ay_matt_creatematerialids(ay_object *o);
00636
00639 int ay_matt_clearmaterialids(ay_object *o);
00640
00643 int ay_matt_wrib(char *file, ay_mat_object *m);
00644
00647 void ay_matt_nomaterial(unsigned int type);
00648
00651 int ay_matt_mayhavematerial(unsigned int type);
00652
00653
00654
00655
00658 void ay_pact_clearpointedit(ay_pointedit *pe);
00659
00662 int ay_pact_getpoint(int mode, ay_object *o, double *obj, ay_pointedit *pe);
00663
00666 int ay_pact_seltcb(struct Togl *togl, int argc, char *argv[]);
00667
00670 int ay_pact_insertptcb(struct Togl *togl, int argc, char *argv[]);
00671
00674 int ay_pact_deleteptcb(struct Togl *togl, int argc, char *argv[]);
00675
00678 int ay_pact_startpetcb(struct Togl *togl, int argc, char *argv[]);
00679
00682 int ay_pact_pedtcb(struct Togl *togl, int argc, char *argv[]);
00683
00686 void ay_pact_griddify(double *n, double grid);
00687
00690 int ay_pact_petcb(struct Togl *togl, int argc, char *argv[]);
00691
00694 int ay_pact_wetcb(struct Togl *togl, int argc, char *argv[]);
00695
00698 int ay_pact_wrtcb(struct Togl *togl, int argc, char *argv[]);
00699
00702 int ay_pact_snaptogridcb(struct Togl *togl, int argc, char *argv[]);
00703
00706 int ay_pact_snaptomarkcb(struct Togl *togl, int argc, char *argv[]);
00707
00708
00709
00712 int ay_pomesht_destroy(ay_pomesh_object *pomesh);
00713
00716 int ay_pomesht_tesselate(ay_pomesh_object *pomesh);
00717
00720 int ay_pomesht_merge(int merge_pv_tags, ay_list_object *list,
00721 ay_object **result);
00722
00725 int ay_pomesht_mergetcmd(ClientData clientData, Tcl_Interp *interp,
00726 int argc, char *argv[]);
00727
00730 int ay_pomesht_optimizecoords(ay_pomesh_object *pomesh, int ignore_normals);
00731
00734 int ay_pomesht_optimizetcmd(ClientData clientData, Tcl_Interp *interp,
00735 int argc, char *argv[]);
00736
00739 int ay_pomesht_tosdmesh(ay_pomesh_object *pomesh, ay_sdmesh_object **sdmesh);
00740
00743 int ay_pomesht_splitface(ay_pomesh_object *pomesh, unsigned int f,
00744 ay_pomesh_object *target);
00745
00748 int ay_pomesht_split(ay_pomesh_object *pomesh, ay_point *pnts,
00749 ay_pomesh_object **result);
00750
00753 int ay_pomesht_splittcmd(ClientData clientData, Tcl_Interp *interp,
00754 int argc, char *argv[]);
00755
00756
00757
00758
00761 int ay_prefs_gettcmd(ClientData clientData, Tcl_Interp *interp,
00762 int argc, char *argv[]);
00763
00766 int ay_prefs_settcmd(ClientData clientData, Tcl_Interp *interp,
00767 int argc, char *argv[]);
00768
00769
00770
00771
00774 int ay_prop_gettcmd(ClientData clientData, Tcl_Interp *interp,
00775 int argc, char *argv[]);
00776
00779 int ay_prop_settcmd(ClientData clientData, Tcl_Interp *interp,
00780 int argc, char *argv[]);
00781
00784 int ay_prop_gettrafotcmd(ClientData clientData, Tcl_Interp *interp,
00785 int argc, char *argv[]);
00786
00789 int ay_prop_settrafotcmd(ClientData clientData, Tcl_Interp *interp,
00790 int argc, char *argv[]);
00791
00794 int ay_prop_getattrtcmd(ClientData clientData, Tcl_Interp *interp,
00795 int argc, char *argv[]);
00796
00799 int ay_prop_setattrtcmd(ClientData clientData, Tcl_Interp *interp,
00800 int argc, char *argv[]);
00801
00804 int ay_prop_getmattcmd(ClientData clientData, Tcl_Interp *interp,
00805 int argc, char *argv[]);
00806
00809 int ay_prop_setmattcmd(ClientData clientData, Tcl_Interp *interp,
00810 int argc, char *argv[]);
00811
00814 int ay_prop_getnpinfo(Tcl_Interp *interp, char *n1, ay_object *o);
00815
00818 int ay_prop_getncinfo(Tcl_Interp *interp, char *n1, ay_object *o);
00819
00820
00821
00822
00825 int ay_provide_register(ay_providecb *provcb, unsigned int type_id);
00826
00829 int ay_provide_object(ay_object *o, unsigned int type, ay_object **result);
00830
00831
00832
00833
00836 int ay_pv_filltokpar(ay_object *o, int declare, int start,
00837 int *added, RtToken tokens[], RtPointer parms[]);
00838
00841 int ay_pv_add(ay_object *o, char *name, char *detail, int type,
00842 int datalen, int stride, void *data);
00843
00846 int ay_pv_merge(ay_tag *t1, ay_tag *t2, ay_tag **mt);
00847
00850 int ay_pv_cmpndt(ay_tag *t1, ay_tag *t2);
00851
00854 int ay_pv_checkndt(ay_tag *t, const char *name, const char *detail,
00855 const char *type);
00856
00859 int ay_pv_getdetail(ay_tag *t, char **detail);
00860
00863 int ay_pv_convert(ay_tag *tag, int type, unsigned int *datalen, void **data);
00864
00867 int ay_pv_getst(ay_object *o, char *mys, char *myt, void **data);
00868
00871 int ay_pv_getvc(ay_object *o, int stride, char *myc, void **data);
00872
00875 int ay_pv_count(ay_object *o);
00876
00879 void ay_pv_init(Tcl_Interp *interp);
00880
00881
00882
00883
00886 void ay_quat_axistoquat(double a[3], double phi, double q[4]);
00887
00890 void ay_quat_norm(double q[4]);
00891
00894 void ay_quat_add(double q1[4], double q2[4], double dest[4]);
00895
00898 void ay_quat_torotmatrix(double q[4], double m[16]);
00899
00902 void ay_quat_toeuler(double q[4], double euler[3]);
00903
00906 int ay_quat_slerp(double time, double q1[4], double q2[4], double *r);
00907
00910 double ay_quat_dot(double q1[4], double q2[4]);
00911
00912
00913
00914
00917 int ay_read_string(FILE *fileptr, char **result);
00918
00921 int ay_read_unistring(FILE *fileptr, Tcl_UniChar **result);
00922
00925 int ay_read_skip(FILE *fileptr);
00926
00929 int ay_read_header(FILE *fileptr);
00930
00933 int ay_read_attributes(FILE *fileptr, ay_object *o);
00934
00937 int ay_read_tags(FILE *fileptr, ay_object *o);
00938
00941 int ay_read_shader(FILE *fileptr, ay_shader **result);
00942
00945 int ay_read_object(FILE *fileptr);
00946
00949 int ay_read_scene(Tcl_Interp *interp, char *filename, int insert);
00950
00953 int ay_read_replacetcmd(ClientData clientData, Tcl_Interp *interp,
00954 int argc, char *argv[]);
00955
00958 int ay_read_inserttcmd(ClientData clientData, Tcl_Interp *interp,
00959 int argc, char *argv[]);
00960
00961
00962
00963
00966 int ay_riattr_wrib(ay_object *o);
00967
00970 void ay_riattr_init(Tcl_Interp *interp);
00971
00972
00973
00974
00977 int ay_riopt_wrib(ay_object *o);
00978
00981 void ay_riopt_init(Tcl_Interp *interp);
00982
00983
00984
00985
00988 int ay_sdmesht_tesselate(ay_sdmesh_object *sdmesh);
00989
00992 int ay_sdmesht_topolymesh(ay_sdmesh_object *sdmesh, ay_pomesh_object **pomesh);
00993
00994
00995
00996
00999 int ay_sel_free(int clear_selflag);
01000
01003 int ay_sel_add(ay_object *o);
01004
01007 int ay_sel_selobtcmd(ClientData clientData, Tcl_Interp *interp,
01008 int argc, char *argv[]);
01009
01012 int ay_sel_getseltcmd(ClientData clientData, Tcl_Interp *interp,
01013 int argc, char *argv[]);
01014
01017 int ay_sel_hsltcmd(ClientData clientData, Tcl_Interp *interp,
01018 int argc, char *argv[]);
01019
01022 void ay_sel_clearselflag(ay_object *o);
01023
01024
01025
01026
01029 void ay_selp_clear(ay_object *o);
01030
01033 int ay_selp_selall(ay_object *o);
01034
01037 int ay_selp_applytrafotcmd(ClientData clientData, Tcl_Interp *interp,
01038 int argc, char *argv[]);
01039
01042 int ay_selp_invert(ay_object *o);
01043
01046 int ay_selp_inverttcmd(ClientData clientData, Tcl_Interp *interp,
01047 int argc, char *argv[]);
01048
01051 int ay_selp_center(ay_object *o, int mode);
01052
01055 int ay_selp_centertcmd(ClientData clientData, Tcl_Interp *interp,
01056 int argc, char *argv[]);
01057
01060 int ay_selp_sel(ay_object *o, unsigned int indiceslen, unsigned int *indices);
01061
01064 int ay_selp_seltcmd(ClientData clientData, Tcl_Interp *interp,
01065 int argc, char *argv[]);
01066
01069 void ay_selp_calccog(ay_point *pnts, double *cog);
01070
01073 int ay_selp_rem(ay_object *o, int index);
01074
01077 int ay_selp_ins(ay_object *o, int index, int addtoselp);
01078
01081 int ay_selp_getpnts(int mode, ay_object *o, double *p, ay_pointedit *pe,
01082 int readonly, int arrlen, int stride, double *arr);
01083
01084
01085
01088 void ay_shade_object(struct Togl *togl, ay_object *o, int push_name);
01089
01092 int ay_shade_view(struct Togl *togl);
01093
01094
01095
01096
01097 #ifdef AYUSESLCARGS
01098
01100 int ay_shader_scanslcsarg(SLC_VISSYMDEF *symbol, Tcl_DString *ds);
01101 #endif
01102
01103
01106 int ay_shader_scanslctcmd(ClientData clientData, Tcl_Interp *interp,
01107 int argc, char *argv[]);
01108 #ifdef AYUSESLXARGS
01109
01111 int ay_shader_scanslxsarg(SLX_VISSYMDEF *symbol, Tcl_DString *ds);
01112 #endif
01113
01116 int ay_shader_scanslxtcmd(ClientData clientData, Tcl_Interp *interp,
01117 int argc, char *argv[]);
01118
01121 int ay_shader_free(ay_shader *shader);
01122
01125 int ay_shader_copyarg(ay_shader_arg *source, ay_shader_arg **dest);
01126
01129 int ay_shader_copy(ay_shader *source, ay_shader **dest);
01130
01133 int ay_shader_wrib(ay_shader *shader, int type, RtLightHandle *light_handle);
01134
01137 int ay_shader_gettcmd(ClientData clientData, Tcl_Interp *interp,
01138 int argc, char *argv[]);
01139
01142 int ay_shader_settcmd(ClientData clientData, Tcl_Interp *interp,
01143 int argc, char *argv[]);
01144
01145
01146
01147
01150 int ay_table_init(ay_ftable *table);
01151
01154 int ay_table_additem(ay_ftable *table, ay_voidfp newitem, unsigned int index);
01155
01156
01157
01158
01161 int ay_tags_delall(ay_object *o);
01162
01165 int ay_tags_free(ay_tag *tag);
01166
01169 int ay_tags_copy(ay_tag *source, ay_tag **dest);
01170
01173 int ay_tags_copyall(ay_object *src, ay_object *dst);
01174
01177 int ay_tags_append(ay_object *o, ay_tag *tag);
01178
01181 int ay_tags_register(Tcl_Interp *interp, char *name, char **result);
01182
01185 int ay_tags_settcmd(ClientData clientData, Tcl_Interp *interp,
01186 int argc, char *argv[]);
01187
01190 int ay_tags_addtcmd(ClientData clientData, Tcl_Interp *interp,
01191 int argc, char *argv[]);
01192
01195 int ay_tags_gettcmd(ClientData clientData, Tcl_Interp *interp,
01196 int argc, char *argv[]);
01197
01200 int ay_tags_deletetcmd(ClientData clientData, Tcl_Interp *interp,
01201 int argc, char *argv[]);
01202
01205 int ay_tags_parseplist(char *str, int declare, RtInt *argc, RtToken **tokensr,
01206 RtPointer **valuesr);
01207
01210 int ay_tags_reconnect(ay_object *o, char *tagtype, char *tagname);
01211
01214 int ay_tags_addnonm(ay_object *o, ay_object *m);
01215
01218 int ay_tags_remnonm(ay_object *o, ay_object *m);
01219
01220
01221
01222
01225 int ay_tc_wrib(ay_object *o);
01226
01229 int ay_tc_wribindex(ay_object *o, int index);
01230
01233 int ay_tc_count(ay_object *o);
01234
01237 void ay_tc_init(Tcl_Interp *interp);
01238
01239
01240
01241
01244 int ay_tcmd_reverttcmd(ClientData clientData, Tcl_Interp *interp,
01245 int argc, char *argv[]);
01246
01249 void ay_tcmd_showall(ay_object *o);
01250
01253 int ay_tcmd_showtcmd(ClientData clientData, Tcl_Interp *interp,
01254 int argc, char *argv[]);
01255
01258 void ay_tcmd_hideall(ay_object *o);
01259
01262 int ay_tcmd_hidetcmd(ClientData clientData, Tcl_Interp *interp,
01263 int argc, char *argv[]);
01264
01267 int ay_tcmd_getvertcmd(ClientData clientData, Tcl_Interp *interp,
01268 int argc, char *argv[]);
01269
01272 int ay_tcmd_getbppntfromindex(ay_bpatch_object *patch, int index,
01273 double **p);
01274
01277 int ay_tcmd_getpointtcmd(ClientData clientData, Tcl_Interp *interp,
01278 int argc, char *argv[]);
01279
01282 int ay_tcmd_setpointtcmd(ClientData clientData, Tcl_Interp *interp,
01283 int argc, char *argv[]);
01284
01285 #ifdef AYENABLEWAIT
01286
01288 int ay_tcmd_waitpidtcmd(ClientData clientData, Tcl_Interp *interp,
01289 int argc, char *argv[]);
01290 #endif
01291
01292 #ifdef AYENABLEFEXIT
01293
01295 int ay_tcmd_fastexittcmd(ClientData clientData, Tcl_Interp *interp,
01296 int argc, char *argv[]);
01297 #endif
01298
01301 int ay_tcmd_withobtcmd(ClientData clientData, Tcl_Interp *interp,
01302 int argc, char *argv[]);
01303
01306 int ay_tcmd_registerlang(char *name, char **result);
01307
01310 int ay_tcmd_getuint(char *str, unsigned int *uint);
01311
01312
01313
01316 int ay_tgui_init(Tcl_Interp *interp);
01317
01318
01319
01320
01323 int ay_tmp_gettcmd(ClientData clientData, Tcl_Interp *interp,
01324 int argc, char *argv[]);
01325
01326
01327
01328
01331 void ay_toglcb_create(struct Togl *togl);
01332
01335 void ay_toglcb_destroy(struct Togl *togl);
01336
01339 void ay_toglcb_reshape(struct Togl *togl);
01340
01343 void ay_toglcb_display(struct Togl *togl);
01344
01345
01346
01347
01350 void ay_trafo_apply3(double *c, double *m);
01351
01354 void ay_trafo_apply3v(double *c, unsigned int clen, unsigned int stride,
01355 double *m);
01356
01359 void ay_trafo_apply4(double *c, double *m);
01360
01363 void ay_trafo_apply4v(double *c, unsigned int clen, unsigned int stride,
01364 double *m);
01365
01368 void ay_trafo_getall(ay_list_object *lo);
01369
01372 void ay_trafo_getalli(ay_list_object *lo);
01373
01376 void ay_trafo_getalls(ay_list_object *lo);
01377
01380 void ay_trafo_getallis(ay_list_object *lo);
01381
01384 void ay_trafo_getallsr(ay_list_object *lo);
01385
01388 void ay_trafo_getallisr(ay_list_object *lo);
01389
01392 void ay_trafo_getallr(ay_list_object *lo);
01393
01396 void ay_trafo_getallir(ay_list_object *lo);
01397
01400 int ay_trafo_delegate(ay_object *o);
01401
01404 int ay_trafo_delegatetcmd(ClientData clientData, Tcl_Interp *interp,
01405 int argc, char *argv[]);
01406
01409 void ay_trafo_applyall(ay_list_object *lo, ay_object *o, double *p);
01410
01413 void ay_trafo_applyalli(ay_list_object *lo, ay_object *o, double *p);
01414
01417 void ay_trafo_copy(ay_object *src, ay_object *dst);
01418
01421 void ay_trafo_add(ay_object *src, ay_object *dst);
01422
01425 void ay_trafo_defaults(ay_object *o);
01426
01429 int ay_trafo_movobtcmd(ClientData clientData, Tcl_Interp *interp,
01430 int argc, char *argv[]);
01431
01434 int ay_trafo_movpntstcmd(ClientData clientData, Tcl_Interp *interp,
01435 int argc, char *argv[]);
01436
01439 int ay_trafo_scalobtcmd(ClientData clientData, Tcl_Interp *interp,
01440 int argc, char *argv[]);
01441
01444 int ay_trafo_scalpntstcmd(ClientData clientData, Tcl_Interp *interp,
01445 int argc, char *argv[]);
01446
01449 int ay_trafo_rotobtcmd(ClientData clientData, Tcl_Interp *interp,
01450 int argc, char *argv[]);
01451
01454 int ay_trafo_rotpntstcmd(ClientData clientData, Tcl_Interp *interp,
01455 int argc, char *argv[]);
01456
01459 void ay_trafo_multmatrix4(double *m1, double *m2);
01460
01463 int ay_trafo_invmatrix4(double *m, double *mi);
01464
01468 int ay_trafo_creatematrix(ay_object *o, double *m);
01469
01472 void ay_trafo_decomposematrix(double *m, ay_object *o);
01473
01476 void ay_trafo_identitymatrix(double *m);
01477
01480 void ay_trafo_translatematrix(double x, double y, double z, double *m);
01481
01484 void ay_trafo_scalematrix(double x, double y, double z, double *m);
01485
01488 void ay_trafo_rotatematrix(double angle, double x, double y, double z,
01489 double *m);
01490
01493 void ay_trafo_pointstoplane(double x1, double y1, double z1,
01494 double x2, double y2, double z2,
01495 double x3, double y3, double z3,
01496 double *A, double *B, double *C, double *D);
01497
01500 void ay_trafo_scalecog(double scale, double *cv, int len, int stride);
01501
01502
01503
01504
01507 int ay_undo_init(int buffer_size);
01508
01511 int ay_undo_clear(void);
01512
01515 int ay_undo_clearobj(ay_object *o);
01516
01519 int ay_undo_undotcmd(ClientData clientData, Tcl_Interp *interp,
01520 int argc, char *argv[]);
01521
01522
01523
01524
01527 int ay_vact_movetcb(struct Togl *togl, int argc, char *argv[]);
01528
01531 int ay_vact_zoomtcb(struct Togl *togl, int argc, char *argv[]);
01532
01535 int ay_vact_moveztcb(struct Togl *togl, int argc, char *argv[]);
01536
01537
01538
01539
01542 void ay_viewt_setupprojection(struct Togl *togl);
01543
01546 void ay_viewt_rotate(ay_view_object *view, double rotx, double roty,
01547 double rotz);
01548
01551 void ay_viewt_wintoobj(struct Togl *togl, ay_object *o,
01552 double winX, double winY,
01553 double *objX, double *objY, double *objZ);
01554
01557 void ay_viewt_winrecttoobj(struct Togl *togl, ay_object *o,
01558 double winX, double winY,
01559 double winX2, double winY2,
01560 double *obj);
01561
01564 void ay_viewt_wintoworld(struct Togl *togl, double winX, double winY,
01565 double *worldX, double *worldY, double *worldZ);
01566
01569 int ay_viewt_zoomtoobj(struct Togl *togl, int argc, char *argv[]);
01570
01573 int ay_viewt_align(struct Togl *togl, int argc, char *argv[]);
01574
01577 void ay_viewt_alignlocal(void);
01578
01581 int ay_viewt_makecurtcb(struct Togl *togl, int argc, char *argv[]);
01582
01585 void ay_viewt_changetype(ay_view_object *view, int type);
01586
01589 int ay_viewt_reshapetcb(struct Togl *togl, int argc, char *argv[]);
01590
01593 int ay_viewt_redrawtcb(struct Togl *togl, int argc, char *argv[]);
01594
01597 int ay_viewt_setconftcb(struct Togl *togl, int argc, char *argv[]);
01598
01601 int ay_viewt_updatemark(struct Togl *togl, int local);
01602
01605 int ay_viewt_updateglobalmark(struct Togl *togl);
01606
01609 int ay_viewt_fromcamtcb(struct Togl *togl, int argc, char *argv[]);
01610
01613 int ay_viewt_tocamtcb(struct Togl *togl, int argc, char *argv[]);
01614
01617 void ay_viewt_uprop(ay_view_object *view);
01618
01621 int ay_viewt_griddify(struct Togl *togl, double *winx, double *winy);
01622
01625 int ay_viewt_droptcb(struct Togl *togl, int argc, char *argv[]);
01626
01629 int ay_viewt_setupintview(int viewnum, ay_object *o, ay_view_object *vtemp);
01630
01633 int ay_viewt_markfromsel(struct Togl *togl);
01634
01637 int ay_viewt_markfromselp(struct Togl *togl);
01638
01639
01640
01641 #ifdef WIN32
01642
01645 int ay_w32t_w32killtcmd(ClientData clientData, Tcl_Interp *interp,
01646 int argc, char *argv[]);
01647 #endif
01648
01649
01650
01651
01654 int ay_wrib_isprimitive(ay_object *o);
01655
01658 int ay_wrib_noexport(ay_object *o);
01659
01662 void ay_wrib_aimz(RtPoint direction);
01663
01666 void ay_wrib_placecamera(RtPoint position, RtPoint direction, double roll);
01667
01670 int ay_wrib_rioptions(void);
01671
01674 int ay_wrib_checklights(ay_object *o);
01675
01678 int ay_wrib_lights(char *file, ay_object *o);
01679
01682 void ay_wrib_rootsh(int imager);
01683
01686 void ay_wrib_defmat(char *file);
01687
01690 int ay_wrib_trafos(ay_object *o);
01691
01694 int ay_wrib_object(char *file, ay_object *o);
01695
01698 int ay_wrib_refobject(char *file, ay_object *o);
01699
01702 int ay_wrib_scene(char *file, char *image, int temp, int rtf,
01703 double *from, double *to,
01704 double roll, double zoom, double nearp, double farp,
01705 int width, int height, int type);
01706
01709 int ay_wrib_cb(struct Togl *togl, int argc, char *argv[]);
01710
01713 void ay_wrib_displaytags(void);
01714
01717 void ay_wrib_hidertags(void);
01718
01721 int ay_wrib_tcmd(ClientData clientData, Tcl_Interp *interp,
01722 int argc, char *argv[]);
01723
01724 #ifdef AYENABLEPPREV
01725
01728 int ay_wrib_pprevdraw(ay_view_object *view);
01729
01732 int ay_wrib_pprevopen(ay_view_object *view);
01733
01736 void ay_wrib_pprevclose();
01737 #endif
01738
01741 void ay_wrib_init(Tcl_Interp *interp);
01742
01743
01744
01745
01748 int ay_write_header(FILE *fileptr);
01749
01752 int ay_write_attributes(FILE *fileptr, ay_object *o);
01753
01756 int ay_write_tags(FILE *fileptr, ay_object *o);
01757
01760 void ay_write_shader(FILE *fileptr, ay_shader *shader);
01761
01764 int ay_write_object(FILE *fileptr, ay_object *o);
01765
01768 int ay_write_scene(char *fname, int selected);
01769
01772 int ay_write_scenetcmd(ClientData clientData, Tcl_Interp *interp,
01773 int argc, char *argv[]);
01774
01775
01778 #endif