-+-+-+-+-+-+-+-+ START OF PART 219 -+-+-+-+-+-+-+-+ X"set_workstation_viewport", X"set_workstation_viewport3", X"set_workstation_window", X"set_workstation_window3", X"text", X"text3", X"transform_point", X"transform_point3", X"translate", X"translate3", X"unpost_all_structures", X"unpost_structure", X"update_workstation", X"write_item_to_metafile" X`7D; X X#include "enumname.c" X X/* local variables for phinter: */ Xstatic jmp_buf EXITJMP; Xstatic FILE *outputscript; /* output script file var */ Xstatic FILE *inputscript; Xstatic FILE *informscript; Xstatic Pint outputterm; Xstatic Pint informterm; Xstatic ptkboolean writingscript; /* if TRUE, all input commands are echoed V */ Xstatic ptkboolean interactive; Xstatic ptkboolean writeinform; Xstatic jmp_buf POPJMP; Xstatic Pint lno; /* current line number */ Xstatic Pint activefunction; Xstatic ptkboolean fileswitch; Xstatic Plimit phinecho; Xstatic Pint phinws; X/* registers */ Xstatic Pmatrix3 vmm3, vom3, tm3; Xstatic Pmatrix vmm, vom, tm; Xstatic Pwstype wst; X`20 X/*-------------------------------------------------------------------------- V*/ X/*------------------------ Internal functions ------------------------------ V*/ X/*-------------------------------------------------------------------------- V*/ X Xstatic void printfterminal(C(Pint) windid, C(Pchar *) format, ap) XPreANSI(Pint windid) XPreANSI(Pchar *format) Xva_list *ap; X/* X** \parambegin X** \param`7BPint`7D`7Bwindid`7D`7Bterminal window identifier`7D`7BIN`7D X** \param`7BPchar *`7D`7Bformat`7D`7Bformat string`7D`7BIN`7D X** \param`7B`7D`7Bva\_alist`7D`7Bvariable length argument list`7D`7BIN`7D X** \paramend X** \blurb`7BDoes the same as writeterminal except any following X** strings will be displayed on a new line.`7D X*/ X`7B X Pchar str`5B255`5D, line`5B255`5D; X Pchar *newline, *firstchar; X X vsprintf(str, format, *ap); X firstchar = &str`5B0`5D; X while ((newline = strchr(firstchar, '\n')) != NULL) X `7B X strncpy(line, firstchar, (newline - firstchar));`20 X line`5Bnewline - firstchar`5D = '\0'; X ptk_writelnterminal(windid, line); X firstchar = newline + 1; X `7D X X if (firstchar != '\0') X ptk_writeterminal(windid, firstchar); X`7D /* printfterminal */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void phinprintf(C(ptkedest) dest, C(Pchar *) format, va_alist) XPreANSI(ptkedest dest) XPreANSI(Pchar *format) Xva_dcl X/* X*/ X`7B X va_list args; X Pchar str`5B255`5D, line`5B255`5D; X Pchar *newline, *firstchar; X X va_start(args);`20 X if (fileswitch) X `7B X switch (dest) X `7B X case PTKEOUTPUT: vfprintf(outputscript, format, args); X break; X `20 X case PTKEINFORM: vfprintf(informscript, format, args); X break; X X case PTKESTDOUT: vfprintf(stdout, format, args); X break; X `7D X `7D X else X `7B X switch (dest) X `7B X case PTKEOUTPUT: printfterminal(outputterm, format, &args); X break; X `20 X case PTKESTDOUT:`20 X if (writeinform) X printfterminal(informterm, format, &args); X break; X X case PTKEINFORM: printfterminal(informterm, format, &args); X break; X `7D X `7D X va_end(args); X`7D /* phinprintf */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void phigserror(C(ptkedest) dest, C(Pint) error) XPreANSI(ptkedest dest) XPreANSI(Pint error) X`7B X phinprintf(dest, "error with %s = %d.\n", phigsnamelist`5Bactivefunction`5 VD,`20 X error); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void phintererror(C(Pint) c, C(Pchar *) s, C(ptkeseverity) severity) XPreANSI(Pint c) XPreANSI(Pchar *s) XPreANSI(ptkeseverity severity) X/* X** description: writes out a message, and exits if severity=EXITERR.`20 X** input params:`20 X** output params:`20 X** return value:`20 X*/ X`7B X switch (c)`20 X `7B X#ifdef SUN X case 1: printf("function not yet supported in SunPHIGS.\n"); X break; X#endif X#ifdef VMS X case 1: printf("function not yet supported in DEC PHIGS.\n"); X break; X#endif X case 2: printf("%s", s); X break; X X case 3: printf("function not yet supported in phinter.\n"); X break; X `7D X if (severity == POPREQ) X `7B X longjmp(POPJMP, 1); X return; X `7D X if (severity == EXITERR)`20 X longjmp(EXITJMP, 1); X`7D /* phintererror */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void set_i_prompt(C(Pchar *) s) XPreANSI(Pchar *s) X/* X** description: only set prompt for an interactive device. X** input params: s - prompt.`20 X** output params: none. X** return value: none. X*/ X`7B X if (interactive) X printf("%s> ", s); X`7D /* set_i_prompt */ X X/*-------------------------------------------------------------------------- V*/ X/*-------------------- general writing functions --------------------------- V*/ X/*-------------------------------------------------------------------------- V*/ X Xstatic void writephigsenum(C(ptkedest) dest, C(ptkephigsenum) enumtype, X C(Pint) enumval) XPreANSI(ptkedest dest) XPreANSI(ptkephigsenum enumtype) XPreANSI(Pint enumval) X`7B X switch (enumtype) X `7B X case PTKEWSDEP: X phinprintf(dest, "%s\n", Pwsdepnames`5Benumval`5D); X break; X X case PTKESYSTEMSTATE: X phinprintf(dest, "%s\n", Psystemstatenames`5Benumval`5D); X break; X X case PTKEWSSTATE: X phinprintf(dest, "%s\n", Pwsstatenames`5Benumval`5D); X break; X X case PTKESTRUCTSTATE: X phinprintf(dest, "%s\n", Pstructstatenames`5Benumval`5D); X break; X X case PTKESTRUCTSTATUS: X phinprintf(dest, "%s\n", Pstructstatusnames`5Benumval`5D); X break; X X case PTKEARCHIVESTATE: X phinprintf(dest, "%s\n", Parchivestatenames`5Benumval`5D); X break; X X case PTKEWSCLASS: X phinprintf(dest, "%s\n", Pwsclassnames`5Benumval`5D); X break; X X case PTKEWSCAT: X phinprintf(dest, "%s\n", Pwscatnames`5Benumval`5D); X break; X X case PTKECONTROL: X phinprintf(dest, "%s\n", Pcontrolnames`5Benumval`5D); X break; X X case PTKEREGEN: X phinprintf(dest, "%s\n", Pregennames`5Benumval`5D); X break; X X case PTKEDEFMODE: X phinprintf(dest, "%s\n", Pdefmodenames`5Benumval`5D); X break; X X case PTKEMOD: X phinprintf(dest, "%s\n", Pmodnames`5Benumval`5D); X break; X X case PTKESIMULTEV: X phinprintf(dest, "%s\n", Psimultevnames`5Benumval`5D); X break; X X case PTKESTRUCTNETSRC: X phinprintf(dest, "%s\n", Pstructnetsrcnames`5Benumval`5D); X break; X X case PTKEDSPSURF: X phinprintf(dest, "%s\n", Pdspsurfnames`5Benumval`5D); X break; X X case PTKEVISUALREP: X phinprintf(dest, "%s\n", Pvisualrepnames`5Benumval`5D); X break; X X case PTKETXPREC: X phinprintf(dest, "%s\n", Ptxprecnames`5Benumval`5D); X break; X X case PTKETXPATH: X phinprintf(dest, "%s\n", Ptxpathnames`5Benumval`5D); X break; X X case PTKETXHOR: X phinprintf(dest, "%s\n", Ptxhornames`5Benumval`5D); X break; X X case PTKETXVER: X phinprintf(dest, "%s\n", Ptxvernames`5Benumval`5D); X break; X X case PTKEINTERSTYLE: X phinprintf(dest, "%s\n", Pinterstylenames`5Benumval`5D); X break; X X case PTKEEDGEF: X phinprintf(dest, "%s\n", Pedgefnames`5Benumval`5D); X break; X X case PTKEATTRID: X phinprintf(dest, "%s\n", Pattridnames`5Benumval`5D); X break; X X case PTKEASF: X phinprintf(dest, "%s\n", Pasfnames`5Benumval`5D); X break; X X case PTKECOAVAIL: X phinprintf(dest, "%s\n", Pcoavailnames`5Benumval`5D); X break; X X case PTKECOMPTYPE: X phinprintf(dest, "%s\n", Pcomptypenames`5Benumval`5D); X break; X X case PTKEPROJTYPE: X phinprintf(dest, "%s\n", Pprojtypenames`5Benumval`5D); X break; X X case PTKECLIP: X phinprintf(dest, "%s\n", Pclipnames`5Benumval`5D); X break; X X case PTKEVPRI: X phinprintf(dest, "%s\n", Pvprinames`5Benumval`5D); X break; X X case PTKECONFRES: X phinprintf(dest, "%s\n", Pconfresnames`5Benumval`5D); X break; X X case PTKEPFCF: X phinprintf(dest, "%s\n", Ppfcfnames`5Benumval`5D); X break; X X case PTKEPATHORDER: X phinprintf(dest, "%s\n", Ppathordernames`5Benumval`5D); X break; X X case PTKEIMODE: X phinprintf(dest, "%s\n", Pimodenames`5Benumval`5D); X break; X X case PTKEESW: X phinprintf(dest, "%s\n", Peswnames`5Benumval`5D); X break; X X case PTKEISTATUS: X phinprintf(dest, "%s\n", Pistatusnames`5Benumval`5D); X break; X X case PTKECHOICESTATUS: X phinprintf(dest, "%s\n", Pchoicestatusnames`5Benumval`5D); X break; X X case PTKEQCHOICESTATUS: X phinprintf(dest, "%s\n", Pqchoicestatusnames`5Benumval`5D); X break; X X case PTKEQPICKSTATUS: X phinprintf(dest, "%s\n", Pqpickstatusnames`5Benumval`5D); X break; X X case PTKEPICKSTATUS: X phinprintf(dest, "%s\n", Ppickstatusnames`5Benumval`5D); X break; X X case PTKEOPENSTRUCTSTATUS: X phinprintf(dest, "%s\n", Popenstructstatusnames`5Benumval`5D); X break; X X case PTKEFCLASS: X phinprintf(dest, "%s\n", Pfclassnames`5Benumval`5D); X break; X X case PTKEICLASS: X phinprintf(dest, "%s\n", Piclassnames`5Benumval`5D); X break; X X case PTKEPRF: X phinprintf(dest, "%s\n", Pprfnames`5Benumval`5D); X break; X X case PTKEINQTYPE: X phinprintf(dest, "%s\n", Pinqtypenames`5Benumval`5D); X break; X X case PTKEUPDATEST: X phinprintf(dest, "%s\n", Pupdatestnames`5Benumval`5D); X break; X X case PTKEDEVUNITS: X phinprintf(dest, "%s\n", Pdevunitsnames`5Benumval`5D); X break; X X case PTKEMODTYPE: X phinprintf(dest, "%s\n", Pmodtypenames`5Benumval`5D); X break; X X case PTKEATTRS: X phinprintf(dest, "%s\n", Pattrsnames`5Benumval`5D); X break; X X case PTKEELTYPE: X phinprintf(dest, "%s\n", Peltypenames`5Benumval`5D); X break; X X case PTKEEDITMODE: X phinprintf(dest, "%s\n", Peditmodenames`5Benumval`5D); X break; X X case PTKEREFF: X phinprintf(dest, "%s\n", Preffnames`5Benumval`5D); X break; X X case PTKECOVALID: X phinprintf(dest, "%s\n", Pcovalidnames`5Benumval`5D); X break; X X case PTKEERRORMODE: X phinprintf(dest, "%s\n", Perrormodenames`5Benumval`5D); X break; X X case PTKESRCHDIR: X phinprintf(dest, "%s\n", Psrchdirnames`5Benumval`5D); X break; X X case PTKESRCHSTATUS: X phinprintf(dest, "%s\n", Psrchstatusnames`5Benumval`5D); X break; X X case PTKESRCHELTYPE: X phinprintf(dest, "%s\n", Psrcheltypenames`5Benumval`5D); X break; X X#ifdef SUN X case PTKEBASENAME: X phinprintf(dest, "%s\n", Pbasenames`5Benumval`5D); X break; X X case PTKEWSTYPEATTR: X phinprintf(dest, "%s\n", Pwsattrnames`5Benumval`5D); X break; X X case PTKEDBLBUFF: X phinprintf(dest, "%s\n", Pdblbuffnames`5Benumval`5D); X break; X X case PTKEUSAGE: X phinprintf(dest, "%s\n", Pusagenames`5Benumval`5D); X break; X X case PTKEACCUSAGE: X phinprintf(dest, "%s\n", Paccusagenames`5Benumval`5D); X break; X X case PTKECOLOURMODE: X phinprintf(dest, "%s\n", Pcolourmodenames`5Benumval`5D); X break; X X case PTKECGMENCODING: X phinprintf(dest, "%s\n", Pcgmencodingnames`5Benumval`5D); X break; X X case PTKECGMCONFORMANCE: X phinprintf(dest, "%s\n", Pcgmconformancenames`5Benumval`5D); X break; X X case PTKECGMVDCPRECISION: X phinprintf(dest, "%s\n", Pcgmvdcprecisionnames`5Benumval`5D); X break; X X case PTKEBGCLEAR: X phinprintf(dest, "%s\n", Pbgclearnames`5Benumval`5D); X break; X X case PTKEUSEDECOMP: X phinprintf(dest, "%s\n", Pdcmpnames`5Benumval`5D); X break; X#endif X `7D X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writeenumlist(C(ptkedest) dest, C(ptkephigsenum) enumtype, X C(Pint) length, C(Pint *) enumlist) XPreANSI(ptkedest dest) XPreANSI(ptkephigsenum enumtype) XPreANSI(Pint length) XPreANSI(Pint *enumlist) X`7B X Pint i; X X for (i = 0; i < length; i++) X writephigsenum(dest, enumtype, enumlist`5Bi`5D); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writeinteger(C(ptkedest) dest, C(Pint) value) XPreANSI(ptkedest dest) XPreANSI(Pint value) X`7B X phinprintf(dest, "%d\n", value); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writeintvalue(C(ptkedest) dest, C(Pint) value, X C(ptkehashtable) htable) XPreANSI(ptkedest dest) XPreANSI(Pint value) XPreANSI(ptkehashtable htable) X/* X** description:`20 X** input params:`20 X** output params:`20 X** return value:`20 X*/ X`7B X Pchar tablename`5B20`5D, str`5B100`5D; X Pint size; X X switch (htable) X `7B X case PTKESTRUCTID: X strcpy(tablename, "structureid"); X break; `20 X X case PTKELABELVAL: X strcpy(tablename, "label"); X break; `20 X X case PTKEPICKID: X strcpy(tablename, "pickid"); X break; `20 X X case PTKEVIEWIND: X strcpy(tablename, "viewindex"); X break; `20 X X case PTKECOLOURIND: X strcpy(tablename, "colourindex"); X break; `20 X X case PTKENAME: X strcpy(tablename, "name"); X break; `20 X `7D X if (ptk_hashtableused(tablename)) X `7B X ptk_inttostring(tablename, value, 100, str, &size); X if (size > 0) X phinprintf(dest,"\"%s\"\n", str); X else X writeinteger(dest, value); X `7D X else X writeinteger(dest, value); X`7D /* writeintvalue */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writereal(C(ptkedest) dest, C(Pfloat) value) +-+-+-+-+-+-+-+- END OF PART 219 +-+-+-+-+-+-+-+-