.\"
.\" $XConsortium: p132,v 5.3 94/04/17 20:55:57 hersh Exp $
.\"
.\" 
$XMCOPY
.\" Copyright (c) 1990, 1991 by Sun Microsystems, Inc. and the X Consortium.
.\" 
.\"                         All Rights Reserved
.\" 
.\" Permission to use, copy, modify, and distribute this software and its 
.\" documentation for any purpose and without fee is hereby granted, 
.\" provided that the above copyright notice appear in all copies and that
.\" both that copyright notice and this permission notice appear in 
.\" supporting documentation, and that the names of Sun Microsystems,
.\" and the X Consortium not be used in advertising or publicity 
.\" pertaining to distribution of the software without specific, written 
.\" prior permission.  
.\" 
.\" SUN MICROSYSTEMS DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, 
.\" INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
.\" EVENT SHALL SUN MICROSYSTEMS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
.\" CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
.\" USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
.\" OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
.\" PERFORMANCE OF THIS SOFTWARE.
.TH "INQUIRE ELEMENT CONTENT" 3P "15 August 1991"
.SH NAME
INQUIRE ELEMENT CONTENT \- inquire the contents of the specified element
.SH SYNOPSIS
.SS C Syntax
.ft B
.ta 1.25i 3i
.nf
void
pinq_elem_content ( struct_id, element, store, error_ind, data )
Pint	struct_id;	\fIstructure identifier\fP
Pint	element;	\fIelement number\fP
Pstore	store;	\fIhandle to Store object\fP
Pint	*error_ind;	\fI\s-2OUT\s+2 error indicator\fP
Pelem_data	**data;	\fI\s-2OUT\s+2 data record\fP
.fi
.ft R
.SS Required PHIGS Operating States
(PHOP, *, *, *)
.SH DESCRIPTION
.SS Purpose
\s-2INQUIRE ELEMENT CONTENT\s+2
determines the contents of the specified element in the specified 
structure.
.SS C Input Parameters
Applications using the \s-2C\s+2 binding must create a buffer to be used by this
function as memory space for storing data associated with the device state.
This buffer is passed as the \fIstore\fP argument.  
.LP
The store buffer is a data area managed by \s-2PHIGS\s+2. While the application 
is responsible for creating the inital buffer through a call to \s-2\CREATE STORE\s+2, 
\s-2PHIGS\s+2 manages this area such that there is sufficient memory for the 
specific inquiry. The data record within the store buffer is accessed 
by the pointer pointed to by \fIdata\fR.
.IP \fIstruct_id\fP
Identifier of the structure
containing the element for which to return the contents.
.IP \fIelement\fP
Position in the specified structure of the element
for which to return the contents.
.IP \fIstore\fP
The memory buffer \s-2PHIGS\s+2 is to use for storing the information
returned.  
This buffer must exist prior to calling this function (see
\s-2CREATE STORE (3P)\s+2).
.SS C Output Parameters
.IP \fIerror_ind\fP
A pointer to the location to store the error number of any error
detected by this function.
.IP \fIdata\fP
A pointer to a Pelem_data union, in which the contents of the element
will be returned, as appropriate for the element type.
Pelem_data is defined in phigs.h as follows:
.ta .5i +1i +1.25i +1.25i +1i
.nf
typedef union {
.sp .2
	Pint		int_data;	/* integer valued data */
	Pfloat		float_data;	/* float valued data */
	Ppoint_list3		point_list3;	/* list of 3d points */
	Ppoint_list		point_list;	/* list of 2d points */
        Ppoint_list_list3   point_list_list3;       /* list of 3d point lists */
	Ppoint_list_list    point_list_list;        /* list of 2d point lists */
	struct {
		Ppoint3	pos;	/* text pt */
		Pvec3   	dir[2];	/* direction vectors */
		char	*char_string;	/* text string */
	} text3;
	struct {
		Ppoint	pos;	/* text pt */
		char	*char_string;	/* text string */
	} text;
	struct {
		Ppoint3	ref_point;	/* reference pt */
		Pvec3	offset;	/* anno. pt/offset */
		char	*char_string;	/* text string */
	} anno_text_rel3;
	struct {
		Ppoint	ref_point;	/* reference pt */
		Pvec	offset;	/* anno. pt/offset */
		char	*char_string;	/* text string */
	} anno_text_rel;
	struct {
		Pparal	paral;	/* parallelogram */
		Ppat_rep        colr_array;     /* colour array */
	} cell_array3;
	struct {
		Prect	rect;	/* rectangle */
                Ppat_rep        colr_array;     /* colour array */
	} cell_array;
	struct {
		Pint	id;	/* GDP3 id */
		Ppoint_list3	point_list;	/* pts */
		Pgdp_data3	data;	/* data record */
	} gdp3;
	struct {
		Pint	id;	/* GDP id */
		Ppoint_list	point_list;	/* pts */
		Pgdp_data	data;	/* data record */
	} gdp;
	Ptext_prec		text_prec;	/* text precision */
	Pvec		        char_up_vec;	/* char up vector */
	Ptext_path		text_path;	/* text path */
	Ptext_align		text_align;	/* text alignment */
	Pint_style		int_style;	/* interior style */
	Pedge_flag		edge_flag;	/* edge flag */
	Ppoint		        pat_ref_point;	/* pat ref pt */
	Pfloat_size	        pat_size;	/* pattern size */
	struct {
		Ppoint3	ref_point;	/* pattern ref. pt */
		Pvec3	ref_vec[2];	/* vectors */
	} pat_ref_point_vecs;
	Pint_list		names;  	/* name sets */
	struct {
		Paspect	id;	/* attribute id */
		Pasf	source;	/* asf */
	} asf;
	struct {
		Pcompose_type	compose_type;	/* composition type */
		Pmatrix3	matrix;	/* matrix */
	} local_tran3;
	struct {
		Pcompose_type	compose_type;	/* composition type */
		Pmatrix	        matrix;	/* matrix */
	} local_tran;
	Pmatrix3		global_tran3;	/* global transform3 */
	Pmatrix		global_tran;	/* global transform */
	struct {
		Pint	 op;	/* operator */
		Phalf_space_list3	half_spaces;	/* half-space list */
	} model_clip3;
	struct {
		Pint	op;	/* operator */
		Phalf_space_list	half_spaces;	/* half-space list */
	} model_clip;
	Pclip_ind		clip_ind;	/* clipping indicator */
	Pdata		appl_data;	/* application data */
	struct {
		Pint	id;	/* GSE id */
		Pgse_data	data;	/* GSE data record */
	} gse;
	struct {
		Pint	order;
		Pfloat_list	knots;
		Prational	rationality;
		Ppoint_list34	cpts;
		Pfloat	min;
		Pfloat	max;
	} nurb_curve;		/* NURBS curve */
	struct {
		Pint	type;
		Pfloat	value;
	} curv_approx;		/* curve approximation criteria */
	struct {
		Pint	u_order;
		Pint	v_order;
		Prational	rationality;
		Pfloat_list	uknots;
		Pfloat_list	vknots;
		Ppoint_grid34	grid;
		Pint	num_trim_loops;
		Ptrimcurve_list	*trim_loops;
	} nurb_surf;		/* NURBS surface */
	struct {
		Pint	type;
		Pfloat	u_val;
		Pfloat	v_val;
	} surf_approx;		/* surface approximation criteria */
	struct {
		Pint	vflag;
		Pint	colr_model;
		Pint	npl;
		Pline_vdata_list3	*vdata;
	} plsd3;
	struct {
		Pint	fflag;
		Pint	eflag;
		Pint	vflag;
		Pint	colr_model;
		Pfacet_data3	fdata;
		Pint	nfa;
		Pedge_data_list	*edata;
		Pfacet_vdata_list3	*vdata;
	} fasd3;			/* fill area set with data */
	struct {
		Pint	fflag;
		Pint	vflag;
		Pint	colr_model;
		Pint	nv;
		Pfacet_data_arr3	fdata;
		Pfacet_vdata_arr3	vdata;
	} tsd3;			/* triangle strip with data */
	struct {
		Pint	fflag;
		Pint	vflag;
		Pint	colr_model;
		Pint_size	dim;
		Pfacet_data_arr3	fdata;
		Pfacet_vdata_arr3	vdata;
	} qmd3;			/* quad mesh */
	struct {
		Pint	fflag;
		Pint	eflag;
		Pint	vflag;
		Pint	colr_model;
		Pint	num_sets;
		Pfacet_data_arr3	fdata;
		Pedge_data_list_list	*edata;
		Pint_list_list	*vlist;
		Pfacet_vdata_list3	vdata;
	} sofas3;		/* set of fill area set */
	struct {
		Pparal	paral;	/* parallelogram */
		Ppat_rep_plus   colr_array;     /* colour array */
	} cell_array_plus;
	Pgcolr		colr;
	Prefl_props	props;	/*surface relectance properties */
	struct {
		Pint_list	activation;
		Pint_list	deactivation;
	} lss;
	Pcull_mode	cull_mode;	/* culling mode */
	Pdisting_mode	disting_mode;	/* distinguishing mode */
	struct {
		Pint	type;
		Ppara_surf_characs	data;
	} para_surf_charac;	/* parametric surface characteristics */
.sp .2
} Pelem_data;
.fi
.SS Execution
.LP
\s-2INQUIRE CURRENT ELEMENT CONTENT\s+2 is the second function called in a two function, or
step, process.  First \s-2INQUIRE CURRENT ELEMENT TYPE AND SIZE\s+2 must be called to
determine the type of element to return for the \s-2INQUIRE CURRENT ELEMENT
CONTENT\s+2 request.  Depending on the element type, the corresponding structure in the 
Pelem_data union is returned, as described below.
.LP
.IP "ADD NAMES TO SET (PEL_ADD_NAMES_TO_SET)"
A Pint_list structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +\w'Pint_list	'u +\w'name_set;	'u
	Pint_list	names	/* name sets */
