-+-+-+-+-+-+-+-+ START OF PART 230 -+-+-+-+-+-+-+-+ X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_popenphigs() X`7B X Pchar errfile`5B255`5D; X Pint size; X#ifdef SUN X Pchar *errf; X#endif X#ifdef VMS X FILE *errf; X#endif X X readargument(errfile, "name of error logging file ? "); X if ((strcmp(errfile, "NULL") == 0) `7C`7C (strcmp(errfile, "0") == 0)) X#ifdef SUN X errf = (Pchar *)NULL; X else X errf = errfile; X#endif X#ifdef VMS X errf = (FILE *)NULL; X else X errf = fopen(errfile, "w+"); X#endif X X size = readinteger("number of memory units ? "); X#ifdef SUN X if (size == 0) X size = PDEFAULT_MEM_SIZE; X popenphigs(errf, (Plong)size); X#endif X#ifdef VMS X popenphigs(errf, size); X#endif X`7D /* do_popenphigs */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_popenstruct() X`7B X popenstruct(readintvalue("structure identifier ? ", PTKESTRUCTID)); X`7D /* do_popenstruct */ X X/*-------------------------------------------------------------------------- V*/ X X#ifdef SUN Xstatic setwstype(C(Pwstype *) wst) XPreANSI(Pwstype *wst) X`7B X Pint numwdt, i, wsint; X ptkewstypeattr phigsattr; X Pfloat wsreal; X X numwdt = readinteger("number of WDT items ? "); X for (i = 0; i < numwdt; i++) X `7B X phigsattr = readphigsenum(PTKEWSTYPEATTR, "workstation attribute ? "); X switch (phigsattr) X `7B X case GP_USAGE:`20 X `7B X Phigs_acc_usage gpusage; X X gpusage = readphigsenum(PTKEACCUSAGE, "grahics processor usage ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_GP_USAGE, gpusage, 0); X `7D X break; X X case MSG_WIN_SIZE:`20 X wsint = readinteger("number of lines in message window ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_MSG_WIN_SIZE, wsint, 0 V); X break; X X case TEXTSW:`20 X `7B X Phigs_creation create; X`20 X create = readphigsenum(PTKECREATION, "message window creation ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TEXTSW, create, 0); X `7D X break; X X case PANEL: /* don't know */ break; X X case BASE_NAME: /* can't be set */ break; X X case COLOURMAP_NAME: X `7B X Pchar map`5B255`5D; X X readquote(map, "colour map name ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_COLOURMAP_NAME, map, 0 V); X `7D X break; X X case DOUBLE_BUFFER:`20 X `7B X Phigs_dbl_buff buff; X X buff = readphigsenum(PTKEDBLBUFF, "double buffering method ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_DOUBLE_BUFFER, buff, 0 V); X `7D X break; X X case VAL_PANEL_X: X wsint = readinteger("valuator panel, x ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_VAL_PANEL_X, wsint, 0) V; X break; X X case VAL_PANEL_Y: X wsint = readinteger("valuator panel, y ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_VAL_PANEL_Y, wsint, 0) V; X break; X X case NORM_CURSOR_TYPE: X `7B X Phigs_cursor_type cursor; X `20 X cursor = readphigsenum(PTKECURSORTYPE, "normal cursor type ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_NORM_CURSOR_TYPE,`20 X cursor, 0); X `7D X break; X `20 X case NORM_CURSOR_COLOUR: X wsint = readinteger("norm cursor colour ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_NORM_CURSOR_COLOUR,`20 X wsint, 0); X break; X `20 X case NORM_CURSOR_OP: X `7B X Phigs_drawing_op draw; X `20 X draw = readphigsenum(PTKEDRAWINGOP, "drawing operation ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_NORM_CURSOR_OP,`20 X draw, 0); X `7D X break; X `20 X case TRAV_CURSOR_TYPE: X `7B X Phigs_cursor_type cursor; X `20 X cursor = readphigsenum(PTKECURSORTYPE, "traversal cursor type ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TRAV_CURSOR_TYPE,`20 X cursor, 0); X `7D X break; X `20 X case TRAV_CURSOR_COLOUR: X wsint = readinteger("traversal colour colour ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TRAV_CURSOR_COLOUR,`20 X wsint, 0); X break; X `20 X case TRAV_CURSOR_OP: X `7B X Phigs_drawing_op draw; X `20 X draw = readphigsenum(PTKEDRAWINGOP, "drawing operation ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TRAV_CURSOR_OP,`20 X draw, 0); X `7D X break; X `20 X case ACCELERATOR_USAGE: X `7B X Phigs_acc_usage accusage; X X accusage = readphigsenum(PTKEACCUSAGE, "accelerator usage ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_ACCELERATOR_USAGE,`20 X accusage, 0); X `7D X break; X `20 X case COLOUR_MODE: X `7B X Phigs_colour_mode cmode; X `20 X cmode = readphigsenum(PTKECOLOURMODE, "colour mode ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_COLOUR_MODE, cmode, 0) V; X `7D X break; X `20 X case TOOL_WIDTH: X wsint = readinteger("tool window width ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TOOL_WIDTH, wsint, 0); X break; X `20 X case TOOL_HEIGHT: X wsint = readinteger("tool window height ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TOOL_HEIGHT, wsint, 0) V; X break; X `20 X case TOOL_X: X wsint = readinteger("tool window position, x ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TOOL_X, wsint, 0); X break; X `20 X case TOOL_Y: X wsint = readinteger("tool window position, y ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TOOL_Y, wsint, 0); X break; X `20 X case TOOL_LABEL: X `7B X Pchar label`5B255`5D; X X readquote(label, "frame banner ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TOOL_LABEL, label, 0); X `7D `20 X break; X X case TOOL_ICON_FILE: X `7B X Pchar path`5B255`5D; X X readquote(path, "icon definition file ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TOOL_ICON_FILE,`20 X path, 0); X `7D X break; X X case TOOL_FOREGROUND_COLOUR:`20 X `7B X struct singlecolor colour; X`20 X colour.red = readinteger("red (0-255) ? "); X colour.green = readinteger("green (0-255) ? "); X colour.blue = readinteger("blue (0-255) ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TOOL_FOREGROUND_COLOUR V,`20 X &colour, 0); X `7D X break; X `20 X case TOOL_BACKGROUND_COLOUR:`20 X `7B X struct singlecolor colour; X`20 X colour.red = readinteger("red (0-255) ? "); X colour.green = readinteger("green (0-255) ? "); X colour.blue = readinteger("blue (0-255) ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TOOL_BACKGROUND_COLOUR V,`20 X &colour, 0); X `7D X break; X `20 X case TOOL_SHOW_LABEL: X wsint = readinteger("show frame banner ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TOOL_SHOW_LABEL,`20 X wsint, 0); X break; X `20 X case TOOL_ICON_LABEL: X `7B X Pchar label`5B255`5D; X X readquote(label, "icon label ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_TOOL_ICON_LABEL,`20 X label, 0); X `7D X break; X `20 X case TOOL_FULLSCREEN: /* don't know */ break; X `20 X case WS_CATEGORY: X `7B X Pwscat wscat; X `20 X wscat = readphigsenum(PTKEWSCAT, "workstation category ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_WS_CATEGORY, wscat, 0) V; X `7D X break; X `20 X case COLOUR_TABLE_SIZE:`20 X wsint = readinteger("colour table size ? "); X if (wsint > 256)`20 X wsint = 256; X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_COLOUR_TABLE_SIZE,`20 X wsint, 0); X break; X `20 X case DEVICE_COORD_XMAX_PTR:`20 X wsreal = readreal("max device space, x ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_DEVICE_COORD_XMAX_PTR, V`20 X &wsreal, 0); X break; X `20 X case DEVICE_COORD_YMAX_PTR:`20 X wsreal = readreal("max device space, y ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_DEVICE_COORD_YMAX_PTR, V`20 X &wsreal, 0); X break; X `20 X case CGM_ENCODING: X `7B X Phigs_cgm_encoding encode; X `20 X encode = readphigsenum(PTKECGMENCODING, "CGM encoding ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_CGM_ENCODING,`20 X encode, 0); X `7D X break; X `20 X case CGM_CONFORMANCE: X `7B X Phigs_cgm_conformance conform; X `20 X conform = readphigsenum(PTKECGMCONFORMANCE, "CGM conformance ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_CGM_CONFORMANCE,`20 X conform, 0); X `7D X break; X `20 X case CGM_METRIC_HEIGHT_PTR:`20 X wsreal = readreal("CGM drawing height ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_CGM_METRIC_HEIGHT_PTR, V`20 X &wsreal, 0); X break; X `20 X case CGM_METRIC_WIDTH_PTR:`20 X wsreal = readreal("CGM drawing width ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_CGM_METRIC_WIDTH_PTR,` V20 X &wsreal, 0); X break; X `20 X case CGM_METRIC_LINE_WIDTH_PTR:`20 X wsreal = readreal("CGM line width ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst,`20 X PHIGS_CGM_METRIC_LINE_WIDTH_PTR, &wsreal, 0); X break; X X#ifndef PRESUN1PT3 `20 X case CGM_VDC_PRECISION: X `7B X Phigs_cgm_vdc_precision prec; X `20 X prec = readphigsenum(PTKECGMVDCPRECISION, "CGM precision ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_CGM_VDC_PRECISION,`20 X prec, 0); X `7D X break; X `20 X case REGION_RECT:`20 X `7B X Prect region; X X region.ll.x = readreal("lower left, x ? "); X region.ll.y = readreal("lower left, y ? "); X region.ur.x = readreal("upper right, x ? "); X region.ur.y = readreal("upper right, y ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_REGION_RECT,`20 X ®ion, 0); X `7D X break; X `20 X case REGION_PRIORITY:`20 X wsreal = readreal("region priority ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_REGION_PRIORITY,`20 X &wsreal, 0); X break; X `20 X case REGION_BACKGROUND:`20 X `7B X Phigs_bg_clear region; X `20 X region = readphigsenum(PTKEBGCLEAR, "background clear ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_REGION_BACKGROUND,`20 X region, 0); X `7D X break; X X case USE_DECOMP: X `7B X Phigs_dcmp dcmp; X X dcmp = readphigsenum(PTKEUSEDECOMP, "use decomposition ? "); X *wst = (Pwstype)phigs_ws_type_set(*wst, PHIGS_USE_DECOMP,`20 X dcmp, 0); `20 X `7D X break; X X#endif X X default: phintererror(2, "No such attribute.\n", INFORM); X `20 X `7D X `7D X`7D X#endif X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_popenws() X`7B X Pint wsid; X Pchar conn`5B255`5D; X Pwstype wst; X X wsid = readinteger("workstation identifier ? "); X readargument(conn, "connection identifier ? "); X readwstype(&wst); X#ifdef SUN X setwstype(&wst); X#endif X#ifdef VMS X if (strncmp(conn, "0", 1) == 0) X popenws(wsid, (Pconnid)0, wst); X else X#endif X popenws(wsid, (Pconnid)conn, wst); X`7D /* do_popenws */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_ppolyline() X`7B X Pint numpts; X Ppoint *pts; X X numpts = readinteger("number of points ? "); X pts = (Ppoint *)calloc(numpts, sizeof(Ppoint)); X readpointarray(numpts, pts); X ppolyline(numpts, pts); X free(pts); X`7D /* do_ppolyline */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_ppolyline3() X`7B X Pint numpts; X Ppoint3 *pts; X X numpts = readinteger("number of points ? "); X pts = (Ppoint3 *)calloc(numpts, sizeof(Ppoint3)); X readpoint3array(numpts, pts); X ppolyline3(numpts, pts); X free(pts); X`7D /* do_ppolyline3 */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_ppolymarker() X`7B X Pint numpts; X Ppoint *pts; X X numpts = readinteger("number of points ? "); X pts = (Ppoint *)calloc(numpts, sizeof(Ppoint)); X readpointarray(numpts, pts); X ppolymarker(numpts, pts); X free(pts); X`7D /* do_ppolymarker */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_ppolymarker3() X`7B X Pint numpts; X Ppoint3 *pts; X X numpts = readinteger("number of points ? "); X pts = (Ppoint3 *)calloc(numpts, sizeof(Ppoint3)); X readpoint3array(numpts, pts); X ppolymarker3(numpts, pts); X free(pts); X`7D /* do_ppolymarker3 */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_ppoststruct() X`7B +-+-+-+-+-+-+-+- END OF PART 230 +-+-+-+-+-+-+-+-