/*************************************************************************

	formZ by autodessys, Inc.
	Copyright c 1994 autodessys, Inc.  All rights reserved.
	
	
	File :	fz_proj_api.h
	
	By :	David E. Kropp
	
	Created on :  		16 September 1994
	Last Updated on :  	16 September 1994
	
	Description :	
					
***************************************************************************/

#ifndef __FORMZ_PROJ_H
#define __FORMZ_PROJ_H 1

#include "fzrt_api.h"

#include "fzpl_plugin.h"

#include "fz_type_api.h"

#ifdef __cplusplus
extern "C" {
#endif

/* formZ Project Function Set */
/* @doc EXTERNAL MODEL */

/********************************************************************************************************

	@module	

	@desc	formZ project management functions. These functions are used to access data and perform operations on projects.

	@toc	proj

*********************************************************************************************************/



/********************************************************************************************************

	@enum	

	@desc	Defines the level for project information. The level determines the context of when and under what context information is accessed. 
			The current context is determined by the active widow (formZ Project - Modeling, formZ Project - Drafting, Imager etc..).
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	cmds_cbak,proj

*********************************************************************************************************/
typedef enum fz_proj_level_enum
{	FZ_PROJ_LEVEL_ALL = 0,		/*	@emem Indicates project level */
	FZ_PROJ_LEVEL_MODEL,   		/*	@emem Indicates model project level	*/
	FZ_PROJ_LEVEL_MODEL_WIND,   /*	@emem Indicates model window level	*/
	FZ_PROJ_LEVEL_DRAFT,   		/*	@emem Indicates draft project level	*/
	FZ_PROJ_LEVEL_DRAFT_WIND,   /*	@emem Indicates draft window level	*/
	FZ_PROJ_LEVEL_MAX
} fz_proj_level_enum;


/********************************************************************************************************

	@enum	

	@desc	English base units. 
			Used by fz_proj_units_get_parm_data and fz_proj_units_set_parm_data 
			when the parameter id is FZ_UNITS_PARM_ENGLISH_BASE.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum  fz_unit_english_enum {
	FZ_UNIT_ENGLISH_INCH = 0,				/* @emem	English inch base unit.  		*/
	FZ_UNIT_ENGLISH_FOOT, 					/* @emem	English foot base unit.  		*/

	FZ_UNIT_ENGLISH_MAX
} fz_unit_english_enum;

/********************************************************************************************************

	@enum	

	@desc	Metric base units. 
			Used by fz_proj_units_get_parm_data and fz_proj_units_set_parm_data 
			when the parameter id is FZ_UNITS_PARM_METRIC_BASE.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum  fz_unit_metric_enum {
	FZ_UNIT_METRIC_MILLIMETER = 0,			/* @emem	Metric millimeter base unit.  		*/
	FZ_UNIT_METRIC_CENTIMETER,				/* @emem	Metric centimeter base unit.  		*/
	FZ_UNIT_METRIC_DECIMETER,				/* @emem	Metric decimeter base unit.  		*/
	FZ_UNIT_METRIC_METER,					/* @emem	Metric meter base unit.  		*/

	FZ_UNIT_METRIC_MAX
} fz_unit_metric_enum;

/********************************************************************************************************

	@enum	

	@desc	The display format of numeric values. 
			Used by fz_proj_units_get_parm_data and fz_proj_units_set_parm_data 
			when the parameter id is FZ_UNIT_PARM_DISPLAY_TYPE.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum  fz_unit_num_disp_enum {
	FZ_UNIT_NUM_DISP_ARCH = 0,		/* @emem	Architectural.	*/
	FZ_UNIT_NUM_DISP_ENG, 			/* @emem	Engineering.	*/
	FZ_UNIT_NUM_DISP_FRAC, 			/* @emem	Fractional.	*/
	FZ_UNIT_NUM_DISP_DEC,			/* @emem	Decimal.	*/

	FZ_UNIT_NUM_DISP_MAX
} fz_unit_num_disp_enum;

/********************************************************************************************************

	@enum	

	@desc	The display format of angle values. 
			Used by fz_proj_units_get_parm_data and fz_proj_units_set_parm_data 
			when the parameter id is FZ_UNITS_PARM_ANG_TYPE.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum  fz_unit_ang_disp_enum {
	FZ_UNIT_ANG_DISP_DEG = 0,		/* @emem	Decimal degrees.	*/
	FZ_UNIT_ANG_DISP_DMS,			/* @emem	Deg Min Sec.	*/
	FZ_UNIT_ANG_DISP_SUR,			/* @emem	Surveyor.	*/
	FZ_UNIT_ANG_DISP_RAD,			/* @emem	Radians.	*/

	FZ_UNIT_ANG_DISP_MAX
} fz_unit_ang_disp_enum;

/********************************************************************************************************

	@enum	

	@desc	The location of the 0 degree angle.
			Used by fz_proj_units_get_parm_data and fz_proj_units_set_parm_data 
			when the parameter id is FZ_UNITS_PARM_ANG_ORIENTATION.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum  fz_unit_ang_orient_enum {
	FZ_UNIT_ANG_ORIENT_EAST = 0,	/* @emem	3 O'Clock (East).	*/
	FZ_UNIT_ANG_ORIENT_NORTH,		/* @emem	12 O'Clock (North).	*/
	FZ_UNIT_ANG_ORIENT_WEST,		/* @emem	9 O'Clock (West).	*/
	FZ_UNIT_ANG_ORIENT_SOUTH,		/* @emem	6 O'Clock (South).	*/

	FZ_UNIT_ANG_ORIENT_MAX
} fz_unit_ang_orient_enum;

/********************************************************************************************************

	@enum	

	@desc	The measurement method of angles.<nl>
			An angle can be measured in two ways: one in the positive and one in the negative direction. 
			The (absolute values of the) two angles add up to 360 degrees. 
			Used by fz_proj_units_get_parm_data and fz_proj_units_set_parm_data 
			when the parameter id is FZ_UNITS_PARM_ANG_MEASUREMENT_METHOD.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum  fz_unit_ang_measure_enum {
	FZ_UNIT_ANG_MEASURE_SMALL = 0,		/* @emem	Echoes the small angle (less than 180 degrees).	*/
	FZ_UNIT_ANG_MEASURE_LARGE,			/* @emem	Echoes the large angle (greater than 180 degrees).	*/
	FZ_UNIT_ANG_MEASURE_POSITIVE,		/* @emem	Echoes the positive angle, regardless of size.	*/
	FZ_UNIT_ANG_MEASURE_NEGATIVE,		/* @emem	Echoes the negative angle, regardless of size.	*/

	FZ_UNIT_ANG_MEASURE_MAX
} fz_unit_ang_measure_enum;

/********************************************************************************************************

	@enum	

	@desc	Working unit parameters. 
			Used for the "which" argument of fz_proj_units_get_parm_data and fz_proj_units_set_parm_data.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum fz_proj_unit_enum
{	
	FZ_UNITS_PARM_UNITS_TYPE=0,				/*	@emem		Unit type.
												@ptype		fz_unit_type_enum */
	FZ_UNITS_PARM_ENGLISH_BASE,				/*	@emem		Base English units type.
												@ptype		fz_unit_english_enum
												@default	FZ_UNIT_ENGLISH_INCH */
	FZ_UNITS_PARM_DISPLAY_TYPE,				/*	@emem		Display format of numeric values in a numeric display.
												@ptype		fz_unit_num_disp_enum
												@default	FZ_UNIT_NUM_DISP_ARCH */
//	FZ_UNITS_PARM_ABSOLUTE_FLAG,			/*	@emem	 */
	FZ_UNITS_PARM_METRIC_BASE,				/*	@emem		Base Metric units type.
												@ptype		fz_unit_metric_enum
												@default	FZ_UNIT_METRIC_CENTIMETER */
	FZ_UNITS_PARM_ACCURACY,					/*	@emem		Numeric accuracy.
												@ptype		double
												@default	1/16" (or 0.001 m metric)
												@rmin		0 */
	FZ_UNITS_PARM_DEC_DECIMAL_PLACES,		/*	@emem		Number of digits displayed after the decimal point in a numeric display.
												@ptype		fzrt_int
												@default	3
												@rimin_imax	0 | 16 */
	FZ_UNITS_PARM_ANG_DECIMAL_PLACES,		/*	@emem		Number of digits displayed after the decimal point in an angular display.
												@ptype		fzrt_int
												@default	2
												@rimin_imax	0 | 16 */
	FZ_UNITS_PARM_DEC_TRAILING_0_FLAG,		/*	@emem		If set, trailing zeros after the decimal point will be shown in a numeric display.
												@ptype		fzrt_boolean
												@default	TRUE */
	FZ_UNITS_PARM_ANG_TRAILING_0_FLAG,		/*	@emem		If set, trailing zeros after the decimal point will be shown in an angular display.
												@ptype		fzrt_boolean
												@default	TRUE */
	FZ_UNITS_PARM_ANG_TYPE,					/*	@emem		Display format of numeric values in a numeric display.
												@ptype		fz_unit_ang_disp_enum
												@default	FZ_UNIT_ANG_DISP_DEG */
	FZ_UNITS_PARM_ANG_DIRECTION,			/*	@emem		If set, positive angles are counterclockwise, otherwise positive angles are clockwise.
												@ptype		fzrt_boolean
												@default	TRUE */
	FZ_UNITS_PARM_ANG_ORIENTATION,			/*	@emem		Indicates where orientation angles sre measured from.
												@ptype		fz_unit_ang_orient_enum
												@default	FZ_UNIT_ANG_ORIENT_EAST */
	FZ_UNITS_PARM_ANG_MEASUREMENT_METHOD,	/*	@emem		Determines how to read and interpret angles.
												@ptype		fz_unit_ang_measure_enum
												@default	FZ_UNIT_ANG_MEASURE_SMALL */
	FZ_UNITS_PARM_ANG_ACCURACY,				/*	@emem		Angle accuracy.
												@ptype		double
												@default	0.01 degree
												@rmin		0 */
	FZ_UNITS_PARM_ABSOLUTE_COORD,			/*	@emem		Determines if absolute or relative coordinates are used.<nl>
															If set, the absolute method is used where coordinates are displayed relative 
															to the origin of the coordinate system. Otherwise, the relative method is used 
															where coordinates are displayed relative to the last entered point.
												@ptype		fzrt_boolean
												@default	TRUE */
	FZ_UNITS_PARM_WORLD_SPACE,				/*	@emem		Determines if the world space or reference plane coordinate system is used.<nl>
															If set, the world space method is used where coordinate values of world space are used. 
															Otherwise, the reference plane method is used where coordinate values of the reference plane are used. 
												@ptype		fzrt_boolean
												@default	TRUE */
	FZ_UNITS_PARM_CARTESIAN,				/*	@emem		Determines if Cartesian or polar coordinates are used.<nl>
															If set, Cartesian coordinates are used. Otherwise, polar coordinates are used.
												@ptype		fzrt_boolean
												@default	TRUE */
	FZ_UNITS_PARM_SCALE,					/*	@emem		Indicates the scale of the working units.
												@ptype		fz_unit_scale_enum
												@default	FZ_UNIT_SCAL_MEDIUM */

	FZ_UNITS_PARM_MAX
} fz_proj_unit_enum;