where
typedef struct {
.sp .2
.ta .5i +\w'Pint	'u +\w'num_ints;	'u
	Pint	num_ints;	/* number of Pints in list */ 
	Pint	*ints;	/* list of integers */
.sp .2
} Pint_list;
.fi
.IP "ALL (PELEM_ALL)"
No data involved
.IP "ANNOTATION STYLE (PELEM_ANNO_STYLE)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "ANNOTATION TEXT ALIGNMENT (PELEM_ANNO_ALIGN)"
A Ptext_align structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Ptext_align	text_align;	/* text alignment */
where
.ta .5i +1i +1.25i
typedef struct {
.sp .2
	Phor_text_align	hor;	/* horizontal component */
	Pvert_text_align	vert;	/* vertical component */
.sp .2
} Ptext_align;
.fi
.IP "ANNOTATION TEXT CHARACTER HEIGHT (PELEM_ANNO_CHAR_HT)"
A Pfloat floating point data provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pfloat	float_data;	/* float valued data */
.fi
.LP
.nf
ANNOTATION TEXT CHARACTER UP VECTOR
(PELEM_ANNO_CHAR_UP_VEC)
.fi
.sp -\n(PDu
.IP
A Pvec structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pvec	char_up_vec;	/* char up vector */
where
typedef struct {
.sp .2
.ta .5i +1i +1.25i
	Pfloat	delta_x;	/* x magnitude */
	Pfloat	delta_y;	/* y magnitude */
.sp .2
} Pvec;
.fi
.IP "ANNOTATION TEXT PATH (PELEM_ANNO_PATH)"
A Ptext_path data structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Ptext_path	text_path;	/* text path */
where  
typedef enum {
.sp .2
	PPATH_RIGHT,
	PPATH_LEFT,
	PPATH_UP,
	PPATH_DOWN
.sp .2
} Ptext_path;
.fi
.IP "ANNOTATION TEXT RELATIVE (PELEM_ANNO_TEXT_REL)"
An anno_text_rel structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Ppoint	ref_point;	/* reference pt */
	Pvec	offset;	/* annotation offset */
	char	*char_string;	/* annotation text string */
.sp .2
} anno_text_rel;
.fi
.IP "ANNOTATION TEXT RELATIVE 3 (PELEM_ANNO_TEXT_REL3)"
An anno_text_rel3 structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Ppoint3	ref_point;	/* reference pt */
	Pvec3	offset;	/* annotation offset */
	char	*char_string;	/* annotation text string */
