#include "globals.h" #include "geom.h" #include "geom_menu.h" /* scherk variables */ int scherk_branches, scherk_storeys, scherk_tex_tiles, scherk_detail; float scherk_height, scherk_flange, scherk_azimuth, scherk_twist, scherk_warp, scherk_thickness, scherk_rim_bulge; int scherk_mat[MAX_NUM_MATERIALS][3]; /* int scherk_mesh_tiles; int scherk_red, scherk_green, scherk_blue, scherk_select, scherk_save_mode; char scherk_save_str[SCHERK_SAVE_SIZE+1][13] = {"Specs only", "PS boards", "UG slices", "3D UG file", ".STL B_rep", "PPHIGS_UNC", "BIQUAD_UNC", "PS slices", "SIF 4 SFF", "L-SIF_2D"}; */ void scherk_material(int material, unsigned char r, unsigned char g, unsigned char b) { make_material(material, (float)r/255.0f, (float)g/255.0f, (float)b/255.0f, 1.0f, 0.2f, 0.8f, 0.6f, 0.5f, 10.0f); } void init_geom_data() { int i; /* scherk surface globals */ scherk_branches = 2; scherk_storeys = 2; scherk_height = 1.5f; scherk_flange = 1.5f; scherk_thickness = 0.15f; scherk_rim_bulge = 1.5f; scherk_twist = 0.0f; scherk_warp = 0.0f; scherk_azimuth = 0.0f; //scherk_mesh_tiles = 2; scherk_tex_tiles = 1; scherk_detail = 5; //scherk_red = scherk_green = scherk_blue = 255; //scherk_select = SCHERK_SELECT_SIZE; //scherk_save_mode = 0; for (i=SCHERK_FIRST_TEXTURE;iresult, argv[2]); return TCL_OK; } int ScherkStoreysCB(struct Togl *togl, int argc, char *argv[]) { Tcl_Interp *interp = Togl_Interp(togl); /* error checking */ if (argc != 3) { Tcl_SetResult(interp, "wrong # args: should be \"pathName ScherkStoreys ?value?\"", TCL_STATIC); return TCL_ERROR; } idle_counter = 0; scherk_storeys = atoi(argv[2]); glDeleteLists(1, 1); glNewList(1, GL_COMPILE); gstate.num_polygons = geometry_display_list(); glEndList(); Togl_PostRedisplay(togl); /* Let result string equal value */ strcpy(interp->result, argv[2]); return TCL_OK; } int ScherkHeightCB(struct Togl *togl, int argc, char *argv[]) { Tcl_Interp *interp = Togl_Interp(togl); /* error checking */ if (argc != 3) { Tcl_SetResult(interp, "wrong # args: should be \"pathName ScherkHeight ?value?\"", TCL_STATIC); return TCL_ERROR; } idle_counter = 0; scherk_height = (float)atof(argv[2]); glDeleteLists(1, 1); glNewList(1, GL_COMPILE); gstate.num_polygons = geometry_display_list(); glEndList(); Togl_PostRedisplay(togl); /* Let result string equal value */ strcpy(interp->result, argv[2]); return TCL_OK; } int ScherkFlangeCB(struct Togl *togl, int argc, char *argv[]) { Tcl_Interp *interp = Togl_Interp(togl); /* error checking */ if (argc != 3) { Tcl_SetResult(interp, "wrong # args: should be \"pathName ScherkFlange ?value?\"", TCL_STATIC); return TCL_ERROR; } idle_counter = 0; scherk_flange = (float)atof(argv[2]); glDeleteLists(1, 1); glNewList(1, GL_COMPILE); gstate.num_polygons = geometry_display_list(); glEndList(); Togl_PostRedisplay(togl); /* Let result string equal value */ strcpy(interp->result, argv[2]); return TCL_OK; } int ScherkThicknessCB(struct Togl *togl, int argc, char *argv[]) { Tcl_Interp *interp = Togl_Interp(togl); /* error checking */ if (argc != 3) { Tcl_SetResult(interp, "wrong # args: should be \"pathName ScherkThickness ?value?\"", TCL_STATIC); return TCL_ERROR; } idle_counter = 0; scherk_thickness = (float)atof(argv[2]); glDeleteLists(1, 1); glNewList(1, GL_COMPILE); gstate.num_polygons = geometry_display_list(); glEndList(); Togl_PostRedisplay(togl); /* Let result string equal value */ strcpy(interp->result, argv[2]); return TCL_OK; } int ScherkRimBulgeCB(struct Togl *togl, int argc, char *argv[]) { Tcl_Interp *interp = Togl_Interp(togl); /* error checking */ if (argc != 3) { Tcl_SetResult(interp, "wrong # args: should be \"pathName ScherkRimBulge ?value?\"", TCL_STATIC); return TCL_ERROR; } idle_counter = 0; scherk_rim_bulge = (float)atof(argv[2]); glDeleteLists(1, 1); glNewList(1, GL_COMPILE); gstate.num_polygons = geometry_display_list(); glEndList(); Togl_PostRedisplay(togl); /* Let result string equal value */ strcpy(interp->result, argv[2]); return TCL_OK; } int ScherkAzimuthCB(struct Togl *togl, int argc, char *argv[]) { Tcl_Interp *interp = Togl_Interp(togl); /* error checking */ if (argc != 3) { Tcl_SetResult(interp, "wrong # args: should be \"pathName ScherkAzimuth ?value?\"", TCL_STATIC); return TCL_ERROR; } idle_counter = 0; scherk_azimuth = (float)atoi(argv[2]); glDeleteLists(1, 1); glNewList(1, GL_COMPILE); gstate.num_polygons = geometry_display_list(); glEndList(); Togl_PostRedisplay(togl); /* Let result string equal value */ strcpy(interp->result, argv[2]); return TCL_OK; } int ScherkTwistCB(struct Togl *togl, int argc, char *argv[]) { Tcl_Interp *interp = Togl_Interp(togl); /* error checking */ if (argc != 3) { Tcl_SetResult(interp, "wrong # args: should be \"pathName ScherkTwist ?value?\"", TCL_STATIC); return TCL_ERROR; } idle_counter = 0; scherk_twist = (float)atoi(argv[2]); glDeleteLists(1, 1); glNewList(1, GL_COMPILE); gstate.num_polygons = geometry_display_list(); glEndList(); Togl_PostRedisplay(togl); /* Let result string equal value */ strcpy(interp->result, argv[2]); return TCL_OK; } int ScherkWarpCB(struct Togl *togl, int argc, char *argv[]) { Tcl_Interp *interp = Togl_Interp(togl); /* error checking */ if (argc != 3) { Tcl_SetResult(interp, "wrong # args: should be \"pathName ScherkWarp ?value?\"", TCL_STATIC); return TCL_ERROR; } idle_counter = 0; scherk_warp = (float)atoi(argv[2]); glDeleteLists(1, 1); glNewList(1, GL_COMPILE); gstate.num_polygons = geometry_display_list(); glEndList(); Togl_PostRedisplay(togl); /* Let result string equal value */ strcpy(interp->result, argv[2]); return TCL_OK; } int ScherkTexTilesCB(struct Togl *togl, int argc, char *argv[]) { Tcl_Interp *interp = Togl_Interp(togl); /* error checking */ if (argc != 3) { Tcl_SetResult(interp, "wrong # args: should be \"pathName ScherkTexTiles ?value?\"", TCL_STATIC); return TCL_ERROR; } idle_counter = 0; scherk_tex_tiles = atoi(argv[2]); glDeleteLists(1, 1); glNewList(1, GL_COMPILE); gstate.num_polygons = geometry_display_list(); glEndList(); Togl_PostRedisplay(togl); /* Let result string equal value */ strcpy(interp->result, argv[2]); return TCL_OK; } int ScherkDetailCB(struct Togl *togl, int argc, char *argv[]) { Tcl_Interp *interp = Togl_Interp(togl); /* error checking */ if (argc != 3) { Tcl_SetResult(interp, "wrong # args: should be \"pathName ScherkDetail ?value?\"", TCL_STATIC); return TCL_ERROR; } idle_counter = 0; scherk_detail = atoi(argv[2]); glDeleteLists(1, 1); glNewList(1, GL_COMPILE); gstate.num_polygons = geometry_display_list(); glEndList(); Togl_PostRedisplay(togl); /* Let result string equal value */ strcpy(interp->result, argv[2]); return TCL_OK; }