/********************************************************************************************************

	@enum	

	@desc	Project colors.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum  fz_proj_colr_enum {
	FZ_PROJ_COLR_PAXIS	= 2,				/* @emem	Plane axis color 				*/			
	FZ_PROJ_COLR_FENCE, 					/* @emem	drafting fence fill  			*/					
	FZ_PROJ_COLR_BACK, 						/* @emem	background color					*/					
	FZ_PROJ_COLR_HILITE, 					/* @emem	object highlight color				*/					
	FZ_PROJ_COLR_AXIS, 						/* @emem	xyz axis color					*/					
	FZ_PROJ_COLR_PANE, 						/* @emem	Grid color		 (was PROJ_COLR_GRID)	*/	
	FZ_PROJ_COLR_SNAP, 						/* @emem	Grid Highlight color (was PROJ_COLR_GRIDH)	*/		
	FZ_PROJ_COLR_RGRID, 					/* @emem	Ref. Grid color					*/					
	FZ_PROJ_COLR_RGRIDH, 					/* @emem	Ref. Grid Highlight 				*/					
	FZ_PROJ_COLR_ICON1, 					/* @emem	Icon color1						*/					
	FZ_PROJ_COLR_ICON2, 					/* @emem	Icon color2						*/					
	FZ_PROJ_COLR_EDIT1, 					/* @emem	control editor  (Was PROJ_COLR_TRANS)	*/		
	FZ_PROJ_COLR_EDIT2, 					/* @emem	control editor  (Was PROJ_COLR_SMOTH)	*/			
	FZ_PROJ_COLR_GHOST, 					/* @emem	ghosted plot_color				*/					
	
	FZ_PROJ_COLR_MAX 								
} fz_proj_colr_enum;

/************************************************************************

	@enum

	@desc	Values for geometry type. Used by the FZ_PROJ_RNDR_OPTS_GEOM_TYPE
			parameter in fz_proj_rndr_opts_geom_get and fz_proj_rndr_opts_geom_set.
			
	@avail	5.0.0.0

 	@see	<auto>

	@toc	proj

*************************************************************************/
typedef enum fz_geom_type_enum
{
	FZ_GEOM_TYPE_USE_SMOOTH_SHADING = 0,	/*  @emem 	Only smooth objects/ faces assigned as smooth	*/
	FZ_GEOM_TYPE_ALWAYS_SMOOTH,				/*  @emem 	Override object smoothing attributes			*/
	FZ_GEOM_TYPE_USE_SMOOTH_ATTRIBUTE		/*  @emem 	In addition to object smoothing attributes		*/

} fz_geom_type_enum;

/************************************************************************

	@enum	geometry parameter ids.

	@desc	Parameter identifiers for the geometry.
			Used for the "which" argument of fz_proj_rndr_opts_geom_get 
			and fz_proj_rndr_opts_geom_set.

	@avail	5.0.0.0

 	@see	fz_proj_rndr_opts_geom_get,fz_proj_rndr_opts_geom_set,<auto>

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc	proj,rndr

*************************************************************************/
typedef enum fz_proj_geom_parm_enum
{
	FZ_PROJ_RNDR_OPTS_GEOM_TYPE_OBSOLETE=0,			/*	@emem	 	geometry type for smooth objects.
																	<br>Obsolete: 6.5.0.0. This parameter is no longer supported. It is part
																	now part of the project smooth shading settings.
												@ptype		fz_geom_type_enum
												@default	FZ_GEOM_TYPE_ALWAYS_SMOOTH	*/
	FZ_PROJ_RNDR_OPTS_GEOM_QUALITY_OBSOLETE,			/*	@emem		Legacy parameter provided for backwards compatibility. has the same meaning and effect as
															FZ_PROJ_RNDR_OPTS_GEOM_QUALITY_SILH.
															<br>Obsolete: 6.5.0.0.  This parameter is no longer supported. RenderZone and Shaded Render
															now have their own version of this parameter.
												@ptype		double				
												@rimin_imax	0.0 | 1.0
												@default	1.0							*/
	FZ_PROJ_RNDR_OPTS_GEOM_QUALITY_SILH_OBSOLETE,	/*	@emem		silhouette smoothness setting when rendering smooth objects using their mathematical surface definition
															rather than their facets.
															<br>Obsolete: 6.5.0.0.   This parameter is no longer supported. RenderZone and Shaded Render
															now have their own version of this parameter.
												@ptype		double				
												@rimin_imax	0.0 | 1.0
												@default	1.0							*/
	FZ_PROJ_RNDR_OPTS_GEOM_QUALITY_SURF_OBSOLETE,	/*	@emem		surface smoothness setting when rendering smooth objects using their mathematical surface definition
															rather than their facets.
															<br>Obsolete: 6.5.0.0.   This parameter is no longer supported. RenderZone and Shaded Render
															now have their own version of this parameter.
												@ptype		double				
												@rimin_imax	0.0 | 1.0
												@default	1.0							*/
	FZ_PROJ_RNDR_OPTS_GEOM_MAX
} fz_proj_geom_parm_enum;

/************************************************************************

	@enum

	@desc	Values for Smooth shading type. Used by the FZ_PROJ_RNDR_OPTS_SSHD_TYPE 
			parameter in fz_proj_rndr_opts_sshd_get and fz_proj_rndr_opts_sshd_set.
			
	@avail	5.0.0.0

 	@see	<auto>

	@toc	model,proj,rndr,modl_attr

*************************************************************************/
typedef enum fz_sshd_type_enum
{
	FZ_SSHD_TYPE_ONLY_SMOOTH = 0,	/*  @emem 	Only smooth objects/ faces assigned as smooth	*/
	FZ_SSHD_TYPE_OVERRIDE,			/*  @emem 	Override object smoothing attributes			*/
	FZ_SSHD_TYPE_IN_ADDITION,		/*  @emem 	In addition to object smoothing attributes		*/
	FZ_SSHD_TYPE_OBJECTS_WITHOUT	/*  @emem 	Objects without smoothing attributes only		*/

} fz_sshd_type_enum;

/************************************************************************

	@enum	smooth shading parameter ids.

	@desc	Parameter identifiers for the smooth shading.
			Used for the "which" argument of fz_proj_rndr_opts_sshd_get 
			and fz_proj_rndr_opts_sshd_set.

	@avail	5.0.0.0

 	@see	fz_proj_rndr_opts_sshd_get,fz_proj_rndr_opts_sshd_set,<auto>

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc	proj,rndr,modl_attr

*************************************************************************/
typedef enum fz_proj_sshd_parm_enum
{
	FZ_PROJ_RNDR_OPTS_SSHD_SMOOTH_ON_OBSOLETE = 0,			/*	@emem		smooth shading is on.
																			<br>Obsolete: 6.5.0.0.  See new, simplified options below.
														@ptype		fzrt_boolean 
														@default	TRUE	*/
	
	FZ_PROJ_RNDR_OPTS_SSHD_TYPE_OBSOLETE,					/*	@emem		render smooth object smooth
																			<br>Obsolete: 6.5.0.0.  See new, simplified options below.
														@ptype		fz_sshd_type_enum
														@default	FZ_SSHD_TYPE_OBJECTS_WITHOUT	*/

	FZ_PROJ_RNDR_OPTS_SSHD_SMOOTH_ALL_OBSOLETE,				/*	@emem		smooth all
																			<br>Obsolete: 6.5.0.0.  See new, simplified options below.
														@ptype		fzrt_boolean 
														@default	FALSE	*/
	
	FZ_PROJ_RNDR_OPTS_SSHD_SMOOTH_FACES_BY_ANGLE_OBSOLETE,	/*	@emem		if smooth all if off, smooth by face angle
																			<br>Obsolete: 6.5.0.0.  See new, simplified options below.
														@ptype		fzrt_boolean 
														@default	TRUE	*/
	
	
	FZ_PROJ_RNDR_OPTS_SSHD_SMOOTH_FACES_BY_NSIDES_OBSOLETE,	/*	@emem		if smooth all if off, smooth faces with m to n sides
																			<br>Obsolete: 6.5.0.0.  See new, simplified options below.
														@ptype		fzrt_boolean 
														@default	FALSE	*/
	
	FZ_PROJ_RNDR_OPTS_SSHD_ANGLE_OBSOLETE,					/*	@emem		smoothing angle if FZ_PROJ_RNDR_OPTS_SSHD_SMOOTH_FACES_BY_ANGLE is used
																			<br>Obsolete: 6.5.0.0.  See new, simplified options below.
														@ptype		double 
														@default	140 degrees (as radians)
														@rmin_max	0.0 | PI */
	
	FZ_PROJ_RNDR_OPTS_SSHD_NSIDES_MIN_OBSOLETE,				/*	@emem		minimum number of sides per face, if FZ_PROJ_RNDR_OPTS_SSHD_SMOOTH_FACES_BY_NSIDES is used
																			<br>Obsolete: 6.5.0.0.  See new, simplified options below.
														@ptype		fzrt_int 
														@default	4
														@rimin		3 */
	
	FZ_PROJ_RNDR_OPTS_SSHD_NSIDES_MAX_OBSOLETE,				/*	@emem		maximum number of sides per face, if FZ_PROJ_RNDR_OPTS_SSHD_SMOOTH_FACES_BY_NSIDES is used
																			<br>Obsolete: 6.5.0.0.  See new, simplified options below.
														@ptype		fzrt_int 
														@default	4
														@rimin		3 */
	FZ_PROJ_RNDR_OPTS_SSHD_FACT_BY_EDGE,			/*	@emem		If TRUE, smooth shades facetted goemetry edges with angles
																	greater than FZ_PROJ_RNDR_OPTS_SSHD_FACT_EDGE_ANGLE.  If FALSE,
																	does not smooth shade facetted geometry.
														@ptype		fzrt_boolean
														@default	TRUE
														@pavail		6.5.0.0
													*/
	FZ_PROJ_RNDR_OPTS_SSHD_FACT_EDGE_ANGLE,			/*	@emem		If FZ_PROJ_RNDR_OPTS_SSHD_FACT_BY_EDGE is TRUE, facetted geometry
																	edges are smooth shaded for angles greater than this angle (in radians).
														@ptype		float
														@default	2.44346 (140 degrees)
														@pavail		6.5.0.0
													*/
	FZ_PROJ_RNDR_OPTS_SSHD_SMOOTH_BY_RNDR,			/*	@emem		If TRUE, smooth shades smooth goemetry according as the renderer
																	specificies.  See FZ_RNDR_RZNE_PARM_GEOM_SURF, FZ_RNDR_RZNE_PARM_GEOM_SILH.
																	If FALSE, smooth shades the smooth geometry according to
																	the FZ_PROJ_RNDR_OPTS_SSHD_FACT_BY_EDGE option.
														@ptype		fzrt_boolean
														@default	TRUE
														@pavail		6.5.0.0
													*/
	FZ_PROJ_RNDR_OPTS_SSHD_ALLOW_OVERRIDE,			/*	@emem		Whether or not object and layer override settings have an effect
																	on smooth shading.
														@ptype		fzrt_boolean
														@default	TRUE
														@pavail		6.5.0.0
													*/
	FZ_PROJ_RNDR_OPTS_SSHD_MAX
} fz_proj_sshd_parm_enum;

