-+-+-+-+-+-+-+-+ START OF PART 146 -+-+-+-+-+-+-+-+
X  buffer = (Pchar *)malloc(totsize);
X  pinqdecendentsstruct(strid, pthord, pthdep, totsize, errind, buffer,`20
X      &totsize, &epaths);
X  *ol = epaths.number;
X  *apthsz = epaths.erls`5Bnum - 1`5D.number;
X  for (i = 0; i < *apthsz; i++)
X  `7B
X    paths`5Bi`5D.struct_id = epaths.erls`5Bnum - 1`5D.ers`5Bi`5D.struct_id;
X    paths`5Bi`5D.elem_num = epaths.erls`5Bnum - 1`5D.ers`5Bi`5D.elem_num;
X  `7D
X  free(buffer);
X`7D  /* pc_inqdecendentsstruct */
X
X/*--------------------------------------------------------------------------
V*/
X
Xextern void pc_inqdisplayspacesize(wtype, errind, dcunit, dx, dy, rx, ry)
XPint wtype, *errind, *dcunit;
XPfloat *dx, *dy;
XPint *rx, *ry;
X`7B
X  Pdspsize size;
X
X  pinqdisplayspacesize(wtype, errind, &size);
X  *dcunit = size.units;
X  *dx = size.device.x;
X  *dy = size.device.y;
X  *rx = size.raster.x;
X  *ry = size.raster.y;
X`7D  /* pc_inqdisplayspacesize */
X
X/*--------------------------------------------------------------------------
V*/
X
Xextern void pc_inqdisplayspacesize3(wtype, errind, dcunit, dx, dy, dz,`20
X                                   rx, ry, rz)
XPint wtype, *errind, *dcunit;
XPfloat *dx, *dy, *dz;
XPint *rx, *ry, *rz;
X`7B
X  Pdspvolume size;
X
X  pinqdisplayspacesize3(wtype, errind, &size);
X  *dcunit = size.units;
X  *dx = size.device.x;
X  *dy = size.device.y;
X  *dz = size.device.z;
X  *rx = size.raster.x;
X  *ry = size.raster.y;
X  *rz = size.raster.z;
X`7D  /* pc_inqdisplayspacesize3 */
X
X/*--------------------------------------------------------------------------
V*/
X
Xextern void pc_inqdynstruct(wtype, errind, strcon, post, unpost, delete,`20
X                            refmod)
XPint wtype, *errind, *strcon, *post, *unpost, *delete, *refmod;
X`7B
X  Pmodstruct dynamics;
X
X  pinqdynstruct(wtype, errind, &dynamics);
X  *strcon = dynamics.content;
X  *post = dynamics.post;
X  *unpost = dynamics.unpost;
X  *delete = dynamics.delete;
X  *refmod = dynamics.reference;
X`7D  /* pc_inqdynstruct */
X
X/*--------------------------------------------------------------------------
V*/
X
Xextern void pc_inqdynwsattr(wtype, errind, plbun, pmbun, txbun, inbun,
X    edbun, parep, colrep, vwrep, wktr, hlfltr, infltr, hlhsr)
XPint wtype, *errind, *plbun, *pmbun, *txbun, *inbun;
XPint *edbun, *parep, *colrep, *vwrep, *wktr, *hlfltr, *infltr, *hlhsr;
X`7B
X  Pmodws attr;
X
X  pinqdynwsattr(wtype, errind, &attr);
X  *plbun = attr.line;
X  *pmbun = attr.marker;
X  *txbun = attr.text;
X  *inbun = attr.interior;
X  *edbun = attr.edge;
X  *parep = attr.pattern;
X  *colrep = attr.colour;
X  *vwrep = attr.view;
X  *wktr = attr.wstran;
X  *hlfltr = attr.highlight;
X  *infltr = attr.invis;
X  /* *hlhsr = attr.?????? */
X`7D  /* pc_inqdynwsattr */
X
X/*--------------------------------------------------------------------------
V*/
X
Xextern void pc_inqedgefacil(wtype, num, errind, nedt, edt, nedw, nomedw,
X    redwmn, redwmx, npedi)
XPint wtype, *errind, *nedt, *edt, *nedw;
XPfloat *nomedw, *redwmn, *redwmx;
XPint *npedi;
X`7B
X  Pedgefac facil;
X
X  pinqedgefacil(wtype, 0, 0, errind, nedt, &facil);
X  facil.types.integers = (Pint *)calloc(*nedt, sizeof(Pint));
X  pinqedgefacil(wtype, *nedt, 0, errind, nedt, &facil);
X  *edt = facil.types.integers`5Bnum - 1`5D;
X  *nedw = facil.widths;
X  *nomedw = facil.nom;
X  *redwmn = facil.min;
X  *redwmx = facil.max;
X  *npedi = facil.predefined;
X  free(facil.types.integers);
X`7D  /* pc_inqedgefacil */
X
X/*--------------------------------------------------------------------------
V*/
X
Xextern void pc_inqedgerep(wkid, edi, type, errind, edflag, edtype,`20
X   ewidth, coli)
XPint wkid, edi, type;
XPint *errind, *edflag, *edtype;
XPfloat *ewidth;
XPint *coli;
X`7B
X  Pedgebundl rep;
X
X  pinqedgerep(wkid, edi, type, errind, &rep);
X  *edflag = rep.flag;
X  *edtype = rep.type;
X  *ewidth = rep.scale;
X  *coli = rep.colour;
X`7D  /* pc_inqedgerep */
X
X/*--------------------------------------------------------------------------
V*/
X
Xextern void pc_inqelemcontent(strid, elenum, iil, irl, isl, errind,
X  il, ia, rl, ra, sl, lstr, str)
XPint strid, elenum, iil, irl, isl, *errind, *il, *ia, *rl;
XPfloat *ra;
XPint *sl, *lstr;
XPchar *str;
X`7B
X  Pchar *databuf;
X  Pelsize elsize;
X  Pint bufsize;
X  Peldata eldata;
X  Peltype eltype;
X  Pint size, i;
X  Pchar *ptr;
X
X  pinqelemtypesize(strid, elenum, errind, &eltype, &elsize);
X  if (*errind != 0)
X    return;
X  else
X  `7B
X    switch (eltype)
X    `7B
X      case PEL_POLYLINE3:
X      case PEL_POLYMARKER3:
X      case PEL_FILL_AREA3:
X        bufsize = elsize.number * sizeof(Ppoint3);
X        databuf = (Pchar *)calloc(bufsize, sizeof(Pchar));
X        size = elsize.number;
X        pinqelemcontent(strid, elenum, bufsize, errind, databuf,`20
X                        &elsize, &eldata);
X        break;
X `20
X      case PEL_POLYLINE:
X      case PEL_POLYMARKER:
X      case PEL_FILL_AREA:
X        bufsize = elsize.number * sizeof(Ppoint);
X        databuf = (Pchar *)calloc(bufsize, sizeof(Pchar));
X        size = elsize.number;
X        pinqelemcontent(strid, elenum, bufsize, errind, databuf,`20
X                        &elsize, &eldata);
X        break;
X `20
X      case PEL_FILL_AREA_SET3:
X        bufsize = elsize.fas_size.total_pts * sizeof(Ppoint3);
X        bufsize += elsize.fas_size.num_bounds * sizeof(Pint);
X        databuf = (Pchar *)calloc(bufsize, sizeof(Pchar));
X        size = elsize.fas_size.num_bounds;
X        pinqelemcontent(strid, elenum, bufsize, errind, databuf,`20
X                        &elsize, &eldata);
X        break;
X `20
X      case PEL_FILL_AREA_SET:
X        bufsize = elsize.fas_size.total_pts * sizeof(Ppoint);
X        bufsize += elsize.fas_size.num_bounds * sizeof(Pint);
X        databuf = (Pchar *)calloc(bufsize, sizeof(Pchar));
X        size = elsize.fas_size.num_bounds;
X        pinqelemcontent(strid, elenum, bufsize, errind, databuf,`20
X                        &elsize, &eldata);
X        break;
X
X      case PEL_ADD_NAMES_TO_SET:
X      case PEL_REMOVE_NAMES_FROM_SET:
X        bufsize = elsize.number * sizeof(Pint);
X        databuf = (Pchar *)calloc(bufsize, sizeof(Pchar));
X        pinqelemcontent(strid, elenum, bufsize, errind, databuf,`20
X                        &elsize, &eldata);
X        break;
X `20
X      default:
X        bufsize = elsize.number;
X        databuf = (Pchar *)malloc(bufsize);
X        pinqelemcontent(strid, elenum, bufsize, errind, databuf,`20
X                        &elsize, &eldata);
X        break;
X    `7D
X  `7D
X  switch (eltype)
X  `7B
X    case PEL_NIL:
X      *il = 0;
X      *rl = 0;
X      *sl = 0;
X    break;
X
X    case PEL_POLYLINE3:
X    case PEL_POLYMARKER3:
X    case PEL_FILL_AREA3:
X      if ((iil >= 1) &&
X          (irl >= (3 * size)))
X      `7B        `20
X        ia`5B0`5D = size;
X        for (i = 0; i < size; i++)
X          ra`5Bi`5D = eldata.pts3`5Bi`5D.x;
X        for (i = 0; i < size; i++)
X          ra`5Bi + size`5D = eldata.pts3`5Bi`5D.y;
X        for (i = 0; i < size; i++)
X          ra`5Bi + size + size`5D = eldata.pts3`5Bi`5D.z;
X      `7D
X      *il = 1;
X      *rl = size * 3;
X      *sl = 0;
X    break;
X
X    case PEL_POLYLINE:
X    case PEL_POLYMARKER:
X    case PEL_FILL_AREA:
X      if ((iil >= 1) &&
X          (irl >= (2 * size)))
X      `7B        `20
X        ia`5B0`5D = size;
X        for (i = 0; i < size; i++)
X          ra`5Bi`5D = eldata.pts`5Bi`5D.x;
X        for (i = 0; i < size; i++)
X          ra`5Bi + size`5D = eldata.pts`5Bi`5D.y;
X      `7D
X      *il = 1;
X      *rl = size * 2;
X      *sl = 0;
X    break;
X
X    case PEL_TEXT3:
X      if ((irl >= 9) &&
X          (isl >= 1))
X      `7B        `20
X        ra`5B0`5D = eldata.text3.pt.x;
X        ra`5B1`5D = eldata.text3.pt.y;
X        ra`5B2`5D = eldata.text3.pt.z;
X        ra`5B3`5D = eldata.text3.dir`5B0`5D.x;
X        ra`5B4`5D = eldata.text3.dir`5B0`5D.y;
X        ra`5B5`5D = eldata.text3.dir`5B0`5D.z;
X        ra`5B6`5D = eldata.text3.dir`5B1`5D.x;
X        ra`5B7`5D = eldata.text3.dir`5B1`5D.y;
X        ra`5B8`5D = eldata.text3.dir`5B1`5D.z;
X        lstr`5B0`5D = strlen(eldata.text3.string);
X        strncpy(str, eldata.text3.string, lstr`5B0`5D);`20
X      `7D
X      *il = 0;
X      *rl = 9;
X      *sl = 1;
X    break;
X
X    case PEL_TEXT:
X      if ((irl >= 2) &&
X          (isl >= 1))
X      `7B        `20
X        ra`5B0`5D = eldata.text.pt.x;
X        ra`5B1`5D = eldata.text.pt.y;
X        lstr`5B0`5D = strlen(eldata.text.string);
X        strncpy(str, eldata.text.string, lstr`5B0`5D);`20
X      `7D
X      *il = 0;
X      *rl = 2;
X      *sl = 1;
X    break;
X
X    case PEL_ANNOTATION_TEXT_RELATIVE3:
X      if ((irl >= 6) &&
X          (isl >= 1))
X      `7B        `20
X        ra`5B0`5D = eldata.atext3.ref_pt.x;
X        ra`5B1`5D = eldata.atext3.ref_pt.y;
X        ra`5B2`5D = eldata.atext3.ref_pt.z;
X        ra`5B3`5D = eldata.atext3.anno.x;
X        ra`5B4`5D = eldata.atext3.anno.y;
X        ra`5B5`5D = eldata.atext3.anno.z;
X        lstr`5B0`5D = strlen(eldata.atext3.string);
X        strncpy(str, eldata.atext3.string, lstr`5B0`5D);`20
X      `7D
X      *il = 0;
X      *rl = 6;
X      *sl = 1;
X    break;
X
X    case PEL_ANNOTATION_TEXT_RELATIVE:
X      if ((irl >= 4) &&
X          (isl >= 1))
X      `7B        `20
X        ra`5B0`5D = eldata.atext.ref_pt.x;
X        ra`5B1`5D = eldata.atext.ref_pt.y;
X        ra`5B2`5D = eldata.atext.anno.x;
X        ra`5B3`5D = eldata.atext.anno.y;
X        lstr`5B0`5D = strlen(eldata.atext.string);
X        strncpy(str, eldata.atext.string, lstr`5B0`5D);`20
X      `7D
X      *il = 0;
X      *rl = 4;
X      *sl = 1;
X    break;
X
X    case PEL_FILL_AREA_SET3:
X      if ((iil >= size) &&
X          (irl >= (3 * eldata.fillarea_set3.bounds`5Bsize - 1`5D)))
X      `7B        `20
X        Pint numpts;
X
X        numpts = eldata.fillarea_set3.bounds`5Bsize - 1`5D;
X        for (i = 0; i < size; i++)
X          ia`5Bi`5D = eldata.fillarea_set3.bounds`5Bi`5D;
X        for (i = 0; i < numpts; i++)
X          ra`5Bi`5D = eldata.fillarea_set3.pts`5Bi`5D.x;
X        for (i = 0; i < numpts; i++)
X          ra`5Bi + numpts`5D = eldata.fillarea_set3.pts`5Bi`5D.y;
X        for (i = 0; i < numpts; i++)
X          ra`5Bi + numpts + numpts`5D = eldata.fillarea_set3.pts`5Bi`5D.z;
X      `7D
X      *il = size;
X      *rl = eldata.fillarea_set3.bounds`5Bsize - 1`5D * 3;
X      *sl = 0;
X    break;
X
X    case PEL_FILL_AREA_SET:
X      if ((iil >= size) &&
X          (irl >= (2 * eldata.fillarea_set.bounds`5Bsize - 1`5D)))
X      `7B        `20
X        Pint numpts;
X
X        numpts = eldata.fillarea_set.bounds`5Bsize - 1`5D;
X        for (i = 0; i < size; i++)
X          ia`5Bi`5D = eldata.fillarea_set.bounds`5Bi`5D;
X        for (i = 0; i < numpts; i++)
X          ra`5Bi`5D = eldata.fillarea_set.pts`5Bi`5D.x;
X        for (i = 0; i < numpts; i++)
X          ra`5Bi + numpts`5D = eldata.fillarea_set.pts`5Bi`5D.y;
X      `7D
X      *il = size;
X      *rl = eldata.fillarea_set.bounds`5Bsize - 1`5D * 2;
X      *sl = 0;
X    break;
X
X    case PEL_CELL_ARRAY3:
X      if ((iil >= 2 + (eldata.cell_array3.dim.x_dim *
X                   eldata.cell_array3.dim.y_dim)) &&
X          (irl >= 9))
X      `7B        `20
X        ia`5B0`5D = eldata.cell_array3.dim.x_dim;
X        ia`5B1`5D = eldata.cell_array3.dim.y_dim;
X        for (i = 0; i < (ia`5B0`5D * ia`5B1`5D); i++)
X          ia`5Bi + 2`5D = eldata.cell_array3.colours`5Bi`5D;
X        ra`5B0`5D = eldata.cell_array3.parallelogram`5B0`5D.x;
X        ra`5B1`5D = eldata.cell_array3.parallelogram`5B0`5D.y;
X        ra`5B2`5D = eldata.cell_array3.parallelogram`5B0`5D.z;
X        ra`5B3`5D = eldata.cell_array3.parallelogram`5B1`5D.x;
X        ra`5B4`5D = eldata.cell_array3.parallelogram`5B1`5D.y;
X        ra`5B5`5D = eldata.cell_array3.parallelogram`5B1`5D.z;
X        ra`5B6`5D = eldata.cell_array3.parallelogram`5B2`5D.x;
X        ra`5B7`5D = eldata.cell_array3.parallelogram`5B2`5D.y;
X        ra`5B8`5D = eldata.cell_array3.parallelogram`5B2`5D.z;
X      `7D
X      *il = 2 + (eldata.cell_array3.dim.x_dim *
X                 eldata.cell_array3.dim.y_dim);    `20
X      *rl = 9;
X      *sl = 0;
X    break;
X
X    case PEL_CELL_ARRAY:
X      if ((iil >= 2 + (eldata.cell_array.dim.x_dim *
X                   eldata.cell_array.dim.y_dim)) &&
X          (irl >= 4))
X      `7B        `20
X        ia`5B0`5D = eldata.cell_array.dim.x_dim;
X        ia`5B1`5D = eldata.cell_array.dim.y_dim;
X        for (i = 0; i < (ia`5B0`5D * ia`5B1`5D); i++)
X          ia`5Bi + 2`5D = eldata.cell_array.colours`5Bi`5D;
X        ra`5B0`5D = eldata.cell_array.rect.ll.x;
X        ra`5B1`5D = eldata.cell_array.rect.ll.y;
X        ra`5B2`5D = eldata.cell_array.rect.ur.x;
X        ra`5B3`5D = eldata.cell_array.rect.ur.y;
X      `7D
X      *il = 2 + (eldata.cell_array.dim.x_dim *
X                 eldata.cell_array.dim.y_dim);    `20
X      *rl = 4;
X      *sl = 0;
X    break;
X
X    case PEL_GDP3:
X      *il = 0;
X      *rl = 0;
X      *sl = 0;
X    break;
X
X    case PEL_GDP:
X      *il = 0;
X      *rl = 0;
X      *sl = 0;
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    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    case PEL_VIEW_INDEX:
X    case PEL_LABEL:      `20
X    case PEL_PICK_ID:
X    case PEL_EXECUTE_STRUCTURE:
X      if (iil >= 1)
X        ia`5B0`5D = eldata.idata;
X      *il = 1;
X      *rl = 0;
X      *sl = 0;
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_H:
X    case PEL_EDGEWIDTH_SCALE_FACTOR:
X      if (irl >= 1)
X        ra`5B0`5D = eldata.fdata;
X      *rl = 1;
X      *il = 0;
X      *sl = 0;
X    break;
X `20
+-+-+-+-+-+-+-+-  END  OF PART 146 +-+-+-+-+-+-+-+-