-+-+-+-+-+-+-+-+ START OF PART 247 -+-+-+-+-+-+-+-+ X pannotationtextrelative(&elcont->eldata.atx.ref_pt,`20 X &elcont->eldata.atx.anno,`20 X elcont->eldata.atx.str); X#endif X break; X X case PEL_FILL_AREA3: X#ifdef VMS X pfillarea3(elcont->size, elcont->eldata.pts3); X#endif X#ifdef SUN X pfillarea3(elcont->eldata.pts3.number, elcont->eldata.pts3.points); X#endif X break; X X case PEL_FILL_AREA: X#ifdef VMS X pfillarea(elcont->size, elcont->eldata.pts); X#endif X#ifdef SUN X pfillarea(elcont->eldata.pts.number, elcont->eldata.pts.points); X#endif X break; X X case PEL_FILL_AREA_SET3: X#ifdef VMS X pfillareaset3(elcont->size, elcont->eldata.fillarea_set3.bounds,`20 X elcont->eldata.fillarea_set3.pts); X#endif X#ifdef SUN X pfillareaset3(elcont->eldata.fas3.n_sets, elcont->eldata.fas3.sets); X#endif X break; X X case PEL_FILL_AREA_SET: X#ifdef VMS X pfillareaset(elcont->size, elcont->eldata.fillarea_set.bounds,`20 X elcont->eldata.fillarea_set.pts); X#endif X#ifdef SUN X pfillareaset(elcont->eldata.fas.n_sets, elcont->eldata.fas.sets); X#endif X break; X X case PEL_CELL_ARRAY3: X#ifdef SUN X pcellarray3(elcont->eldata.ca3.pgram, &elcont->eldata.ca3.dim,`20 X elcont->eldata.ca3.colours); X#endif X break; X X case PEL_CELL_ARRAY: X#ifdef SUN X pcellarray(&elcont->eldata.ca.rect, &elcont->eldata.ca.dim,`20 X elcont->eldata.ca.colours); X#endif X break; X X case PEL_GDP3: X#ifdef SUN X pgdp3(elcont->eldata.gdp3.pts.number, elcont->eldata.gdp3.pts.points V,`20 X elcont->eldata.gdp3.id, &elcont->eldata.gdp3.rec); X#endif X break; X X case PEL_GDP: X#ifdef SUN X pgdp(elcont->eldata.gdp.pts.number, elcont->eldata.gdp.pts.points,`2 V0 X elcont->eldata.gdp.id, &elcont->eldata.gdp.rec); X#endif X break; X X case PEL_POLYLINE_INDEX: X psetlineind(elcont->eldata.idata); X break; X X case PEL_POLYMARKER_INDEX: X psetmarkerind(elcont->eldata.idata); X break; X X case PEL_TEXT_INDEX: X psettextind(elcont->eldata.idata); X break; X X case PEL_INTERIOR_INDEX: X psetintind(elcont->eldata.idata); X break; X X case PEL_EDGE_INDEX: X psetedgeind(elcont->eldata.idata); X break; X X case PEL_LINETYPE: X psetlinetype(elcont->eldata.idata); X break; X X case PEL_LINEWIDTH_SCALE_FACTOR: X psetlinewidth(elcont->eldata.fdata); X break; X X case PEL_POLYLINE_COLOUR_INDEX: X psetlinecolourind(elcont->eldata.idata); X break; X X case PEL_MARKER_TYPE: X psetmarkertype(elcont->eldata.idata); X break; X X case PEL_MARKER_SIZE_SCALE_FACTOR: X psetmarkersize(elcont->eldata.fdata); X break; X X case PEL_MARKER_COLOUR_INDEX: X psetmarkercolourind(elcont->eldata.idata); X break; X X case PEL_TEXT_FONT: X psettextfont(elcont->eldata.idata); X break; X X case PEL_TEXT_PRECISION: X#ifdef VMS X psettextprec(elcont->eldata.text_prec); X#endif X#ifdef SUN X psettextprec(elcont->eldata.tx_prec); X#endif X break; X X case PEL_CHARACTER_EXPANSION_FACTOR: X psetcharexpan(elcont->eldata.fdata); X break; X X case PEL_CHARACTER_SPACING: X psetcharspace(elcont->eldata.fdata); X break; X X case PEL_TEXT_COLOUR_INDEX: X psettextcolourind(elcont->eldata.idata); X break; X X case PEL_CHARACTER_HEIGHT: X psetcharheight(elcont->eldata.fdata); X break; X X case PEL_CHARACTER_UP_VECTOR: X psetcharup(elcont->eldata.char_up); X break; X X case PEL_TEXT_PATH: X#ifdef VMS X psettextpath(elcont->eldata.text_path); X#endif X#ifdef SUN X psettextpath(elcont->eldata.tx_path); X#endif X break; X X case PEL_TEXT_ALIGNMENT: X#ifdef VMS X psettextalign(&elcont->eldata.text_align); X#endif X#ifdef SUN X psettextalign(&elcont->eldata.tx_align); X#endif X break; X X case PEL_ANNOTATION_TEXT_CHARACTER_HEIGHT: X psetannotationcharheight(elcont->eldata.fdata); X break; X X case PEL_ANNOTATION_TEXT_CHARACTER_UP_VECTOR: X psetannotationcharup(&elcont->eldata.char_up); X break; X X case PEL_ANNOTATION_TEXT_PATH: X#ifdef VMS X psetannotationpath(elcont->eldata.text_path); X#endif X#ifdef SUN X psetannotationpath(elcont->eldata.tx_path); X#endif X break; X X case PEL_ANNOTATION_TEXT_ALIGNMENT: X#ifdef VMS X psetannotationalign(&elcont->eldata.text_align); X#endif X#ifdef SUN X psetannotationalign(&elcont->eldata.tx_align); X#endif X break; X X case PEL_ANNOTATION_STYLE: X psetannotationstyle(elcont->eldata.idata); X break; X `20 X case PEL_INTERIOR_STYLE: X psetintstyle(elcont->eldata.idata); X break; X X case PEL_INTERIOR_STYLE_INDEX: X psetintstyleind(elcont->eldata.idata); X break; X X case PEL_INTERIOR_COLOUR_INDEX: X psetintcolourind(elcont->eldata.idata); X break; X X case PEL_EDGE_FLAG: X psetedgeflag(elcont->eldata.edge_flag); X break; X X case PEL_EDGETYPE: X psetedgetype(elcont->eldata.idata); X break; X X case PEL_EDGEWIDTH_SCALE_FACTOR: X psetedgewidth(elcont->eldata.fdata); X break; X X case PEL_EDGE_COLOUR_INDEX: X psetedgecolourind(elcont->eldata.idata); X break; X X case PEL_PATTERN_SIZE: X#ifdef SUN X psetpatsize(&elcont->eldata.pt); X#endif X break; X X case PEL_PATTERN_REFERENCE_POINT_AND_VECTORS: X#ifdef SUN X psetpatrefptvectors(&elcont->eldata.pat.pt, &elcont->eldata.pat.vec` V5B0`5D,`20 X &elcont->eldata.pat.vec`5B1`5D); X#endif X break; X X case PEL_PATTERN_REFERENCE_POINT: X#ifdef SUN X psetpatrefpt(&elcont->eldata.pt); X#endif X break; X X case PEL_ADD_NAMES_TO_SET: X paddnameset(&elcont->eldata.name_set); X break; X X case PEL_REMOVE_NAMES_FROM_SET: X premovenameset(&elcont->eldata.name_set); X break; X X case PEL_INDIVIDUAL_ASF: X#ifdef VMS X psetindivasf(elcont->eldata.asf_info.attr_id,`20 X elcont->eldata.asf_info.asf); X#endif X#ifdef SUN X psetindivasf(elcont->eldata.asf.id, elcont->eldata.asf.asf); X#endif X break; X X case PEL_HLHSR_IDENTIFIER: X psethlhsrid(elcont->eldata.idata); X break; X X case PEL_LOCAL_MODELLING_TRANSFORMATION3: X#ifdef VMS X psetlocaltran3(elcont->eldata.local_xform_3.mat3,`20 X elcont->eldata.local_xform_3.compose_type); X#endif X#ifdef SUN X psetlocaltran3(elcont->eldata.mtran3.mat, elcont->eldata.mtran3.comp V); X#endif X break; X X case PEL_LOCAL_MODELLING_TRANSFORMATION: X#ifdef VMS X psetlocaltran(elcont->eldata.local_xform.mat,`20 X elcont->eldata.local_xform.compose_type); X#endif X#ifdef SUN X psetlocaltran(elcont->eldata.m_tran.mat, elcont->eldata.m_tran.comp) V; X#endif X break; X X case PEL_GLOBAL_MODELLING_TRANSFORMATION3: X#ifdef VMS X psetglobaltran3(elcont->eldata.mat3); X#endif X#ifdef SUN X psetglobaltran3(elcont->eldata.gbl_tran3); X#endif X break; X X case PEL_GLOBAL_MODELLING_TRANSFORMATION: X#ifdef VMS X psetglobaltran3(elcont->eldata.mat); X#endif X#ifdef SUN X psetglobaltran3(elcont->eldata.gbl_tran); X#endif X break; X X case PEL_MODELLING_CLIPPING_VOLUME3: X#ifdef SUN X psetmodelclipvolume3(elcont->eldata.mclip3.op,`20 X &elcont->eldata.mclip3.hsp); X#endif X break; X X case PEL_MODELLING_CLIPPING_VOLUME: X#ifdef SUN X psetmodelclipvolume(elcont->eldata.mclip.op, &elcont->eldata.mclip.h Vsp); X#endif X break; X X case PEL_MODELLING_CLIPPING_INDICATOR: X#ifdef SUN X psetmodelclipindicator(elcont->eldata.clip_ind); X#endif X break; X X case PEL_RESTORE_MODELLING_CLIPPING_VOLUME: X#ifdef SUN X prestoremodelclipvolume(); X#endif X break; X X case PEL_VIEW_INDEX: X psetviewind(elcont->eldata.idata); X break; X X case PEL_EXECUTE_STRUCTURE: X pexecutestruct(elcont->eldata.idata); X break; X X case PEL_LABEL: X plabel(elcont->eldata.idata); X break; X`20 X case PEL_APPLICATION_DATA: X#ifdef VMS X `7B X Pdata appldata; X X appldata.size = elcont->size; X appldata.data = elcont->eldata.data; X papplicationdata(&appldata); X `7D X#endif X#ifdef SUN X papplicationdata(&elcont->eldata.appl_data); X#endif X break; X X case PEL_GSE: X#ifdef SUN X pgse(elcont->eldata.gse.id, &elcont->eldata.gse.rec); X#endif X break; X X case PEL_PICK_ID: X psetpickid(elcont->eldata.idata); X break; X X default: X /* ptk_error(unknown element) */ X break; X `7D X`7D /* ptk_executeelem */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_copyelem(C(Pint) structid, C(Pint) elemid) XPreANSI(Pint structid) XPreANSI(Pint elemid) X/* X** \parambegin X** \param`7BPint`7D`7Bstructid`7D`7Bstructure identifier`7D`7BIN`7D X** \param`7BPint`7D`7Belemid`7D`7Belement number`7D`7BIN`7D X** \paramend X** \blurb`7BThis function copies the element at position \pardesc`7Belemid`7 VD X** in structuyre \pardesc`7Bstructid`7D, into the currently X** open structure.`7D X*/ X`7B X Pint error, actualsize; X Pchar *buffer; X ptkselcontent elcont; X X /* find out type and contents of element */ X ptk_inqelemtypesizecontent(structid, elemid, &error, &buffer, &elcont); X if (error == 0)`20 X ptk_executeelem(&elcont); X free(buffer); X`7D /* ptk_copyelem */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_getprimitivetypename(C(Pattrs) attr, C(Pint) size,`20 X C(Pchar *) attrstr, C(Pint *) totalsize V) XPreANSI(Pattrs attr) XPreANSI(Pint size) XPreANSI(Pchar *attrstr) XPreANSI(Pint *totalsize) X/* X** \parambegin X** \param`7BPattrs`7D`7Battr`7D`7Bprimitive type`7D`7BIN`7D X** \param`7BPint`7D`7Bsize`7D`7Bsize of buffer allocated by application`7D`7 VBIN`7D X** \param`7BPchar *`7D`7Battrstr`7D`7Bstring giving primitive type`7D`7BOUT` V7D X** \param`7BPint *`7D`7Btotalsize`7D`7Blength of string`7D`7BOUT`7D X** \paramend X** \blurb`7BThe function converts the primitive type \pardesc`7Battr`7D X** to its corresponding character string, which is returned in X** \pardesc`7Bartrstr`7D. For example, P\_POLYLINE would give "polyline".`7D X*/ X`7B X *totalsize = strlen(attrlist`5B(Pint)attr`5D) + 1; X if (*totalsize <= size) X strncpy(attrstr, attrlist`5B(Pint)attr`5D, *totalsize); `20 X`7D /* ptk_getprimitivetypename */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern void ptk_copyelemrange(C(Pint) stid, C(Pint) elem1, C(Pint) elem2)`20 XPreANSI(Pint stid) XPreANSI(Pint elem1) XPreANSI(Pint elem2) X/* X** \parambegin X** \param`7BPint`7D`7Bstid`7D`7Bstructure identifier`7D`7BIN`7D X** \param`7BPint`7D`7Belem1`7D`7Belement pointer`7D`7BIN`7D X** \param`7BPint`7D`7Belem2`7D`7Belement pointer`7D`7BIN`7D X** \paramend X** \blurb`7BThis function copies the element range \pardesc`7Belem1`7D to \ Vpardesc`7Belem2`7D X** in structure \pardesc`7Bstid`7D into the currently open structure.`7D X*/ X`7B X Pint i, err, openstid, elemptr, emin, emax; X Popenstructstatus status; X ptkboolean backwards; X X pinqopenstruct(&err, &status, &openstid); X if (status == PSTRUCT_OPEN) X `7B X emin = MIN(elem1, elem2); X emax = MAX(elem1, elem2); X pinqelemptr(&err, &elemptr); X if ((openstid == stid) && (elemptr < emin)) X `7B X for (i = emin; i <= emax; i++) X ptk_copyelem(stid, (i * 2) - emin); X `7D X else X for (i = emin; i <= emax; i++) X ptk_copyelem(stid, i); X `7D X`7D /* ptk_copyelemrange */ X X/*-------------------------------------------------------------------------- V*/ X X/*function:external*/ Xextern ptkboolean ptk_removestruct(C(Pint) stid) XPreANSI(Pint stid) X/* X** \parambegin X** \param`7BPint`7D`7Bstid`7D`7Bstructure identifier`7D`7BIN`7D X** \paramend X** \blurb`7BThis function deletes structure \pardesc`7Bstid`7D, if it alread Vy exists, X** returning TRUE if the structure was deleted, otherwise FALSE.`7D X*/ X`7B X if (ptk_structexists(stid))`20 X `7B X pdelstruct(stid); X return TRUE; X `7D`20 X else X return FALSE; X`7D /* ptk_removestruct */ X X/*-------------------------------------------------------------------------- V*/ X Xstatic ptkboolean inelemlist(C(Peltype *) elemlist, C(Pint) lenlist, X C(Peltype) elem, C(Pint *) lstnum) XPreANSI(Peltype *elemlist) XPreANSI(Pint lenlist) XPreANSI(Peltype elem) XPreANSI(Pint *lstnum) X/* X** \parambegin X** \param`7B`7D`7Belemlist`7D`7Blist of element types`7D`7BIN`7D X** \param`7B`7D`7Blenlist`7D`7Blength of element type list`7D`7BIN`7D X** \param`7B`7D`7Belem`7D`7Belement type to search for`7D`7BIN`7D X** \param`7B`7D`7Blstnum`7D`7Bindex of found item in list`7D`7BOUT`7D X** \paramend X** \blurb`7BThis function searches \pardesc`7Belemlist`7D for an X** element of type \pardesc`7Belem`7D, returning X** TRUE if the element type is found in list, otherwise FALSE.`7D X*/ X`7B X Pint i; X ptkboolean found; X X i = 0; X found = FALSE; X while ((found == FALSE) && (i < lenlist)) X `7B X if (elemlist`5Bi`5D == elem) X `7B X found = TRUE; X *lstnum = i; +-+-+-+-+-+-+-+- END OF PART 247 +-+-+-+-+-+-+-+-