/************************************************************************

	@enum	texture map control attribute parameter ids.

	@desc	Parameter identifiers for the default texture map control.
			Used for the "which" argument of fz_proj_rndr_opts_tctl_get 
			and fz_proj_rndr_opts_tctl_set.

	@avail	5.0.0.0

 	@see	fz_proj_rndr_opts_tctl_get,fz_proj_rndr_opts_tctl_set,<auto>

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc	proj,modl_attr

*************************************************************************/
typedef enum fz_proj_tctl_parm_enum
{
	FZ_PROJ_RNDR_OPTS_TCTL_CENTER_HORIZ=0,	/*  @emem 		Center the horizontal tile
												@ptype		fzrt_boolean
												@default	FALSE	*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_CENTER_VERT,		/*  @emem 		Center the vertical tile
												@ptype		fzrt_boolean
												@default	FALSE	*/
											
	FZ_PROJ_RNDR_OPTS_TCTL_MIRROR_HORIZ,	/*  @emem 		mirror the horizontal tile
												@ptype		fzrt_boolean
												@default	FALSE	*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_MIRROR_VERT,		/*  @emem 		Mirror the vertical tile
												@ptype		fzrt_boolean
												@default	FALSE	*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_FLIP,			/*  @emem 		Flip the horizontal and vertical direction of the texture
												@ptype		fzrt_boolean
												@default	FALSE	*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_SOLID_SIZE,		/*  @emem 		The size of a solid texture.
												@ptype		double 
												@rmin		0.0
												@default	1.0		*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_MAP_TYPE,		/*  @emem 		Mapping type. Certain restrictions apply when
															switching the mapping type of a texture map control.
															For more details see fz_objt_attr_set_objt_tctl_parm.
												@ptype		fz_map_space_type_enum
												@default	FZ_MAP_SPACE_CUBIC	*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_ORIGIN,			/*  @emem 		The origin of the texture map control
												@ptype		fz_xyz_td
												@rimin_imax 0.0 | 1.0 if the
															the mapping type is FZ_MAP_SPACE_PARAMETRIC (only x and y are used).
															FZ_MAP_SPACE_UV_CORDS does not have an origin
															parameter. For all other mapping types, the origin parameter
															specifies a 3D location.
												@default	{0.0,0.0,0.0}				*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_ROTATION,		/*  @emem 		The rotation of the texture map control in 3d space. The angles are
															applied in z y x order.
															FZ_MAP_SPACE_UV_CORDS and FZ_MAP_SPACE_PARAMETRIC do
															not have a rotation parameter.
												@ptype		fz_xyz_td
												@default	{0.0,0.0,0.0}				*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_SIZE_X,			/*  @emem 		The horizontal size of a texture tile. For FZ_MAP_SPACE_PARAMETRIC
															the tile size is a factor of the length/depth of the parametric surface. At a
															factor of 1.0 the texture occupies the surface with one tile. For
															FZ_MAP_SPACE_UV_CORDS mapping, the tile size is a factor of the texture
															size, when FZ_MAP_SPACE_UV_CORDS was first assigned. For
															FZ_MAP_SPACE_FLAT, FZ_MAP_SPACE_CUBIC and the
															vertical size of FZ_MAP_SPACE_CYLINDER mapping, the tile
															size is a linear dimension, which must be greater than 0.0. For the
															horizontal size of FZ_MAP_SPACE_CYLINDER and for
															FZ_MAP_SPACE_SPHERE the tile size is an angular dimension
															in the range 0.0 < val < 2PI. The FZ_PROJ_RNDR_OPTS_TCTL_SIZE_X/Y and
															FZ_PROJ_RNDR_OPTS_TCTL_REPS_X/Y parameters are interdependent. When changing
															one, the other parameter will automatically be updated.
												@ptype		double
												@rmin		0.0
												@default	10							*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_SIZE_Y,			/*  @emem 		The vertical size of a texture tile.
												@ptype		double
												@rmin		0.0
												@default	10							*/
	
	FZ_PROJ_RNDR_OPTS_TCTL_PARM_USE,		/*  @emem 		Parametric mapping for parametrics On/Off
												@ptype		fzrt_boolean
												@default	FALSE	*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_PARM_CENTER_HORIZ,	/*  @emem 		Center the horizontal tile
													@ptype
													@default	FALSE	*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_PARM_CENTER_VERT,	/*  @emem 		Center the vertical tile
													@ptype
													@default	FALSE	*/
											
	FZ_PROJ_RNDR_OPTS_TCTL_PARM_MIRROR_HORIZ,	/*  @emem 		mirror the horizontal tile
													@ptype
													@default	FALSE	*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_PARM_MIRROR_VERT,	/*  @emem 		Mirror the vertical tile
													@ptype
													@default	FALSE	*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_PARM_SIZE_X,		/*  @emem 		The horizontal size of a texture tile. For FZ_MAP_SPACE_PARAMETRIC
															the tile size is a factor of the length/depth of the parametric surface. At a
															factor of 1.0 the texture occupies the surface with one tile. For
															FZ_MAP_SPACE_UV_CORDS mapping, the tile size is a factor of the texture
															size, when FZ_MAP_SPACE_UV_CORDS was first assigned. For
															FZ_MAP_SPACE_FLAT, FZ_MAP_SPACE_CUBIC and the
															vertical size of FZ_MAP_SPACE_CYLINDER mapping, the tile
															size is a linear dimension, which must be greater than 0.0. For the
															horizontal size of FZ_MAP_SPACE_CYLINDER and for
															FZ_MAP_SPACE_SPHERE the tile size is an angular dimension
															in the range 0.0 < val < 2PI. The FZ_PROJ_RNDR_OPTS_TCTL_SIZE_X/Y and
															FZ_PROJ_RNDR_OPTS_TCTL_REPS_X/Y parameters are interdependent. When changing
															one, the other parameter will automatically be updated.
												@ptype		double
												@rmin		0.0
												@default	10							*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_PARM_SIZE_Y,		/*  @emem 		The vertical size of a texture tile.
												@ptype		double
												@rmin		0.0
												@default	10							*/
	
	FZ_PROJ_RNDR_OPTS_TCTL_PARM_REPS_X,		/*  @emem 		The # of  horizontal repetitions of a texture tile. 
															For FZ_MAP_SPACE_CUBIC and FZ_MAP_SPACE_UV_CORDS 
															this parameter does not apply. The MODEL_ATTR_TCTL_REPS and
															MODEL_ATTR_TCTL_SIZE parameters are interdependent. When changing
															one, the other parameter will automatically be updated.
												@ptype		double
												@rmin		0.0
												@default	10							*/
													
	FZ_PROJ_RNDR_OPTS_TCTL_PARM_REPS_Y,		/*  @emem 		The # of vertical repetitions of a texture tile.
												@ptype		double
												@rmin		0.0							
												@default	10							*/

	FZ_PROJ_RNDR_OPTS_TCTL_SIZE_LOCK,		/*  @emem 		The size lock option. Only, None, Square and Current are avialbale.
												@ptype		fz_map_space_size_lock_enum	
												@default	FZ_MAP_SPACE_SIZE_LOCK_SQUARE */
	
	FZ_PROJ_RNDR_OPTS_TCTL_MAX
} fz_proj_tctl_parm_enum;


/********************************************************************************************************

	@fsfunc_t	

	@desc		Get the project's name (string). If the project has not been saved for the first time, 
				then the name is the standard default name (Untitled 1, Untitled 2 etc...) and the 
				named parameter is FALSE.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_get_floc

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_get_name_func)(
	fzrt_int			windex,			/* @parm	<in> | project window index */
	char			*name,			/* @parm	<out_opt> | The projects name */
	fzrt_int			max_len,		/* @parm	<in> | length of name parameter	*/
	fzrt_boolean 	*named			/* @parm	<out_opt> | TRUE if the project has been saved for the first time, else FALSE */
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Set the project's name. 
	
	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_set_name_func)(
	fzrt_int			windex,			/* @parm	<in> | project window index */
	char			*proj_name		/* @parm	<in> | The new name for the project name */
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Get the project's file location. If the project has not been saved for the first time, 
				then the file location is the system default documents folder.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_get_name,fzrt_file_floc_init,fzrt_file_floc_finit

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_get_floc_func)(
	fzrt_int				windex,		/* @parm	<in> | project window index */
	fzrt_floc_ptr		floc		/* @parm	<out_opt> | Project files location. Initialized with fzrt_file_floc_init, freed with fzrt_file_floc_finit */
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Set the project's file location. This is the location that the project file will be saved to. 
				This does not actually save the project to disk or move an existing file.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_get_name,fzrt_file_floc_init,fzrt_file_floc_finit

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_set_floc_func)(
	fzrt_int				windex,		/* @parm	<in> | project window index */
	fzrt_floc_ptr		floc		/* @parm	<in> | Project new files location. Initialized with fzrt_file_floc_init, freed with fzrt_file_floc_finit */
	);

/********************************************************************************************************

	@fsfunc_t

	@desc		Get the project's UUID (uniqie identifier).

	@return		Error codes

	@avail		9.2.2.0

	@see

	@exfile

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_get_UUID_func)(
	fzrt_int			windex,			/* @parm	<in> | project window index */
	fzrt_UUID_td		UUID			/* @parm	<out> | The projects UUID */
	);

/********************************************************************************************************

	@fsfunc_t

	@desc		Get the project's session UUID (runtime uniqie identifier).

	@return		Error codes

	@avail		9.2.2.0

	@see

	@exfile

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_get_session_UUID_func)(
	fzrt_int			windex,			/* @parm	<in> | project window index */
	fzrt_UUID_td		UUID			/* @parm	<out> | The projects UUID */
	);

/********************************************************************************************************

	@fsfunc_t

	@desc		is project opened by user (else its opend implicitly like refernce file or componenet etc)

	@return		Error codes

	@avail		9.2.2.0

	@see

	@exfile

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_is_user_func)(
		 fzrt_int			windex,			/* @parm	<in> | project window index */
		 fzrt_boolean		*is_user		/* @parm	<out> | is project opened by user */
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Creates a new unnamed project.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_get_name,fzrt_file_floc_init,fzrt_file_floc_finit

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_new_func)(
	fz_wind_type_enum	wind_type,	/* @parm	<in> | type for first window  */
	fzrt_int				*windex		/* @parm	<out> | project window index */
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Opens an existing formZ project.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_get_name,fzrt_file_floc_init,fzrt_file_floc_finit

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_open_func)(
	fzrt_floc_ptr		floc,		/* @parm	<in> | Project new files location. Initialized with fzrt_file_floc_init, freed with fzrt_file_floc_finit */
	fzrt_int				*windex		/* @parm	<out> | project window index */
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Saves an existing project to disk.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_get_name,fz_proj_save_with_progress

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_save_func)(
	fzrt_int				windex	/* @parm	<in> | project window index */
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Saves an existing project to disk. Shows progress bar to user

	@return		Error codes

	@avail		8.0.2.0

	@see		fz_proj_get_name,fz_proj_save

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_save_with_progress_func)(
	fzrt_int				windex	/* @parm	<in> | project window index */
	);