.sp .2
} anno_text_rel3;
.fi
.IP "APPLICATION DATA (PELEM_APPL_DATA)"
A Pdata structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pdata	appl_data;	/* application data */
where
typedef struct {
.sp .2
	size_t	size;	/* size of data */
	char	*data;	/* pointer to data */
.sp .2
} Pdata;
.fi
.IP "AREA PROPERTIES (PELEM_REFL_PROPS)"
A Prefl_props structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Prefl_props	properties;	/* area properties */
where
typedef struct {
.sp .2
.ta .5i +1i +1.25i
	Pfloat	ambient_coef;	/* ambient reflectance coefficient */
	Pfloat	diffuse_coef;	/* diffuse reflectance coefficient */
	Pfloat	specular_coef;	/* specular reflectance coefficient */
	Pgcolr	specular_colr;	/* specular colour */
	Pfloat	specular_exp;	/* specular exponent */
	Pfloat	transpar_coef;	/* transparency coefficient */
.sp .2
} Prefl_props;
.fi
.IP "BACK AREA PROPERTIES (PELEM_BACK_REFL_PROPS)"
A Prefl_props structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Prefl_props	properties;	/* area properties */
where
typedef struct {
.sp .2
.ta .5i +1i +1.25i
	Pfloat	ambient_coef;	/* ambient reflectance coefficient */
	Pfloat	diffuse_coef;	/* diffuse reflectance coefficient */
	Pfloat	specular_coef;	/* specular reflectance coefficient */
	Pgcolr	specular_colr;	/* specular colour */
	Pfloat	specular_exp;	/* specular exponent */
	Pfloat	transpar_coef;	/* transparency coefficient */
.sp .2
} Prefl_props;
.fi
.IP "BACK INTERIOR COLOUR (PELEM_BACK_INT_COLR)"
A Pgcolr structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pgcolr	colr;	/* extended colour model */
where
.ta .5i +\w'union  'u +\w'struct  'u +\w'Pfloat	'u +\w'type;	'u +\w'x;    'u
typedef struct {
.sp .2
	Pint	type;	/* indirect, RGB, CIE, HSV, HLS */
	union {
		Pint	ind;	/* index in workstation colour bundle table */
		struct {
			Pfloat	x;	/* red, hue, etc */
			Pfloat	y;	/* green, saturation, lightness, etc */
			Pfloat	z;	/* blue, value, saturation, etc */
.sp .2
		} general;
	} val;
} Pgcolr;
.fi
.IP "BACK INTERIOR REFLECTANCE EQUATION (PELEM_BACK_INT_REFL_EQN)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
The predefined reflectance equation values are:
.sp .2
.ta .5i +\w'PREFL_AMB_DIFF_SPEC	'u
1	PREFL_NONE	\fINo Reflectance Calculation Performed\fP
2	PREFL_AMBIENT	\fIUse Ambient Term\fP
3	PREFL_AMB_DIFF	\fIUse Ambient and Diffuse Terms\fP
4	PREFL_AMB_DIFF_SPEC	\fIUse Ambient, Diffuse, and Specular Terms\fP
.sp .2
.fi
.IP "BACK INTERIOR SHADING METHOD (PELEM_BACK_INT_SHAD_METH)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
The predefined shading method values are:
.sp .2
.ta .5i +\w'PSD_DOT_PRODUCT	'u
1	PSD_NONE	\fINo Shading\fP
2	PSD_COLOUR	\fIColour Interpolation Shading\fP
3	PSD_DOT_PRODUCT	\fIDot Product Interpolation Shading\fP
4	PSD_NORMAL	\fINormal Interpolation Shading\fP
.sp .2
.fi
.IP "BACK INTERIOR STYLE (PELEM_BACK_INT_STYLE)"
An Pint_style structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint_style	int_style;	/* back interior style */
where
typedef enum {
.sp .2
.ta .5i
	PSTYLE_HOLLOW,
	PSTYLE_SOLID,
	PSTYLE_PAT,
	PSTYLE_HATCH,
	PSTYLE_EMPTY
.sp .2
} Pint_style;
.fi
.IP "BACK INTERIOR STYLE INDEX (PELEM_BACK_INT_STYLE_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "CELL ARRAY (PELEM_CELL_ARRAY)"
A cell_array structure defined in Pelem_data as:
.\" ca
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Prect	rect;	/* rectangle */
	Pint_size	dim;	/* dimension */
	Pint	*colr;	/* colour array */
.sp .2
} cell_array;
.fi
.IP "CELL ARRAY 3 (PELEM_CELL_ARRAY3)"
A cell_array3 structure defined in Pelem_data as:
.\" ca3
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pparal	paral;	/* parallelogram */
	Pint_size	dim;	/* dimension */
	Pint	*colr;	/* colour array */
.sp .2
} cell_array3;
.fi
.IP "CHARACTER EXPANSION FACTOR (PELEM_CHAR_EXPAN)"
A floating point provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pfloat	float_data;	/* float valued data */
.fi
.IP "CHARACTER HEIGHT (PELEM_CHAR_HT)"
A floating point provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pfloat	float_data;	/* float valued data */
.fi
.IP "CHARACTER SPACING (PELEM_CHAR_SPACE)"
A float_data floating point data provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pfloat	float_data;	/* float valued data */
.fi
.IP "CHARACTER UP VECTOR (PELEM_CHAR_UP_VEC)"
A Pvec structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pvec	char_up_vec;	/* char up vector */
where
typedef struct {
.sp .2
.ta .5i +1i +1.25i
	Pfloat	delta_x;	/* x magnitude */
	Pfloat	delta_y;	/* y magnitude */
.sp .2
} Pvec;
.fi
.IP "COLOUR MAPPING INDEX (PEX_COLR_MAPPING_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "CURVE APPROXIMATION CRITERIA (PELEM_CURVE_APPROX_CRIT)"
A curv_approx structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pint	type;	/* approximation type */
	Pfloat	value;	/* approximation value */
