Previous Next Up Title Contents Top Library

Type Definitions


PAR_FILE

typedef struct {
	Pint	id;	/* archive file identifier	*/
	char	*name;	/* archive file name	*/
} Par_file;

PAR_FILE_LIST

typedef struct {
	Pint	num_ar_files;	/* number of archive files	*/
	Par_file	*ar_files;	/* list of archive file	*/
} Par_file_list;

PAR_ST

typedef enum {
	PST_ARCL,
	PST_AROP
} Par_st;

PASF

typedef enum {
	PASF_BUNDLED,
	PASF_INDIV
} Pasf;

PASPECT

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_LINE_COLR,
	PASPECT_MARKER_COLR,
	PASPECT_TEXT_COLR,
	PASPECT_INT_COLR,
	PASPECT_EDGE_COLR,
	PASPECT_LINE_SHAD_METHOD,
	PASPECT_INT_SHAD_METHOD,
	PASPECT_DATA_MAP_METHOD,
	PASPECT_REFL_PROPS,
	PASPECT_REFL_MODEL,
	PASPECT_BACK_INT_STYLE,
	PASPECT_BACK_INT_STYLE_IND,
	PASPECT_BACK_INT_COLR,
	PASPECT_BACK_INT_SHAD_METHOD,
	PASPECT_BACK_DATA_MAP_METHOD,
	PASPECT_BACK_REFL_PROPS,
	PASPECT_BACK_REFL_MODEL,
	PASPECT_CURVE_APPROX_CRIT,
	PASPECT_SURF_APPROX_CRIT,
	PASPECT_PARAM_SURF_CHARS,
	PASPECT_ALL_ASF
} Paspect;

PATTRS

typedef enum {
	PATTR_LINE,
	PATTR_MARKER,
	PATTR_TEXT,
	PATTR_INT,
	PATTR_EDGE,
	PATTR_REFL,
	PATTR_PARAM_SURF
} Pattrs;

PCHOICE_DATA

#define P_NBCHOICE 33

typedef struct {
	union Pchoice_pets {

		struct Pchoice_pet_r1 {
			Pint	num_prompts;	/* number of prompts	*/
			Ppr_switch	prompts[P_NBCHOICE-1];
			char	*strings[P_NBCHOICE];
		} pet_r1;

		struct Pchoice_pet_r2 {
			Pint	num_prompts;	/* number of prompts	*/
			Ppr_switch	*prompts;	/* array of prompts	*/
		} pet_r2;

		struct Pchoice_pet_r3 {
			Pint	num_strings;	/* number of choice strings	*/
			char	**strings;	/* array of choice strings	*/
		} pet_r3;

		struct Pchoice_pet_r4 {
			Pint	num_strings;	/* number of choice strings	*/
			char	**strings;	/* array of choice strings	*/
		} pet_r4;
		struct Pchoice_pet_r5 {
			Pint	struct_id;	/* structure identifier	*/
			Pint	num_pick_ids;	/* number of pick identifiers	*/
			Pint	*pick_ids;	/* array of pick identifiers	*/
		} pet_r5;

		struct Pchoice_pet_r10_27 {
			char	*box_name;
			Pint	num_prompts;
			Ppr_switch	*prompts;
			char	**strings;
			Ppat_rep	*pixmap;
			Ppr_switch	*status;
			Pint	mouse_button;
			Ppr_switch	mouse_shift;
			Ppr_switch	mouse_ctrl;
		} pet_r10_27;

	} pets;
} Pchoice_data;

PCHOICE_DATA3

typedef struct {
	union Pchoice3_pets {

		struct Pchoice3_pet_r1 {
			Pint	num_prompts;	/* number of prompts	*/
			Ppr_switch	prompts[P_NBCHOICE-1];
			char	*strings[P_NBCHOICE];
		} pet_r1;

		struct Pchoice3_pet_r2 {
			Pint	num_prompts;	/* number of prompts	*/
			Ppr_switch	*prompts;	/* array of prompts	*/
		} pet_r2;

		struct Pchoice3_pet_r3 {
			Pint	num_strings;	/* number of choice strings	*/
			char	**strings;	/* array of choice strings	*/
		} pet_r3;

		struct Pchoice3_pet_r4 {
			Pint	num_strings;	/* number of choice strings	*/
			char	**strings;	/* array of choice strings	*/
		} pet_r4;

		struct Pchoice3_pet_r5 {
			Pint	struct_id;	/* structure identifier	*/
			Pint	num_pick_ids;	/* number of pick identifiers	*/
			Pint	*pick_ids;	/* array of pick identifiers	*/
		} pet_r5;

	} pets;
} Pchoice_data3;

PCIELUV

typedef struct {
	Pfloat	cieluv_x;	/* x coefficient	*/
	Pfloat	cieluv_y;	/* y coefficient	*/
	Pfloat	cieluv_y_lum;	/* y luminance	*/
} Pcieluv;

PCLIP_COND

typedef enum {
	PCLIPCOND_IS_NOT_CLIPPED,
	PCLIPCOND_IS_PARTIALLY_CLIPPED,
	PCLIPCOND_IS_FULLY_CLIPPED 
} Pclip_cond;

PCLIP_IND

typedef enum {
	PIND_NO_CLIP,
	PIND_CLIP
} Pclip_ind;

PCOLRV

typedef union {
	Pint	colr_ind;	/* colour index	*/
	Pcolr_rep	colr_rep;	/* colour representation	*/
} Pcolrv;

PCOLRV_ARRAY

typedef struct {
	Pint_size	dims;	/* colour value array dimensions	*/
	Pcolrv_ptr	colrs;	/* array of colour values	*/
} Pcolrv_array;

PCOLRV_LIST

typedef struct {
	Pint	num_colrs;	/* number of colours	*/
	Pcolrv_ptr	colrs;	/* list of colour values	*/
} Pcolrv_list;

PCOLRV_PTR

typedef union {
	Pint	*color_inds;	/* pointer to colour indices	*/
	Pcolr_rep_ptr	colr_reps;	/* pointer to colour representations	*/
} Pcolrv_ptr;

PCOLRV_SET

typedef struct {
	Pint	num_lists;	/* number of colour value lists	*/
	Pcolrv_list	*colrs;	/* list of colour value lists	*/
} Pcolrv_set;

PCOLR_AVAIL

typedef enum {
	PAVAIL_MONOCHR,
	PAVAIL_COLR
} Pcolr_avail;

PCOLR_CTRL_POINT_ARRAY

typedef struct {
	Prationality	rationality;	/* colour control point rationality	*/
	Pint_size	dims;	/* dimensions of control point array	*/
	Pcolr_ctrl_point_ptr	colr_points;	/* array of colour control points	*/
} Pcolr_ctrl_point_array;

PCOLR_CTRL_POINT_LIST

typedef struct {
	Prationality	rationality;	/* colour control point rationality	*/
	Pint	num_points;	/* number of control points	*/
	Pcolr_ctrl_point_ptr	points;	/* list of colour control points	*/
} Pcolr_ctrl_point_list;

PCOLR_CTRL_POINT_PTR

typedef union {
	Pcolr_rep_ptr	points;	/* pointer to colour points	*/
	Phomo_colr_rep_ptr	homo_points;	/* pointer to homogeneous colour points	*/
} Pcolr_ctrl_point_ptr;

PCOLR_FACS

typedef struct {
	Pint	num_colrs;	/* number of colours	*/
	Pcolr_avail	colr_avail;	/* colour availability	*/
	Pint	num_pred_inds;	/* number of predefined colour indices	*/
	Pcieluv	prim_colrs[3];	/* primary colours	*/
} Pcolr_facs;

PCOLR_MAP_METHOD

typedef struct {
	Pint	method;		/* colour mapping method	*/
	union Pcolr_map_method_data {
		Pint	num_true_colrs;		/* number of true colours	*/
		Pint	max_num_pseudo_colrs;	/* maximum number of pseudo colours	*/
	}
} Pcolr_map_method;

PCOLR_MAP_REP

typedef struct {
	Pint	method;		/* colour mapping method	*/
	union Pcolr_map_rep_data {

		struct Pcolr_map_rep_pseudo_pseudo_3 {
			Pint	model;	/* colour model	*/
			Pint	levels[3];	/* number of levels by component	*/
			Pint	first_colr_ind;	/* first color index in colour table	*/
		}pseudo_pseudo_3;
		struct Pcolr_map_rep_pseudo {
			Pint	model;	/* colour model	*/
			Pfloat_list	weight_vector;	/* list of weight vector	*/
			Pcolrv_list	colrs;	/* list of colour values	*/
		}pseudo;

		struct Pcolr_map_rep_pseudo_N {
			Pint	model;	/* colour model	*/
			Pfloat_set	colrs;	/* list of list of colour coordinates	*/
		}pseudo_N;
	
	}data;
} Pcolr_map_rep;

PCOLR_MAP_ST

typedef struct {
	Pint	method;		/* colour mapping method	*/
	union Pcolr_map_st_data {
		Pint	num_true_colrs;		/* number of available true colours	*/
		Pint	max_num_pseudo_colrs;	/* maximum number of pseudo colour entries	*/
	}
} Pcolr_map_st;

PCOLR_REP

typedef union {
	Prgb	rgb;	/* red green blue colour specification	*/
	Pcieluv	cieluv;	/* CIE L*u*v* colour specification	*/
	Phls	hls;	/* hue lightness saturation colour specification	*/
	Phsv	hsv;	/* hue saturation value colour specification	*/
} Pcolr_rep;

PCOLR_REP_PTR

typedef union {
	Prgb	*rgb;	/* pointer to RGB colour values	*/
	Pcieluv	*cieluv;	/* pointer to CIELUV colour values	*/
	Phls	*hls;	/* pointer to HLS colour values	*/
	Phsv	*hsv;	/* pointer to HSV colour values	*/
} Pcolr_rep_ptr;

PCOMPOSE_TYPE

typedef enum {
	PTYPE_PRECONCAT,
	PTYPE_POSTCONCAT,
	PTYPE_REPLACE
} Pcompose_type;

PCONF_RES

typedef enum {
	PRES_MAINTAIN,
	PRES_ABANDON,
	PRES_UPD
} Pconf_res;

PCONTOUR_SET

typedef struct {
	Pint	num_lists;	/* number of contour lists	*/
	Pint_list	*contours;	/* list of contour lists	*/
} Pcontour_set;

PCONTOUR_SET_LIST

typedef struct {
	Pint	num_contour_sets;	/* number of contour sets	*/
	Pcontour_set	*contours;	/* list of contour lists	*/
} Pcontour_set_list;

PCTRL_FLAG

typedef enum {
	PFLAG_COND,
	PFLAG_ALWAYS
} Pctrl_flag;

PCTRL_POINT3_ARRAY

typedef struct {
	Prationality	rationality;	/* control point rationality	*/
	Pint_size	dims;	/* control point array u,v dimensions	*/
	Ppoint3_ptr	points;	/* array of control points	*/
} Pctrl_point3_array;

PCTRL_POINT3_LIST

typedef struct {
	Prationality	rationality;	/* control point rationality	*/
	Pint	num_points;	/* number of control points	*/
	Ppoint3_ptr	points;	/* list of control points	*/
} Pctrl_point3_list;

PCTRL_POINT_LIST

typedef struct {
	Prationality	rationality;	/* control point rationality	*/
	Pint	num_points;	/* number of control points	*/
	Ppoint_ptr	points;	/* list of control points	*/
} Pctrl_point_list;

PCURVE_APPROX_CRIT