/********************************************************************************************************

	@enum	

	@desc	Save options when closing a project.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum fz_proj_close_opts_enum
{	
	FZ_PROJ_SAVE_SILENT=0,							/*	@emem Saves the project if it is dirty without prompting the user	 */
	FZ_PROJ_SAVE_ASK,								/*	@emem Saves the project if it is dirty after prompting the user. Note that user can cancel the save operation	 */
	FZ_PROJ_SAVE_NOT,								/*	@emem Does not save the project even if it is dirty	 */

	FZ_PROJ_SAVE_DEFAULT=FZ_PROJ_SAVE_SILENT,		/*	@emem Default setting, currently FZ_PROJ_SAVE_SILENT 	 */

	FZ_PROJ_SAVE_MAX
} fz_proj_close_opts_enum;
/********************************************************************************************************

	@fsfunc_t	

	@desc		Closes an existing project. The project may or may not be saved based on 
				how the save option passed in opts.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_get_name,fzrt_file_floc_init,fzrt_file_floc_finit

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_close_func)(
	fzrt_int					windex,	/* @parm	<in> | project window index */
	fz_proj_close_opts_enum	opts	/* @parm	<in> | save option */
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Retrieves the number of open projects.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_get_windex

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_get_count_func)(
	fzrt_int				*nprojs	/* @parm	<in> | number of open projects */
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Retrieves the window index (windex) of the first window of the project.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_get_count

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_get_windex_func)(
	fzrt_int				proj_index,		/* @parm	<in> | project index */
	fzrt_int				*windex			/* @parm	<in> | windex of first window of project */
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Sets the project dirty flag so that the save and revert menu items are enabled. The project 
				dirty flag is automatically set to TRUE by formZ API calls that change project settings or data.  
				This function should be called when an extension changes its internal settings or data that will 
				be retained in a formZ project file. 

	@return		None

	@avail		5.0.0.0

	@see		

	@exfile		

	@toc		proj

*********************************************************************************************************/
typedef void  (FZRT_SPEC *fz_proj_dirty_func)(
	fzrt_int		windex		/* @parm	<in> | project window index */
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Gets project working units parameters.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_units_set_parm_data

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_units_get_parm_data_func)(
	fzrt_int				windex,		/* @parm	<in> | project window index 	*/
	fz_proj_unit_enum	which,		/* @parm	<in> | parameter identifier					*/
	fz_type_td			*value		/* @parm	<out> | parameter data		 				*/
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Sets project working units parameters.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_units_get_parm_data

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_units_set_parm_data_func)(
	fzrt_int				windex,		/* @parm	<in> | project window index 	*/
	fz_proj_unit_enum	which,		/* @parm	<in> | parameter identifier					*/
	fz_type_td			*value		/* @parm	<in> | parameter data						*/
	);




/********************************************************************************************************

	@fsfunc_t	

	@desc		Sets parameters in the project color options

	@return		None

	@avail		5.0.0.0

	@see		fz_proj_color_get_rgb

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_color_set_rgb_func)(
	fzrt_int				windex,	/* @parm	<in> | project window index 	*/
	fz_proj_colr_enum	indx,	/* @parm	<in> | color identifier						*/
	fz_rgb_float_td		*rgb	/* @parm	<in> | rgb values							*/
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Gets parameters from the project color options

	@return		None

	@avail		5.0.0.0

	@see		fz_proj_color_set_rgb

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_color_get_rgb_func)(
	fzrt_int				windex,		/* @parm	<in> | project window index 	*/
	fz_proj_colr_enum	indx,		/* @parm	<in> | color identifier						*/
	fz_rgb_float_td		*rgb		/* @parm	<out> | rgb values		 					*/
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Sets smooth shading parameters in the project rendering options

	@return		None

	@avail		5.0.0.0

	@see		fz_proj_rndr_opts_sshd_get

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_rndr_opts_sshd_set_func)(	
	fzrt_int 					windex, /* @parm	<in> | project window index 	*/
	fz_proj_sshd_parm_enum	which,  /* @parm	<in> | parameter identifier					*/
	fz_type_td				*data   /* @parm	<in> | parameter data						*/
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Gets smooth shading parameters from the project rendering options

	@return		None

	@avail		5.0.0.0

	@see		fz_proj_rndr_opts_sshd_set

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_rndr_opts_sshd_get_func)(	
	fzrt_int 					windex, /* @parm	<in> | project window index 	*/
	fz_proj_sshd_parm_enum	which,  /* @parm	<in> | parameter identifier					*/
	fz_type_td				*data   /* @parm	<out> |parameter data						*/
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Obsolete: 6.5.0.0.  Geometry specific rendering options have been migrated
				to the renderer.  See fz_rndr_rzne_parm_enum: FZ_RNDR_RZNE_PARM_GEOM_SILH,
				FZ_RNDR_RZNE_PARM_GEOM_SURF.
	
				Sets geometry tab parameters in the project rendering options

	@return		None

	@avail		5.0.0.0

	@see		fz_proj_rndr_opts_geom_get

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_rndr_opts_geom_set_func)(	
	fzrt_int 					windex, /* @parm	<in> | project window index 	*/
	fz_proj_geom_parm_enum	which,  /* @parm	<in> | 	parameter identifier				*/
	fz_type_td				*data   /* @parm	<in> | 	parameter data						*/
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Obsolete: 6.5.0.0.  Geometry specific rendering options have been migrated
				to the renderer.  See fz_rndr_rzne_parm_enum: FZ_RNDR_RZNE_PARM_GEOM_SILH,
				FZ_RNDR_RZNE_PARM_GEOM_SURF.

				Gets geometry tab parameters from the project rendering options

	@return		None

	@avail		5.0.0.0

	@see		fz_proj_rndr_opts_geom_set

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_rndr_opts_geom_get_func)(	
	fzrt_int 					windex, /* @parm	<in> | project window index 	*/
	fz_proj_geom_parm_enum	which,  /* @parm	<in> | 	parameter identifier				*/
	fz_type_td				*data   /* @parm	<out> | parameter data						*/
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Sets default texture  map control parameters in the project rendering options

	@return		None

	@avail		5.0.0.0

	@see		fz_proj_rndr_opts_tctl_get

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_rndr_opts_tctl_set_func)(	
	fzrt_int 					windex, /* @parm	<in> | project window index 	*/
	fz_proj_tctl_parm_enum	which,  /* @parm	<in> | 	parameter identifier				*/
	fz_type_td				*data   /* @parm	<in> | 	parameter data						*/
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Gets default texture  map control parameters from the project rendering options

	@return		None

	@avail		5.0.0.0

	@see		fz_proj_rndr_opts_tctl_set

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_rndr_opts_tctl_get_func)(	
	fzrt_int 					windex, /* @parm	<in> | project window index 	*/
	fz_proj_tctl_parm_enum	which,  /* @parm	<in> | 	parameter identifier				*/
	fz_type_td				*data   /* @parm	<out> | parameter data						*/
	);

/********************************************************************************************************

	@fsfunc_t

	@desc		Executes a plugin project level utility.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_syst_plugin_exec_util, fz_proj_script_exec_util, fz_syst_script_exec_util

	@exfile		

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td 	 (FZRT_SPEC *fz_proj_plugin_exec_util_func)(
			fzrt_int				windex,			/* @parm <in> | project window index */
			fzrt_floc_ptr		floc,			/* @parm <in> | The file location of the plugin file containing the utility */
			fzrt_UUID_td		proj_id			/* @parm <in> | The id of the utility to run. */
			);

/********************************************************************************************************

	@fsfunc_t

	@desc		Executes a script project level utility.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_syst_script_exec_util, fz_proj_plugin_exec_util, fz_syst_plugin_exec_util

	@exfile		

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td 	 (FZRT_SPEC *fz_proj_script_exec_util_func)(
			fzrt_int				windex,			/* @parm <in> | project window index */
			fzrt_floc_ptr		floc			/* @parm <in> | The file location of the script file containing the utility */
			);

/********************************************************************************************************

	@fsfunc_t

	@desc		Clears a project of all objects.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td 	 (FZRT_SPEC *fz_proj_clear_func)(
			fzrt_int				windex			/* @parm <in> | project window index */
			);

/********************************************************************************************************

	@fsfunc_t

	@desc		Reverts a project to it's last save state.

	@return		Error codes

	@avail		5.0.0.0

	@see		

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td 	 (FZRT_SPEC *fz_proj_revert_func)(
			fzrt_int				windex			/* @parm <in> | project window index */
			);

/********************************************************************************************************

	@enum	

	@desc	Plot/print type. Controls what portion of the image shown will be plotted or printed. 
			Used by fz_proj_get_print_setup_parm_data and fz_proj_set_print_setup_parm_data 
			when the parameter id is FZ_PROJ_PRINT_OPTS_TYPE.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum fz_proj_prnt_type_enum
{	FZ_PROJ_PRNT_TYPE_EXTS = 0,			/*	@emem	Extents.<nl>
													All the objects or elements in the project are printed 
													regardless of what is visible in the window.	*/

	FZ_PROJ_PRNT_TYPE_WIND_CONT,		/*	@emem	Window contents.<nl>
													Only the objects or elements visible in the window are printed.	*/

	FZ_PROJ_PRNT_TYPE_DUMP_WIND,		/*	@emem	Dump window.<nl>
													Prints the contents of the selected window. This is of a much lower 
													resolution but is generally faster.	*/

	FZ_PROJ_PRNT_TYPE_DUMP_SCRN,		/*	@emem	Dump screen.<nl>
													Prints the contents of the entire screen. This is of a much lower 
													resolution but is generally faster.	*/

	FZ_PROJ_PRNT_TYPE_MAX
} fz_proj_prnt_type_enum;

/********************************************************************************************************

	@enum	

	@desc	X Justification. Controls where the drawing will be positioned on the page relative to the 
			edges in the X direction. 
			Used by fz_proj_get_print_setup_parm_data and fz_proj_set_print_setup_parm_data 
			when the parameter id is FZ_PROJ_PRINT_OPTS_X_JUST.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum fz_proj_prnt_xjust_enum
{	FZ_PROJ_PRNT_XJUST_LEFT = 0,	/*	@emem	Left justified.	*/

	FZ_PROJ_PRNT_XJUST_CENTER,		/*	@emem	Center justified.	*/

	FZ_PROJ_PRNT_XJUST_RIGHT,		/*	@emem	Right justified.	*/

	FZ_PROJ_PRNT_XJUST_MAX
} fz_proj_prnt_xjust_enum;

/********************************************************************************************************

	@enum	

	@desc	Y Justification. Controls where the drawing will be positioned on the page relative to the 
			edges in the Y direction. 
			Used by fz_proj_get_print_setup_parm_data and fz_proj_set_print_setup_parm_data 
			when the parameter id is FZ_PROJ_PRINT_OPTS_Y_JUST.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum fz_proj_prnt_yjust_enum
{	FZ_PROJ_PRNT_YJUST_TOP = 0,		/*	@emem	Top justified.	*/

	FZ_PROJ_PRNT_YJUST_CENTER,		/*	@emem	Center justified.	*/

	FZ_PROJ_PRNT_YJUST_BOTTOM,		/*	@emem	Bottom justified.	*/

	FZ_PROJ_PRNT_YJUST_MAX
} fz_proj_prnt_yjust_enum;

/********************************************************************************************************

	@enum	

	@desc	Image Detail. These options only affect prints made from the drafting environment and determines 
			how images that have been imported or pasted as image elements into a drafting project are printed. 
			Used by fz_proj_get_print_setup_parm_data and fz_proj_set_print_setup_parm_data 
			when the parameter id is FZ_PROJ_PRINT_OPTS_IMAGE_DETAIL.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum fz_proj_prnt_image_enum
{	FZ_PROJ_PRNT_IMAGE_BOUNDING = 0,	/*	@emem	Image elements are printed as a rectangle that bounds the 
													image with two diagonal lines crossing the rectangle.	*/

	FZ_PROJ_PRNT_IMAGE_PREVIEW,			/*	@emem	The low resolution image stored in the image element is 
													used for printing.	*/

	FZ_PROJ_PRNT_IMAGE_HIGH_RES,		/*	@emem	The full resolution image is used for printing.	*/

	FZ_PROJ_PRNT_IMAGE_MAX
} fz_proj_prnt_image_enum;

/********************************************************************************************************

	@enum	

	@desc	The line weight (width) of the frame. 1 point = 1/72". 
			Used by fz_proj_get_print_setup_parm_data and fz_proj_set_print_setup_parm_data 
			when the parameter id is FZ_PROJ_PRINT_OPTS_PAGE_FRAME_WEIGHT.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum fz_proj_prnt_frame_enum
{	FZ_PROJ_PRNT_FRAME_HAIR = 0,	/*	@emem	Line is drawn at the thinnest possible line on a particular printer, 
												and may vary from printer to printer. */

	FZ_PROJ_PRNT_FRAME_HALF,		/*	@emem	Line weight of 1/2 point. */

	FZ_PROJ_PRNT_FRAME_1,			/*	@emem	Line weight of 1 point. */

	FZ_PROJ_PRNT_FRAME_2,			/*	@emem	Line weight of 2 points. */

	FZ_PROJ_PRNT_FRAME_3,			/*	@emem	Line weight of 3 points. */

	FZ_PROJ_PRNT_FRAME_4,			/*	@emem	Line weight of 4 points. */

	FZ_PROJ_PRNT_FRAME_5,			/*	@emem	Line weight of 5 points. */

	FZ_PROJ_PRNT_FRAME_6,			/*	@emem	Line weight of 6 points. */

	FZ_PROJ_PRNT_FRAME_7,			/*	@emem	Line weight of 7 points. */

	FZ_PROJ_PRNT_FRAME_8,			/*	@emem	Line weight of 8 points. */

	FZ_PROJ_PRNT_FRAME_9,			/*	@emem	Line weight of 9 points. */

	FZ_PROJ_PRNT_FRAME_MAX
} fz_proj_prnt_frame_enum;

