void plotInit() { int x_1, y_1, z_1, x_2, y_2, z_2; if (plotfp == NULL) return; x_1 = (int) rtip->mdl_min[X] - 1; y_1 = (int) rtip->mdl_min[Y] - 1; z_1 = (int) rtip->mdl_min[Z] - 1; x_2 = (int) rtip->mdl_max[X] + 1; y_2 = (int) rtip->mdl_max[Y] + 1; z_2 = (int) rtip->mdl_max[Z] + 1; pl_3space(plotfp, x_1, y_1, z_1, x_2, y_2, z_2); return; }
/* * P L O T _ O P E N * * Fire up the display manager, and the display processor. * */ struct dm * plot_open(Tcl_Interp *interp, int argc, const char *argv[]) { static int count = 0; struct dm *dmp; Tcl_Obj *obj; BU_ALLOC(dmp, struct dm); *dmp = dm_plot; /* struct copy */ dmp->dm_interp = interp; BU_ALLOC(dmp->dm_vars.priv_vars, struct plot_vars); obj = Tcl_GetObjResult(interp); if (Tcl_IsShared(obj)) obj = Tcl_DuplicateObj(obj); bu_vls_init(&((struct plot_vars *)dmp->dm_vars.priv_vars)->vls); bu_vls_init(&dmp->dm_pathName); bu_vls_init(&dmp->dm_tkName); bu_vls_printf(&dmp->dm_pathName, ".dm_plot%d", count++); bu_vls_printf(&dmp->dm_tkName, "dm_plot%d", count++); /* skip first argument */ --argc; ++argv; /* Process any options */ ((struct plot_vars *)dmp->dm_vars.priv_vars)->is_3D = 1; /* 3-D w/color, by default */ while (argv[0] != (char *)0 && argv[0][0] == '-') { switch (argv[0][1]) { case '3': break; case '2': ((struct plot_vars *)dmp->dm_vars.priv_vars)->is_3D = 0; /* 2-D, for portability */ break; case 'g': ((struct plot_vars *)dmp->dm_vars.priv_vars)->grid = 1; break; case 'f': ((struct plot_vars *)dmp->dm_vars.priv_vars)->floating = 1; break; case 'z': case 'Z': /* Enable Z clipping */ Tcl_AppendStringsToObj(obj, "Clipped in Z to viewing cube\n", (char *)NULL); dmp->dm_zclip = 1; break; default: Tcl_AppendStringsToObj(obj, "bad PLOT option ", argv[0], "\n", (char *)NULL); (void)plot_close(dmp); Tcl_SetObjResult(interp, obj); return DM_NULL; } argv++; } if (argv[0] == (char *)0) { Tcl_AppendStringsToObj(obj, "no filename or filter specified\n", (char *)NULL); (void)plot_close(dmp); Tcl_SetObjResult(interp, obj); return DM_NULL; } if (argv[0][0] == '|') { bu_vls_strcpy(&((struct plot_vars *)dmp->dm_vars.priv_vars)->vls, &argv[0][1]); while ((++argv)[0] != (char *)0) { bu_vls_strcat(&((struct plot_vars *)dmp->dm_vars.priv_vars)->vls, " "); bu_vls_strcat(&((struct plot_vars *)dmp->dm_vars.priv_vars)->vls, argv[0]); } ((struct plot_vars *)dmp->dm_vars.priv_vars)->is_pipe = 1; } else { bu_vls_strcpy(&((struct plot_vars *)dmp->dm_vars.priv_vars)->vls, argv[0]); } if (((struct plot_vars *)dmp->dm_vars.priv_vars)->is_pipe) { if ((((struct plot_vars *)dmp->dm_vars.priv_vars)->up_fp = popen(bu_vls_addr(&((struct plot_vars *)dmp->dm_vars.priv_vars)->vls), "w")) == NULL) { perror(bu_vls_addr(&((struct plot_vars *)dmp->dm_vars.priv_vars)->vls)); (void)plot_close(dmp); Tcl_SetObjResult(interp, obj); return DM_NULL; } Tcl_AppendStringsToObj(obj, "piped to ", bu_vls_addr(&((struct plot_vars *)dmp->dm_vars.priv_vars)->vls), "\n", (char *)NULL); } else { if ((((struct plot_vars *)dmp->dm_vars.priv_vars)->up_fp = fopen(bu_vls_addr(&((struct plot_vars *)dmp->dm_vars.priv_vars)->vls), "wb")) == NULL) { perror(bu_vls_addr(&((struct plot_vars *)dmp->dm_vars.priv_vars)->vls)); (void)plot_close(dmp); Tcl_SetObjResult(interp, obj); return DM_NULL; } Tcl_AppendStringsToObj(obj, "plot stored in ", bu_vls_addr(&((struct plot_vars *)dmp->dm_vars.priv_vars)->vls), "\n", (char *)NULL); } setbuf(((struct plot_vars *)dmp->dm_vars.priv_vars)->up_fp, ((struct plot_vars *)dmp->dm_vars.priv_vars)->ttybuf); if (((struct plot_vars *)dmp->dm_vars.priv_vars)->is_3D) pl_3space(((struct plot_vars *)dmp->dm_vars.priv_vars)->up_fp, -2048, -2048, -2048, 2048, 2048, 2048); else pl_space(((struct plot_vars *)dmp->dm_vars.priv_vars)->up_fp, -2048, -2048, 2048, 2048); MAT_IDN(plotmat); Tcl_SetObjResult(interp, obj); return dmp; }