.sp .2
} curv_approx;
.fi
.IP "DEPTH CUE INDEX (PELEM_DCUE_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi 
.IP "EDGE COLOUR (PELEM_EDGE_COLR)"
A Pgcolr structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pgcolr	colr;	/* extended colour model */
where
.ta .5i +\w'union  'u +\w'struct  'u +\w'Pfloat	'u +\w'type;	'u +\w'x;    'u
typedef struct {
.sp .2
	Pint	type;	/* indirect, RGB, CIE, HSV, HLS */
	union {
		Pint	ind;	/* index in workstation colour bundle table */
		struct {
			Pfloat	x;	/* red, hue, etc */
			Pfloat	y;	/* green, saturation, lightness, etc */
			Pfloat	z;	/* blue, value, saturation, etc */
.sp .2
		} general;
	} val;
} Pgcolr;
.fi
.IP "EDGE COLOUR INDEX (PELEM_EDGE_COLR_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi 
.IP "EDGE FLAG (PELEM_EDGE_FLAG)"
A Pedge_flag data structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pedge_flag	edge_flag;	/* edge flag */
where
typedef enum {
.sp .2
	PEDGE_OFF,
	PEDGE_ON
.sp .2
} Pedge_flag;
.fi
.IP "EDGE INDEX (PELEM_EDGE_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "EDGETYPE (PELEM_EDGETYPE)"
An integer provided in Pelem_data as: 
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
The predefined line type values are:
.sp .2
.ta .5i
1	PLINE_SOLID
2	PLINE_DASH
3	PLINE_DOT
4	PLINE_DOT_DASH
.sp .2
.fi
.IP "EDGEWIDTH SCALE FACTOR (PELEM_EDGEWIDTH)"
A floating point provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pfloat	float_data;	/* float valued data */
.fi
.IP "EXECUTE STRUCTURE (PELEM_EXEC_STRUCT)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "CELL ARRAY 3 PLUS (PELEM_CELL_ARRAY3_PLUS)"
An cell_array_plus structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
	Pparal	paral;	/* parallelogram */
	Pint_size	dim;	/* dimension */
	Pint	colr_model;	/* colour model */
	Pcoval	*colr;	/* colour array */
} cell_array_plus;
.fi
.IP "FACE CULLING MODE (PELEM_FACE_CULL_MODE)"
An Pcull_mode data structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pcull_mode	cull_mode;	/* culling mode */
where
typedef enum {
.sp .2
	PCULL_NONE,
	PCULL_BACKFACE,
	PCULL_FRONTFACE
.sp .2
} Pcull_mode;
.fi
.IP "FACE DISTINGUISHING MODE (PELEM_FACE_DISTING_MODE)"
An Pdisting_mode data structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pdisting_mode	disting_mode;	/* distinguishing mode */
where
typedef enum {
.sp .2
	PDISTING_NO,
	PDISTING_YES
.sp .2
} Pdisting_mode;
.fi
.IP "FILL AREA (PELEM_FILL_AREA)"
A Ppoint_list structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Ppoint_list	point_list;	/* list of 2d points */
where
typedef struct {
.sp .2
.ta .5i +1i +1.25i
	Pint	num_points;	/* number of Ppoints in the list */
	Ppoint	*points;	/* list of points */
.sp .2
} Ppoint_list;
.fi
.IP "FILL AREA SET (PELEM_FILL_AREA_SET)"
A fill_area_set structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pint	num_point_lists;	/* number of sets */
	Ppoint_list	*point_lists;	/* list of sets */
.sp .2
} fill_area_set;
.fi
.IP "FILL AREA SET 3 (PELEM_FILL_AREA_SET3)"
A fill_area_set3 structure defined in Pelem_data as:
.\" fill_set3
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pint	num_point_lists;	/* number of sets */
	Ppoint_list3	*point_lists;	/* list of sets */
.sp .2
} fill_area_set3;
.fi
.IP "FILL AREA SET 3 WITH DATA (PELEM_FILL_AREA_SET3_DATA)"
A fasd3 structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1.5i +1.25i
struct {
.sp .2
	Pint	fflag;	/* data specified per facet */
	Pint	eflag;	/* edge visibility status */
	Pint	vflag;	/* data per vertex flag */
	Pint	colr_model;	/* colour type */
	Pfacet_data3	fdata;	/* facet data */
	Pint	nfa;	/* number of fill areas in the set */
	Pedge_data_list	*edata;	/* edge data */
	Pfacet_vdata_arr3	*vdata;	/* vertex data */
.sp .2
} fasd3;
.fi
.IP "FILL AREA 3 (PELEM_FILL_AREA3)"
A Ppoint_list3 structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Ppoint_list3	point_list3;	/* list of 3d points */
where
typedef struct {
.sp .2
.ta .5i +1i +1.25i
	Pint	num_points;	/* number of Ppoint3s in the list*/
	Ppoint3	*points;	/* list of points */
.sp .2
} Ppoint_list3;
.fi
.ig xx
.IP "FILL AREA 3 WITH DATA (PELEM_FILL_AREA3_DATA)"
A fad3 structure defined in Pelem_data as:
.\" fad3
.sp .4
.nf
.ta .5i +1.5i +1.25i
struct {
.sp .2
	Pint	fflag;	/* data per facet flag */
	Pint	vflag;	/* data per vertex flag */
	Pint	colr_model;	/* colour type */
	Pfacetdata3	fdata;	/* per facet data */
	Pint	nv;	/* number of vertex */
	Pfacetvdataarr3	vdata;	/* fill area vertex data */
.sp .2
} fad3;
.fi
.xx
.IP "GDP (PELEM_GDP)"
A gdp structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pint	id;	/* GDP id */
	Ppoint_list	point_list;	/* pts */
	Pgdp_data	data;	/* data record */