/********************************************************************************************************

	@enum	

	@desc	Plot/print setup option parameters. 
			Used for the "which" argument of fz_proj_get_print_setup_parm_data and fz_proj_set_print_setup_parm_data.
			
	@avail	5.0.0.0
			
	@see	<auto>

	@toc	proj

*********************************************************************************************************/
typedef enum fz_proj_print_opts_parm_enum
{	FZ_PROJ_PRINT_OPTS_SCALE = 0,					/*	@emem		The scale of the drawing.
														@ptype		double
													*/

	FZ_PROJ_PRINT_OPTS_SCALE_TO_FIT,				/*	@emem		If selected, the image is scaled to fit on a single 
																	sheet of paper (and the plot scale is ignored).
														@ptype		fzrt_boolean
														@default	FALSE
													*/

	FZ_PROJ_PRINT_OPTS_TYPE,						/*	@emem		Controls what portion of the image shown will be 
																	plotted or printed.
														@ptype		fz_proj_prnt_type_enum
														@default	FZ_PROJ_PRNT_TYPE_EXTS
													*/

	FZ_PROJ_PRINT_OPTS_X_JUST,						/*	@emem		Controls where the drawing will be positioned on the 
																	page relative to the edges in the X direction.
														@ptype		fz_proj_prnt_xjust_enum
														@default	FZ_PROJ_PRNT_XJUST_CENTER
													*/

	FZ_PROJ_PRINT_OPTS_Y_JUST,						/*	@emem		Controls where the drawing will be positioned on the 
																	page relative to the edges in the Y direction.
														@ptype		fz_proj_prnt_yjust_enum
														@default	FZ_PROJ_PRNT_YJUST_CENTER
													*/

	FZ_PROJ_PRINT_OPTS_IMAGE_GRID,					/*	@emem		Controls whether the reference grid is printed. 
																	TRUE if on, FALSE otherwise.
														@ptype		fzrt_boolean
														@default	FALSE
													*/

	FZ_PROJ_PRINT_OPTS_IMAGE_AXIS,					/*	@emem		Controls whether the Cartesian axes are printed. 
																	TRUE if on, FALSE otherwise.
														@ptype		fzrt_boolean
														@default	FALSE
													*/

	FZ_PROJ_PRINT_OPTS_IMAGE_BACKGROUND,			/*	@emem		Controls whether the background color is printed. 
																	TRUE if on, FALSE otherwise.
														@ptype		fzrt_boolean
														@default	FALSE
													*/

	FZ_PROJ_PRINT_OPTS_IMAGE_TEXT_PATH,				/*	@emem		This option only affect prints made from the 
																	drafting environment. If set, the outline of each 
																	character in the environment is sent to the printer. 
																	When not set, the printer uses it's own native graphics to print 
																	text.<nl>
																	Best results are usually achieved with this option off, 
																	however if the printed text must match exactly to what is displayed 
																	turn this option on.
														@ptype		fzrt_boolean
														@default	FALSE
													*/

	FZ_PROJ_PRINT_OPTS_IMAGE_SOLID_COLOR,			/*	@emem		Determines how color polygons are printed. When this is 
																	off, color polygons are printed filled with a pixel pattern 
																	based on the polygons color. When on, color polygons are printed 
																	with the solid color of the polygon.
														@ptype		fzrt_boolean
														@default	FALSE
													*/

	FZ_PROJ_PRINT_OPTS_IMAGE_DETAIL,				/*	@emem		This option only affect prints made from the 
																	drafting environment and determines how images that 
																	have been imported or pasted as image elements into 
																	a drafting project are printed.
														@ptype		fz_proj_prnt_image_enum
														@default	FZ_PROJ_PRNT_IMAGE_HIGH_RES
													*/

	FZ_PROJ_PRINT_OPTS_PAGE_CROP,					/*	@emem		When on, crop marks are printed on the four corners 
																	of each page, to facilitate collating. The useable area of 
																	the paper is reduced by 1/4" on each of its four edges.
														@ptype		fzrt_boolean
														@default	FALSE
													*/

	FZ_PROJ_PRINT_OPTS_PAGE_NAME_DATE,				/*	@emem		When set, information about the image being printed is 
																	printed to each sheet in the following:<nl>
																	In the upper left edge will be the name of the file 
																	and the time and date.<nl>
																	In the upper right edge will be the page number.<nl>
																	In the lower left edge will be the display type, view type, 
																	print type, and scale.
														@ptype		fzrt_boolean
														@default	FALSE
													*/

	FZ_PROJ_PRINT_OPTS_PAGE_OVERLAP,				/*	@emem		When set and a drawing is printed on more then one page 
																	(tiled pages), the neighboring ends of the pages overlap 
																	by 1/4", to facilitate assembling them.<nl>
																	If FZ_PROJ_PRINT_OPTS_PAGE_CROP is set also, a second set of marks 
																	is printed on the corners of page. These marks are distinguished from 
																	the crop marks by an "X" printed on the crop mark.
														@ptype		fzrt_boolean
														@default	FALSE
													*/

	FZ_PROJ_PRINT_OPTS_PAGE_FRAME,					/*	@emem		When set, a rectangular frame is printed around the image.<nl>
																	If this is set when FZ_PROJ_PRNT_TYPE_EXTS is set in FZ_PROJ_PRINT_OPTS_TYPE, 
																	the frame is drawn at the limit of the page(s) being printed.<nl>
																	If this is set when FZ_PROJ_PRNT_TYPE_WIND_CONT is set in FZ_PROJ_PRINT_OPTS_TYPE, 
																	the frame is drawn at the limit of the window.
														@ptype		fzrt_boolean
														@default	FALSE
													*/

	FZ_PROJ_PRINT_OPTS_PAGE_FRAME_WEIGHT,			/*	@emem		The line weight (width) of the frame.
														@ptype		fz_proj_prnt_frame_enum
														@default	FZ_PROJ_PRNT_FRAME_HALF
													*/

	FZ_PROJ_PRINT_OPTS_MAX
} fz_proj_print_opts_parm_enum;

/********************************************************************************************************

	@fsfunc_t

	@desc		Gets plot/print setup parameters.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_set_print_setup_parm_data,fz_wind_print

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td 	 (FZRT_SPEC *fz_proj_get_print_setup_parm_data_func)(
			fzrt_int							windex,		/* @parm <in> | project window index */
			fz_proj_print_opts_parm_enum	which,		/* @parm <in> | parameter identifier */
			fz_type_td						*value		/* @parm <out> | parameter data */
			);

/********************************************************************************************************

	@fsfunc_t

	@desc		Sets plot/print setup parameters.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_get_print_setup_parm_data,fz_wind_print

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td 	 (FZRT_SPEC *fz_proj_set_print_setup_parm_data_func)(
			fzrt_int							windex,		/* @parm <in> | project window index */
			fz_proj_print_opts_parm_enum	which,		/* @parm <in> | parameter identifier */
			fz_type_td						*value		/* @parm <in> | parameter data */
			);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Save as.<nl>
				Saves a project to the disk.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_save,fz_proj_save_a_copy_as

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_save_as_func)(
	fzrt_int				windex,		/* @parm	<in> | project window index */
	fzrt_floc_ptr		floc		/* @parm	<in> | The file to save the project to. */
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Save a copy as.<nl>
				Saves a copy of the current project to the disk.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_save,fz_proj_save_as

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td  (FZRT_SPEC *fz_proj_save_a_copy_as_func)(
	fzrt_int				windex,		/* @parm	<in> | project window index */
	fzrt_floc_ptr		floc		/* @parm	<in> | The file to save a copy of the project to. */
	);

/********************************************************************************************************

	@fsfunc_t

	@desc		Gets whether window tiles are on or off.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_set_window_tiles

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td 	 (FZRT_SPEC *fz_proj_get_window_tiles_func)(
	fzrt_int				windex,		/* @parm <in> | project window index */
	fzrt_boolean		*enable		/* @parm <out> | are window tiles enabled<nl>
													TRUE if enabled, FALSE otherwise */
	);

/********************************************************************************************************

	@fsfunc_t

	@desc		Sets window tiles to be on or off.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_get_window_tiles

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td 	 (FZRT_SPEC *fz_proj_set_window_tiles_func)(
	fzrt_int				windex,		/* @parm <in> | project window index */
	fzrt_boolean		enable		/* @parm <in> | are window tiles enabled<nl>
													TRUE if enabled, FALSE otherwise */
	);

/************************************************************************

	@enum	

	@desc	Parameter identifiers for render properties. 
			Used for the "which" argument of fz_proj_rndr_opts_get 
			and fz_proj_rndr_opts_set.

	@avail	5.0.0.0

 	@see	<auto>

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc	proj,rndr

*************************************************************************/
typedef enum fz_proj_rndr_parm_enum
{
	FZ_PROJ_RNDR_OPTS_CLEAR = 0,	/*	@emem	 	Always clear rendering memory.
										@ptype		fzrt_boolean
										@default	FALSE	*/

	FZ_PROJ_RNDR_OPTS_DOUBLE,		/*	@emem		Show surfaces as double sided.
										@ptype		fzrt_boolean
										@default	TRUE	*/

	FZ_PROJ_RNDR_OPTS_MAX
} fz_proj_rndr_parm_enum;

/********************************************************************************************************

	@fsfunc_t	

	@desc		Gets render properties.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_rndr_opts_set

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj,rndr

*********************************************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_rndr_opts_get_func)(
	fzrt_int 					windex,		/* @parm	<in> | project window index 	*/
	fz_proj_rndr_parm_enum	which,		/* @parm	<in> | parameter identifier		*/
	fz_type_td				*value		/* @parm	<out> | parameter data			*/
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Sets render properties.

	@return		Error codes

	@avail		5.0.0.0

	@see		fz_proj_rndr_opts_get

	@exfile		<scdir>/Utilities | util_proj_opts.fsl

	@toc		proj

*********************************************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_rndr_opts_set_func)(
	fzrt_int 					windex,		/* @parm	<in> | project window index		*/
	fz_proj_rndr_parm_enum	which,		/* @parm	<in> | parameter identifier		*/
	fz_type_td				*value		/* @parm	<in> | parameter data			*/
	);


/********************************************************************************************************

	@type

	@desc	data structure to hold options for a selection set.
			A project contains a list of selection sets which can be viewed and edited in the 
			Selection Criteria : Modeling dialog. An information management record also contains
			a selection set, which is used to pick the object to be listed. A number of api functions
			are provided to create, delete, copy selection sets and to get and set their options.
			
	@avail	5.0.0.0
	
	@see	<auto>
	
	@exfile	

	@toc	proj

*********************************************************************************************************/
typedef	struct sel_model_td	*fz_msel_set_ptr;

/********************************************************************************************************

	@enum

	@desc	identifiers for the categories of a selection set

	@avail	5.0.0.0

	@see	

	@toc	proj

*********************************************************************************************************/
typedef enum fz_msel_cat_enum
{
	FZ_MSEL_CAT_TOPO_TYPE = 0,	/*  @emem 		select by topology type category identifier.		*/
	FZ_MSEL_CAT_CNTL_TYPE,		/*  @emem 		select by control object type category identifier.	*/
	FZ_MSEL_CAT_MODEL_TYPE,		/*  @emem 		select by model type category identifier.			*/
	FZ_MSEL_CAT_RMTL,			/*  @emem 		select by surface style category identifier.		*/
	FZ_MSEL_CAT_LAYER,			/*  @emem 		select by layer category identifier.				*/
	FZ_MSEL_CAT_SMOOTH_SHADE,	/*  @emem 		select by smooth shading category identifier.		*/
	FZ_MSEL_CAT_NUM_FACES,		/*  @emem 		select by # of faces category identifier.			*/
	FZ_MSEL_CAT_SHADOWS,		/*  @emem 		select by shadows category identifier.				*/
	FZ_MSEL_CAT_NAME,			/*  @emem 		select by object/group name category identifier.	*/
	FZ_MSEL_CAT_RNDR_BACKDROP,	/*  @emem 		select by rendering backdrop category identifier.	*/
	FZ_MSEL_CAT_ATTR_USED,		/*  @emem 		select by attributes in use category identifier.	*/
	FZ_MSEL_CAT_SCRIPT,			/*  @emem 		select by script category identifier.				*/
	FZ_MSEL_CAT_RNDR_AS_WREF,	/*  @emem 		select by render as wireframe category identifier.	*/
	FZ_MSEL_CAT_RNDR_AS_SURF,	/*  @emem 		select by render as surface category identifier.	*/
	FZ_MSEL_CAT_AO_RECV,		/*  @emem 		select by receives ambient occlusion category identifier.	*/
	FZ_MSEL_CAT_AO_CAUSE,		/*  @emem 		select by causes ambient occlusion category identifier.		*/
	
	FZ_MSEL_CAT_MAX
} fz_msel_cat_enum;