typedef struct {
	Pint	type;		/* curve approximation criteria type	*/
	union Pcurve_approx_crit_data {
		struct Pcurve_approx_const_param_subd {
			Pint	count;	/* value	*/
		} const_param_subd;
	
		struct Pcurve_approx_chordal_size_wc {
			Pfloat	approx;
		} chordal_size_wc;
	
		struct Pcurve_approx_chordal_size_npc {
			Pfloat	approx;
		} chordal_size_npc;
		struct Pcurve_approx_chordal_size_dc {
			Pfloat	approx;
		} chordal_size_dc;
	
		struct Pcurve_approx_chordal_dev_wc {
			Pfloat	approx;
		} chordal_dev_wc;

		struct Pcurve_approx_chordal_dev_npc {
			Pfloat	approx;
		} chordal_dev_npc;
	
		struct Pcurve_approx_chordal_dev_dc {
			Pfloat	approx;
		} chordal_dev_dc;

		struct Pcurve_approx_rel_wc {
			Pfloat	approx;
		} rel_wc;
	
		struct Pcurve_approx_rel_npc {
			Pfloat	approx;
		} rel_npc;
	
		struct Pcurve_approx_rel_dc {
			Pfloat	approx;
		} rel_dc;
	} data;
} Pcurve_approx_crit;

PCURVE_COLR_SPLINE

typedef struct {
	Pint	order;	/* spline order	*/
	Pfloat_list	knots;	/* knots	*/
	Pint	colr_type;	/* colour type	*/
	Pcolr_ctrl_point_list	colrs;	/* list of colour control points	*/
} Pcurve_colr_spline;

PCURVE_GEOM_SPLINE

typedef struct {
	Pint	order;	/* spline order	*/
	Pfloat_list	knots;	/* knots	*/
	Pfloat	low_limit;	/* lower parameter range limit	*/
	Pfloat	high_limit;	/* high parameter range limit	*/
	Pctrl_point3_list	ctrl_points;	/* list of control points	*/
} Pcurve_geom_spline;

PDATA

typedef struct {
	size_t	size;	/* sizeof data	*/
	void	*data;	/* pointer to data	*/
} Pdata;

PDATA_CTRL_POINT_ARRAY

typedef struct {
	Prationality	rationality;	/* control point rationality	*/
	Pint_size	dims;	/* control point array u,v dimensions	*/
	Pint	points_dims;	/* control points dimensionality	*/
	Pfloat	*ctrl_points;	/* array of control points	*/
} Pdata_ctrl_point_array;

PDATA_MAP_REP

typedef struct {
	Pint		method;	/* data mapping method	*/
	Psource_select_list	selectors;	/* list of source selectors	*/
	union Pdata_map_rep_data {
		struct Pdata_map_rep_single_uniform {
			Pint	ind;
			Pfloat	lower_limit;
			Pfloat	upper_limit;
			Pint	colr_type;
			Pcolrv_list	colr_values;
		} single_uniform;
	
		struct Pdata_map_rep_single_non_uniform {
			Pint	ind;
			Pfloat_list	range;
			Pint	colr_type;
			Pcolrv_list	colr_values;
		} single_non_uniform;
	
		struct Pdata_map_rep_bi_uniform {
			Pint	inds[2];
			Pfloat	lower_limit_a;
			Pfloat	upper_limit_a;
			Pfloat	lower_limit_b;
			Pfloat	upper_limit_b;
			Pint	colr_type;
			Pcolrv_set	colr_values;
		} bi_uniform;

		struct Pdata_map_rep_bi_non_uniform {
			Pint	inds[2];
			Pfloat_list	range_a;
			Pfloat_set	range_b;
			Pint	colr_type;
			Pcolrv_set	colr_values;
		} bi_non_uniform;
	} data;
} Pdata_map_rep;

PDC_UNITS

typedef enum {
	PDC_METRES,
	PDC_OTHER
} Pdc_units;

PDEFER_MODE

typedef enum {
	PDEFER_ASAP,
	PDEFER_BNIG,
	PDEFER_BNIL,
	PDEFER_ASTI,
	PDEFER_WAIT
} Pdefer_mode;

PDEPTH_CUE_MODE

typedef enum {
	PDEPTH_CUE_SUPPR,
	PDEPTH_CUE_ALLOWED
} Pdepth_cue_mode;

PDEPTH_CUE_MODE_LIST

typedef struct{
	Pint	num_modes;	/* number ofdepth cue modes	*/
	Pdepth_cue_mode	*modes;	/* list of depth cue modes	*/
} Pdepth_cue_mode_list;

PDEPTH_CUE_REP

typedef struct{
	Pdepth_cue_mode	mode;	/* depth cue mode	*/
	Pfloat	ref_planes[2];	/* depth cue reference planes ( min , max )	*/
	Pfloat	scale[2];	/* depth cue scale factors	*/
	Pgcolr	colr;	/* depth cue colour	*/
} Pdepth_cue_rep;

PDISP_SPACE_SIZE

typedef struct {
	Pdc_units	dc_units;	/* device coordinate units	*/
	Pfloat_size	size_dc;	/* device size in coordinate units	*/
	Pint_size	size_raster;	/* device size in raster units	*/
} Pdisp_space_size;

PDISP_SPACE_SIZE3

typedef struct {
	Pdc_units	dc_units;	/* device coordinate units	*/
	Pfloat_size3	size_dc;	/* device volume in coordinate units	*/
	Pint_size3	size_raster;	/* device volume in raster units	*/
} Pdisp_space_size3;

PDISP_SURF_EMPTY

typedef enum {
	PSURF_NOT_EMPTY,
	PSURF_EMPTY
} Pdisp_surf_empty;

PDYNS_STRUCTS

typedef struct {
	Pdyn_mod	content;	/* structure content	*/
	Pdyn_mod	post;	/* post structure	*/
	Pdyn_mod	unpost;	/* unpost structure	*/
	Pdyn_mod	del;	/* delete structure	*/
	Pdyn_mod	ref;	/* structure reference	*/
} Pdyns_structs;

PDYNS_WS_ATTRS

typedef struct {
	Pdyn_mod	line_bundle;	/* polyline bundle representation	*/
	Pdyn_mod	marker_bundle;	/* polymarker bundle representation	*/
	Pdyn_mod	text_bundle;	/* text bundle representation	*/
	Pdyn_mod	int_bundle;	/* interior bundle representation	*/
	Pdyn_mod	edge_bundle;	/* edge bundle representation	*/
	Pdyn_mod	pat_rep;	/* pattern representation	*/
	Pdyn_mod	colr_rep;	/* colour representation	*/
	Pdyn_mod	view_rep;	/* view representation	*/
	Pdyn_mod	ws_tran;	/* workstation transformation	*/
	Pdyn_mod	highl_filter;	/* highlighting filter	*/
	Pdyn_mod	invis_filter;	/* invisibility filter	*/
	Pdyn_mod	hlhsr_mode;	/* HLHSR mode	*/
} Pdyns_ws_attrs;

PDYN_MOD

typedef enum {
	PDYN_IRG,
	PDYN_IMM,
	PDYN_CBS
} Pdyn_mod;

PDYN_WS_ATTRS_PLUS

typedef struct {
	Pdyn_mod	data_map;	/* data mapping representation	*/
	Pdyn_mod	refl;	/* reflectance representation	*/
	Pdyn_mod	param_surf;	/* parametric surface representation	*/
	Pdyn_mod	light_source;	/* light source representation	*/
	Pdyn_mod	depth_cue;	/* depth cue representation	*/
	Pdyn_mod	colr_map;	/* colour mapping representation	*/
} Pdyn_ws_attrs_plus;

PECHO_SWITCH

typedef enum {
	PSWITCH_NO_ECHO,
	PSWITCH_ECHO
} Pecho_switch;

PEDGE_ATTRS

typedef struct {
	Pasf	flag_asf;	/* edge flag asf	*/
	Pasf	type_asf;	/* edge type asf	*/
	Pasf	width_asf;	/* edgewidth asf	*/
	Pasf	colr_ind_asf;	/* edge colour index asf	*/
	Pint	ind;	/* edge index	*/
	Pedge_bundle	bundle;	/* edge bundle	*/
} Pedge_attrs;

PEDGE_BUNDLE

typedef struct {
	Pedge_flag	flag;	/* edge flag	*/
	Pint	type;	/* edge type	*/
	Pfloat	width;	/* edge width scale factor	*/
	Pint	colr_ind;	/* edge colour index	*/
} Pedge_bundle;

PEDGE_BUNDLE_PLUS

typedef struct {
	Pedge_flag	flag;
	Pint	type;
	Pfloat	width;
	Pgcolr	colr;
} Pedge_bundle_plus;

PEDGE_FACS

typedef struct {
	Pint_list	types;	/* list of edgetypes	*/
	Pint	num_widths;	/* number of available edgewidths	*/
	Pfloat	nom_width;	/* nominal edgewidth	*/
	Pfloat	min_width;	/* min edgewidth	*/
	Pfloat	max_width;	/* max edgewidth	*/
	Pint	num_pred_inds;	/* number of predefined bundle indices	*/
} Pedge_facs;

PEDGE_FLAG

typedef enum {
	PEDGE_OFF,
	PEDGE_ON
} Pedge_flag;

PEDGE_FLAG_ARRAY

typedef struct {
	Pint_size	dims;	/* edge flag array dimensions	*/
	Pedge_flag_pair	*edge_flags;	/* array of edge flag pairs	*/
} Pedge_flag_array;

PEDGE_FLAG_LIST

typedef struct {
	Pint	num_edges;	/* number of edges in list	*/
	Pedge_flag	*edge_flags;	/* list of edge flags	*/
} Pedge_flag_list;

PEDGE_FLAG_PAIR

typedef	Pedge_flag	Pedge_flag_pair[2];

PEDGE_FLAG_SET

typedef struct {
	Pint	num_lists;	/* number of edge flag list	*/
	Pedge_flag_list	*edge_flags;	/* list of edge flag lists	*/
} Pedge_flag_set;

PEDGE_FLAG_SET_LIST

typedef struct {
	Pint	num_edge_flag_sets;	/* number of edges flag sets	*/
	Pedge_flag_set	*edge_flag_sets;	/* list of edge flag sets	*/
} Pedge_flag_set_list;

PEDGE_FLAG_TRIPLET

typedef	Pedge_flag	Pedge_flag_triplet[3];

PEDGE_FLAG_TRIPLET_LIST

typedef struct {
	Pint	num_edge_flag_triplets;	/* number of edge flag triplets	*/
	Pedge_flag_triplet	*edge_flag_triplets;	/* list of edge flag triplets	*/
} Pedge_flag_triplet_list;

PEDIT_MODE

typedef enum {
	PEDIT_INSERT,
	PEDIT_REPLACE
} Pedit_mode;

PELEM_DATA

