-+-+-+-+-+-+-+-+ START OF PART 254 -+-+-+-+-+-+-+-+ X refpt = readpoint3("pattern reference point"); X dx = readvector3("pattern x axis"); X dy = readvector3("pattern y axis"); X#endif X#ifdef VMS X phintererror(1, (Pchar *)NULL, INFORM); X#endif X`7D /* do_psetpatrefptvectors */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetpatrep() X`7B X phintererror(1, (Pchar *)NULL, INFORM); X`7D /* do_psetpatrep */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetpatsize() X`7B X#ifdef SUN X Ppoint patsize; X X patsize = readpoint("pattern size"); X psetpatsize(&patsize); X#endif X#ifdef VMS X phintererror(1, (Pchar *)NULL, INFORM); X#endif X`7D /* do_psetpatsize */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetpickfilter() X`7B X Pint wsid, dev; X Pintlst incl, excl; X X wsid = readinteger("workstation identifier ? "); X dev = readinteger("pick device number ? "); X readintlst(&incl, "inclusion set", PTKENAME); X readintlst(&excl, "exclusion set", PTKENAME); X psetpickfilter(wsid, dev, &incl, &excl); X free(incl.integers); X free(excl.integers); X`7D /* do_psetpickfilter */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetpickid() X`7B X psetpickid(readinteger("pick identifier ? ")); X`7D /* do_psetpickid */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetpickmode() X`7B X Pint wsid, dev; X Pimode mode; X Pesw echo; X X wsid = readinteger("workstation identifier ? "); X dev = readinteger("pick device number ? "); X mode = readphigsenum(PTKEIMODE, "operating mode ? "); X echo = readphigsenum(PTKEESW, "echo switch ? "); X psetpickmode(wsid, dev, mode, echo); X`7D /* do_psetpickmode */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetlineind() X`7B X psetlineind(readinteger("polyline index ? ")); X`7D /* do_psetlineind */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetlinerep() X`7B X Pint wsid, index; X Plnbundl rep; X X wsid = readinteger("workstation identifier ? "); X index = readinteger("line bundle index ? "); X readlnbundl(&rep); X psetlinerep(wsid, index, &rep); X`7D /* do_psetlinerep */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetmarkerind() X`7B X psetmarkerind(readinteger("polymarker index ? ")); X`7D /* do_psetmarkerind */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetmarkerrep() X`7B X Pint wsid, index; X Pmkbundl rep; X X wsid = readinteger("workstation identifier ? "); X index = readinteger("marker bundle index ? "); X readmkbundl(&rep); X psetmarkerrep(wsid, index, &rep); X`7D /* do_psetmarkerrep */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetstringmode() X`7B X Pint wsid, dev; X Pimode mode; X Pesw echo; X X wsid = readinteger("workstation identifier ? "); X dev = readinteger("string device number ? "); X mode = readphigsenum(PTKEIMODE, "operating mode ? "); X echo = readphigsenum(PTKEESW, "echo switch ? "); X psetstringmode(wsid, dev, mode, echo); X`7D /* do_psetstringmode */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetstrokemode() X`7B X Pint wsid, dev; X Pimode mode; X Pesw echo; X X wsid = readinteger("workstation identifier ? "); X dev = readinteger("stroke device number ? "); X mode = readphigsenum(PTKEIMODE, "operating mode ? "); X echo = readphigsenum(PTKEESW, "echo switch ? "); X psetstrokemode(wsid, dev, mode, echo); X`7D /* do_psetstrokemode */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psettextalign() X`7B X Ptxalign a; X X a.hor = readphigsenum(PTKETXHOR, "horizontal alignment ? "); X a.ver = readphigsenum(PTKETXVER, "vertical alignment ? "); X psettextalign(&a); X`7D /* do_psetextalign */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psettextcolourind() X`7B X psettextcolourind(readintvalue("text colour index ? ", PTKECOLOURIND)); X`7D /* do_psettextcolourind */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psettextfont() X`7B X psettextfont(readinteger("text font ? ")); X`7D /* do_psettextfont */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psettextind() X`7B X psettextind(readinteger("text index ? ")); X`7D /* do_psettextind */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psettextpath() X`7B X Ptxpath p; X X p = readphigsenum(PTKETXPATH, "text path ? "); X psettextpath(p); X`7D /* do_psettextpath */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psettextprec() X`7B X Ptxprec txprec; X X txprec = readphigsenum(PTKETXPREC, "text precision ? "); X psettextprec(txprec); X`7D /* do_psettextprec */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psettextrep() X`7B X Pint wsid, index; X Ptxbundl rep; X X wsid = readinteger("workstation identifier ? "); X index = readinteger("text bundle index ? "); X readtxbundl(&rep); X psettextrep(wsid, index, &rep); X`7D /* do_psettextrep */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetvalmode() X`7B X Pint wsid, dev; X Pimode mode; X Pesw echo; X X wsid = readinteger("workstation identifier ? "); X dev = readinteger("valuator device number ? "); X mode = readphigsenum(PTKEIMODE, "operating mode ? "); X echo = readphigsenum(PTKEESW, "echo switch ? "); X psetvalmode(wsid, dev, mode, echo); X`7D /* do_psetvalmode */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetviewind() X`7B X Pint i; X X i = readintvalue("view index? ", PTKEVIEWIND); X psetviewind(i); X`7D /* do_psetviewind */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetviewrep() X`7B X Pint wsid, index; X Pviewrep rep; X X wsid = readinteger("workstation identifier ? "); X index = readintvalue("view index ? ", PTKEVIEWIND); X readmatrix(rep.orientation_matrix, "orientation matrix"); X readmatrix(rep.mapping_matrix, "mapping matrix"); X rep.clip_limit = readlimit("clipping limits"); X rep.clip_xy = readphigsenum(PTKECLIP, "x-y clipping indicator ? "); X psetviewrep(wsid, index, &rep); X`7D /* do_psetviewrep */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetviewrep3() X`7B X Pint wsid, index; X Pviewrep3 rep; X X wsid = readinteger("workstation identifier ? "); X index = readinteger("view index ? "); X readmatrix3(rep.orientation_matrix, "orientation matrix"); X readmatrix3(rep.mapping_matrix, "mapping matrix"); X rep.clip_limit = readlimit3("clipping limits"); X rep.clip_xy = readphigsenum(PTKECLIP, "x-y clipping indicator ? "); X rep.clip_back = readphigsenum(PTKECLIP, "back clipping indicator ? "); X rep.clip_front = readphigsenum(PTKECLIP, "front clipping indicator ? "); X psetviewrep(wsid, index, &rep); X`7D /* do_psetviewrep3 */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetviewtraninputpri() X`7B X Pint wsid, index, refindex; X Pvpri priority; X X wsid = readinteger("workstation identifier ? "); X index = readinteger("view index ? "); X refindex = readinteger("reference view index ? "); X priority = readphigsenum(PTKEVPRI, "relative priority ? "); X psetviewtraninputpri(wsid, index, refindex, priority); X`7D /* do_psetviewtraninputpri */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetwsviewport() X`7B X Pint wsid; X Plimit viewport; X X wsid = readinteger("workstation identifier ? "); X viewport = readlimit("viewport limits"); X psetwsviewport(wsid, &viewport); X`7D /* do_psetwsviewport */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetwsviewport3() X`7B X Pint wsid; X Plimit3 viewport; X X wsid = readinteger("workstation identifier ? "); X viewport = readlimit3("viewport limits"); X psetwsviewport3(wsid, &viewport); X`7D /* do_psetwsviewport3 */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetwswindow() X`7B X Pint wsid; X Plimit window; X X wsid = readinteger("workstation identifier ? "); X window = readlimit("window limits"); X psetwswindow(wsid, &window); X`7D /* do_psetwswindow */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void do_psetwswindow3() X`7B X Pint wsid; X Plimit3 window; X X wsid = readinteger("workstation identifier ? "); X window = readlimit3("window limits"); X psetwswindow3(wsid, &window); X`7D /* do_psetwswindow3 */ X X/*-------------------------------------------------------------------------- V*/ X X/* end of psetfns.c */ $ CALL UNPACK [.SOURCE.LIBRARY]PSETFNS.C;2 1577407189 $ create 'f' X/*-------------------------------------------------------------------------- V-- X X Module name: structure content drawer X X Author: Toby Howard X X Function: This module implements the structure content drawer. X X Dependencies: X X External function list:`20 X X Internal function list:`20 X X Hashtables used: "structureid", "label". X X Modification history : (Version), (Date), (Name), (Description). X X 1.0, ????, Toby Howard, First version. X X 1.1, 15th July 1988, Steve Larkin, Modified to work with VAX Phigs. X X 2.0, 27th August 1991, Gareth Williams, Translated to C. X X---------------------------------------------------------------------------- V*/ X X#include X#include X#include X#include "ptk.h" X X#define OFFSET 0.025 X Xstatic Pint stctwsid, stfirstel, stlastel, stctfont; Xstatic Pfloat elemheight, elemtypewidth, elemptrwidth; Xstatic Ppoint topleftbox; Xstatic Pint no_els; Xstatic Pint first_element; Xstatic Ppoint tp; X X/*-------------------------------------------------------------------------- V*/ X Xstatic void setscaling() X/* computes the transformation to scale the picture X** into `5B0,1`5D, and inserts a global transformation at the X** start of the picture. X*/ X`7B X Pmatrix3 globaltran; X Pint err, el; X Pfloat depth; X Ppoint3 shift, scale; X X if ((stlastel - stfirstel) >= 9) X `7B X depth = (stlastel - stfirstel + 2) * 0.1; X shift = ptk_point3(0.0, -1.0, 0.0); X ptk_shift3(&shift, PREPLACE, globaltran); X scale = ptk_point3(1.0/depth, 1.0/depth, 1.0); X ptk_scale3(&scale, PPOSTCONCATENATE, globaltran); X shift = ptk_point3(0.0, 1.0, 0.0); X ptk_shift3(&shift, PPOSTCONCATENATE, globaltran); X `7D X else X ptk_unitmatrix3(globaltran); X /* Squeeze in a global transformation at the top of the structure */ X pinqelemptr(&err, &el); X psetelemptr(first_element); X psetelemptrlabel(ptk_stringtoint("label", "globaltran")); X psetglobaltran3(globaltran); X psetelemptr(el + 1); X`7D /* setscaling */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void initialise() X`7B X Pfloat charht; X Ptxalign align; X Ppoint elembox; X X elemheight = 0.1; X elemtypewidth = 0.7; X elemptrwidth = 0.2; X topleftbox = ptk_point(0.0, 1.0); X X align.hor = PAH_NORMAL; X align.ver = PAV_HALF; X psettextalign(&align); X elembox = ptk_point(elemtypewidth - OFFSET - 0.01, elemheight); X ptk_computecharheight(stctwsid, "set_annotation_text_character_up_vector", V`20 X &elembox, stctfont, &charht); X psetcharheight(charht); X`7D /* initialise */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic void elemtypebox(C(Peltype) eltype, C(Pint) elemnum) XPreANSI(Peltype eltype) XPreANSI(Pint elemnum) X/*`20 X** Assumes there is no local tran in effect`20 X*/ X`7B X Ppoint pts`5B4`5D; X Pchar str`5B50`5D; X Pint totlen; X Ppointlst sets; X X pts`5B0`5D = topleftbox; X pts`5B1`5D = ptk_point(pts`5B0`5D.x + elemtypewidth, pts`5B0`5D.y); X pts`5B2`5D = ptk_point(pts`5B1`5D.x, pts`5B0`5D.y - elemheight); X pts`5B3`5D = ptk_point(pts`5B0`5D.x, pts`5B2`5D.y); X ptk_getelemtypename(eltype, 50, str, &totlen); X tp = ptk_point(topleftbox.x + OFFSET, topleftbox.y - 0.05); X ptext(&tp, str); X sets.number = 4; X sets.points = pts; X ptk_fillareaset(1, &sets); X sprintf(str, "%d\0", elemnum); X tp = ptk_point(topleftbox.x + elemtypewidth + OFFSET,`20 X topleftbox.y - 0.05); X ptext(&tp, str); X`7D /* elemtypebox */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_structcontent(C(Pint) wsid, C(Pint) stid, C(Pint) firstel,`2 V0 X C(Pint) lastel, C(Pint) elemptr, C(Pint) font, X`09`09`09 C(Pint *) error) XPreANSI(Pint wsid) XPreANSI(Pint stid) XPreANSI(Pint firstel) XPreANSI(Pint lastel) XPreANSI(Pint elemptr) XPreANSI(Pint font) XPreANSI(Pint *error) X/* X** \parambegin X** \param`7BPint`7D`7Bwsid`7D`7Bworkstation identifier`7D`7BIN`7D X** \param`7BPint`7D`7Bstid`7D`7Bstructure identifier`7D`7BIN`7D X** \param`7BPint`7D`7Bfirstel`7D`7Bfirst element in range`7D`7BIN`7D X** \param`7BPint`7D`7Blastel`7D`7Blast element in range`7D`7BIN`7D X** \param`7BPint`7D`7Belemptr`7D`7Belement pointer`7D`7BIN`7D X** \param`7BPint`7D`7Bfont`7D`7Btext font`7D`7BIN`7D X** \param`7BPint *`7D`7Berror`7D`7Berror code`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function inserts a diagram of the contents of the structure +-+-+-+-+-+-+-+- END OF PART 254 +-+-+-+-+-+-+-+-