.sp .2
} gdp;
.fi
.IP "GDP 3 (PELEM_GDP3)"
A gdp3 structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pint	id;	/* GDP3 id */
	Ppoint_list3	point_list;	/* pts */
	Pgdp_data3	data;	/* data record */
.sp .2
} gdp3;
.fi
.IP "GLOBAL MODELLING TRANSFORMATION (PELEM_GLOBAL_MODEL_TRAN)"
A Pmatrix structure provided in Pelem_data as: 
.sp .4 
.nf 
.ta .5i +1i +1.25i
	Pmatrix	global_tran;	/* global transform */ 
where
typedef	Pfloat Pmatrix[3][3];
.fi
.IP "GLOBAL MODELLING TRANSFORMATION 3 (PELEM_GLOBAL_MODEL_TRAN3)"
A Pmatrix3 structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pmatrix3	global_tran3;	/* global transform3 */
where
  typedef Pfloat Pmatrix3[4][4]; 
.fi
.IP "GSE (PELEM_GSE)"
A gse structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pint	id;	/* GSE id */
	Pgse_data	data;	/* GSE data record */
.sp .2
} gse;
.fi
.IP "HLHSR IDENTIFIER (PELEM_HLHSR_ID)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "INDIVIDUAL ASF (PELEM_INDIV_ASF)"
An asf structure defined in Pelem_data as:
.\" asf
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Paspect	id;	/* attribute id */
	Pasf	source;	/* asf */
.sp .2
} asf;
.sp .4
where
.sp .4
typedef enum {
    PASPECT_LINETYPE,
    PASPECT_LINEWIDTH,
    PASPECT_LINE_COLR_IND,
    PASPECT_MARKER_TYPE,
    PASPECT_MARKER_SIZE,
    PASPECT_MARKER_COLR_IND,
    PASPECT_TEXT_FONT,
    PASPECT_TEXT_PREC,
    PASPECT_CHAR_EXPAN,
    PASPECT_CHAR_SPACE,
    PASPECT_TEXT_COLR_IND,
    PASPECT_INT_STYLE,
    PASPECT_INT_STYLE_IND,
    PASPECT_INT_COLR_IND,
    PASPECT_EDGE_FLAG,
    PASPECT_EDGETYPE,
    PASPECT_EDGEWIDTH,
    PASPECT_EDGE_COLR_IND,
    PASPECT_CURVE_APPROX_CRIT,
    PASPECT_SURF_APPROX_CRIT,
    PASPECT_LINE_SHAD_METH,
    PASPECT_REFL_PROPS,
    PASPECT_INT_REFL_EQN,
    PASPECT_INT_SHAD_METH,
    PASPECT_BACK_INT_STYLE,
    PASPECT_BACK_INT_STYLE_IND,
    PASPECT_BACK_INT_COLR,
    PASPECT_BACK_REFL_PROPS,
    PASPECT_BACK_INT_REFL_EQN,
    PASPECT_BACK_INT_SHAD_METH
} Paspect;
.sp .4
and
.sp .4
typedef enum {
    PASF_BUNDLED,
    PASF_INDIV
} Pasf;
.fi
.IP "INTERIOR COLOUR (PELEM_INT_COLR)"
A Pgcolr structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pgcolr	colur;	/* extended colour model */
where
.ta .5i +\w'union  'u +\w'struct  'u +\w'Pfloat	'u +\w'type;	'u +\w'x;    'u
typedef struct {
.sp .2
	Pint	type;	/* indirect, RGB, CIE, HSV, HLS */
	union {
		Pint	ind;	/* index in workstation colour bundle table */
		struct {
			Pfloat	x;	/* red, hue, etc */
			Pfloat	y;	/* green, saturation, lightness, etc */
			Pfloat	z;	/* blue, value, saturation, etc */
.sp .2
		} general;
	} val;
} Pgcolr;
.fi
.IP "INTERIOR COLOUR INDEX (PELEM_INT_COLR_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "INTERIOR INDEX (PELEM_INT_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "INTERIOR REFLECTANCE EQUATION (PELEM_INT_REFL_EQN)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
The predefined reflectance equation values are:
.sp .2
.ta .5i +\w'PREFL_AMB_DIFF_SPEC	'u
1	PREFL_NONE	\fINo Reflectance Calculation Performed\fP
2	PREFL_AMBIENT	\fIUse Ambient Term\fP
3	PREFL_AMB_DIFF	\fIUse Ambient and Diffuse Terms\fP
4	PREFL_AMB_DIFF_SPEC	\fIUse Ambient, Diffuse, and Specular Terms\fP
.sp .2
.fi
.IP "INTERIOR SHADING METHOD (PELEM_INT_SHAD_METH)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
The predefined shading method values are:
.sp .2
.ta .5i +\w'PSD_DOT_PRODUCT	'u
1	PSD_NONE	\fINo Shading\fP
2	PSD_COLOUR	\fIColour Interpolation Shading\fP
3	PSD_DOT_PRODUCT	\fIDot Product Interpolation Shading\fP
4	PSD_NORMAL	\fINormal Interpolation Shading\fP
.sp .2
.fi
.IP "INTERIOR STYLE (PELEM_INT_STYLE)"
An Pint_style data structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint_style	int_style;	/* interior style */
where
typedef enum {
.sp .2
.ta .5i
	PSTYLE_HOLLOW,
	PSTYLE_SOLID,
	PSTYLE_PAT,
	PSTYLE_HATCH,
	PSTYLE_EMPTY,
.sp .2
} Pint_style;
.fi
.IP "INTERIOR STYLE INDEX (PELEM_INT_STYLE_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "LABEL (PELEM_LABEL)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "LIGHT SOURCE STATE (PELEM_LIGHT_SRC_STATE)"
An lss structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pint_list	activation;	/* activation list */
	Pint_list	deactivation;	/* deactivation list */
.sp .2
} lss;
.fi
.IP "LINETYPE (PELEM_LINETYPE)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.sp .2
The predefined line type values are:
.sp .2
.ta .5i
1	PLINE_SOLID
2	PLINE_DASH
3	PLINE_DOT
4	PLINE_DOT_DASH
.sp .2
.fi
.IP "LINEWIDTH SCALE FACTOR (PELEM_LINEWIDTH)"
A floating point provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pfloat	float_data;	/* float valued data */
.fi
.IP "LOCAL MODELLING TRANSFORMATION (PELEM_LOCAL_MODEL_TRAN)"
A local_tran structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pcompose_type	comp;	/* composition type */
	Pmatrix	tran;	/* matrix */