/********************************************************************************************************

	@enum

	@desc	identifiers for the types in the topology type category of a selection set

	@avail	5.0.0.0

	@see	

	@toc	proj

*********************************************************************************************************/
typedef enum fz_msel_topo_type_enum
{
	FZ_MSEL_TOPO_TYPE_SOLID = 0,		/*  @emem 		solid topology type.			*/
	FZ_MSEL_TOPO_TYPE_SURF_SOLID,		/*  @emem 		surface solid topology type.	*/
	FZ_MSEL_TOPO_TYPE_SURF,				/*  @emem 		surface topology type.			*/
	FZ_MSEL_TOPO_TYPE_CLOSED_WIRE,		/*  @emem 		closed wire topology type.		*/
	FZ_MSEL_TOPO_TYPE_OPEN_WIRE,		/*  @emem 		open wire topology type.		*/
	FZ_MSEL_TOPO_TYPE_POINT,			/*  @emem 		point topology type.			*/
	FZ_MSEL_TOPO_TYPE_NO_TOPO,			/*  @emem 		no topology type.				*/
	FZ_MSEL_TOPO_TYPE_MIXED,			/*  @emem 		mixed topology type.			*/

	FZ_MSEL_TOPO_TYPE_MAX

} fz_msel_topo_type_enum;


/********************************************************************************************************

	@enum

	@desc	identifiers for the name type in the object/group name category of a selection set

	@avail	5.0.0.0

	@see	

	@toc	proj

*********************************************************************************************************/
typedef enum fz_msel_name_type_enum
{
	FZ_MSEL_NAME_TYPE_OBJECT = 0,		/*  @emem 		object name.			*/
	FZ_MSEL_NAME_TYPE_GROUP,			/*  @emem 		group name.				*/
	FZ_MSEL_NAME_TYPE_OBJECT_OR_GROUP,	/*  @emem 		object or group name.	*/
	
	FZ_MSEL_NAME_TYPE_MAX
} fz_msel_name_type_enum;

/********************************************************************************************************

	@enum

	@desc	identifiers for the which option in the object/group name category of a selection set

	@avail	5.0.0.0

	@see	

	@toc	proj

*********************************************************************************************************/
typedef enum fz_msel_name_which_enum
{
	FZ_MSEL_NAME_WHICH_CONTAINS = 0,		/*  @emem 		select by name, which contains a given string 				*/
	FZ_MSEL_NAME_WHICH_STARTS_WITH,			/*  @emem 		select by name, which starts with a given string 			*/
	FZ_MSEL_NAME_WHICH_ENDS_WITH,			/*  @emem 		select by name, which ends with a given string 				*/
	FZ_MSEL_NAME_WHICH_IS,					/*  @emem 		select by name, which is exactly equal to a given string 	*/
	FZ_MSEL_NAME_WHICH_IS_NOT,				/*  @emem 		select by name, which is not equal to a given string 		*/
	FZ_MSEL_NAME_WHICH_DOES_NOT_CONTAIN,	/*  @emem 		select by name, which does not contain a given string 		*/
	
	FZ_MSEL_NAME_WHICH_MAX
} fz_msel_name_which_enum;


/************************************************************************

	@fsfunc_t
	
	@desc		Gets the number of selection sets in the "Select By" options of a project
	
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_get_num_sets_func)(
	fzrt_int		windex,			/* @parm	<in> | project window index */
	fzrt_int 		*num_sets		/* @parm	<out> | the number of selection sets in the "Select By" option of a project */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Gets the next selection set of the "Select By" options in a project. 
				If set_in is passed as NULL, the first selection set of the project is returned. 
				If set_in is the last set of the select by options in a project the 
				function returns NULL for set_next.
	
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_get_next_set_func)(
	fzrt_int				windex,			/* @parm	<in> | project window index */
	fz_msel_set_ptr		set_in,			/* @parm	<in_opt> | the selection set in the "Select By" options from which to get the next set. If NULL is passed in, the first set is returned  */
	fz_msel_set_ptr		*set_next		/* @parm	<out> | the next selection set, or NULL, if set_in was the last set in the "Select By" options */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Gets the pointer of a selection set from a tag. If there is no
				set with the given tag, an error is returned. The selection set
				may be part of  the "Select By" options or may be part of an "Information
				Management" record.
	
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_tag_to_ptr_func)(
	fzrt_int			windex,			/* @parm	<in> | project window index */
	fz_tag_td		*set_tag,		/* @parm	<in> | the tag of the selection set for which to find the pointer */
	fz_msel_set_ptr	*set_ptr		/* @parm	<out> | the selection set pointer which belongs to the given tag */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Gets the tag of a selection set from the set pointer
	
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_ptr_to_tag_func)(
	fzrt_int			windex,			/* @parm	<in> | project window index */
	fz_msel_set_ptr	set_ptr,		/* @parm	<in> | the selection set pointer for which to find the tag */
	fz_tag_td		*set_tag		/* @parm	<out> | the selection set tag which belongs to the given pointer */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Creates a new selection set in the Select By options
	
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_set_create_func)(
	fzrt_int			windex,			/* @parm	<in> | project window index */
	fz_msel_set_ptr	*new_set_ptr	/* @parm	<out> | the new selection set */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Makes a copy of a selection set in the Select By options. A pointer to
				the new set is returned.
	
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_set_copy_func)(
	fzrt_int			windex,			/* @parm	<in> | project window index */
	fz_msel_set_ptr	src_set_ptr,	/* @parm	<in> | the selection set to copy */
	fz_msel_set_ptr	*new_set_ptr	/* @parm	<out> | the new selection set */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Deletes a selection set from the Select By options. Note, that
				the last remaining set in the Select By options cannot be
				deleted.
	
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_set_delete_func)(
	fzrt_int			windex,			/* @parm	<in> | project window index */
	fz_msel_set_ptr	set_ptr			/* @parm	<in> | the selection set to delete */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Makes a selection set the current set in the Select By options.
				The current set is the one highlighted, when the Selection Criteria:Modeling dialog 
				is opened
	
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_set_current_func)(
	fzrt_int			windex,			/* @parm	<in> | project window index */
	fz_msel_set_ptr	set_ptr			/* @parm	<in> | the selection set which will become the current set */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Gets current selection set in the Select By options.
				The current set is the one highlighted, when the Selection Criteria:Modeling dialog 
				is opened
	
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_get_current_func)(
	fzrt_int			windex,			/* @parm	<in> | project window index */
	fz_msel_set_ptr	*set_ptr		/* @parm	<out> | the current selection set */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Turns a selection category in a selection set on or off.
	
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_cat_set_select_func)(
	fzrt_int				windex,			/* @parm	<in> | project window index */
	fz_msel_set_ptr		set_ptr,		/* @parm	<in> | the selection set whose category to turn on or off */
	fz_msel_cat_enum	cat,			/* @parm	<in> | the category identifier */
	fzrt_boolean		select			/* @parm	<in> | TRUE for turning on, FALSE for turning off */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Returns, whether a selection category in a selection set is on or off.
	
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_cat_get_select_func)(
	fzrt_int				windex,			/* @parm	<in> | project window index */
	fz_msel_set_ptr		set_ptr,		/* @parm	<in> | the selection set whose category the check */
	fz_msel_cat_enum	cat,			/* @parm	<in> | the category identifier */
	fzrt_boolean		*select			/* @parm	<out> | TRUE if the category is turned on, FALSE if the category is turned off */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets whether a selection set uses a particular topology type or not as
				selection criteria. This is equivalent to clicking in the "Topology Types"
				list in the "Selection Criteria : Modeling" dialog.
	
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_topo_type_set_criteria_func)(
	fzrt_int					windex,			/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set for which to set the topology type criteria */
	fz_msel_topo_type_enum	topo_type,		/* @parm	<in> | the topology type identifier */
	fzrt_boolean			select			/* @parm	<in> | TRUE for using the given topology type, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Returns whether a selection set uses a particular topology type or not as
				selection criteria.
	
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_topo_type_get_criteria_func)(
	fzrt_int					windex,			/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set from which to get the topology type criteria */
	fz_msel_topo_type_enum	topo_type,		/* @parm	<in> | the topology type identifier */
	fzrt_boolean			*select			/* @parm	<out> | TRUE if the given topology type is used, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets whether a selection set uses a particular control object type or not as
				selection criteria. This is equivalent to clicking in the "Object Types"
				list in the "Selection Criteria : Modeling" dialog. If NULL is passed as the 
				cntl_type_uuid parameter, all object control types are turned on or off.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_cntl_type_set_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set for which to set the object type criteria */
	fzrt_UUID_td			cntl_type_uuid, /* @parm	<in> | the object type identifier */
	fzrt_boolean			select			/* @parm	<in> | TRUE for using the given object type, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Returns whether a selection set uses a particular control object type or not as
				selection criteria.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_cntl_type_get_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set from which to get the object type criteria */
	fzrt_UUID_td			cntl_type_uuid, /* @parm	<in> | the object type identifier */
	fzrt_boolean			*select			/* @parm	<out> | TRUE if the given object type is used, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets the model type selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_model_type_set_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set for which to set the model type criteria */
	fz_objt_model_type_enum	model_type		/* @parm	<in> | the model type to be used */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Gets the model type selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_model_type_get_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set from which to get the model type criteria */
	fz_objt_model_type_enum	*model_type		/* @parm	<out> | the model type which is used */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets the min/max number of faces selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_num_faces_set_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set for which to set the number of faces criteria */
	fzrt_int					min_num_face,   /* @parm	<in> | the minimum number of faces to be used */
	fzrt_int					max_num_face	/* @parm	<in> | the maximum number of faces to be used */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Gets the min/max number of faces selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_num_faces_get_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set from which to get the number of faces criteria */
	fzrt_int					*min_num_face,	/* @parm	<out> | the minimum number of faces which are used */
	fzrt_int					*max_num_face   /* @parm	<out> | the maximum number of faces which are used */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets whether a selection set uses a particular surface style or not as
				selection criteria. This is equivalent to clicking in the "Surface Styles"
				list in the "Selection Criteria : Modeling" dialog. If NULL is passed as the 
				rmtl_tag parameter, all surface styles are turned on or off.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_rmtl_set_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set for which to set the surface style criteria */
	fz_tag_td				*rmtl_tag,		/* @parm	<in> | the tag of the surface style */
	fzrt_boolean			select			/* @parm	<in> | TRUE for using the given surface style, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Returns whether a selection set uses a particular surface style or not as
				selection criteria.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_rmtl_get_criteria_func)(
	fzrt_int					windex, 	/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,    /* @parm	<in> | the selection set from which to get the surface style criteria */
	fz_tag_td				*rmtl_tag,  /* @parm	<in> | the tag of the surface style */
	fzrt_boolean			*select		/* @parm	<out> | TRUE if the given surface style is used, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets whether a selection set uses a particular layer or not as
				selection criteria. This is equivalent to clicking in the "Layers"
				list in the "Selection Criteria : Modeling" dialog. If NULL is passed as the 
				layer_tag parameter, all layers are turned on or off.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_layer_set_criteria_func)(
	fzrt_int					windex, 	/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,    /* @parm	<in> | the selection set for which to set the layer criteria */
	fz_tag_td				*layer_tag, /* @parm	<in> | the tag of the layer */
	fzrt_boolean			select		/* @parm	<in> | TRUE for using the given layer, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Returns whether a selection set uses a particular layer or not as
				selection criteria.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_layer_get_criteria_func)(
	fzrt_int					windex, 	/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,    /* @parm	<in> | the selection set from which to get the layer criteria */
	fz_tag_td				*layer_tag, /* @parm	<in> | the tag of the layer */
	fzrt_boolean			*select		/* @parm	<out> | TRUE if the given layer is used, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets whether a selection set uses a particular attribute or not as
				selection criteria. This is equivalent to clicking in the "Attributes In Use"
				list in the "Selection Criteria : Modeling" dialog. If NULL is passed as the 
				attr_tag parameter, all attributes are turned on or off.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_attr_set_criteria_func)(
	fzrt_int					windex, 	/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,    /* @parm	<in> | the selection set for which to set the attribute criteria */
	fzrt_UUID_td			attr_uuid,  /* @parm	<in> | the uuid of the attribute */
	fzrt_boolean			select		/* @parm	<in> | TRUE for using the given attribute, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Returns whether a selection set uses a particular attribute or not as
				selection criteria.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_attr_get_criteria_func)(
	fzrt_int					windex, 	/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,    /* @parm	<in> | the selection set from which to get the attribute criteria */
	fzrt_UUID_td			attr_uuid,  /* @parm	<in> | the uuid of the attribute */
	fzrt_boolean			*select		/* @parm	<out> | TRUE if the given attribute is used, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets the object / group name selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_name_set_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set for which to set the name criteria */
	fz_msel_name_type_enum	name_type,		/* @parm	<in> | the name type option to use */
	fz_msel_name_which_enum	name_which,		/* @parm	<in> | the which option to use */
	fz_string_td			name,			/* @parm	<in> | the name string to use */
	fzrt_boolean			igonore_case	/* @parm	<in> | TRUE if ignoring the case (i.e. not upper / lower case sensitive), FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Gets the object / group name selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_name_get_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set from which to get the name criteria */
	fz_msel_name_type_enum	*name_type,		/* @parm	<out> | the name type option used */
	fz_msel_name_which_enum	*name_which,    /* @parm	<out> | the which option used */
	fz_string_td			name,			/* @parm	<out> | the name string used */
	fzrt_boolean			*igonore_case   /* @parm	<out> | TRUE if the case is ignored (i.e. not upper / lower case sensitive), FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets the smooth shade selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_smth_set_criteria_func)(
	fzrt_int					windex, 	/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,    /* @parm	<in> | the selection set for which to set the smooth shading criteria */
	fzrt_boolean			smth_on,    /* @parm	<in> | TRUE for using smooth shading on, FALSE otherwise */
	fzrt_boolean			smth_all,   /* @parm	<in> | TRUE for using smooth shading all, FALSE otherwise */
	fzrt_boolean			smth_angle, /* @parm	<in> | TRUE for using smooth shading by angle, FALSE otherwise */
	fzrt_boolean			smth_face,	/* @parm	<in> | TRUE for using smooth shading by face smoothing, FALSE otherwise */
	fzrt_boolean			smth_nsides	/* @parm	<in> | TRUE for using smooth shading by # of sides per face, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Gets the smooth shade selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_smth_get_criteria_func)(
	fzrt_int					windex, 	/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,    /* @parm	<in> | the selection set from which to get the smooth shading criteria */
	fzrt_boolean			*smth_on,   /* @parm	<out> | TRUE if smooth shading on is used, FALSE otherwise */
	fzrt_boolean			*smth_all,  /* @parm	<out> | TRUE if smooth shading all is used, FALSE otherwise */
	fzrt_boolean			*smth_angle,/* @parm	<out> | TRUE if smooth shading by angle is used, FALSE otherwise */
	fzrt_boolean			*smth_face, /* @parm	<out> | TRUE if smooth shading by face smoothing is used, FALSE otherwise */
	fzrt_boolean			*smth_nsides/* @parm	<out> | TRUE if smooth shading by # of sides per face is used, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets the shadows selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_shad_set_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set for which to set the smooth shading criteria */
	fzrt_boolean			cast_shad_on,   /* @parm	<in> | TRUE for using casting shadows on, FALSE otherwise */
	fzrt_boolean			recv_shad_on    /* @parm	<in> | TRUE for using receiving shadows on, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Gets the shadows selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_shad_get_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set from which to get the smooth shading criteria */
	fzrt_boolean			*cast_shad_on,  /* @parm	<out> | TRUE if casting shadows on is used, FALSE otherwise */
	fzrt_boolean			*recv_shad_on   /* @parm	<out> | TRUE if receiving shadows on is used, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets the rendering backdrop selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_bdrp_set_criteria_func)(
	fzrt_int					windex, 	/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,    /* @parm	<in> | the selection set for which to set the rendering backdrop criteria */
	fzrt_boolean			backdrop_on /* @parm	<in> | TRUE for using rendering backdrop on, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Gets the rendering backdrop selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_bdrp_get_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set from which to get the rendering backdrop criteria */
	fzrt_boolean			*backdrop_on    /* @parm	<in> | TRUE if rendering backdrop on is used, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets the render as wireframe selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_rndr_wire_set_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set for which to set the render as wireframe criteria */
	fzrt_boolean			rndr_as_wire_on /* @parm	<in> | TRUE for using render as wireframe on, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Gets the render as wireframe selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_rndr_wire_get_criteria_func)(
	fzrt_int					windex, 			/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,			/* @parm	<in> | the selection set from which to get the render as wireframe criteria */
	fzrt_boolean			*rndr_as_wire_on    /* @parm	<in> | TRUE if render as wireframe on is used, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets the render as surface selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_rndr_surf_set_criteria_func)(
	fzrt_int					windex, 		/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,		/* @parm	<in> | the selection set for which to set the render as surface criteria */
	fzrt_boolean			rndr_as_surf_on	/* @parm	<in> | TRUE for using render as surface on, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Gets the render as surface selection criteria of a selection set.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_rndr_surf_get_criteria_func)(
	fzrt_int					windex, 			/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,			/* @parm	<in> | the selection set from which to get the render as surface criteria */
	fzrt_boolean			*rndr_as_surf_on    /* @parm	<in> | TRUE if render as surface on is used, FALSE otherwise */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Sets the pick options of a selection set. The options are : Apply To
				Ghosted, Apply To Unghosted and Add To Pick / Remove From Pick. They
				are the same as seen in the Selection Criteria : Modeling dialog.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_set_pick_opts_func)(
	fzrt_int					windex, 			/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,			/* @parm	<in> | the selection set for which to set pick options */
	fzrt_boolean			apply_to_unghosted, /* @parm	<in> | TRUE if applying the selection criteria to unghosted objects */
	fzrt_boolean			apply_to_ghosted,	/* @parm	<in> | TRUE if applying the selection criteria to ghosted objects */
	fzrt_boolean			add_to_pick			/* @parm	<in> | TRUE if adding selected objects to the pick buffer, FALSE if removing them from the pick buffer */
	);

