-+-+-+-+-+-+-+-+ 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 +-+-+-+-+-+-+-+-