.sp .2
} local_tran;
.sp .4
where
.sp .4
typedef enum {
	PTYPE_PRECONCAT,
	PTYPE_POSTCONCAT,
	PTYPE_REPLACE
} Pcompose_type;
.fi
.IP "LOCAL MODELLING TRANSFORMATION 3 (PELEM_LOCAL_MODEL_TRAN3)"
A local_tran3 structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pcompose_type	comp;	/* composition type */
	Pmatrix3	tran;	/* matrix */
.sp .2
} local_tran3;
.sp .4
where
.sp .4
typedef enum {
    PTYPE_PRECONCAT,
    PTYPE_POSTCONCAT,
    PTYPE_REPLACE
} Pcompose_type;
.fi
.IP "MARKER COLOUR INDEX (PELEM_MARKER_COLR_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "MARKER SIZE SCALE FACTOR (PELEM_MARKER_SIZE)"
A floating point provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pfloat	float_data;	/* float valued data */
.fi
.IP "MARKER TYPE (PELEM_MARKER_TYPE)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
The predefined marker type values are:
.sp .2
.ta .5i
1	PMARKER_DOT
2	PMARKER_PLUS
3	PMARKER_ASTERISK
4	PMARKER_CIRCLE
5	PMARKER_CROSS
.sp .2
.fi
.IP "MODELLING CLIPPING INDICATOR (PELEM_MODEL_CLIP_IND)"
A Pclip_ind structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pclip_ind	clip_ind;	/* clipping indicator */
where
typedef enum {
.sp .2
	PIND_NO_CLIP,
	PIND_CLIP
.sp .2
} Pclip_ind;
.fi
.IP "MODELLING CLIPPING VOLUME (PELEM_MODEL_CLIP_VOL)"
A model_clip structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1.5i +1.25i
struct {
.sp .2
	Pint	op;	/* operator */
	Phalf_space_list	half_spaces;	/* half-space list */
.sp .2
} model_clip;
.fi
.IP "MODELLING CLIPPING VOLUME 3 (PELEM_MODEL_CLIP_VOL3)"
A model_clip3 structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1.5i +1.25i
struct {
.sp .2
	Pint	op;	/* operator */
	Phalf_space_list3	half_spaces;	/* half-space list */
.sp .2
} model_clip3;
.fi
.IP "NIL (PELEM_NIL)"
No data involved
.IP "NON-UNIFORM B-SPLINE CURVE (PELEM_NUNI_BSP_CURVE)"
A nurb_curve structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pint	order;	/* curve order */
	Pfloat_list	knots;	/* knots */
	Prational	rationality;	/* rationality specifier */
	Ppoint_list34	cpts;	/* control points */
	Pfloat	min;	/* curve min */
	Pfloat	max;	/* curve max */
.sp .2
} nurb_curve;
.fi
.IP "NON-UNIFORM B-SPLINE SURFACE (PELEM_NUNI_BSP_SURF)"
A nurb_surf structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pint	u_order;	/* order of u surface */
	Pint	v_order;	/* order of v surface */
	Prational	rationality;	/* rationality specifier */
	Pfloat_list	uknots;	/* knots in u dimension */
	Pfloat_list	vknots;	/* knots in v dimension */
	Ppoint_grid34	grid;	/* grid of control points */
	Pint	num_trim_loops;	/* number of trim curve loops */
	Ptrimcurve_list	*trim_loops;	/* trim curve loops */
.sp .2
} nurb_surf;
.fi
.IP "NUM_EL_TYPES (PELEM_NUM_EL_TYPES)"
No data involved
.IP "PARAMETRIC SURFACE CHARACTERISTICS (PEL_PARA_SURF_CHARACTERISITICS)"
A para_surf_characs structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +.5i +1.25i
	struct {
		Pint	type;
		Ppara_surf_characs	data;
	} para_surf_characs;	/* parametric surface characteristics */
.fi
where
.sp .4
.nf
.ta .5i +.5i +1.25i
typedef union {
	struct {
		Pint	unused;
	} psc_1;
	struct {
		Pint	unused;
	} psc_2;
	struct {
		Pcurve_placement	placement;
		Pint	u_count;
		Pint	v_count;
	} psc_3;
	struct {
		Ppoint3	origin;
		Pvec3	direction;
		Pfloat_list	params;
	} psc_4;
	struct {
		Ppoint3	origin;
		Pvec3	direction;
		Pfloat_list	params;
	} psc_5;
} Ppara_surf_characs;
.fi
.IP "PATTERN REFERENCE POINT (PELEM_PAT_REF_POINT)"
A Ppoint structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Ppoint	point;	/* pattern reference pt */
where
typedef struct {
.sp .2
.ta .5i +1i +1.25i
	Pfloat	x;	/* x coordinate */
	Pfloat	y;	/* y coordinate */
.sp .2
} Ppoint;
.fi
.IP "PATTERN REFERENCE POINT AND VECTORS (PELEM_PAT_REF_POINT_VECS)"
A pat_ref_point_vecs structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Ppoint3	ref_point;	/* pattern ref. pt */
	Pvec3	ref_vec[2];	/* vectors */