/************************************************************************

	@fsfunc_t
	
	@desc		Gets the pick options of a selection set. The options are : Apply To
				Ghosted, Apply To Unghosted and Add To Pick / Remove From Pick. They
				are the same as seen in the Selection Criteria : Modeling dialog.
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
																						
*************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_msel_get_pick_opts_func)(
	fzrt_int					windex, 			/* @parm	<in> | project window index */
	fz_msel_set_ptr			set_ptr,			/* @parm	<in> | the selection set for which to set pick options */
	fzrt_boolean			*apply_to_unghosted,/* @parm	<out> | TRUE if the selection criteria is applied to unghosted objects */
	fzrt_boolean			*apply_to_ghosted,  /* @parm	<out> | TRUE if the selection criteria is applied to ghosted objects */
	fzrt_boolean			*add_to_pick		/* @parm	<out> | TRUE if selected objects are added to the pick buffer, FALSE if they are removed from the pick buffer */
	);

/************************************************************************
	
	@fsfunc_t	
	
	@desc		Gets the name (title) selection set.
				
	@return		Error codes
	
	@avail		8.0.2.0

	@exfile		

 	@see		

	@toc		proj
	
************************************************************************/
typedef fzrt_error_td (FZRT_SPEC *fz_proj_msel_get_name_func)(
	fzrt_int 			windex,		/* @parm	<in> | project window index */
	fz_msel_set_ptr		set_ptr,	/* @parm	<in> | the selection set for which to set pick options */
	fz_string_td		name		/* @parm	<out> | name (title) of the selection set */
	);
/************************************************************************
	
	@fsfunc_t	
	
	@desc		Sets the name (title) selection set.
				
	@return		Error codes
	
	@avail		8.0.2.0

	@exfile		

 	@see		

	@toc		proj
	
************************************************************************/
typedef fzrt_error_td (FZRT_SPEC *fz_proj_msel_set_name_func)(
	fzrt_int 			windex,		/* @parm	<in> | project window index */
	fz_msel_set_ptr		set_ptr,	/* @parm	<in> | the selection set for which to set pick options */
	fz_string_td		name		/* @parm	<in> | name (title) of the selection set */
	);


/************************************************************************
	@fsfunc_t
	
	@desc		
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_oper_start_func)(
	fzrt_int					windex, 			
	fzrt_UUID_td			uuid,			
	char					*undo_str,
	fzrt_ptr				*data		
	);

/************************************************************************
	@fsfunc_t
	
	@desc		
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_oper_end_func)(
	fzrt_UUID_td			uuid,			
	fzrt_ptr				*data		
	);


/************************************************************************
	@fsfunc_t
	
	@desc		
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_track_start_func)(
		fzrt_int				windex	
		);

/************************************************************************
	@fsfunc_t
	
	@desc		
				
	@return		Error codes
	
	@avail		5.0.0.0

	@exfile		

 	@see		

	@toc		proj
************************************************************************/
typedef fzrt_error_td	(FZRT_SPEC *fz_proj_track_end_func)(
		fzrt_int				windex	
	);