typedef union {
	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 Pelem_text3 {
		Ppoint3	pos;	/* text position	*/
		Pvec3		dir[2];	/* direction vectors	*/
		char		*char_string;	/* character string	*/
	} text3;

	struct Pelem_text {
		Ppoint		pos:	/* text position	*/
		char		*char_string:	/* character string	*/
	} text;

	struct Pelem_anno_text_rel3 {
		Ppoint3	ref_point:	/* reference point	*/
		Pvec3		offset:	/* annotation offset	*/
		char		*char_string:	/* character string	*/
	} anno_text_rel3;
	struct Pelem_anno_text_rel {
		Ppoint		ref_point:	/* reference point	*/
		Pvec		offset:	/* annotation offset	*/
		char		*char_string:	/* character string	*/
	} anno_text_rel;

	struct Pelem_cell_array3 {
		Pparal		paral:	/* parallelogram	*/
		Ppat_rep	colr_array:	/* colour array	*/
	} cell_array3;

	struct Pelem_cell_array {
		Prect		rect:	/* rectangle	*/
		Ppat_rep	colr_array:	/* colour array	*/
	} cell_array;

	struct Pelem_gdp3 {
		Pint		id:	/* GDP 3 identifier	*/
		Ppoint_list3	point_list;	/* point list	*/
		Pgdp_data3	data:	/* data record	*/
	} gdp3;

	struct Pelem_gdp {
		Pint		id:	/* GDP identifier	*/
		Ppoint_list	point_list;	/* point list	*/
		Pgdp_data	data:	/* data record	*/
	} gdp;

	Ptext_prec		text_prec:	/* text precision	*/
	Pvec		char_up_vec;	/* character 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:	/* pattern reference point	*/
	Pfloat_size		pat_size:	/* pattern size	*/

	struct Pelem_pat_ref_point_vecs {
		Ppoint3	ref_point:	/* pattern reference point	*/
		Pvec3		ref_vec[2]:	/* vectors	*/
	} pat_ref_point_vecs;

	Pint_list		names:	/* name sets	*/

	struct Pelem_asf {
		Paspect	id:	/* attribut id	*/
		Pasf		source:	/* attribut source	*/
	} asf;

	struct Pelem_local_tran3 {
		Pcompose_type	compose_type:	/* composition type	*/
		Pmatrix3	matrix:	/* transformation matrix	*/
	} local_tran3;

	struct Pelem_local_tran {
		Pcompose_type	compose_type:	/* composition type	*/
		Pmatrix	matrix:	/* transformation matrix	*/
	} local_tran;
	Pmatrix3		global_tran3:	/* global transformation 3	*/
	Pmatrix		global_tran:	/* global transformation	*/

	struct Pelem_model_clip3 {
		Pint		op:	/* operator	*/
		Phalf_space_list3	half_spaces:	/* half space list	*/
	} model_clip3;

	struct Pelem_model_clip {
		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 Pelem_gse {
		Pint		id:	/* GSE id	*/
		Pgse_data	data:	/* GSE data	*/
	} gse;

	struct Pelem_polyline_set3_colr {
		Pint	colr_type;
		Pvertex3_set	vertex_data;
	} polyline_set3_colr;		/* polyline set 3 with data	*/

	struct Pelem_fill_area_set3_data {
		Pint		colr_type;
		Pfacet		*facet_data;
		Pedge_flag_set	*edge_flags;
		Pvertex3_set	vertex_data;
	} fill_area_set3_data;		/* fill area set 3 with data	*/

	struct Pelem_fill_area_set_data {
		Pint		colr_type;
		Pfacet		*facet_data;
		Pedge_flag_set	*edge_flags;
		Pvertex_set	vertex_data;
	} fill_area_set_data;		/* fill area set with data	*/

	struct Pelem_cell_array3_plus {
		Pparal		paral;
		Ppat_rep_plus	pattern;
	} cell_array3_plus;

	struct Pelem_set_of_fill_area_sets3_data {
		Pint		colr_type;
		Pset_of_fill_area_sets_data	*set_data;
		Pedge_flag_set_list	*edge_flags;
		Pvertex3_list	vertex_data;
		Pcontour_set_list	contours;
	} set_of_fill_area_sets3_data;		/* set of fill area sets 3 with data	*/

	struct Pelem_set_of_fill_area_sets_data {
		Pint		colr_type;
		Pset_of_fill_area_sets_data	*set_data;
		Pedge_flag_set_list	*edge_flags;
		Pvertex_list	vertex_data;
		Pcontour_set_list	contours;
	} set_of_fill_area_sets_data;		/* set of fill area sets with data	*/
	struct Pelem_tri_set3_data {
		Pint		colr_type;
		Ptri_set_data	*set_data;
		Pedge_flag_triplet_list	*edge_flags;
		Pvertex3_list	vertex_data;
		Pvertex_ind_triplet_list	vertex_inds;
	} tri_set3_data;		/* triangle set 3 with data	*/

	struct Pelem_tri_set_data {
		Pint		colr_type;
		Ptri_set_data	*set_data;
		Pedge_flag_triplet_list	*edge_flags;
		Pvertex_list	vertex_data;
		Pvertex_ind_triplet	vertex_inds;
	} tri_set_data;		/* triangle set with data	*/

	struct Pelem_tri_strip3_data {
		Pint		colr_type;
		Pfacet_list	*facet_data;
		Pedge_flag_list	*edge_flags;
		Pvertex3_list	vertex_data;
	} tri_strip3_data;		/* triangle strip 3 with data	*/

	struct Pelem_tri_strip_data {
		Pint		colr_type;
		Pfacet_list	*facet_data;
		Pedge_flag_list	*edge_flags;
		Pvertex_list	vertex_data;
	} tri_strip_data;		/* triangle strip with data	*/

	struct Pelem_quad_mesh3_data {
		Pint		colr_type;
		Pfacet_array	*facet_data;
		Pedge_flag_array	*edge_flags;
		Pvertex3_array	vertex_data;
	} quad_mesh3_data;		/* quadrilateral mesh 3 with data	*/

	struct Pelem_quad_mesh_data {
		Pint		colr_type;
		Pfacet_array	*facet_data;
		Pedge_flag_array	*edge_flags;
		Pvertex_array	vertex_data;
	} quad_mesh_data;		/* quadrilateral mesh with data	*/

	struct Pelem_non_uniform_b_spline_curve3 {
		Pcurve_geom_spline	geom_spline;
	} non_uniform_b_spline_curve3;	/* non uniform b-spline curve 3	*/

	struct Pelem_non_uniform_b_spline_curve3_colr {
		Pcurve_geom_spline	geom_spline;
		Pcurve_colr_spline	*colr_spline;
	} non_uniform_b_spline_curve3_colr;	/* non uniform b-spline curve 3 with colour	*/

	struct Pelem_non_uniform_b_spline_surf3 {
		Psurf_geom_spline	geom_spline;
		Ptrim_curve_loop_list	*trim_loops;
	} non_uniform_b_spline_surf3;	/* non uniform b-spline surface 3	*/
	struct Pelem_non_uniform_b_spline_surf3_data {
		Psurf_geom_spline	geom_spline;
		Ptrim_curve_loop_list	*trim_loops;
		Psurf_colr_spline	*colr_spline;
		Psurf_data_spline	*data_spline;
	} non_uniform_b_spline_surf3_data;	/* non uniform b-spline surface 3 with data	*/

	Pgcolr		colr;
	Pfacet_disting_mode	facet_disting_mode;
	Pfacet_cull_mode	facet_cull_mode;
	Pdata_map_rep	data_map_method;
	Prefl_prop		refl_prop;

	struct Pelem_light_source_st {
		Pint_list	act_list;
		Pint_list	deact_list;
	} light_source_st;

	Pcurve_approx_crit	curve_approx_crit;

	Psurf_approx_crit	surf_approx_crit;

	Pparam_surf_chars	param_surf_chars;

	struct Pelem_xanno_text_fixed3 {
		Ppoint3	ref_point;	/* reference point	*/
		Ppoint3	anno_point;	/* annotation point	*/
		char		*char_string;	/* text string	*/
	} xanno_text_fixed3;

	struct Pelem_xanno_text_fixed {
		Ppoint		ref_point;	/* reference point	*/
		Ppoint		anno_point;	/* annotation point	*/
		char		*char_string;	/* text string	*/
	} xanno_text_fixed;

	struct Pelem_xwidetext3 {
		Ppoint3	pos;	/* widetext positio	*/
		Pvec3		dir[2];	/* direction vector	*/
		Pxwchar	*char_string;	/* widetext strin	*/
	} xwidetext3;

	struct Pelem_xwidetext {
		Ppoint		pos;	/* widetext position	*/
		Pxwchar	*char_string;	/* widetext string	*/
	} xwidetext;

	struct Pelem_xanno_widetext_rel3 {
		Ppoint3	ref_point;	/* reference point	*/
		Pvec3		offset;	/* annotation offset	*/
		Pxwchar	*char_string;	/* widetext string	*/
	} xanno_widetext_rel3;

	struct Pelem_xanno_widetext_rel {
		Ppoint		ref_point;	/* reference point	*/
		Pvec		offset;	/* annotation offset	*/
		Pxwchar	*char_string;	/* widetext string	*/
	} xanno_widetext_rel;
	struct Pelem_xanno_widetext_fixed3 {
		Ppoint3	ref_point;	/* reference point	*/
		Ppoint3	anno_point;	/* annotation point	*/
		Pxwchar	*char_string;	/* widetext string	*/
	} xanno_widetext_fixed3;

	struct Pelem_xanno_widetext_fixed {
		Ppoint		ref_point;	/* reference point	*/
		Ppoint		anno_point;	/* annotation point	*/
		Pxwchar	*char_string;	/* widetext string	*/
	} xanno_widetext_fixed;

	struct Pelem_cond_exec_struct {
		Pint		struct_id;
		Ptest		test;
	} cond_exec_struct;

	struct Pelem_cond_inst_struct {
		Pint		struct_id;
		Ptest		test;
	} cond_inst_struct;

	Ptest test;

	struct Pelem_cond_skip_elements {
		Pint		skip_count;
		Ptest		test;
	} cond_skip_elements;

	struct Pelem_cond_skip_to_label {
		Pint		label_id;
		Ptest		test;
	} cond_skip_to_label;

} Pelem_data;

PELEM_REF

typedef struct {
	Pint	struct_id;	/* structure identifier	*/
	Pint	elem_pos;	/* element postion	*/
} Pelem_ref;

PELEM_REF_LIST

typedef struct {
	Pint	num_elem_refs;	/* number of element references	*/
	Pelem_ref	*elem_refs;	/* list of elements refenrences	*/
} Pelem_ref_list;

PELEM_REF_LIST_LIST

typedef struct {
	Pint	num_elem_ref_lists;	/* number of element references lists	*/
	Pelem_ref_list	*elem_ref_lists;	/* list of element reference lists	*/
} Pelem_ref_list_list;

PELEM_TYPE

typedef enum {
	PELEM_ALL,
	PELEM_NIL,
	PELEM_POLYLINE3 ,
	PELEM_POLYLINE ,
	PELEM_POLYMARKER3 ,
	PELEM_POLYMARKER ,
	PELEM_TEXT3 ,
	PELEM_TEXT ,
	PELEM_ANNO_TEXT_REL3 ,
	PELEM_ANNO_TEXT_REL ,
	PELEM_FILL_AREA3 ,
	PELEM_FILL_AREA ,
	PELEM_FILL_AREA_SET3 ,
	PELEM_FILL_AREA_SET ,
	PELEM_CELL_ARRAY3 ,
	PELEM_CELL_ARRAY ,
	PELEM_GDP3 ,
	PELEM_GDP ,
	PELEM_LINE_IND ,
	PELEM_MARKER_IND ,
	PELEM_TEXT_IND ,
	PELEM_INT_IND ,
	PELEM_EDGE_IND ,
	PELEM_LINETYPE ,
	PELEM_LINEWIDTH ,
	PELEM_LINE_COLR_IND ,
	PELEM_MARKER_TYPE ,
	PELEM_MARKER_SIZE ,
	PELEM_MARKER_COLR_IND ,
	PELEM_TEXT_FONT ,
	PELEM_TEXT_PREC ,
	PELEM_CHAR_EXPAN ,
	PELEM_CHAR_SPACE ,
	PELEM_TEXT_COLR_IND ,
	PELEM_CHAR_HT ,
	PELEM_CHAR_UP_VEC ,
	PELEM_TEXT_PATH ,
	PELEM_TEXT_ALIGN ,
	PELEM_ANNO_CHAR_HT ,
	PELEM_ANNO_CHAR_UP_VEC ,
	PELEM_ANNO_PATH ,
	PELEM_ANNO_ALIGN ,
	PELEM_ANNO_STYLE ,
	PELEM_INT_STYLE ,
	PELEM_INT_STYLE_IND ,
	PELEM_INT_COLR_IND ,
	PELEM_EDGE_FLAG ,
	PELEM_EDGETYPE ,
	PELEM_EDGEWIDTH ,
	PELEM_EDGE_COLR_IND ,
	PELEM_PAT_SIZE ,
	PELEM_PAT_REF_POINT_VECS ,
	PELEM_PAT_REF_POINT ,
	PELEM_ADD_NAMES_SET ,
	PELEM_REMOVE_NAMES_SET ,
	PELEM_INDIV_ASF ,
	PELEM_HLHSR_ID ,
	PELEM_LOCAL_MODEL_TRAN3 ,
	PELEM_LOCAL_MODEL_TRAN ,
	PELEM_GLOBAL_MODEL_TRAN3 ,
	PELEM_GLOBAL_MODEL_TRAN ,
	PELEM_MODEL_CLIP_VOL3 ,
	PELEM_MODEL_CLIP_VOL ,
	PELEM_MODEL_CLIP_IND ,
	PELEM_RESTORE_MODEL_CLIP_VOL ,
	PELEM_VIEW_IND ,
	PELEM_EXEC_STRUCT ,
	PELEM_LABEL ,
	PELEM_APPL_DATA ,
	PELEM_GSE ,
	PELEM_PICK_ID ,

	PELEM_POLYLINE_SET3_COLR,
	PELEM_FILL_AREA_SET3_DATA,
	PELEM_FILL_AREA_SET_DATA,
	PELEM_CELL_ARRAY3_PLUS,
	PELEM_SET_OF_FILL_AREA_SETS3_DATA,
	PELEM_SET_OF_FILL_AREA_SETS_DATA,
	PELEM_TRI_SET3_DATA,
	PELEM_TRI_SET_DATA,
	PELEM_TRI_STRIP3_DATA,
	PELEM_TRI_STRIP_DATA,
	PELEM_QUAD_MESH3_DATA,
	PELEM_QUAD_MESH_DATA,
	PELEM_NON_UNIFORM_B_SPLINE_CURVE3,
	PELEM_NON_UNIFORM_B_SPLINE_CURVE3_COLR,
	PELEM_NON_UNIFORM_B_SPLINE_SURF3,
	PELEM_NON_UNIFORM_B_SPLINE_SURF3_DATA,
	PELEM_DATA_MAP_IND,
	PELEM_REFL_IND,
	PELEM_BACK_INT_IND,
	PELEM_BACK_DATA_MAP_IND,
	PELEM_BACK_REFL_IND,
	PELEM_PARAM_SURF_IND,
	PELEM_LINE_COLR,
	PELEM_LINE_SHAD_METHOD,
	PELEM_MARKER_COLR,
	PELEM_TEXT_COLR,
	PELEM_FACET_DISTING_MODE,
	PELEM_FACET_CULL_MODE,
	PELEM_INT_COLR,
	PELEM_INT_SHAD_METHOD,
	PELEM_DATA_MAP_METHOD,
	PELEM_REFL_PROPS,
	PELEM_REFL_MODEL,
	PELEM_BACK_INT_STYLE,
	PELEM_BACK_INT_STYLE_IND,
	PELEM_BACK_INT_COLR,
	PELEM_BACK_INT_SHAD_METHOD,
	PELEM_BACK_DATA_MAP_METHOD,
	PELEM_BACK_REFL_PROPS,
	PELEM_BACK_REFL_MODEL,
	PELEM_LIGHT_SOURCE_ST,
	PELEM_EDGE_COLR,
	PELEM_CURVE_APPROX_CRIT,
	PELEM_SURF_APPROX_CRIT,
	PELEM_PARAM_SURF_CHARS,
	PELEM_REND_COLR_MODEL,
	PELEM_DEPTH_CUE_IND,
	PELEM_COLR_MAP_IND,

	PELEM_INCL_STRUCT
	PELEM_POLYLINE_SET3,
	PELEM_POLYLINE_SET,
	PELEM_ANNO_TEXT_FIXED3,
	PELEM_ANNO_TEXT_FIXED,
	PELEM_WIDETEXT3,
	PELEM_WIDETEXT,
	PELEM_ANNO_WIDETEXT_REL3,
	PELEM_ANNO_WIDETEXT_REL,
	PELEM_ANNO_WIDETEXT_FIXED3,
	PELEM_ANNO_WIDETEXT_FIXED,

	PELEM_TEXT_LINEWIDTH,
	PELEM_TEXT_SLANT,
	PELEM_ANNO_SLANT,
	PELEM_HIGHLIGHT_IND,

	PELEM_COND_EXEC_STRUCT,
	PELEM_COND_INST_STRUCT,
	PELEM_COND_RETURN,
	PELEM_COND_SKIP_ELEMS,
	PELEM_COND_SKIP_TO_LABEL
} Pelem_type;

PELEM_TYPE_LIST

typedef struct {
	Pint	num_elem_types;	/* number of element types	*/
	Pelem_type	*elem_types;	/* list of element types	*/
} Pelem_type_list;

PERR_MODE

typedef enum {
	PERR_OFF,
	PERR_ON
} Perr_mode;

PESCAPE_IN_DATA

typedef union {
	struct Pescape_in_r1 {
	int	impl_dep;
	} escape_in_r1;
	int	impl_dep;
} Pescape_in_data;

PESCAPE_OUT_DATA

typedef union {
	struct Pescape_out_r1 { 
	int	impl_dep;
	} escape_out_r1;
	int	impl_dep;
} Pescape_out_data;

PFACET

typedef struct {
	Pint	num_data_per_facet;	/* number of data values per facet	*/
	Pcolrv	*facet_colrv;	/* facet coulour	*/
	Pvec3	*facet_norm;	/* facet normal	*/
	Pfloat	*facet_data;	/* facet data	*/
} Pfacet;

PFACET_ARRAY

typedef struct {
	Pint_size	dims;	/* facet array dimensions	*/
	Pint	num_data_per_facet;	/* number of data values per facet	*/
	Pcolrv_ptr	facet_colrvs;	/* array of facet coulour values	*/
	Pvec3	*facet_norms;	/* array of facet normals	*/
	Pfloat	*facet_data;	/* array of facet data lists	*/
} Pfacet_array;

PFACET_CULL_MODE

typedef enum {
	PFACET_CULL_NONE,
	PFACET_CULL_BACKFACING,
	PFACET_CULL_FRONTFACING
} Pfacet_cull_mode;

PFACET_DISTING_MODE

typedef enum {
	PFACET_DISTING_OFF,
	PFACET_DISTING_ON
} Pfacet_disting_mode;

PFACET_LIST

typedef struct {
	Pint	num_facets;	/* number of facets	*/
	Pint	num_data_per_facet;	/* number of data values per facet	*/
	Pcolrv_ptr	facet_colrvs;	/* list of facet coulour values	*/
	Pvec3	*facet_norms;	/* list of facet normals	*/
	Pfloat	*facet_data;	/* list of facet data lists	*/
} Pfacet_list;

PFILTER

typedef struct {
	Pint_list	incl_set;	/* inclusion set	*/
	Pint_list	excl_set;	/* exclusion set	*/
} Pfilter;

PFILTER_LIST

typedef struct {
	Pint	num_filters;	/* number of filters	*/
	Pfilter	*filters;	/* list of filters	*/
} Pfilter_list;

PFLOAT

typedef	float	Pfloat;

PFLOAT_LIST

typedef struct {
	Pint	num_floats;	/* number of floats in list	*/
	Pfloat	*floats;	/* list of floats	*/
} Pfloat_list;

PFLOAT_SET

typedef struct {
	Pint	num_lists;	/* number of float lists	*/
	Pfloat_list	*floats;	/* list of float lists	*/
} Pfloat_set;

PFLOAT_SIZE

typedef struct {
	Pfloat	size_x;	/* x size	*/
	Pfloat	size_y;	/* y size	*/
} Pfloat_size;

PFLOAT_SIZE3

typedef struct {
	Pfloat	size_x;	/* x size	*/
	Pfloat	size_y;	/* y size	*/
	Pfloat	size_z;	/* z size	*/
} Pfloat_size3;

PGCOLR

typedef struct {
	Pint	colr_type;	/* colour type	*/
	Pcolrv	colr_value;	/* colour value	*/
} Pgcolr;

PGDP_DATA

typedef union {
	struct Pgdp_r1 { 
		int	impl_dep;
	} gdp_r1;
	Pdata	unsupp;
	int	impl_dep;
} Pgdp_data;

PGDP_DATA3

typedef union {
	struct Pgdp3_r1 { 
		int	impl_dep;
	} gdp3_r1;
	Pdata	unsupp;
	int	impl_dep;
} Pgdp_data3;

PGSE_DATA

typedef union {
	struct Pgse_r1 {	int	user_function_no;	} gse_r1;
	struct Pgse_r2 {	Pfloat	transparency_coeff;	} gse_r2;
	struct Pgse_r3 {	Pint	zb_shift;	} gse_r3;
	struct Pgse_r4 {	Pint	zb_edge_shift;	} gse_r4;
	struct Pgse_r5 {	Pgcolr	highlight_colr;	} gse_r5;
	struct Pgse_r6 {	Pint	antialiasing_id;	} gse_r6;
	struct Pgse_r7 {	Pint	cell_array_align;	} gse_r7;
} Pgse_data;

PGSE_ID_DEP

typedef struct {
	Pint	id;	/* GSE identifier	*/
	Pws_dep_ind	ind;	/* Workstation independent/dependent indicator	*/
} Pgse_id_dep;

PGSE_ID_DEP_LIST

typedef struct {
	Pint	num_id_facs;	/* number of identifiers / dependency element	*/
	Pgse_id_dep	*id_facs;	/* list of GSE facilities	*/
} Pgse_id_dep_list;

PHALF_SPACE

typedef struct {
	Ppoint	point;	/* point	*/
	Pvec	norm;	/* normal	*/
} Phalf_space;

PHALF_SPACE3

typedef struct {
	Ppoint3	point;	/* point	*/
	Pvec3	norm;	/* normal	*/
} Phalf_space3;

PHALF_SPACE_LIST

typedef struct {
	Pint	num_half_spaces;	/* number of half spaces	*/
	Phalf_space	*half_spaces;	/* list of half spaces	*/
} Phalf_space_list;

PHALF_SPACE_LIST3

typedef struct {
	Pint	num_half_spaces;	/* number of half spaces	*/
	Phalf_space3	*half_spaces;	/* list of half spaces	*/
} Phalf_space_list3;

PHLS

typedef struct {
	Pfloat	hue;	/* hue	*/
	Pfloat	lightness;	/* lightness	*/
	Pfloat	satur;	/* saturation	*/
} Phls;

PHOMO_CIELUV

typedef struct {
	Pfloat	cieluv_x;	/* x coefficient	*/
	Pfloat	cieluv_y;	/* y coefficient	*/
	Pfloat	cieluv_y_lum;	/* y luminance	*/
	Pfloat	w;	/* homogeneous coordinate	*/
} Phomo_cieluv;

PHOMO_COLR_REP_PTR

typedef union {
	Phomo_rgb	*rgb;	/* pointer to homogeneous RGB colour values	*/
	Phomo_cieluv	*cieluv;	/* pointer to homogeneous CIELUV colour values	*/
	Phomo_hls	*hls;	/* pointer to homogeneous HLS colour values	*/
	Phomo_hsv	*hsv;	/* pointer to homogeneous HSV colour values	*/
} Phomo_colr_rep_ptr;


PHOMO_HLS

typedef struct {
	Pfloat	hue;	/* hue	*/
	Pfloat	lightness;	/* lightness	*/
	Pfloat	statur;	/* staturation	*/
	Pfloat	w;	/* homogeneous coordinate	*/
} Phomo_hls;

PHOMO_HSV

typedef struct {
	Pfloat	hue;	/* hue	*/
	Pfloat	statur;	/* staturation	*/
	Pfloat	value;	/* value	*/
	Pfloat	w;	/* homogeneous coordinate	*/
} Phomo_hsv;

PHOMO_POINT3

typedef struct {
	Pfloat	wx;
	Pfloat	wy;
	Pfloat	w;
} Phomo_point3;

PHOMO_POINT4

typedef struct {
	Pfloat	wx;
	Pfloat	wy;
	Pfloat	wz;
	Pfloat	w;
} Phomo_point4;

PHOMO_RGB

typedef struct {
	Pfloat	red;	/* red intensity	*/
	Pfloat	green;	/* green intensity	*/
	Pfloat	blue;	/* blue intensity	*/
	Pfloat	w;	/* homogeneous coordinate	*/
} Phomo_rgb;

PHOR_TEXT_ALIGN

typedef enum {
	PHOR_NORM,
	PHOR_LEFT,
	PHOR_CTR,
	PHOR_RIGHT
} Phor_text_align;

PHSV

typedef struct {
	Pfloat	hue;	/* hue	*/
	Pfloat	satur;	/* saturation	*/
	Pfloat	value;	/* value	*/
} Phsv;

PINQ_TYPE

typedef enum {
	PINQ_SET,
	PINQ_REALIZED
} Pinq_type;

PINT

typedef	int	Pint;

PINT_ATTRS

typedef struct {
	Pasf	style_asf;	/* interior style asf	*/
	Pasf	style_ind_asf;	/* interior style index asf	*/
	Pasf	colr_ind_asf;	/* interior colour index asf	*/
	Pint	ind;	/* interior index	*/
	Pint_bundle	bundle;	/* interior bundle	*/
} Pint_attrs;

PINT_BUNDLE

typedef struct {
	Pint_style	style;	/* interior style	*/
	Pint	style_ind;	/* interior style index	*/
	Pint	colr_ind;	/* interior colour index	*/
} Pint_bundle;

PINT_BUNDLE_PLUS

typedef struct {
	Pint_style	style;	/* interior style	*/
	Pint	style_ind;	/* interior style index	*/
	Pgcolr	colr;	/* interior colour	*/
	Pint	shad_method;	/* shading method	*/
} Pint_bundle_plus;

PINT_FACS

typedef struct {
	Pint	num_int_styles;	/* number of interior styles	*/
	Pint_style	int_styles[5];	/* list of available interior styles	*/
	Pint_list	hatch_styles;	/* ist of available hatch styles	*/
	Pint	num_pred_inds;	/* number of predefined bundle indices	*/
} Pint_facs;

PINT_FACS_PLUS

typedef struct {
	Pint	num_int_styles;	/* number interior styles	*/
	Pint_list	int_styles[5];	/* list of available interior styles	*/
	Pint_list	hatch_styles;	/* list of available hatch styles	*/
	Pint_list	shad_methods;	/* list of available shading method	*/
	Pint	num_pred_int_inds;	/* number of predefined interior indices	*/
} Pint_facs_plus;

PINT_LIST

typedef struct {
	Pint	num_ints;	/* number of Pints in list	*/
	Pint	*ints;	/* list of integers	*/
} Pint_list;

PINT_SIZE

typedef struct {
	Pint	size_x;	/* x size	*/
	Pint	size_y;	/* y size	*/
} Pint_size;

PINT_SIZE3

typedef struct {
	Pint	size_x;	/* x size	*/
	Pint	size_y;	/* y size	*/
	Pint	size_z;	/* z size	*/
} Pint_size3;

PINT_STYLE

typedef enum {
	PSTYLE_HOLLOW,
	PSTYLE_SOLID,
	PSTYLE_PAT,
	PSTYLE_HATCH,
	PSTYLE_EMPTY
} Pint_style;

PIN_CLASS

typedef enum {
	PIN_NONE ,
	PIN_LOC ,
	PIN_STROKE ,
	PIN_VAL ,
	PIN_CHOICE ,
	PIN_PICK ,
	PIN_STRING ,
	/* Implementation dependent */
	PIN_EXPOSE = 10 ,
	PIN_RESIZE = 11 ,
	PIN_ENTER_WIN = 12 ,
	PIN_EXIT_WIN = 13
} Pin_class;

PIN_STATUS

typedef enum {
	PIN_STATUS_NONE,
	PIN_STATUS_OK,
	PIN_STATUS_NO_IN
} Pin_status;

PITEM_DATA

typedef struct {
	int	impl_dep;	/* Metafile Records	*/
	Pdata	unsupp;	/* unsupported Metafile item data	*/
} Pitem_data;

PINT_FACS_PLUS

typedef struct {
	Pint	num_int_styles;	/* number interior styles	*/
	Pint_list	int_styles[5];	/* list of available interior styles	*/
	Pint_list	hatch_styles;	/* list of available hatch styles	*/
	Pint_list	shad_methods;	/* list of available shading method	*/
	Pint	num_pred_int_inds;	/* number of predefined interior indices	*/
} Pint_facs_plus;

PLIGHT_SOURCE_REP

typedef struct {
	Pint	type;		/* light source type	*/
	union Plight_source_rep_data {
		struct Plight_source_rep_amb {
			Pgcolr	colr;
		} amb;
	
		struct Plight_source_rep_dir {
			Pgcolr	colr;
			Pvec3	dir;
		} dir;
			struct Plight_source_rep_pos {
			Pgcolr	colr;
			Ppoint3	pos;
			Pfloat	c1;
			Pfloat	c2;
		} pos;

		struct Plight_source_rep_spot {
			Pgcolr	colr;
			Ppoint3	pos;
			Pvec3	dir;
			Pfloat	concent_exp;
			Pfloat	c1;
			Pfloat	c2;
			Pfloat	spread_angle;
		} spot;
	} data;
} 	Plight_source_rep;

PLIMIT

typedef struct {
	Pfloat	x_min;	/* x min	*/
	Pfloat	x_max;	/* x max	*/
	Pfloat	y_min;	/* y min	*/
	Pfloat	y_max;	/* y max	*/
} Plimit;

PLIMIT3

typedef struct {
	Pfloat	x_min;	/* x min	*/
	Pfloat	x_max;	/* x max	*/
	Pfloat	y_min;	/* y min	*/
	Pfloat	y_max;	/* y max	*/
	Pfloat	z_min;	/* z min	*/
	Pfloat	z_max;	/* z max	*/
} Plimit3;

PLINETYPE_ADAPTABILITY

typedef enum {
	PLTA_EXACT,
	PLTA_ADAPT,
	PLTA_XADAPT,
	PLTA_XADAPT_BY_SEG
} Plinetype_adaptability;

PLINETYPE_CONTINUITY

typedef enum {
	PDPC_RESTART,
	PDPC_CONTINUOUS
} Plinetype_continuity;

PLINE_ATTRS

typedef struct {
	Pasf	type_asf;	/* linetype asf	*/
	Pasf	width_asf;	/* linewidth asf	*/
	Pasf	colr_ind_asf;	/* line colour index asf	*/
	Pint	ind;	/* line index	*/
	Pline_bundle	bundle;	/* line bundle	*/
} Pline_attrs;

PLINE_BUNDLE

typedef struct {
	Pint	type;	/* line type	*/
	Pfloat	width;	/* line width scale factor	*/
	Pint	colr_ind;	/* colour index	*/
} Pline_bundle;

PLINE_BUNDLE_PLUS

typedef struct {
	Pint	type;	/* line type	*/
	Pfloat	width;	/* linewidth scale factor	*/
	Pgcolr	colr;	/* polyline colour	*/
	Pint	shad_method;	/* polyline shading method	*/
	Pcurve_approx_crit	approx_crit;	/* curve approximation criteria data record	*/
} Pline_bundle_plus;

PLINE_FACS

typedef struct {
	Pint_list	types;	/* list of linetypes	*/
	Pint	num_widths;	/* number of available linewidths	*/
	Pfloat	nom_width;	/* nominal linewidth	*/
	Pfloat	min_width;	/* min linewidth	*/
	Pfloat	max_width;	/* max linewidth	*/
	Pint	num_pred_inds;	/* number of predefined bundle indices	*/
} Pline_facs;

PLINE_FACS_PLUS

typedef struct {
	Pint	num_types;	/* number of available linetypes	*/
	Pint_list	types;	/* list of linetypes	*/
	Pint	num_widths;	/* number of available line widths	*/
	Pfloat	nom_width;	/* nominal linewidth	*/
	Pfloat	min_width;	/* minimum linewidth	*/
	Pfloat	max_width;	/* maximum linewidth	*/
	Pint_list	shad_methods;	/* list of available shading method	*/
	Pint	num_pred_inds;	/* number of predefined bundle indices	*/
} Pline_facs_plus;

PLINE_FILL_CTRL_FLAG

typedef enum {
	PFLAG_LINE,
	PFLAG_FILL,
	PFLAG_FILL_SET
} Pline_fill_ctrl_flag;

PLOC_DATA

typedef struct {
	union Ploc_pets {

		struct Ploc_pet_r1 {
			int	impl_dep;
		} pet_r1;

		struct Ploc_pet_r2 {
			int	impl_dep;
		} pet_r2;

		struct Ploc_pet_r3 {
			int	impl_dep;
		} pet_r3;

		struct Ploc_pet_r4 {
			Pline_attrs	line_attrs;		/* polyline attributes	*/
		} pet_r4;

		struct Ploc_pet_r5 {
			Pline_fill_ctrl_flag	line_fill_ctrl_flag;	/* control flag	*/
			union Ploc_attrs {
				Pline_attrs	line_attrs;	/* polyline attributes	*/
				Pint_attrs	int_attrs;	/* interior attributes	*/
				struct Ploc_fill_set {
					Pint_attrs	int_attrs;	/* interior attributes	*/
					Pedge_attrs	edge_attrs;	/* edge attributes	*/
				} fill_set;
			} attrs;
		} pet_r5;

		struct Ploc_pet_r6 {
			int	impl_dep;
		} pet_r6;

	} pets;
} Ploc_data;

PLOC_DATA3

typedef struct {
	union Ploc3_pets {
		struct Ploc3_pet_r1 {
			int	impl_dep;
		} pet_r1;

		struct Ploc3_pet_r2 {
			int	impl_dep;
		} pet_r2;
		struct Ploc3_pet_r3 {
			int	impl_dep;
		} pet_r3;

		struct Ploc3_pet_r4 {
			Pline_attrs		line_attrs;	/* polyline attributes	*/
		} pet_r4;
		struct Ploc3_pet_r5 {
			Pline_fill_ctrl_flag	line_fill_ctrl_flag;	/* control flag	*/
			union Ploc3_attrs {
				Pline_attrs	line_attrs;	/* polyline attributes	*/
				Pint_attrs	int_attrs;	/* interior attributes	*/
				struct Ploc3_fill_set {
					Pint_attrs	int_attrs;	/* interior attributes	*/
					Pedge_attrs	edge_attrs;	/* edge attributes	*/
				} fill_set;
			} attrs;
		} pet_r5;

		struct Ploc3_pet_r6 {
			int	impl_dep;
		} pet_r6;
	} pets;
} Ploc_data3;

PMARKER_ATTRS

typedef struct {
	Pasf	type_asf;	/* marker type asf	*/
	Pasf	size_asf;	/* marker size scale factor asf	*/
	Pasf	colr_ind_asf;	/* marker colour index asf	*/
	Pint	ind;	/* marker index	*/
	Pmarker_bundle	bundle;	/* marker bundle	*/
} Pmarker_attrs;

PMARKER_BUNDLE

typedef struct {
	Pint	type;	/* marker type	*/
	Pfloat	size;	/* marker size scale factor	*/
	Pint	colr_ind;	/* colour index	*/
} Pmarker_bundle;

PMARKER_BUNDLE_PLUS

typedef struct {
	Pint	type;	/* marker type	*/
	Pfloat	size;	/* marker size scale factor	*/
	Pgcolr	colr;	/* polymarker colour	*/
} Pmarker_bundle_plus;

PMARKER_FACS

typedef struct {
	Pint_list	types;	/* list of marker types	*/
	Pint	num_sizes;	/* number of available marker sizes	*/
	Pfloat	nom_size;	/* nominal marker size	*/
	Pfloat	min_size;	/* min marker size	*/
	Pfloat	max_size;	/* max marker size	*/
	Pint	num_pred_inds;	/* number of predefined bundle indices	*/
} Pmarker_facs;

PMATRIX

typedef	Pfloat	Pmatrix[3][3];

PMATRIX3

typedef	Pfloat	Pmatrix3[4][4];

PMOD_MODE

typedef enum {
	PMODE_NIVE,
	PMODE_UWOR,
	PMODE_UQUM
} Pmod_mode;

PMORE_SIMULT_EVENTS

typedef enum {
	PSIMULT_NO_MORE,
	PSIMULT_MORE
} Pmore_simult_events;

PNUM_IN

typedef struct {
	Pint	loc;	/* locators	*/
	Pint	stroke;	/* strokes	*/
	Pint	val;	/* valuators	*/
	Pint	choice;	/* choices	*/
	Pint	pick;	/* picks	*/
	Pint	string;	/* strings	*/
} Pnum_in;

POPEN_STRUCT_STATUS

typedef enum {
	PSTRUCT_NONE,
	PSTRUCT_OPEN
	PXSTRUCT_NR_OPEN
} Popen_struct_status;

POP_MODE

typedef enum {
	POP_REQ,
	POP_SAMPLE,
	POP_EVENT
} Pop_mode;

PPARAL

typedef struct {
	Ppoint3	p;	/* point p	*/
	Ppoint3	q;	/* point q	*/
	Ppoint3	r;	/* point r	*/
} Pparal;

PPARAM_SURF_CHARS

typedef struct {
	Pint	type;		/* parametric surface characteristics type	*/
	union Pparam_surf_chars_data {
		struct Pparam_surf_isoparam {
			Pplacement	placement;	/* OVER SURFACE, BETWEEN KNOTS	*/
			Pint	num_u_curves;	/* num curve in u direction	*/
			Pint	num_v_curves;	/* num curve in v direction	*/
		} isoparam;
			struct Pparam_surf_level_mc {
			Ppoint3	origin;	/* origin point	*/
			Pvec3	dir;	/* direction vector	*/
			Pfloat_list	params;	/* parameter list	*/
		} level_mc;
	
		struct Pparam_surf_level_wc {
			Ppoint3	origin;
			Pvec3	dir;
			Pfloat_list	params;
		} level_wc;
	} data;
} Pparam_surf_chars;

PPARAM_SURF_REP

typedef struct {
	Psurf_approx_crit	approx_crit;	/* surface approximation criteria data	*/
	Pparam_surf_chars	chars_data;	/* parametric surface characteristics data	*/
} Pparam_surf_rep;

PPATH_ORDER

typedef enum {
	PORDER_TOP_FIRST,
	PORDER_BOTTOM_FIRST
} Ppath_order;

PPAT_REP

typedef struct {
	Pint_size	dims;	/* pattern's dimensions	*/
	Pint	*colr_array;	/* colour index array	*/
} Ppat_rep;

PPAT_REP_PLUS

typedef struct {
	Pint	colr_type;	/* colour type	*/
	Pcolrv_array	colrs;	/* colour array	*/
} Ppat_rep_plus;

PPICK_DATA

typedef struct {
	union Ppick_pets {

		struct Ppick_pet_r1 {
			int	impl_dep;
		} pet_r1;

	} pets;
} Ppick_data;

PPICK_DATA3

typedef struct {
	union Ppick3_pets {

		struct Ppick3_pet_r1 {
			int	impl_dep;
		} pet_r1;

	} pets;
} Ppick_data3;

PPICK_PATH

typedef struct {
	Pint	depth;	/* pick path depth	*/
	Ppick_path_elem	*path_list;	/* pick path list	*/
} Ppick_path;

PPICK_PATH_ELEM

typedef struct {
	Pint	struct _id;	/* structure identifier	*/
	Pint	pick_id;	/* pick identifier	*/
	Pint	elem_pos;	/* element position	*/
} Ppick_path_elem;

PPLACEMENT

typedef enum {
	PPLACE_UNIFORM_OVER_SURF,
	PPLACE_UNIFORM_BETWEEN_KNOTS
} Pplacement;

PPOINT

typedef struct {
	Pfloat	x;	/* x coordinate	*/
	Pfloat	y;	/* y coordinate	*/
} Ppoint;

PPOINT3

typedef struct {
	Pfloat	x;	/* x coordinate	*/
	Pfloat	y;	/* y coordinate	*/
	Pfloat	z;	/* z coordinate	*/
} Ppoint3;

PPOINT3_PTR

typedef union {
	Ppoint3	*point3;	/* pointer to 3D points	*/
	Phomo_point4	*homo_point4;	/* pointer to 4D homogeneous points	*/
} Ppoint3_ptr;

PPOINT_LIST

typedef struct {
	Pint	num_points;	/* number of Ppoints in the list	*/
	Ppoint	*points;	/* list of points	*/
} Ppoint_list;

PPOINT_LIST3

typedef struct {
	Pint	num_points;	/* number of Ppoint3s in the list	*/
	Ppoint3	*points;	/* list of points	*/
} Ppoint_list3;

PPOINT_LIST_LIST

typedef struct {
	Pint	num_point_lists;	/* number of point lists	*/
	Ppoint_list	*point_lists;	/* list of point lists	*/
} Ppoint_list_list;

PPOINT_LIST_LIST3

typedef struct {
	Pint	num_point_lists;	/* number of point lists	*/
	Ppoint_list3	*point_lists;	/* list of point lists	*/
} Ppoint_list_list3;

PPOINT_PTR

typedef union {
	Ppoint	*point;	/* pointer to 2D points	*/
	Phomo_point3	*homo_point3;	/* pointer to 3D homogeneous points	*/
} Ppoint_ptr;

PPOSTED_STRUCT

typedef struct {
	Pint	id;	/* struct id	*/
	Pfloat	disp_pri;	/* display priority	*/
} Pposted_struct;

PPOSTED_STRUCT_LIST

typedef struct {
	Pint	num_postings;	/* number of structures postings	*/
	Pposted_struct	*postings;	/* list of postings	*/
} Pposted_struct_list;

PPROJ_TYPE

typedef enum {
	PTYPE_PARAL,
	PTYPE_PERSPECT
} Pproj_type;

PPR_SWITCH

typedef enum {
	PPR_OFF,
	PPR_ON,
	PPR_ACT
} Ppr_switch;

PRATIONALITY

typedef enum {
	PB_SPLINE_RATIONAL,
	PB_SPLINE_NON_RATIONAL
} Prationality;

PRECT

typedef struct {
	Ppoint	p;	/* point p	*/
	Ppoint	q;	/* point q	*/
} Prect;

PREFL_PROP

typedef struct {
	Pint		type;	/* reflectance property type	*/
	union Prefl_prop_data {
		struct Prefl_prop_simple_refl {
			Pfloat	amb_coeff;	/* ambient reflection coefficient	*/
			Pfloat	diff_coeff;	/* diffuse reflection coefficient	*/
			Pfloat	spec_coeff;	/* specular reflection coefficient	*/
			Pgcolr	spec_colr;	/* specular colour	*/
			Pfloat	spec_exp;	/* specular exponent	*/
		} simple_refl;
	} data;
} Prefl_prop;

PREFL_REP

typedef struct {
	Pint		refl_model;	/* reflectance models	*/
	Prefl_prop		refl_prop;	/* reflectance properties	*/
} Prefl_rep;

PREF_FLAG

typedef enum {
	PFLAG_DEL,
	PFLAG_KEEP
} Pref_flag;

PREGEN_FLAG

typedef enum {
	PFLAG_POSTPONE,
	PFLAG_PERFORM
} Pregen_flag;

PREL_PRI

typedef enum {
	PPRI_HIGHER,
	PPRI_LOWER
} Prel_pri;

PRGB

typedef struct {
	Pfloat	red;	/* red intensity	*/
	Pfloat	green;	/* green intensity	*/
	Pfloat	blue;	/* blue intensity	*/
} Prgb;

PSEARCH_DIR

typedef enum {
	PDIR_BACKWARD,
	PDIR_FORWARD
} Psearch_dir;

PSEARCH_STATUS

typedef enum {
	PSEARCH_STATUS_FAILURE,
	PSEARCH_STATUS_SUCCESS
} Psearch_status;

PSET_OF_FILL_AREA_SETS_DATA

typedef struct {
	Pint	num_sets;	/* number of fill area sets	*/
	Pint	num_data_per_facet;	/* number of data values per facet	*/
	Pcolrv_ptr	facet_colrvs;	/* list of facet colours	*/
	Pvec3	*facet_norms;	/* list of facet normals	*/
	Pfloat	*facet_data;	/* list of facet data	*/
} Pset_of_fill_area_sets_data;

PSOURCE_SELECT

typedef enum {
	PSOURCE_SELECT_COLR_ASPECT,
	PSOURCE_SELECT_VERT_COLR,
	PSOURCE_SELECT_VERT_DATA,
	PSOURCE_SELECT_FACET_COLR,
	PSOURCE_SELECT_FACET_DATA
} Psource_select;

PSOURCE_SELECT_LIST

typedef struct {
	Pint	num_selectors;	/* input buffer size	*/
	Psource_select	*selectors;	/* initial editing position	*/
} Psource_select_list;

PSTORE

typedef	void	*Pstore;

PSTRING_DATA

typedef struct {
	Pint	in_buf_size;	/* input buffer size	*/
	Pint	init_pos;	/* initial editing position	*/
	union Pstring_pets {
		struct Pstring_pet_r1 {
			int	impl_dep;
		} pet_r1;
	} pets;
} Pstring_data;

PSTRING_DATA3

typedef struct {
	Pint	in_buf_size;		/* input buffer size	*/
	Pint	init_pos;		/* initial editing position	*/
	union Pstring3_pets {
		struct Pstring3_pet_r1 {
			int	impl_dep;
		} pet_r1;
	} pets;
} Pstring_data3;

PSTROKE_DATA

typedef struct {
	Pint	in_buf_size;		/* input buffer size	*/
	Pint	init_pos;			/* initial editing position	*/
	Pfloat	x_interval;			/* x interval	*/
	Pfloat	y_interval;			/* y interval	*/
	Pfloat	time_interval;		/* time interval	*/
	union Pstroke_pets {
		struct Pstroke_pet_r1 {
			int	impl_dep;
		} pet_r1;

		struct Pstroke_pet_r2 {
			int	impl_dep;
		} pet_r2;

		struct Pstroke_pet_r3 {
			Pmarker_attrs	marker_attrs;	/* marker attributes	*/
		} pet_r3;

		struct Pstroke_pet_r4 {
			Pline_attrs		line_attrs;	/* line attributes	*/
		} pet_r4;

	} pets;
} Pstroke_data;

PSTROKE_DATA3

typedef struct {
	Pint	in_buf_size;		/* input buffer size	*/
	Pint	init_pos;			/* initial editing position	*/
	Pfloat	x_interval;			/* x interval	*/
	Pfloat	y_interval;			/* y interval	*/
	Pfloat	z_interval;			/* z interval	*/
	Pfloat	time_interval;		/* time interval	*/
	union Pstroke3_pets {

		struct Pstroke3_pet_r1 {
			int	impl_dep;
		} pet_r1;

		struct Pstroke3_pet_r2 {
			int	impl_dep;
		} pet_r2;

		struct Pstroke3_pet_r3 {
			Pmarker_attrs	marker_attrs;	/* marker attributes	*/
		} pet_r3;

		struct Pstroke3_pet_r4 {
			Pline_attrs		line_attrs;	/* line attributes	*/
		} pet_r4;

	} pets;
} Pstroke_data3;

PSTRUCT_NET_SOURCE

typedef enum {
	PNET_CSS,
	PNET_AR
} Pstruct_net_source;

PSTRUCT_ST

typedef enum {
	PSTRUCT_ST_STCL,
	PSTRUCT_ST_STOP,
	PSTRUCT_ST_PIPO
	PXSTRUCT_ST_STNOP = PSTRUCT_ST_PIPO
} Pstruct_st;

PSTRUCT_STATUS

typedef enum {
	PSTRUCT_STATUS_NONE_EXISTENT,
	PSTRUCT_STATUS_EMPTY,
	PSTRUCT_STATUS_NOT_EMPTY
} Pstruct_status;

PSURF_APPROX_CRIT

typedef struct {
	Pint	type;		/* surface approximation type	*/
	union Psurf_approx_crit_data {
		struct Psurf_approx_const_param_subd {
			Pint	u_count;
			Pint	v_count;
		} const_param_subd;
		
		struct Psurf_approx_chordal_size_wc {
			Pfloat	u_approx;
			Pfloat	v_approx;
		} chordal_size_wc;
		
		struct Psurf_approx_chordal_size_npc {
			Pfloat	u_approx;
			Pfloat	v_approx;
		} chordal_size_npc;
		
		struct Psurf_approx_chordal_size_dc {
			Pfloat	u_approx;
			Pfloat	v_approx;
		} chordal_size_dc;
		
		struct Psurf_approx_planar_dev_wc {
			Pfloat	approx;
		} planar_dev_wc;
		
		struct Psurf_approx_planar_dev_npc {
			Pfloat	approx;
		} planar_dev_npc;
		
		struct Psurf_approx_planar_dev_dc {
			Pfloat	approx;
		} planar_dev_dc;

		struct Psurf_approx_rel_wc {
			Pfloat	approx;
		} rel_wc;
				struct Psurf_approx_rel_npc {
			Pfloat	approx;
		} rel_npc;
		
		struct Psurf_approx_rel_dc {
			Pfloat	approx;
		} rel_dc;
	} data;
} Psurf_approx_crit;

PSURF_COLR_SPLINE

typedef struct {
	Pint	u_order;	/* u spline order	*/
	Pint	v_order;	/* v spline order	*/
	Pfloat_list	u_knots;	/* list of u knot values	*/
	Pfloat_list	v_knots;	/* list of v knot values	*/
	Pint	colr_type;	/* colour type	*/
	Pcolr_ctrl_point_array	colrs;	/* array of colour control points	*/
} Psurf_colr_spline;

PSURF_DATA_SPLINE

typedef struct {
	Pint	u_order;	/* u spline order	*/
	Pint	v_order;	/* v spline order	*/
	Pfloat_list	u_knots;	/* list of u knot values	*/
	Pfloat_list	v_knots;	/* list of v knot values	*/
	Pdata_ctrl_point_array	data_points;	/* array of data control points	*/
} Psurf_data_spline;

PSURF_DATA_SPLINE_LIST

typedef struct {
	Pint	num_data_splines;	/* number of data splines	*/
	Psurf_data_spline	*data_splines;	/* lists of data splines	*/
} Psurf_data_spline_list;

PSURF_GEOM_SPLINE

typedef struct {
	Pint	u_order;	/* u spline order	*/
	Pint	v_order;	/* v spline order	*/
	Pfloat_list	u_knots;	/* list of u knot values	*/
	Pfloat_list	v_knots;	/* list of v knot values	*/
	Pctrl_point3_array	ctrl_points;	/* array of control points	*/
} Psurf_geom_spline;

typedef struct {
	Pint method;		/* test method	*/
	union_Ptest_data {		/* level of detail	*/

		struct Ptest_dist_3 {		/* succeed if point is within [near,far] interval	*/
			Ppoint3	point;	/* point within object (MC)	*/
			Pfloat	near_dist;	/* near distance (VRC)	*/
			Pfloat	far_dist;	/* far distance (VRC)	*/
		} test_dist_3;

		struct Ptest_extent_3 {
			Plimit3	paral;	/* extent parallelopiped (MC)	*/
			Ptest_comp	relation;	/* test relation	*/
			Pfloat	threshold;	/* threshold value (DC)	*/
		} test_extent_3;
		struct Ptest_bounds_extent_3 {
			Plimit3	paral;	/* extent rectangle (MC)	*/
			Pclip_cond	cond;	/* test condition	*/
		} test_bounds_extent_3;

		struct Ptest_bounds_sphere_3 {
			Ppoint3	centre;	/* sphere centre (MC)	*/
			Pfloat	radius;	/* sphere radius (MC)	*/
			Pclip_cond	cond;	/* test condition	*/
		} test_bounds_sphere_3;

		struct Ptest_bounds_3 {
			Ppoint_list_list3	point_lists;	/* test object (MC)	*/
			Pclip_cond	cond;	/* test condition	*/
		} test_bounds_3;
	} test_data;
} Ptest;

PSYS_ST

typedef enum {
	PSYS_ST_PHCL,
	PSYS_ST_PHOP
} Psys_st;

PTEST_COMP

typedef enum {
	PTESTCOMP_IS_EQUAL,
	PTESTCOMP_IS_NOT_EQUAL,
	PTESTCOMP_IS_GREATER,
	PTESTCOMP_IS_LESS,
	PTESTCOMP_IS_GREATER_OR_EQUAL,
	PTESTCOMP_IS_LESS_OR_EQUAL
} Ptest_comp;

PTEXT_ALIGN

typedef struct {
	Phor_text_align	hor;	/* horizontal component	*/
	Pvert_text_align	vert;	/* vertical component	*/
} Ptext_align;

PTEXT_BUNDLE

typedef struct {
	Pint	font;	/* text font	*/
	Ptext_prec	prec;	/* text precision	*/
	Pfloat	char_expan;	/* character expansion factor	*/
	Pfloat	char_space;	/* character spacing	*/
	Pint	colr_ind;	/* text colour index	*/
} Ptext_bundle;

PTEXT_BUNDLE_PLUS

typedef struct {
	Pint	font;	/* text font	*/
	Ptext_prec	precision;	/* text precision	*/
	Pfloat	char_expan;	/* character expansion factor	*/
	Pfloat	char_space;	/* character spacing	*/
	Pgcolr	colr;	/* text colour	*/
} Ptext_bundle_plus;

PTEXT_FACS

typedef struct {
	Pint	num_font_precs;	/* number of fonts and precisions	*/
	Ptext_font_prec	*font_precs;	/* list of fonts and precisions	*/
	Pint	num_char_hts;	/* number of character heights	*/
	Pfloat	min_char_ht;	/* minimum heights	*/
	Pfloat	max_char_ht;	/* maximum heights	*/
	Pint	num_char_expans;	/* number of character expansion factors	*/
	Pfloat	min_char_expan;	/* minimum expansion factor	*/
	Pfloat	max_char_expan;	/* maximum expansion factor	*/
	Pint	num_pred_inds;	/* number of predefined bundle indices	*/
} Ptext_facs;

PTEXT_FONT_PREC

typedef struct {
	Pint	font;	/* text font	*/
	Ptext_prec	precision;	/* text precision	*/
} Ptext_font_prec;

PTEXT_PATH

typedef enum {
	PPATH_RIGHT,
	PPATH_LEFT,
	PPATH_UP,
	PPATH_DOWN
} Ptext_path;

PTEXT_PREC

typedef enum {
	PPREC_STRING,
	PPREC_CHAR,
	PPREC_STROKE
} Ptext_prec;

PTRIM_CURVE

typedef struct {
	Pcurve_approx_crit	approx_crit;	/* trimming curve approximation.data record	*/
	Pvis_flag	visibility_flag;	/* curve visibility flag	*/
	Pint	order;	/* curve order	*/
	Pfloat_list	knots;	/* curve knot vector	*/
	Pfloat	low_limit;	/* curve parameter range lower limit	*/
	Pfloat	high_limit;	/* curve parameter range upper limit	*/
	Pctrl_point_list	ctrl_points;	/* curve control points	*/
} Ptrim_curve;

PTRIM_CURVE_LOOP

typedef struct {
	Pint	num_trim_curves;	/* number of trimming curves	*/
	Ptrim_curve	*trim_curves;	/* list of trimming curves forming a closed loop	*/
} Ptrim_curve_loop;

PTRIM_CURVE_LOOP_LIST

typedef struct {
	Pint	num_trim_loops;	/* number of trimming curve loops	*/
	Ptrim_curve_loop	*trim_loops;	/* array of trimming curve loops	*/
} Ptrim_curve_loop_list;

PTRI_SET_DATA

typedef struct {
	Pint	num_sets;	/* number of triangle sets	*/
	Pint	num_data_per_facet;	/* number of data values per facet	*/
	Pcolrv_ptr	facet_colrvs;	/* list of facet colours	*/
	Pvec3	*facet_norms;	/* list of facet normals	*/
	Pfloat	*facet_data;	/* list of facet data	*/
} Ptri_set_data;

PUPD_ST

typedef enum {
	PUPD_NOT_PEND,
	PUPD_PEND
} Pupd_st;

PVAL_DATA

typedef struct {
	Pfloat	low_value;		/* low value of valuator range	*/
	Pfloat	high_value;		/* high value of valuator range	*/
	union Pval_pets {
		struct Pval_pet_r1 {
			char	*string;
		} pet_r1;
	} pets;
} Pval_data;

PVAL_DATA3

typedef struct {
	Pfloat	low_value;		/* low value of valuator range	*/
	Pfloat	high_value;		/* high value of valuator range	*/
	union Pval3_pets {

		struct Pval3_pet_r1 {
			char	*string;
		} pet_r1;

	} pets;
} Pval_data3;

PVEC

typedef struct {
	Pfloat	delta_x;	/* delta x value	*/
	Pfloat	delta_y;	/* delta y value	*/
} Pvec;

PVEC3

typedef struct {
	Pfloat	delta_x;	/* delta x value	*/
	Pfloat	delta_y;	/* delta y value	*/
	Pfloat	delta_z;	/* delta z value	*/
} Pvec3;

PVERTEX3_ARRAY

typedef struct {
	Pint_size	dims;	/* dimensions of vertex array	*/
	Pint	num_data_per_vertex;	/* number of data values per vertex	*/
	Ppoint3	*vertex_points;	/* array of vertex points	*/
	Pcolrv_ptr	vertex_colrvs;	/* array of vertex colours	*/
	Pvec3	*vertex_norms;	/* array of vertex normals	*/
	Pfloat	*vertex_data;	/* array of vertex data lists	*/
} Pvertex3_array;

PVERTEX3_LIST

typedef struct {
	Pint	num_vertices;	/* number of vertices	*/
	Pint	num_data_per_vertex;	/* number of data values per vertex	*/
	Ppoint3	*vertex_points;	/* list of vertex points	*/
	Pcolrv_ptr	vertex_colrvs;	/* list of vertex colours	*/
	Pvec3	*vertex_norms;	/* list of vertex normals	*/
	Pfloat	*vertex_data;	/* list of vertex data lists	*/
} Pvertex3_list;

PVERTEX3_SET

typedef struct {
	Pint	num_lists;	/* number of vertex lists	*/
	Pvertex3_list	*vertices;	/* list of vertex lists	*/
} Pvertex3_set;

PVERTEX_ARRAY

typedef struct {
	Pint_size	dims;	/* dimensions of vertex array	*/
	Pint	num_data_per_vertex;	/* number of data values per vertex	*/
	Ppoint	*vertex_points;	/* array of vertex points	*/
	Pcolrv_ptr	vertex_colrvs;	/* array of vertex colours	*/
	Pvec3	*vertex_norms;	/* array of vertex normals	*/
	Pfloat	*vertex_data;	/* array of vertex data lists	*/
} Pvertex_array;

PVERTEX_IND_TRIPLET

typedef	Pint	Pvertex_ind_triplet[3];

PVERTEX_IND_TRIPLET_LIST

typedef struct {
	Pint	num_vertex_ind_triplets;
	Pvertex_ind_triplet	*vertex_ind_triplets;
} Pvertex_ind_triplet_list;

PVERTEX_LIST

typedef struct {
	Pint	num_vertices;	/* number of vertices	*/
	Pint	num_data_per_vertex;	/* number of data values per vertex	*/
	Ppoint	*vertex_points;	/* list of vertex points	*/
	Pcolrv_ptr	vertex_colrvs;	/* list of vertex colours	*/
	Pvec3	*vertex_norms;	/* list of vertex normals	*/
	Pfloat	*vertex_data;	/* list of vertex data lists	*/
} Pvertex_list;

PVERTEX_SET

typedef struct {
	Pint	num_lists;	/* number of vertex lists	*/
	Pvertex_list	*vertices;	/* list of vertex lists	*/
} Pvertex_set;

PVERT_TEXT_ALIGN

typedef enum {
	PVERT_NORM,
	PVERT_TOP,
	PVERT_CAP,
	PVERT_HALF,
	PVERT_BASE,
	PVERT_BOTTOM
} Pvert_text_align;

PVIEW_MAP

typedef struct {
	Plimit	win;	/* window limits	*/
	Plimit	proj_vp;	/* projection viewport limits	*/
} Pview_map;

PVIEW_MAP3

typedef struct {
	Plimit	win;	/* window limits	*/
	Plimit3	proj_vp;	/* projection viewport limits	*/
	Pproj_type	proj_type;	/* projection type	*/
	Ppoint3	proj_ref_point;	/* projection reference point	*/
	Pfloat	view_plane;	/* view plane distance	*/
	Pfloat	back_plane;	/* back plane distance	*/
	Pfloat	front_plane;	/* front plane distance	*/
} Pview_map3;

PVIEW_REP

typedef struct {
	Pmatrix	ori_matrix;	/* orientation matrix	*/
	Pmatrix	map_matrix;	/* mapping matrix	*/
	Plimit	clip_limit;	/* clipping limits	*/
	Pclip_ind	xy_clip;	/* X-Y clipping indicator	*/
} Pview_rep;

PVIEW_REP3

typedef struct {
	Pmatrix3	ori_matrix;	/* orientation matrix	*/
	Pmatrix3	map_matrix;	/* mapping matrix	*/
	Plimit3	clip_limit;	/* clipping limits	*/
	Pclip_ind	xy_clip;	/* X-Y clipping indicator	*/
	Pclip_ind	back_clip;	/* back clipping indicator	*/
	Pclip_ind	front_clip;	/* front clipping indicator	*/
} Pview_rep3;

PVISUAL_ST

typedef enum {
	PVISUAL_ST_CORRECT,
	PVISUAL_ST_DEFER,
	PVISUAL_ST_SIMULATED
} Pvisual_st;

PVIS_FLAG

typedef enum {
	PVIS_OFF,
	PVIS_ON
} Pvis_flag;

PWS_CAT

typedef enum {
	PCAT_OUT,
	PCAT_IN,
	PCAT_OUTIN,
	PCAT_MO,
	PCAT_MI
} Pws_cat;

PWS_CLASS

typedef enum {
	PCLASS_VEC,
	PCLASS_RASTER,
	PCLASS_OTHER
} Pws_class;

PWS_DEP_IND

typedef enum {
	PWS_INDEP,
	PWS_DEP
} Pws_dep_ind;

PWS_ST

typedef enum {
	PWS_ST_WSCL,
	PWS_ST_WSOP
} Pws_st;

PWS_ST_TABLES

typedef struct {
	Pint	line_bundles;	/* maximum number of polyline table entries	*/
	Pint	mark_bundles;	/* maximum number of polymarker table entries	*/
	Pint	text_bundles;	/* maximum number of text table entries	*/
	Pint	int_bundles;	/* maximum number of interior table entries	*/
	Pint	edge_bundles;	/* maximum number of edge table entries	*/
	Pint	pat_reps;	/* maximum number of pattern table entries	*/
	Pint	colr_reps;	/* maximum number of colour table entries	*/
	Pint	view_reps;	/* maximum number of view table entries	*/
} Pws_st_tables;

PWS_ST_TABLES_PLUS

typedef struct {
	Pint	data_map_rep;	/* maximum number of data mapping bundles	*/
	Pint	refl_rep;		/* maximum number of reflectance bundles	*/
	Pint	param_surf_rep;	/* maximum number of parametric surface bundles	*/
	Pint	light_source_rep;	/* maximum number of light sources table entries	*/
	Pint	depth_cue_rep;	/* maximum number of depth cue table entries	*/
	Pint	colr_map_rep;	/* max. number of colour mappping table entries	*/
} Pws_st_tables_plus;

PXDISP_METHOD

typedef enum {
	PXVIEW_DBUFF_OFF,
	PXVIEW_DBUFF_ON
} Pxdisp_method;

PXEXTENDED_VIEW_REP

typedef struct	{
	Pint_style	back_flag;	/* view background flag PSTYLE_EMPTY or PSTYLE_SOLID	*/
	Pgcolr	back_colr;	/* view background colour	*/
	Pedge_flag	border_flag;	/* view border flag	*/
	Pgcolr	border_colr;	/* view border colour	*/
	Pfloat	border_width;	/* view border width	*/
	Pint	border_type;	/* view border type	*/
} Pxextended_view_rep;

PXHIGHL_FACS

typedef struct {
	Pxsupp_flag	colr;	/* color support flag	*/
	Pxsupp_flag	linestyle;	/* linestyle support flag	*/
	Pxsupp_flag	blink;	/* blink support flag	*/
	Pxsupp_flag	intensity;	/* intensity support flag	*/
	Pint	num_flags;	/* total number of supported flags	*/
} Pxhighl_facs;

PXHIGHL_METHOD

typedef enum {
	PXHLT_COLR,
	PXHLT_TYPE,
	PXHLT_BLINK,
	PXHLT_INTENSITY
} Pxhighl_method;

PXHIGHL_REP

typedef struct {
	Pxhighl_method	method;	/* highlight method	*/
	Pint	style;	/* style index	*/
} Pxhighl_rep;

PXMK_CHAR

typedef struct {
	Pint	font;	/* font	*/
	Pfloat	height;	/* character height	*/
	Pfloat	exp_factor;	/* expansion factor	*/
	Pfloat	horizontal;	/* normalized horizontal justification	*/
	Pfloat	vertical;	/* normalized vertical justification	*/
	Pvec	up_vec;	/* character up vector	*/
	Ppoint	position;	/* character position	*/
	Pint	character;	/* character code (ASCII)	*/
} Pxmk_char;

PXMK_CHAR_LIST

typedef struct {
	Pint	num_xmk_chars;	/* number of Pxmk_chars in the list	*/
	Pxmk_char	*xmk_chars;	/* list of xmk_chars	*/
} Pxmk_char_list;

PXNON_DEST_FACS

typedef struct {
	Pint	mask;	/* default plane write mask	*/
	Pint	num_overlay;	/* number of overlay planes	*/
	Pint	num_underlay;	/* number of underlay planes	*/
	Pxsupp_flag	comp_flag;	/* complement mode support flag	*/
} Pxnon_dest_facs;

PXOPACITY

typedef enum {
	PXOPACITY_OFF,
	PXOPACITY_ON
} Pxopacity;

PXOUTLINE

typedef enum {
	PXOUTLINE_OFF,
	PXOUTLINE_ON
} Pxoutline;

PXOVERLAY

typedef enum {
	PXOVERLAY_NORMAL,
	PXOVERLAY_OVER,
	PXOVERLAY_UNDER
} Pxoverlay;

PXPDEV_TYPE

typedef enum {
	PXPDEV_BUTTON = 4,
	PXPDEV_KEY = 6
} Pxpdev_type;

PXPICK_METHOD

typedef enum {
	PXPICK_FIRST,
	PXPICK_LAST,
	PXPICK_FRONT,
	PXPICK_BACK,
	PXPICK_NEAREST,
	PXPICK_ALL, 
	PXPICK_BEST
} Pxpick_method;

PXPICK_ORDER

typedef enum {
	PXLOW_TO_HIGH,
	PXHIGH_TO_LOW
} Pxpick_order;

PXPICK_PATH_LIST

typedef struct {
	Pint	num_paths;	/* count of paths	*/
	Ppick_path	*paths;	/* pick paths	*/
} Pxpick_path_list;

PXPIXEL_FACS

typedef struct {
	Pxsupp_flag	pixl_save;	/* pixel save support flag	*/
	Pxsupp_flag	pixl_restore;	/* pixel restore support flag	*/
	Pxsupp_flag	pixl_release;	/* pixel release support flag	*/
	Pxsupp_flag	pixl_paste;	/* pixel paste support flag	*/
	Pxsupp_flag	pixl_write;	/* pixel write support flag	*/
	Pint	num_flags;	/* total number of supported flags	*/
	Pint	num_blocks;	/* max number pixel block save areas	*/
} Pxpixel_facs;

PXREGION_DST

typedef struct {
	Pxregion_type region_type;
	union {
		Pint	view_ind;
		Ppoint	point;
	} region;
} Pxregion_dst;

PXREGION_SRC

typedef struct {
	Pxregion_type	region_type;	/* type of region	*/
	union {
		Pint		view_ind;
		Plimit		rect;
	} region;			/* region	*/
} Pxregion_src; 

PXREGION_TYPE

typedef enum {
	PXREGION_VIEW_IND,	/* use the clip limit of the view associated	*/
	PXREGION_NPC,		/* use a NPC rectangle or point	*/
	PXREGION_DC		/* use a DC  rectangle or point	*/
} Pxregion_type;

PXSTRUCT_MODE

typedef enum {
	PXSTRUCT_LAST_ELEM,
	PXSTRUCT_BEGINNING,
	PXSTRUCT_FIRST_ELEM
} Pxstruct_mode;

PXSUPP_FLAG

typedef enum {
	PXNO_SUPPORT,
	PXSUPPORT
} Pxsupp_flag;

PXTEMPORARY

typedef enum {
	PXPERMANENT,
	PXTEMPORARY
} Pxtemporary;

PXTRIG_ACTION

typedef enum {
	PXTACT_BREAK,
	PXTACT_COMPLETION,
	PXTACT_BACKSPACE,
	PXTACT_KILL,
	PXTACT_REPLACE,
	PXTACT_LEFT,
	PXTACT_RIGHT,
	PXTACT_FIRST,
	PXTACT_LAST,
	PXTACT_LAST_COMPLETION,
	PXTACT_DELETE,
	PXTACT_INSERT
} Pxtrig_action;

PXTRIG_LIST

typedef struct {
	Pint	num_triggers;
	Pxtrig_spec	*triggers;
} Pxtrig_list;

PXTRIG_SPEC

typedef struct {
	Pxpdev_type	device;
	Pint		dev_num;
	Pxtrig_type		trig_type;
		union {
			struct {
				Pint	low_val;
				Pint	high_val;
			} inclusive;
		} trig_data;
} Pxtrig_spec;

PXTRIG_TYPE

typedef enum {
	PXTRIG_INCLUSIVE
} Pxtrig_type;

PXUPD_METHOD

typedef enum {
	PXQUT_NONE,
	PXQUT_CLOSE_NO_TRAVERSAL,
	PXQUT_CLOSE_TRAVERSAL,
	PXQUT_EDIT_NO_TRAVERSAL,
	PXQUT_EDIT_TRAVERSAL
} Pxupd_method;

PXVIEW_ACTIV_FLAG

typedef enum	{
	PXVIEW_ACTIV_OFF,
	PXVIEW_ACTIV_ON
} Pxview_activ_flag;

PXVIEW_ATTRS

typedef struct {
	Pint	plane_mask;	/* plane write mask	*/
	Pxoverlay	overlay;	/* overlay, underlay, or normal	*/
	Pint	disp_dev;	/* view's display device	*/
} Pxview_attrs;

PXVIEW_IND

typedef enum {
	PXVIEW_ACTIVE,
	PXVIEW_INACTIVE
} Pxview_ind;

PXVIEW_REP

typedef struct {
	Pmatrix	ori_matrix;	/* orientation matrix	*/
	Pmatrix	map_matrix;	/* mapping matrix	*/
	Plimit	clip_limit;	/* clipping limits	*/
	Pclip_ind	xy_clip;	/* X-Y clipping indicator	*/
	Pxopacity	opacity;	/* opacity indicator	*/
	Pint	back_colr;	/* background color for opaque views	*/
	Pxoutline	outline;	/* outline indicator	*/
	Pint	outline_colr;	/* outline color	*/
	Pxtemporary	temporary;	/* temporary view indicator	*/
	Pxview_ind	active;	/* active view indicator	*/
} Pxview_rep;

PXVIEW_REP3

typedef struct {
	Pmatrix3	ori_matrix;	/* orientation matrix	*/
	Pmatrix3	map_matrix;	/* mapping matrix	*/
	Plimit3	clip_limit;	/* clipping limits	*/
	Pclip_ind	xy_clip;	/* X-Y clipping indicator	*/
	Pclip_ind	back_clip;	/* back clipping indicator	*/
	Pclip_ind	front_clip;	/* front clipping indicator	*/
	Pxopacity	opacity;	/* opacity indicator	*/
	Pint	back_colr;	/* background color for opaque views	*/
	Pxoutline	outline;	/* outline indicator	*/
	Pint	outline_colr;	/* outline color	*/
	Pxtemporary	temporary;	/* temporary view indicator	*/
	Pxview_ind	active;	/* active view indicator	*/
} Pxview_rep3;

PXWCHAR

typedef	unsigned short	Pxwchar;

G5G - GPHIGS V6.0 - GPHIGS QUICK REFERENCE QUIDE


Previous Next Up Title Contents Top Library