.sp .2
} pat_ref_point_vecs;
.fi
.IP "PATTERN SIZE (PELEM_PAT_SIZE)"
A Ppoint structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Ppoint	point;	/* pattern size */ 
where 
typedef struct { 
.sp .2
.ta .5i +1i +1.25i
	Pfloat	x;	/* x coordinate */ 
	Pfloat	y;	/* y coordinate */ 
.sp .2
} Ppoint; 
.fi
.IP "PICK ID (PELEM_PICK_ID)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "POLYLINE (PELEM_POLYLINE)"
A Ppoint_list structure provided in Pelem_data as:
.\" Ppoint_list
.sp .4
.nf
.ta .5i +1i +1.25i
	Ppoint_list	point_list;	/* list of 2d points */
where
typedef struct {
.sp .2
.ta .5i +1i +1.25i
	Pint	num_points;	/* number of Ppoints */
	Ppoint	*points;	/* array of points */
.sp .2
} Ppoint_list;
.fi
.IP "POLYLINE COLOUR (PELEM_LINE_COLR)"
A Pgcolr structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pgcolr	colr;	/* extended colour model */
where
.ta .5i +\w'union  'u +\w'struct  'u +\w'Pfloat	'u +\w'type;	'u +\w'x;    'u
typedef struct {
.sp .2
	Pint	type;	/* indirect, RGB, CIE, HSV, HLS */
	union {
		Pint	ind;	/* index in workstation colour bundle table */
		struct {
			Pfloat	x;	/* red, hue, etc */
			Pfloat	y;	/* green, saturation, lightness, etc */
			Pfloat	z;	/* blue, value, saturation, etc */
.sp .2
		} general;
	} val;
} Pgcolr;
.fi
.IP "POLYLINE COLOUR INDEX (PELEM_LINE_COLR_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "POLYLINE INDEX (PELEM_LINE_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "POLYLINE SET 3 WITH DATA (PELEM_POLYLINE_SET3_DATA)"
A plsd3 structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1.5i +1.25i
struct {
.sp .2
	Pint	vflag;	/* data per vertex flag */
	Pint	colr_model;	/* colour type */
	Pint	npl;	/* number of polylines in set */
	Pline_vdata_list3	*vdata;	/* per line vertex data list */
.sp .2
} plsd3;
.fi
.IP "POLYLINE SHADING METHOD (PELEM_LINE_SHAD_METH)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
The predefined shading method values are:
.sp .2
.ta .5i +\w'PSD_COLOUR	'u
1	PSD_NONE	\fINo Shading\fP
2	PSD_COLOUR	\fIColour Interpolation Shading\fP
.sp .2
.fi
.IP "POLYLINE 3 (PELEM_POLYLINE3)"
A Ppoint_list3 structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Ppoint_list3	pts3;	/* list of 3d points */
where
typedef struct {
.sp .2
.ta .5i +1i +1.25i
	Pint	num_points;	/* number of Ppoint3s */
	Ppoint3	*points;	/* array of points */
.sp .2
} Ppoint_list3;
.fi
.IP "POLYMARKER (PELEM_POLYMARKER)"
A Ppoint_list structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Ppoint_list	pts;	/* list of 2d points */
where
typedef struct {
.sp .2
.ta .5i +1i +1.25i
	Pint	num_points;	/* number of Ppoints */
	Ppoint	*points;	/* array of points */
.sp .2
} Ppoint_list;
.fi
.IP "POLYMARKER COLOUR (PELEM_MARKER_COLR)"
A Pgcolr structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pgcolr	colr;	/* extended colour model */
where
.ta .5i +\w'union  'u +\w'struct  'u +\w'Pfloat	'u +\w'type;	'u +\w'x;    'u
typedef struct {
.sp .2
	Pint	type;	/* indirect, RGB, CIE, HSV, HLS */
	union {
		Pint	ind;	/* index in workstation colour bundle table */
		struct {
			Pfloat	x;	/* red, hue, etc */
			Pfloat	y;	/* green, saturation, lightness, etc */
			Pfloat	z;	/* blue, value, saturation, etc */
.sp .2
		} general;
	} val;
} Pgcolr;
.fi
.IP "POLYMARKER INDEX (PELEM_MARKER_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "POLYMARKER 3 (PELEM_POLYMARKER3)"
A Ppoint_list3 structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Ppoint_list3	point_list3;	/* list of 3d points */
where
typedef struct {
.sp .2
.ta .5i +1i +1.25i
	Pint	num_points;	/* number of Ppoint3s */
	Ppoint3	*points;	/* array of points */
.sp .2
} Ppoint_list3;
.fi
.IP "QUADRILATERAL MESH 3 WITH DATA (PELEM_QUAD_MESH3_DATA)"
A qmd3 structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1.5i +1.25i
struct {
.sp .2
	Pint	fflag;	/* data per facet flag */
	Pint	vflag;	/* data per vertex flag */
	Pint	colr_model;	/* colour type */
	Pint_size	dim;	/* dimension of cells */
	Pfacet_data_arr3	fdata;	/* facet data */
	Pfacet_vdata_arr3	vdata;	/* vertex data */
.sp .2
} qmd3;
.fi
.IP "REMOVE NAMES FROM SET (PELEM_REMOVE_NAMES_SET)"
A Pint_list structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint_list	names	/* name sets */
where
typedef struct {
.sp .2
.ta .5i +1i +1.25i
	Pint	num_ints;	/* number of names in the set */
	Pint	*ints;	/* name set */
.sp .2
} Pint_list
.fi
.IP "RENDERING COLOUR MODEL (PELEM_RENDERING_COLR_MODEL)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "RESTORE MODELLING CLIPPING VOLUME (PELEM_RESTORE_MODEL_CLIP_VOL)"
No data involved
.IP "SET OF FILL AREA SET 3 WITH DATA (PELEM_SET_OF_FILL_AREA_SET3_DATA)"
A sofas3 structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1.5i +1.25i
struct {
	Pint	fflag;
	Pint	eflag;
	Pint	vflag;
	Pint	colr_model;
	Pint	num_sets;
	Pfacet_data_arr3	fdata;
	Pedge_data_list_list	*edata;
	Pint_list_list	*vlist;
	Pfacet_vdata_list3	vdata;
} sofas3;
.sp .4
.fi
.IP "SURFACE APPROXIMATION CRITERIA (PELEM_SURF_APPROX_CRIT)"
A surf_approx structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pint	type;	/* approximation type */
	Pfloat	u_val;	/* u approximation value */
	Pfloat	v_val;	/* v approximation value */
.sp .2
} surf_approx;
.fi
.IP "TEXT (PELEM_TEXT)"
A text structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Ppoint	pos;	/* text pt */
	char	*char_string;	/* text string */
