-+-+-+-+-+-+-+-+ START OF PART 220 -+-+-+-+-+-+-+-+ XPreANSI(ptkedest dest) XPreANSI(Pfloat value) X`7B X phinprintf(dest, "%f\n", value); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writepoint(C(ptkedest) dest, C(Ppoint *) pt) XPreANSI(ptkedest dest) XPreANSI(Ppoint *pt) X`7B X phinprintf(dest, "%f %f\n", pt->x, pt->y); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writevector(C(ptkedest) dest, C(Pvector *) vec) XPreANSI(ptkedest dest) XPreANSI(Pvector *vec) X`7B X phinprintf(dest, "%f %f\n", vec->x, vec->y); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writeipoint(C(ptkedest) dest, C(Pipoint *) pt) XPreANSI(ptkedest dest) XPreANSI(Pipoint *pt) X`7B X phinprintf(dest, "%f %f\n", pt->x, pt->y); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writepoint3(C(ptkedest) dest, C(Ppoint3 *) pt) XPreANSI(ptkedest dest) XPreANSI(Ppoint3 *pt) X`7B X phinprintf(dest, "%f %f %f\n", pt->x, pt->y, pt->z); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writevector3(C(ptkedest) dest, C(Pvector3 *) vec) XPreANSI(ptkedest dest) XPreANSI(Pvector3 *vec) X`7B X phinprintf(dest, "%f %f %f\n", vec->x, vec->y, vec->z); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writeipoint3(C(ptkedest) dest, C(Pipoint3 *) pt) XPreANSI(ptkedest dest) XPreANSI(Pipoint3 *pt) X`7B X phinprintf(dest, "%f %f %f\n", pt->x, pt->y, pt->z); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writecobundl(C(ptkedest) dest, C(Pcobundl *) colour) XPreANSI(ptkedest dest) XPreANSI(Pcobundl *colour) X`7B X#ifdef SUN X phinprintf(dest, "%f %f %f\n", colour->x, colour->y, colour->z); X#endif X#ifdef VMS X phinprintf(dest, "%f %f %f\n", colour->rgb.r, colour->rgb.g,`20 X colour->rgb.b); X#endif X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writelimit(C(ptkedest) dest, C(Plimit *) lt) XPreANSI(ptkedest dest) XPreANSI(Plimit *lt) X`7B X phinprintf(dest, "%f %f\n", lt->xmin, lt->xmax); X phinprintf(dest, "%f %f\n", lt->ymin, lt->ymax); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writelimit3(C(ptkedest) dest, C(Plimit3 *) lt) XPreANSI(ptkedest dest) XPreANSI(Plimit3 *lt) X`7B X phinprintf(dest, "%f %f\n", lt->xmin, lt->xmax); X phinprintf(dest, "%f %f\n", lt->ymin, lt->ymax); X phinprintf(dest, "%f %f\n", lt->zmin, lt->zmax); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writematrix(C(ptkedest) dest, C(Pmatrix) mat) XPreANSI(ptkedest dest) XPreANSI(Pmatrix mat) X`7B X Pint i; X X for (i = 0; i < 3; i++) X phinprintf(dest, "%f %f %f\n", mat`5Bi`5D`5B0`5D, mat`5Bi`5D`5B1`5D, ma Vt`5Bi`5D`5B2`5D); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writematrix3(C(ptkedest) dest, C(Pmatrix3) mat) XPreANSI(ptkedest dest) XPreANSI(Pmatrix3 mat) X`7B X Pint i; X X for (i = 0; i <= 3; i++) X phinprintf(dest, "%f %f %f %f\n", mat`5Bi`5D`5B0`5D, mat`5Bi`5D`5B1`5D, V mat`5Bi`5D`5B2`5D,`20 X mat`5Bi`5D`5B3`5D); X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writeintlst(C(ptkedest) dest, C(Pintlst *) intlist,`20 X C(ptkehashtable) htable) XPreANSI(ptkedest dest) XPreANSI(Pintlst *intlist) XPreANSI(ptkehashtable htable) X`7B X Pint i; X X writeinteger(dest, intlist->number, "number"); X for (i = 0; i < intlist->number; i++) X `7B X writeintvalue(dest, intlist->integers`5Bi`5D, htable); X `7D X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writepointlst3(C(ptkedest) dest, C(Ppointlst3 *) ptlist) XPreANSI(ptkedest dest) XPreANSI(Ppointlst3 *ptlist) X`7B X Pint i; X X writeinteger(dest, ptlist->number); X for (i = 0; i < ptlist->number; i++) X `7B X writepoint3(dest, &ptlist->points`5Bi`5D); X `7D X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writepointlst(C(ptkedest) dest, C(Ppointlst *) ptlist) XPreANSI(ptkedest dest) XPreANSI(Ppointlst *ptlist) X`7B X Pint i; X X writeinteger(dest, ptlist->number); X for (i = 0; i < ptlist->number; i++) X `7B X writepoint(dest, &ptlist->points`5Bi`5D); X `7D X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writeintarray(C(ptkedest) dest, C(Pint) num, C(Pint *) ints, X C(ptkehashtable) htable) XPreANSI(ptkedest dest) XPreANSI(Pint num) XPreANSI(Pint *ints) XPreANSI(ptkehashtable htable) X`7B X Pint i; X X for (i = 0; i < num; i++) X `7B X writeintvalue(dest, ints`5Bi`5D, htable); X `7D X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writepointarray(C(ptkedest) dest, C(Pint) numpts,`20 X C(Ppoint *) pts) XPreANSI(ptkedest dest) XPreANSI(Pint numpts) XPreANSI(Ppoint *pts) X`7B X Pint i; X X for (i = 0; i < numpts; i++) X `7B X writepoint(dest, &pts`5Bi`5D); X `7D X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writepointarray3(C(ptkedest) dest, C(Pint) numpts,`20 X C(Ppoint3 *) pts) XPreANSI(ptkedest dest) XPreANSI(Pint numpts) XPreANSI(Ppoint3 *pts) X`7B X Pint i; X X for (i = 0; i < numpts; i++) X `7B X writepoint3(dest, &pts`5Bi`5D); X `7D X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writepickpath(C(ptkedest) dest, C(Ppickpath *) path) XPreANSI(ptkedest dest) XPreANSI(Ppickpath *path) X`7B X Pint i; X X writeinteger(dest, path->depth); X for (i = 0; i < path->depth; i++) X `7B X writeinteger(dest, path->pick_path`5Bi`5D.struct_id); X writeinteger(dest, path->pick_path`5Bi`5D.pick_id); X writeinteger(dest, path->pick_path`5Bi`5D.el_num); X `7D X`7D X X/*-------------------------------------------------------------------------- V*/ X Xstatic void writeelemcontent(C(ptkedest) dest, C(ptkselcontent *) elcont) XPreANSI(ptkedest dest) XPreANSI(ptkselcontent *elcont) X`7B X Pint i, numpts, namelen, ptindex, size; X Pchar elemname`5B100`5D, str`5B100`5D; X X ptk_getelemtypename(elcont->eltype, 100, elemname, &namelen); X phinprintf(dest, "%s\n", elemname); X switch (elcont->eltype) X `7B X case PEL_NIL: X break; X X case PEL_POLYLINE3: X case PEL_POLYMARKER3: X case PEL_FILL_AREA3: X#ifdef SUN X writepointlst3(dest, &elcont->eldata.pts3); X#endif X#ifdef VMS X writeinteger(dest, elcont->size); X writepointarray3(dest, elcont->size, elcont->eldata.pts3); X#endif X break; X X case PEL_POLYLINE: X case PEL_POLYMARKER: X case PEL_FILL_AREA: X#ifdef SUN X writepointlst(dest, &elcont->eldata.pts); X#endif X#ifdef VMS X writeinteger(dest, elcont->size); X writepointarray(dest, elcont->size, elcont->eldata.pts); X#endif X break; X X case PEL_TEXT3: X writepoint3(dest, &elcont->eldata.text3.pt); X writevector3(dest, &elcont->eldata.text3.dir`5B0`5D); X writevector3(dest, &elcont->eldata.text3.dir`5B1`5D); X#ifdef SUN X phinprintf(dest, "\"%s\"\n", elcont->eldata.text3.str); X#endif X#ifdef VMS X phinprintf(dest, "\"%s\"\n", elcont->eldata.text3.string); X#endif X break; X X case PEL_TEXT: X#ifdef SUN X writepoint(dest, &elcont->eldata.tx.pt); X phinprintf(dest, "\"%s\"\n", elcont->eldata.tx.str); X#endif X#ifdef VMS X writepoint(dest, &elcont->eldata.text.pt); X phinprintf(dest, "\"%s\"\n", elcont->eldata.text.string); X#endif X break; X X case PEL_ANNOTATION_TEXT_RELATIVE3: X#ifdef SUN X writepoint3(dest, &elcont->eldata.atx3.ref_pt); X writepoint3(dest, &elcont->eldata.atx3.anno); X phinprintf(dest, "\"%s\"\n", elcont->eldata.atx3.str); X#endif X#ifdef VMS X writepoint3(dest, &elcont->eldata.atext3.ref_pt); X writepoint3(dest, &elcont->eldata.atext3.anno); X phinprintf(dest, "\"%s\"\n", elcont->eldata.atext3.string); X#endif X break; X X case PEL_ANNOTATION_TEXT_RELATIVE: X#ifdef SUN X writepoint(dest, &elcont->eldata.atx.ref_pt); X writepoint(dest, &elcont->eldata.atx.anno); X phinprintf(dest, "\"%s\"\n", elcont->eldata.atx.str); X#endif X#ifdef VMS X writepoint(dest, &elcont->eldata.atext.ref_pt); X writepoint(dest, &elcont->eldata.atext.anno); X phinprintf(dest, "\"%s\"\n", elcont->eldata.atext.string); X#endif X break; X X case PEL_FILL_AREA_SET3: X#ifdef SUN X writeinteger(dest, elcont->eldata.fas3.n_sets); X for (i = 0; i < elcont->eldata.fas3.n_sets; i++) X `7B X writepointlst3(dest, &elcont->eldata.fas3.sets`5Bi`5D); X `7D X#endif X#ifdef VMS X writeinteger(dest, elcont->size); X ptindex = 0; X for (i = 0; i < elcont->size; i++) X `7B X writeinteger(dest, elcont->eldata.fillarea_set3.bounds`5Bi`5D); X numpts = elcont->eldata.fillarea_set3.bounds`5Bi`5D; X writepointarray3(dest, numpts,`20 X &elcont->eldata.fillarea_set3.pts`5Bptindex`5D); X ptindex += numpts; X `7D X#endif X break; X X case PEL_FILL_AREA_SET: X#ifdef SUN X writeinteger(dest, elcont->eldata.fas.n_sets); X for (i = 0; i < elcont->eldata.fas.n_sets; i++) X `7B X writepointlst(dest, &elcont->eldata.fas.sets`5Bi`5D); X `7D X#endif X#ifdef VMS X writeinteger(dest, elcont->size); X ptindex = 0; X for (i = 0; i < elcont->size; i++) X `7B X writeinteger(dest, elcont->eldata.fillarea_set.bounds`5Bi`5D); X numpts = elcont->eldata.fillarea_set.bounds`5Bi`5D; X writepointarray(dest, numpts,`20 X &elcont->eldata.fillarea_set.pts`5Bptindex`5D); X ptindex += numpts; X `7D X#endif X break; X X case PEL_CELL_ARRAY3: X for (i = 0; i < 3; i++) X#ifdef SUN X writepoint3(dest, &elcont->eldata.ca3.pgram`5Bi`5D); X#endif X#ifdef VMS X writepoint3(dest, &elcont->eldata.cell_array3.parallelogram`5Bi`5D); X#endif X#ifdef SUN X writeinteger(dest, elcont->eldata.ca3.dim.x_dim); X writeinteger(dest, elcont->eldata.ca3.dim.y_dim); X writeintarray(dest, (elcont->eldata.ca3.dim.x_dim *`20 X elcont->eldata.ca3.dim.y_dim), X elcont->eldata.ca3.colours`5Bi`5D, PTKECOLOURIND); X#endif X#ifdef VMS X writeinteger(dest, elcont->eldata.cell_array3.dim.x_dim); X writeinteger(dest, elcont->eldata.cell_array3.dim.y_dim); X writeintarray(dest, (elcont->eldata.cell_array3.dim.x_dim *`20 X elcont->eldata.cell_array3.dim.y_dim), X elcont->eldata.cell_array3.colours`5Bi`5D, PTKECOLOURIND V); X#endif X break; X X case PEL_CELL_ARRAY: X#ifdef SUN X writepoint(dest, &elcont->eldata.ca.rect.ll); X writepoint(dest, &elcont->eldata.ca.rect.ur); X writeinteger(dest, elcont->eldata.ca.dim.x_dim); `20 X writeinteger(dest, elcont->eldata.ca.dim.y_dim); X writeintarray(dest, (elcont->eldata.ca.dim.x_dim *`20 X elcont->eldata.ca.dim.y_dim), X elcont->eldata.ca.colours`5Bi`5D, PTKECOLOURIND); X#endif X#ifdef VMS X writepoint(dest, &elcont->eldata.cell_array.rect.ll); X writepoint(dest, &elcont->eldata.cell_array.rect.ur); X writeinteger(dest, elcont->eldata.cell_array.dim.x_dim); X writeinteger(dest, elcont->eldata.cell_array.dim.y_dim); X writeintarray(dest, (elcont->eldata.cell_array.dim.x_dim *`20 X elcont->eldata.cell_array.dim.y_dim), X elcont->eldata.cell_array.colours`5Bi`5D, PTKECOLOURIND) V; X#endif X break; X X case PEL_GDP3: X writeinteger(dest, elcont->eldata.gdp3.id); X break; X X case PEL_GDP: X writeinteger(dest, elcont->eldata.gdp.id); X break; X X case PEL_POLYLINE_INDEX: X case PEL_POLYMARKER_INDEX: X case PEL_TEXT_INDEX: X case PEL_INTERIOR_INDEX: X case PEL_EDGE_INDEX: X case PEL_LINETYPE: X case PEL_MARKER_TYPE: X case PEL_TEXT_FONT: X case PEL_ANNOTATION_STYLE: X case PEL_INTERIOR_STYLE_INDEX: X case PEL_EDGETYPE: X case PEL_HLHSR_IDENTIFIER: X writeinteger(dest, elcont->eldata.idata); X break; X X case PEL_EDGE_COLOUR_INDEX: X case PEL_INTERIOR_COLOUR_INDEX: X case PEL_TEXT_COLOUR_INDEX: X case PEL_MARKER_COLOUR_INDEX: X case PEL_POLYLINE_COLOUR_INDEX: X writeintvalue(dest, elcont->eldata.idata, PTKECOLOURIND); X break; X X case PEL_VIEW_INDEX: X writeintvalue(dest, elcont->eldata.idata, PTKEVIEWIND); X break; X X case PEL_LABEL: `20 X writeintvalue(dest, elcont->eldata.idata, PTKELABELVAL); X break; X X case PEL_PICK_ID: X writeintvalue(dest, elcont->eldata.idata, PTKEPICKID); X break; X X case PEL_LINEWIDTH_SCALE_FACTOR: X case PEL_MARKER_SIZE_SCALE_FACTOR: X case PEL_CHARACTER_EXPANSION_FACTOR: X case PEL_CHARACTER_SPACING: X case PEL_CHARACTER_HEIGHT: X case PEL_ANNOTATION_TEXT_CHARACTER_HEIGHT: X case PEL_EDGEWIDTH_SCALE_FACTOR: X writereal(dest, elcont->eldata.fdata); X break; X X case PEL_EXECUTE_STRUCTURE: X writeintvalue(dest, elcont->eldata.idata, PTKESTRUCTID); X break; X `20 X case PEL_TEXT_PRECISION: X#ifdef SUN X writephigsenum(dest, PTKETXPREC, elcont->eldata.tx_prec); X#endif X#ifdef VMS X writephigsenum(dest, PTKETXPREC, elcont->eldata.text_prec); X#endif `20 X break; X X case PEL_CHARACTER_UP_VECTOR: X case PEL_ANNOTATION_TEXT_CHARACTER_UP_VECTOR: X writevector(dest, &elcont->eldata.char_up); X break; X X case PEL_TEXT_PATH: +-+-+-+-+-+-+-+- END OF PART 220 +-+-+-+-+-+-+-+-