-+-+-+-+-+-+-+-+ START OF PART 271 -+-+-+-+-+-+-+-+ X ptk_unstacktsl(); X unstackpos(); X `7D while ((curelemid > ptk_elemcount(curstid)) && (tslpos != NULL)); X `7D X `7D`20 X ptk_openstruct(curstid); X psetelemptr(curelemid); X curelemid++; X if (tsltraverseelement(&execid, &boundbox)) X `7B X ptk_stacktsl(); X stackpos(); X curstid = execid; X curelemid = 1; X ptk_multiplymatrix3(tsl.globaltran, tsl.localtran, tsl.globaltran); X ptk_unitmatrix3(tsl.localtran); X `7D X ptk_closestruct(); X`7D /* ptk_tsltraversenext */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_tsltraversetoend(C(void)) X/* PreANSI() */ X/* X** \blurb`7BThis function makes TSL traverse to the end of the TSL structure V`20 X** network.`7D X*/ X`7B X while ((curstid != firststid) && (curelemid != firstelemid)) X ptk_tsltraversenext(); X`7D /* ptk_tsltraversetoend */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_inqboundingbox(C(Plimit3 *) bbox) XPreANSI(Plimit3 *bbox) X/* X** \parambegin X** \param`7BPlimit3 *`7D`7Bbbox`7D`7Bbounding box (WC)`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function may be used to obtain current TSL bounding box X** value. This is the bounding box of the TSL structure network at the X** current point of traversal.`7D X*/ X`7B X *bbox = boundbox; X`7D /* ptk_inqboundingbox */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_inqtsledge(C(Pint *) edgeind, C(Pedgef *) edgeflag,`20 X C(Pint *) edgetype, C(Pfloat *) edgewidth, C(Pint *) edgecolour) XPreANSI(Pint *edgeind) XPreANSI(Pedgef *edgeflag) XPreANSI(Pint *edgetype) XPreANSI(Pfloat *edgewidth) XPreANSI(Pint *edgecolour) X/* X** \parambegin X** \param`7BPint *`7D`7Bedgeind`7D`7Bedge index`7D`7BOUT`7D X** \param`7BPedgef *`7D`7Bedgeflag`7D`7Bedge flag`7D`7BOUT`7D X** \param`7BPint *`7D`7Bedgetype`7D`7Bedge type`7D`7BOUT`7D X** \param`7BPfloat *`7D`7Bedgewidth`7D`7Bedge width`7D`7BOUT`7D X** \param`7BPint *`7D`7Bedgecolour`7D`7Bedge colour`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function may be used to obtain the current TSL`20 X** edge attributes.`7D X*/ X`7B X *edgeind = tsl.edgeattr.index; X *edgeflag = tsl.edgeattr.bundl.flag; X *edgetype = tsl.edgeattr.bundl.type; X *edgewidth = tsl.edgeattr.bundl.scale; X *edgecolour = tsl.edgeattr.bundl.colour; X`7D /* ptk_inqtsledge */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_inqtslline(C(Pint *) lineind, C(Pint *) linetype,`20 X C(Pfloat *) linewidth, C(Pint *) linecolour) XPreANSI(Pint *lineind) XPreANSI(Pint *linetype) XPreANSI(Pfloat *linewidth) XPreANSI(Pint *linecolour) X/* X** \parambegin X** \param`7BPint *`7D`7Blineind`7D`7Bline index`7D`7BOUT`7D X** \param`7BPint *`7D`7Blinetype`7D`7Bline type`7D`7BOUT`7D X** \param`7BPfloat *`7D`7Blinewidth`7D`7Bline width`7D`7BOUT`7D X** \param`7BPint *`7D`7Blinecolour`7D`7Bline colour`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function may be used to obtain the current TSL line`20 X** attributes.`7D X*/ X`7B X *lineind = tsl.lnattr.index; X *linetype = tsl.lnattr.bundl.type; X *linewidth = tsl.lnattr.bundl.width; X *linecolour = tsl.lnattr.bundl.colour; X`7D /* ptk_inqtslline */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_inqtslmarker(C(Pint *) markerind, C(Pint *) markertype,`20 X C(Pfloat *) markersize, C(Pint *) markercolour) XPreANSI(Pint *markerind) XPreANSI(Pint *markertype) XPreANSI(Pfloat *markersize) XPreANSI(Pint *markercolour) X/* X** \parambegin X** \param`7BPint *`7D`7Bmarkerind`7D`7Bmarker index`7D`7BOUT`7D X** \param`7BPint *`7D`7Bmarkertype`7D`7Bmarker type`7D`7BOUT`7D X** \param`7BPfloat *`7D`7Bmarkersize`7D`7Bmarker size`7D`7BOUT`7D X** \param`7BPint *`7D`7Bmarkercolour`7D`7Bmarker colour`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function may be used to obtain the current TSL marker`20 X** attributes.`7D X*/ X`7B X *markerind = tsl.mkattr.index; X *markertype = tsl.mkattr.bundl.type; X *markersize = tsl.mkattr.bundl.size; X *markercolour = tsl.mkattr.bundl.colour; X`7D /* ptk_inqtslmarker */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_inqtslinterior(C(Pint *) intind, C(Pint *) intstyle,`20 X C(Pint *) intstyleind, C(Pint *) intcolour) XPreANSI(Pint *intind) XPreANSI(Pint *intstyle) XPreANSI(Pint *intstyleind) XPreANSI(Pint *intcolour) X/* X** \parambegin X** \param`7BPint *`7D`7Bintind`7D`7Binterior index`7D`7BOUT`7D X** \param`7BPint *`7D`7Bintstyle`7D`7Binterior style`7D`7BOUT`7D X** \param`7BPfloat *`7D`7Bintstyleind`7D`7Binterior style index`7D`7BOUT`7D X** \param`7BPint *`7D`7Bintcolour`7D`7Binterior colour`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function may be used to obtain the current TSL interior`20 X** attributes.`7D X*/ X`7B X *intind = tsl.interattr.index; X *intstyle = tsl.interattr.bundl.style; X *intstyleind = tsl.interattr.bundl.index; X *intcolour = tsl.interattr.bundl.colour; X`7D /* ptk_inqtslint */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_inqtsltext(C(Pint *) textind, C(Pint *) textfont,`20 X C(Ptxprec *) textprec, C(Ptxpath *) textpath,`20 X C(Ptxalign *) textalign, C(Pint *) textcolour) XPreANSI(Pint *textind) XPreANSI(Pint *textfont) XPreANSI(Ptxprec *textprec) XPreANSI(Ptxpath *textpath) XPreANSI(Ptxalign *textalign) XPreANSI(Pint *textcolour) X/* X** \parambegin X** \param`7BPint *`7D`7Btextind`7D`7Btext index`7D`7BOUT`7D X** \param`7BPint *`7D`7Btextfont`7D`7Btext font`7D`7BOUT`7D X** \param`7BPtxprec *`7D`7Btextprec`7D`7Btext precision`7D`7BOUT`7D X** \param`7BPtxpath *`7D`7Btextpath`7D`7Btext path`7D`7BOUT`7D X** \param`7BPtxalign *`7D`7Btextalign`7D`7Btext alignment`7D`7BOUT`7D X** \param`7BPint *`7D`7Btextcolour`7D`7Btext colour`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function may be used to obtain the current TSL text`20 X** attributes.`7D X*/ X`7B X *textind = tsl.textindex; X *textfont = tsl.txbundl.font; X *textprec = tsl.txbundl.precision; X *textpath = tsl.textpath; X *textalign = tsl.textalign; X *textcolour = tsl.txbundl.colour; X`7D /* ptk_inqtsltext */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_inqtslannotext(C(Pint *) style, C(Pfloat *) charheight,`20 X C(Ppoint *) charup, C(Ptxalign *) textalign,`20 X C(Ptxpath *) textpath) XPreANSI(Pint *style) XPreANSI(Pfloat *charheight) XPreANSI(Ppoint *charup) XPreANSI(Ptxpath *textpath) XPreANSI(Ptxalign *textalign) X/* X** \parambegin X** \param`7BPint *`7D`7Bstyle`7D`7Bannotation style`7D`7BOUT`7D X** \param`7BPfloat *`7D`7Bcharheight`7D`7Bannotation character height`7D`7BO VUT`7D X** \param`7BPpoint *`7D`7Bcharup`7D`7Bannotation character up vector`7D`7BOU VT`7D X** \param`7BPtxalign *`7D`7Btextalign`7D`7Bannotation text alignment`7D`7BOU VT`7D X** \param`7BPtxpath *`7D`7Btextpath`7D`7Bannotation text path`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function may be used to obtain the current TSL X** annotation text attributes.`7D X*/ X`7B X *style = tsl.annostyle; X *charheight = tsl.annocharheight; X *charup = tsl.annocharup; X *textalign = tsl.annotextalign; X *textpath = tsl.annotextpath; X`7D /* ptk_inqtslannotext */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_inqtslchar(C(Pfloat *) exp, C(Pfloat *) spacing,`20 X C(Pfloat *) height, C(Ppoint *) charup) XPreANSI(Pfloat *exp) XPreANSI(Pfloat *spacing) XPreANSI(Pfloat *height) XPreANSI(Ppoint *charup) X/* X** \parambegin X** \param`7BPfloat *`7D`7Bexp`7D`7Bcharacter expansion factor`7D`7BOUT`7D X** \param`7BPfloat *`7D`7Bspacing`7D`7Bcharacter spacing`7D`7BOUT`7D X** \param`7BPfloat *`7D`7Bheight`7D`7Bcharacter height`7D`7BOUT`7D X** \param`7BPpoint *`7D`7Bcharup`7D`7Bcharacter up vector`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function may be used to obtain the current TSL character`20 X** attributes.`7D X*/ X`7B X *exp = tsl.txbundl.exp; X *spacing = tsl.txbundl.space; X *height = tsl.charheight; X *charup = tsl.charup; X`7D /* ptk_inqtslannotext */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_inqtslctm(C(Pmatrix3) globaltran, C(Pmatrix3) localtran)`20 XPreANSI(Pmatrix3 globaltran) XPreANSI(Pmatrix3 localtran) X/* X** \parambegin X** \param`7BPmatrix3`7D`7Bglobaltran`7D`7Bglobal transformation matrix`7D`7B VOUT`7D X** \param`7BPmatrix3`7D`7Blocaltran`7D`7Blocal transformation matrix`7D`7BOU VT`7D X** \paramend X** \blurb`7BThis function may be used to obtain the current TSL transformati Von`20 X** matrices.`7D X*/ X`7B X memcpy(globaltran, tsl.globaltran, sizeof(Pmatrix3)); X memcpy(localtran, tsl.localtran, sizeof(Pmatrix3)); X`7D /* ptk_inqtslctm */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_inqtslnameset(C(Pint) size, C(Pintlst *) nameset,`20 X C(Pint *) totalsize)`20 XPreANSI(Pint size) XPreANSI(Pintlst *nameset) XPreANSI(Pint *totalsize) X/* X** \parambegin X** \param`7BPint`7D`7Bsize`7D`7Blength of nameset integer list`7D`7BIN`7D X** \param`7BPintlst *`7D`7Bnameset`7D`7Bcurrent nameset`7D`7BOUT`7D X** \param`7BPint *`7D`7Btotalsize`7D`7Bactual length of nameset integer list V`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function may be used to obtain the current TSL nameset.`7D X*/ X`7B X Pint i; X X if (size >= tsl.nameset.number) X for (i = 0; i < tsl.nameset.number; i++) X nameset->integers`5Bi`5D = tsl.nameset.integers`5Bi`5D; X *totalsize = tsl.nameset.number; X`7D /* ptk_inqtslnameset */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_inqtslids(C(Pint *) pickid, C(Pint *) hlhsrid,`20 X C(Pint *) viewind)`20 XPreANSI(Pint *pickid) XPreANSI(Pint *hlhsrid) XPreANSI(Pint *viewind) X/* X** \parambegin X** \param`7BPint *`7D`7Bpickid`7D`7Bpick identifier`7D`7BOUT`7D X** \param`7BPint *`7D`7Bhlhsrid`7D`7BHLHSR identifier`7D`7BOUT`7D X** \param`7BPint *`7D`7Bviewind`7D`7Bview index`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function may be used to obtain the current TSL values X** for pick identifier, HLHSR identifier and view index.`7D X*/ X`7B X *pickid = tsl.pickid; X *hlhsrid = tsl.hlhsrid; X *viewind = tsl.viewindex; X`7D /* ptk_inqtslids */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_inqtslpattern(C(Ppoint *) size, C(Ppoint3 *) refpt,`20 X C(Ppoint3 *) refvec)`20 XPreANSI(Ppoint *size) XPreANSI(Ppoint3 *refpt) XPreANSI(Ppoint3 refvec`5B2`5D) X/* X** \parambegin X** \param`7BPpoint *`7D`7Bsize`7D`7Bpattern size`7D`7BOUT`7D X** \param`7BPpoint3 *`7D`7Brefpt`7D`7Bpattern reference point`7D`7BOUT`7D X** \param`7BPpoint3 *`7D`7Brefvec`7D`7Bpattern reference vectors`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function may be used to obtain the current TSL pattern`20 X** attributes.`7D X*/ X`7B X Ppoint patsize; X Ppoint3 patrefpt; X Ppoint3 patvec`5B2`5D; X X *size = tsl.patsize; X *refpt = tsl.patrefpt; X refvec`5B0`5D = tsl.patvec`5B0`5D; X refvec`5B1`5D = tsl.patvec`5B1`5D; X`7D /* ptk_inqtslpattern */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_inqtslattrasf(C(Pattrid) attr, C(Pasf *) asf)`20 XPreANSI(Pattrid attr) XPreANSI(Pasf *asf) X/* X** \parambegin X** \param`7BPattrid`7D`7Battr`7D`7Battribute type`7D`7BIN`7D X** \param`7BPasf *`7D`7Basf`7D`7Battribute aspect source flag`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function may be used to obtain the current TSL`20 X** aspect source flag value for attribute type `7B\tt attr`7D.`7D X*/ X`7B X switch (attr) X `7B X case PLINETYPE: *asf = tsl.lnattr.type; `20 X break; X X case PLINEWIDTH_SCALE_FACTOR: *asf = tsl.lnattr.width; X break; X X case PPOLYLINE_COLOUR_INDEX: *asf = tsl.lnattr.colour; `20 X break; X X case PMARKERTYPE: *asf = tsl.mkattr.type; X break; X X case PMARKERSIZE_SCALE_FACTOR:`20 X#ifdef SUN X *asf = tsl.mkattr.style; `20 X#endif X#ifdef VMS X *asf = tsl.mkattr.size; X#endif X break; X X case PPOLYMARKER_COLOUR_INDEX: *asf = tsl.mkattr.colour; `20 X break; X `20 X case PTEXT_FONT: *asf = tsl.textfontasf; X break; X `20 X case PTEXT_PRECISION: *asf = tsl.textprecasf; `20 X break; X `20 X case PCHARACTER_EXPANSION_FACTOR: *asf = tsl.charexpanasf; `20 X break; X `20 X case PCHARACTER_SPACING: *asf = tsl.charspaceasf; `20 X break; X `20 X case PTEXT_COLOUR_INDEX: *asf = tsl.textcolourasf; X break; X `20 X case PINTERIOR_STYLE: *asf = tsl.interattr.style; X break; X `20 X case PINTERIOR_STYLE_INDEX: *asf = tsl.interattr.interior; `20 X break; X `20 X case PINTERIOR_COLOUR_INDEX: *asf = tsl.interattr.colour; `20 X break; X `20 X case PEDGE_FLAG: *asf = tsl.edgeattr.flag; X break; X `20 X case PEDGETYPE: *asf = tsl.edgetypeasf; `20 X break; X `20 X case PEDGEWIDTH_SCALE_FACTOR: *asf = tsl.edgeattr.width; `20 X break; X `20 X case PEDGE_COLOUR_INDEX: *asf = tsl.edgeattr.colour; X break; X `7D X`7D /* ptk_inqtslattrasf */ X X/*-------------------------------------------------------------------------- V*/ X X/* end of tsl.c */ $ CALL UNPACK [.SOURCE.LIBRARY]TSL.C;1 527600261 $ create 'f' X/*-------------------------------------------------------------------------- V-- +-+-+-+-+-+-+-+- END OF PART 271 +-+-+-+-+-+-+-+-