/************************************************************************
	
	@fsfunc_t	
	
	@desc		Gets the name of the current scene in a project. If there is no current
				scene an empty string is returned. 
				
	@return		Error codes
	
	@avail		6.7.0.0

	@exfile		

 	@see		

	@toc		proj
	
************************************************************************/
typedef fzrt_error_td (FZRT_SPEC *fz_proj_scene_get_name_func)(
	fzrt_int 			windex,		/* @parm	<in> | project window index */
	fz_string_td	name		/* @parm	<out> | Name of current scene or "" if no current scene exists */
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Returns a pointer to the project data of a cmnd.

	@return		Error codes

	@avail		8.6.0.0

	@see		

	@exfile		

	@toc	proj

*********************************************************************************************************/
typedef short  (FZRT_SPEC *fz_proj_cmnd_data_get_func)(
	fzrt_int			windex,				/* @parm	<in> | project window index 			*/
	fzrt_UUID_td		cmnd_uuid,			/* @parm	<in> | The cmnd's UUID 				*/
	fzrt_ptr			*proj_data			/* @parm	<out> | A pointer to the renderer's project data		*/
	);

/********************************************************************************************************

	@fsfunc_t	

	@desc		Returns a pointer to the project window data of a cmnd.

	@return		Error codes

	@avail		8.6.0.0

	@see		

	@exfile		

	@toc	proj

*********************************************************************************************************/
typedef short  (FZRT_SPEC *fz_proj_cmnd_wind_data_get_func)(
	fzrt_int			windex,				/* @parm	<in> | project window index 			*/
	fzrt_UUID_td		cmnd_uuid,			/* @parm	<in> | The cmnd's UUID 				*/
	fzrt_ptr			*wind_data			/* @parm	<out> | A pointer to the renderer's project data		*/
	);

/************************************************************************

	@fset	fz_proj_fset

	@desc	formZ project function Set

	@avail	5.0.0.0

	@toc	proj

*************************************************************************/

/********************************************************************************************************

	@fsdef	formZ project function set UUID.

*********************************************************************************************************/
/* UUID : {563722ea-fe95-4ce0-9f27-96fb781871fc} */
#define FZ_PROJ_FSET_TYPE		"\x56\x37\x22\xea\xfe\x95\x4c\xe0\x9f\x27\x96\xfb\x78\x18\x71\xfc"	/* Reference : 25 */

/********************************************************************************************************

	@fsdef	formZ project function set name.

*********************************************************************************************************/
#define FZ_PROJ_FSET_NAME		"formZ Project functions"

/********************************************************************************************************

	@fsdef	formZ project function set version.

*********************************************************************************************************/
#define FZ_PROJ_FSET_VERSION	FZPL_VERS_MAKE(9,2,2,1)

typedef struct fz_proj_fset
{
	fzpl_fset_prvt_data_td				prvt_data;

	fz_proj_get_name_func					fz_proj_get_name;				/* @fsfunc */
	fz_proj_set_name_func					fz_proj_set_name;				/* @fsfunc */
	fz_proj_get_floc_func					fz_proj_get_floc;				/* @fsfunc */
	fz_proj_set_floc_func					fz_proj_set_floc;				/* @fsfunc */
	fz_proj_new_func						fz_proj_new;					/* @fsfunc */
	fz_proj_open_func						fz_proj_open;					/* @fsfunc */
	fz_proj_save_func						fz_proj_save;					/* @fsfunc */
	fz_proj_close_func						fz_proj_close;					/* @fsfunc */
	fz_proj_get_count_func					fz_proj_get_count;				/* @fsfunc */
	fz_proj_get_windex_func					fz_proj_get_windex;				/* @fsfunc */

	fz_proj_dirty_func						fz_proj_dirty;					/* @fsfunc */
	fz_proj_units_get_parm_data_func		fz_proj_units_get_parm_data;    /* @fsfunc */
	fz_proj_units_set_parm_data_func		fz_proj_units_set_parm_data;    /* @fsfunc */
	fz_proj_color_get_rgb_func				fz_proj_color_get_rgb;			/* @fsfunc */
	fz_proj_color_set_rgb_func				fz_proj_color_set_rgb;			/* @fsfunc */
	
	
	fz_proj_rndr_opts_sshd_get_func			fz_proj_rndr_opts_sshd_get;		/* @fsfunc */
	fz_proj_rndr_opts_sshd_set_func			fz_proj_rndr_opts_sshd_set;		/* @fsfunc */
	fz_proj_rndr_opts_geom_get_func			fz_proj_rndr_opts_geom_get;		/* @fsfunc */
	fz_proj_rndr_opts_geom_set_func			fz_proj_rndr_opts_geom_set;		/* @fsfunc */
	fz_proj_rndr_opts_tctl_get_func			fz_proj_rndr_opts_tctl_get;		/* @fsfunc */
	fz_proj_rndr_opts_tctl_set_func			fz_proj_rndr_opts_tctl_set;		/* @fsfunc */

	fz_proj_plugin_exec_util_func			fz_proj_plugin_exec_util;		/* @fsfunc */
	fz_proj_script_exec_util_func			fz_proj_script_exec_util;		/* @fsfunc */
	fz_proj_clear_func						fz_proj_clear;					/* @fsfunc */
	fz_proj_revert_func						fz_proj_revert;					/* @fsfunc */
	fz_proj_get_print_setup_parm_data_func	fz_proj_get_print_setup_parm_data;	/* @fsfunc */
	fz_proj_set_print_setup_parm_data_func	fz_proj_set_print_setup_parm_data;	/* @fsfunc */
	fz_proj_save_as_func					fz_proj_save_as;				/* @fsfunc */
	fz_proj_save_a_copy_as_func				fz_proj_save_a_copy_as;			/* @fsfunc */
	fz_proj_get_window_tiles_func			fz_proj_get_window_tiles;		/* @fsfunc */
	fz_proj_set_window_tiles_func			fz_proj_set_window_tiles;		/* @fsfunc */
	fz_proj_rndr_opts_get_func				fz_proj_rndr_opts_get;			/* @fsfunc */
	fz_proj_rndr_opts_set_func				fz_proj_rndr_opts_set;			/* @fsfunc */


	fz_proj_msel_get_num_sets_func				fz_proj_msel_get_num_sets;				/* @fsfunc */
	fz_proj_msel_get_next_set_func				fz_proj_msel_get_next_set;				/* @fsfunc */
	fz_proj_msel_tag_to_ptr_func				fz_proj_msel_tag_to_ptr;				/* @fsfunc */
	fz_proj_msel_ptr_to_tag_func				fz_proj_msel_ptr_to_tag;				/* @fsfunc */
	fz_proj_msel_set_create_func				fz_proj_msel_set_create;				/* @fsfunc */
	fz_proj_msel_set_copy_func					fz_proj_msel_set_copy;					/* @fsfunc */
	fz_proj_msel_set_delete_func				fz_proj_msel_set_delete;				/* @fsfunc */
	fz_proj_msel_set_current_func				fz_proj_msel_set_current;				/* @fsfunc */
	fz_proj_msel_get_current_func				fz_proj_msel_get_current;				/* @fsfunc */
	fz_proj_msel_cat_set_select_func			fz_proj_msel_cat_set_select;			/* @fsfunc */
	fz_proj_msel_cat_get_select_func			fz_proj_msel_cat_get_select;			/* @fsfunc */
	fz_proj_msel_topo_type_set_criteria_func    fz_proj_msel_topo_type_set_criteria;	/* @fsfunc */
	fz_proj_msel_topo_type_get_criteria_func    fz_proj_msel_topo_type_get_criteria;	/* @fsfunc */
	fz_proj_msel_cntl_type_set_criteria_func    fz_proj_msel_cntl_type_set_criteria;	/* @fsfunc */
	fz_proj_msel_cntl_type_get_criteria_func    fz_proj_msel_cntl_type_get_criteria;	/* @fsfunc */
	fz_proj_msel_model_type_set_criteria_func   fz_proj_msel_model_type_set_criteria;	/* @fsfunc */
	fz_proj_msel_model_type_get_criteria_func	fz_proj_msel_model_type_get_criteria;	/* @fsfunc */
	fz_proj_msel_num_faces_set_criteria_func  	fz_proj_msel_num_faces_set_criteria;	/* @fsfunc */
	fz_proj_msel_num_faces_get_criteria_func  	fz_proj_msel_num_faces_get_criteria;	/* @fsfunc */
	fz_proj_msel_rmtl_set_criteria_func			fz_proj_msel_rmtl_set_criteria;			/* @fsfunc */
	fz_proj_msel_rmtl_get_criteria_func			fz_proj_msel_rmtl_get_criteria;			/* @fsfunc */
	fz_proj_msel_layer_set_criteria_func		fz_proj_msel_layer_set_criteria;		/* @fsfunc */
	fz_proj_msel_layer_get_criteria_func		fz_proj_msel_layer_get_criteria;		/* @fsfunc */
	fz_proj_msel_attr_set_criteria_func			fz_proj_msel_attr_set_criteria;			/* @fsfunc */
	fz_proj_msel_attr_get_criteria_func			fz_proj_msel_attr_get_criteria;			/* @fsfunc */
	fz_proj_msel_name_set_criteria_func			fz_proj_msel_name_set_criteria;			/* @fsfunc */
	fz_proj_msel_name_get_criteria_func			fz_proj_msel_name_get_criteria;			/* @fsfunc */
	fz_proj_msel_smth_set_criteria_func			fz_proj_msel_smth_set_criteria;			/* @fsfunc */
	fz_proj_msel_smth_get_criteria_func			fz_proj_msel_smth_get_criteria;			/* @fsfunc */
	fz_proj_msel_shad_set_criteria_func			fz_proj_msel_shad_set_criteria;			/* @fsfunc */
	fz_proj_msel_shad_get_criteria_func			fz_proj_msel_shad_get_criteria;			/* @fsfunc */
	fz_proj_msel_bdrp_set_criteria_func			fz_proj_msel_bdrp_set_criteria;			/* @fsfunc */
	fz_proj_msel_bdrp_get_criteria_func			fz_proj_msel_bdrp_get_criteria;			/* @fsfunc */
	fz_proj_msel_rndr_wire_set_criteria_func    fz_proj_msel_rndr_wire_set_criteria;	/* @fsfunc */
	fz_proj_msel_rndr_wire_get_criteria_func    fz_proj_msel_rndr_wire_get_criteria;	/* @fsfunc */
	fz_proj_msel_rndr_surf_set_criteria_func    fz_proj_msel_rndr_surf_set_criteria;	/* @fsfunc */
	fz_proj_msel_rndr_surf_get_criteria_func    fz_proj_msel_rndr_surf_get_criteria;	/* @fsfunc */
	fz_proj_msel_set_pick_opts_func				fz_proj_msel_set_pick_opts;				/* @fsfunc */
	fz_proj_msel_get_pick_opts_func				fz_proj_msel_get_pick_opts;				/* @fsfunc */
	fz_proj_oper_start_func						fz_proj_oper_start;						/* @fsfunc */
	fz_proj_oper_end_func						fz_proj_oper_end;						/* @fsfunc */
	fz_proj_track_start_func					fz_proj_track_start;					/* @fsfunc */
	fz_proj_track_end_func						fz_proj_track_end;						/* @fsfunc */
	
	/************************************************************************************
	 *																					*
	 *		DO NOT MAKE ANY CHANGES TO THE ABOVE FUNCTIONS!!!							*
	 *		DO NOT ADD ANY FUNCTION ABOVE THIS LINE!!!									*
	 *		@comm  End of version 5.0.0.0 functions.									*
	 *																					*
	 ************************************************************************************/
	
	/************************************************************************************
	 *																					*
	 *		START OF 6.7 FCUNTIONS														*
	 *		@comm  Start of 6.7.0.0 functions.											*
	 *																					*
	 ************************************************************************************/
	fz_proj_scene_get_name_func					fz_proj_scene_get_name;					/* @fsfunc */
	
	/************************************************************************************
	 *																					*
	 *		START OF 8.0.2 FCUNTIONS													*
	 *		@comm  Start of 8.0.2.0 functions.											*
	 *																					*
	 ************************************************************************************/
	fz_proj_msel_get_name_func					fz_proj_msel_get_name;					/* @fsfunc */
	fz_proj_msel_set_name_func					fz_proj_msel_set_name;					/* @fsfunc */
	fz_proj_save_with_progress_func				fz_proj_save_with_progress;				/* @fsfunc */

	/************************************************************************************
	 *																					*
	 *		START OF 8.6.0 FCUNTIONS													*
	 *		@comm  Start of 8.6.0 functions.											*
	 *																					*
	 ************************************************************************************/
	fz_proj_cmnd_data_get_func					fz_proj_cmnd_data_get;					/* @fsfunc */
	fz_proj_cmnd_wind_data_get_func				fz_proj_cmnd_wind_data_get;				/* @fsfunc */

	/************************************************************************************
	 *																					*
	 *		START OF 9.2.2 FUNCTIONS													*
	 *		@comm  Start of 9.2.2 functions.											*
	 *																					*
	 ************************************************************************************/
	fz_proj_get_UUID_func						fz_proj_get_UUID;						/* @fsfunc */
	fz_proj_get_session_UUID_func				fz_proj_get_session_UUID;				/* @fsfunc */
	fz_proj_is_user_func						fz_proj_is_user;						/* @fsfunc */

}  fz_proj_fset;

#ifdef __cplusplus
}
#endif

#endif /*__FORMZ_APPL_H */