.sp .2
} text;
.fi
.IP "TEXT ALIGNMENT (PELEM_TEXT_ALIGN)"
A Ptext_align structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Ptext_align	text_align;	/* text alignment */
where
typedef struct {
.sp .2
.ta .5i +1i +1.25i
	Phor_text_align	hor;	/* horizontal component */
	Pvert_text_align	vert;	/* vertical component */
.sp .2
} Ptext_align;
.fi
.IP "TEXT COLOUR (PELEM_TEXT_COLR)"
A Pgcolr structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pgcolr	colr;	/* extended colour model */
where
.ta .5i +\w'union  'u +\w'struct  'u +\w'Pfloat	'u +\w'type;	'u +\w'x;    'u
typedef struct {
.sp .2
	Pint	type;	/* indirect, RGB, CIE, HSV, HLS */
	union {
		Pint	ind;	/* index in workstation colour bundle table */
		struct {
			Pfloat	x;	/* red, hue, etc */
			Pfloat	y;	/* green, saturation, lightness, etc */
			Pfloat	z;	/* blue, value, saturation, etc */
.sp .2
		} general;
	} val;
} Pgcolr;
.fi
.IP "TEXT COLOUR INDEX (PELEM_TEXT_COLR_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "TEXT FONT (PELEM_TEXT_FONT)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
The predefined text font values are:
.sp .2
.ta .5i
  1	PFONT_MONO
.ig xx
\(em2	PFONT_SIMPLEX
\(em3	PFONT_DUPLEX
\(em4	PFONT_COMPLEX
\(em5	PFONT_TRIPLEX
\(em6	PFONT_ITALIC_COMPLEX
\(em7	PFONT_ITALIC_TRIPLEX
\(em8	PFONT_GREEK_SIMPLEX
\(em9	PFONT_GREEK_COMPLEX
\(em10	PFONT_SCRIPT_SIMPLEX
\(em11	PFONT_SCRIPT_COMPLEX
\(em12	PFONT_CARTOGRAPHIC
\(em13	PFONT_SYMBOL
.xx
.sp .2
.fi
.IP "TEXT INDEX (PELEM_TEXT_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.IP "TEXT PATH (PELEM_TEXT_PATH)"
A Ptext_path data structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Ptext_path	text_path;	/* text path */
where
typedef enum {
.sp .2
.ta .5i
	PPATH_RIGHT,
	PPATH_LEFT,
	PPATH_UP,
	PPATH_DOWN
.sp .2
} Ptext_path;
.fi
.IP "TEXT PRECISION (PELEM_TEXT_PREC)"
A Ptext_prec data structure provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Ptext_prec	text_prec;	/* text precision */
where
typedef enum {
.sp .2
.ta .5i
	PPREC_STRING,
	PPREC_CHAR,
	PPREC_STROKE
.sp .2
} Ptext_prec;
.fi
.IP "TEXT 3 (PELEM_TEXT3)"
A text3 structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Ppoint3	pos;	/* text pt */
	Pvec3	dir[2];	/* direction vectors */
	char	*char_string;	/* text string */
.sp .2
} text3;
.fi
.IP "TRIANGLE STRIP 3 WITH DATA (PELEM_TRI_STRIP3_DATA)"
A tsd3 structure defined in Pelem_data as:
.\" tsd3
.sp .4
.nf
.ta .5i +1.5i +1.25i
struct {
.sp .2
	Pint	fflag;	/* data per facet flag */
	Pint	vflag;	/* data per vertex flag */
	Pint	colr_model;	/* colour type */
	Pint	nv;	/* number of vertices */
	Pfacet_data_arr3	fdata;	/* facet data */
	Pfacet_vdata_arr3	vdata;	/* vertex data */
.sp .2
} tsd3;
.fi
.ig xx
.IP "TRIMMING CURVE APPROXIMATION CRITERIA (PEL_TRIM_CURVE_APPROXIMATION_CRITERIA)"
A curv_approx structure defined in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
struct {
.sp .2
	Pint	type;	/* approximation type */
	Pfloat	value;	/* approximation value */
.sp .2
} curv_approx;
.fi
.xx
.IP "VIEW INDEX (PELEM_VIEW_IND)"
An integer provided in Pelem_data as:
.sp .4
.nf
.ta .5i +1i +1.25i
	Pint	int_data;	/* integer valued data */
.fi
.SH ERRORS
.IP 002
Ignoring function, function requires state 
(\s-2PHOP\s+2, \s-2*\s+2, \s-2*\s+2, \s-2*\s+2)
.IP 201
Ignoring function, the specified structure does not exist
.IP 202
Ignoring function, the specified element does not exist
.SH SEE ALSO
.nf
.IP
.ta 0.5i
.SM "UNPACK DATA RECORD (3P)"
.SM "INQUIRE ELEMENT TYPE AND SIZE (3P)"
.SM "INQUIRE CURRENT ELEMENT CONTENT (3P)"
.SM "CREATE STORE (3P)"
.SM "DELETE STORE (3P)"
.fi
