/*********************************************************************************************
 *                                                                                           *
 *                                                                                           *
 *   Copyright 1989-2018 by AutoDesSys, Inc.                                                 *
 *                                                                                           *
 *   This software and its associated documentation contains proprietary,                    *
 *   confidential, and trade secret information of AutoDesSys Inc. and may not be            *
 *   disclosed, copied in any form, or used for any purpose except as specifically           *
 *   permitted in writing by AutoDesSys, Inc.                                                *
 *                                                                                           *
 *   AutoDesSys, Inc. grants permission to use the software to those who purchase            *
 *   a license.  Such a usage will be made according to the terms and conditions             *
 *   specified in the license agreement to which a licensee agrees before installing         *
 *   and commencing usage of the software.  The license agreement can be found               *
 *   on the envelop that contains the software CD.                                           *
 *                                                                                           *
 *   AutoDesSys, Inc. also grants permission to licensees to develop extensions to           *
 *   the software, which can be in the form of scripts or plugins.  The permission           *
 *   includes calling the API and call back functions provided by AutoDesSys, Inc.           *
 *   and accessing information relevant to these functions and the general workings          *
 *   of form.Z, but only up to the point to which AutoDesSys, Inc. has chosen to             *
 *   expose, through its form.Z SDK Manual.  All extensions developed by third               *
 *   parties will include a copy of this copyright note in an easily accessible place or     *
 *   a clear instruction to read this original note by AutoDesSys, Inc.                      *
 *                                                                                           *
 *   All the software distributed under a license, either for the purpose of using it or     *
 *   for the purpose of developing extensions, is distributed AS IS, WITHOUT                 *
 *   WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, AND                                    *
 *   AutoDesSys, Inc. HEREBY DISCLAIMS ALL SUCH WARRANTIES,                                  *
 *   INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF                                         *
 *   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.                                    *
 *                                                                                           *
 *   formZ, RenderZone, and RadioZity are registered trademarks of AutoDesSys, Inc.          *
 *                                                                                           *
 *   form.Z SDK, Version 8.6.3, Dec 03, 2018                                                 *
 *                                                                                           *
 *                                                                                           *
 *********************************************************************************************/


#ifndef _FORMZ_MODEL_REFN_API_H
#define _FORMZ_MODEL_REFN_API_H

#ifdef __cplusplus
extern "C" {
#endif

#include "fz_type_api.h"
#include "fz_model_core_api.h"


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

	fz_attr_refn_ptr


	Description
		Data structure to hold options for the modeling display resolution 
		The individual fields of this type can be accessed and set via 
		fz_objt_attr_refn_get and fz_objt_attr_refn_set.

	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_objt_cnstr_bend, fz_objt_cnstr_dsweep_angle, fz_objt_cnstr_dsweep_custom,  
		fz_objt_cnstr_dsweep_dist, fz_objt_cnstr_dsweep_predef, fz_objt_cnstr_dsweep_wire,  
		fz_objt_cnstr_fillet, fz_objt_cnstr_helix_around_axis, fz_objt_cnstr_helix_around_wire,  
		fz_objt_cnstr_helix_from_src, fz_objt_cnstr_loft, fz_objt_cnstr_morf,  
		fz_objt_cnstr_nrbz_curve, fz_objt_cnstr_nrbz_curve_pt_spline, fz_objt_cnstr_nrbz_curve_sections,  
		fz_objt_cnstr_objt_from_ncur, fz_objt_cnstr_tang_curve, fz_objt_cnstr_nrbz_from_bndry_curves,  
		fz_objt_cnstr_nrbz_from_cpts, fz_objt_cnstr_nrbz_from_cube, fz_objt_cnstr_nrbz_from_nsrf,  
		fz_objt_cnstr_nrbz_from_uv_curves, fz_objt_cnstr_nrbz_through_curves, fz_objt_cnstr_nrbz_through_points,  
		fz_objt_cnstr_nrbz_trimmed_curves, fz_objt_cnstr_objt_from_nsrfs, fz_objt_cnstr_cone,  
		fz_objt_cnstr_cyln, fz_objt_cnstr_hbl1, fz_objt_cnstr_hbl2,  
		fz_objt_cnstr_hpbl, fz_objt_cnstr_prbl, fz_objt_cnstr_sphr,  
		fz_objt_cnstr_tors, fz_objt_cnstr_patch_bezier, fz_objt_cnstr_patch_from_obj,  
		fz_objt_attr_get_objt_refn, fz_objt_attr_refn_are_equal, fz_objt_attr_refn_copy,  
		fz_objt_attr_refn_get, fz_objt_attr_refn_set, fz_objt_attr_set_objt_refn,  
		fz_objt_cnstr_revolve, fz_objt_cnstr_sloft_basic, fz_objt_cnstr_sloft_branched,  
		fz_objt_cnstr_sloft_normal, fz_objt_cnstr_sloft_path, fz_objt_cnstr_sloft_ruled,  
		fz_objt_cnstr_srnd, fz_objt_edit_srnd_plain, fz_objt_edit_srnd_stitch,  
		fz_objt_cnstr_formula_curve, fz_objt_cnstr_formula_surface, fz_objt_cnstr_sweep_2path,  
		fz_objt_cnstr_sweep_2source, fz_objt_cnstr_sweep_axial, fz_objt_cnstr_sweep_boundary,  
		fz_objt_cnstr_text_between_lines, fz_objt_cnstr_text_object, fz_objt_cnstr_text_on_line,  
		fz_objt_cnstr_text_parl_lines, fz_objt_cnstr_text_unistr_between_lines, fz_objt_cnstr_text_unistr_object,  
		fz_objt_cnstr_text_unistr_on_line, fz_objt_cnstr_text_unistr_parl_lines

 ****************************************************************/
typedef struct	attr_refn_td	*fz_attr_refn_ptr;


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

	fz_attr_refn_parm_enum


	Description
		Parameter identifiers for the display resolution attribute. 
		Used for the "which" argument of fz_objt_attr_refn_get 
		and fz_objt_attr_refn_set

	Members
		FZ_ATTR_REFN_PARM_USE_SIMPLE
			use simple parameter on/off
			Type: fzrt_boolean
			Default Value: TRUE
		FZ_ATTR_REFN_PARM_SIMPLE_SMOOTHNESS
			simple display resolution smoothness
			Type: double
			Range: 0.0
			Default Value: 0.5
		FZ_ATTR_REFN_PARM_DETL_ISO_DENS
			detailed display resolution, iso line density
			Type: fz_attr_refn_iso_dens_enum
			Default Value: FZ_ATTR_REFN_PARM_ISO_DENS_MEDIUM
		FZ_ATTR_REFN_PARM_DETL_EDGE_METHOD
			detailed display resolution, edges and iso 
			lines facetting method
			Type: fz_attr_refn_edge_type_enum
			Default Value: FZ_ATTR_REFN_PARM_EDGE_TYPE_MAX_NORM
		FZ_ATTR_REFN_PARM_DETL_EDGE_NORM_DEV
			detailed display resolution for edges and iso lines, 
			max normal deviation
			Type: double
			Range: 0.0
			Default Value: PI / 18.0 (10 degrees)
		FZ_ATTR_REFN_PARM_DETL_EDGE_LENGTH
			detailed display resolution for edges and iso lines, 
			max edge length
			Type: double
			Range: 0.0
			Default Value: English 24.0 in, Metric 50.0 cm

		FZ_ATTR_REFN_PARM_DETL_EDGE_NUM_SEGS
			detailed display resolution for edges and iso lines, 
			# of segments
			Type: fzrt_int
			Range: 8
			Default Value: 48
		FZ_ATTR_REFN_PARM_DETL_FACET_USE_NUM_FACETS
			detailed display resolution for faces, 
			use # max of facets on (TRUE) or off (FALSE).
			Type: fzrt_boolean
			Default Value: TRUE
		FZ_ATTR_REFN_PARM_DETL_FACET_USE_EDGE_LEN
			detailed display resolution for faces, 
			use max edge length on (TRUE) or off (FALSE).
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_ATTR_REFN_PARM_DETL_FACET_USE_NORM_DEV
			detailed display resolution for faces, 
			use max normal deviation on (TRUE) or off (FALSE).
			Type: fzrt_boolean
			Default Value: TRUE
		FZ_ATTR_REFN_PARM_DETL_FACET_USE_SURF_DEV
			detailed display resolution for faces, 
			use max surface deviation on (TRUE) or off (FALSE).
			Type: fzrt_boolean
			Default Value: TRUE
		FZ_ATTR_REFN_PARM_DETL_FACET_NUM_FACETS_U
			detailed display resolution for faces, 
			max of facets in u direction
			Type: fzrt_int
			Range: 3
			Default Value: 24
		FZ_ATTR_REFN_PARM_DETL_FACET_NUM_FACETS_V
			detailed display resolution for faces, 
			max of facets in v direction
			Type: fzrt_int
			Range: 3
			Default Value: 24
		FZ_ATTR_REFN_PARM_DETL_FACET_EDGE_LEN
			detailed display resolution for faces, 
			max edge length
			Type: double
			Range: 0.0
			Default Value: English 24.0 in, Metric 50.0 cm

		FZ_ATTR_REFN_PARM_DETL_FACET_NORM_DEV
			detailed display resolution for faces, 
			max normal deviation
			Type: double
			Range: 0.0
			Default Value: PI/18.0 (10 degrees)
		FZ_ATTR_REFN_PARM_DETL_FACET_SURF_DEV
			detailed display resolution for faces, 
			max surface deviation
			Type: double
			Range: 0.0
			Default Value: English 1.0 in, Metric 2.5 cm

		FZ_ATTR_REFN_PARM_NO_FACETS
			generate no facets on/off
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_ATTR_REFN_PARM_SCHEME
			set the facetting scheme
			Type: fz_tag_td
			Default Value: FALSE

	Availability	5.0.0.0

	8.7.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_objt_attr_refn_get, fz_objt_attr_refn_set

 ****************************************************************/
typedef enum fz_attr_refn_parm_enum
{	FZ_ATTR_REFN_PARM_USE_SIMPLE = 0,
												
	FZ_ATTR_REFN_PARM_SIMPLE_SMOOTHNESS,
														
	FZ_ATTR_REFN_PARM_DETL_ISO_DENS,
	
	FZ_ATTR_REFN_PARM_DETL_EDGE_METHOD,
	
	FZ_ATTR_REFN_PARM_DETL_EDGE_NORM_DEV,
														
	FZ_ATTR_REFN_PARM_DETL_EDGE_LENGTH,
														
	FZ_ATTR_REFN_PARM_DETL_EDGE_NUM_SEGS,
	
	FZ_ATTR_REFN_PARM_DETL_FACET_USE_NUM_FACETS,
														
														
	FZ_ATTR_REFN_PARM_DETL_FACET_USE_EDGE_LEN,
														
	FZ_ATTR_REFN_PARM_DETL_FACET_USE_NORM_DEV,
														
	FZ_ATTR_REFN_PARM_DETL_FACET_USE_SURF_DEV,
														
	FZ_ATTR_REFN_PARM_DETL_FACET_NUM_FACETS_U,
														
	FZ_ATTR_REFN_PARM_DETL_FACET_NUM_FACETS_V,
														
	FZ_ATTR_REFN_PARM_DETL_FACET_EDGE_LEN,
														
	FZ_ATTR_REFN_PARM_DETL_FACET_NORM_DEV,

	FZ_ATTR_REFN_PARM_DETL_FACET_SURF_DEV,
	
	FZ_ATTR_REFN_PARM_NO_FACETS,
	
	FZ_ATTR_REFN_PARM_SCHEME,
	
	MODEL_ATTR_REFN_MAX
	
} fz_attr_refn_parm_enum;

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

	fz_attr_refn_edge_type_enum


	Description
		Edge facetting method for the display resolution attribute. 
		used by fz_objt_attr_refn_get and fz_objt_attr_refn_set with the 
		FZ_ATTR_REFN_PARM_DETL_EDGE_METHOD parameter id.

	Members
		FZ_ATTR_REFN_PARM_EDGE_TYPE_NUM_SEGS
			Use # of segments
		FZ_ATTR_REFN_PARM_EDGE_TYPE_MAX_NORM
			use max nomal deviation
		FZ_ATTR_REFN_PARM_EDGE_TYPE_MAX_LENGTH
			use max edge length

	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_objt_attr_refn_get, fz_objt_attr_refn_set, fz_attr_refn_parm_enum

 ****************************************************************/
typedef enum fz_attr_refn_edge_type_enum
{	FZ_ATTR_REFN_PARM_EDGE_TYPE_NUM_SEGS = 0,
	FZ_ATTR_REFN_PARM_EDGE_TYPE_MAX_NORM,
	FZ_ATTR_REFN_PARM_EDGE_TYPE_MAX_LENGTH

} fz_attr_refn_edge_type_enum;

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

	fz_attr_refn_iso_dens_enum


	Description
		iso line density options for the display resolution attribute. 
		used by fz_objt_attr_refn_get and fz_objt_attr_refn_set with the 
		FZ_ATTR_REFN_PARM_DETL_ISO_DENS parameter id.

	Members
		FZ_ATTR_REFN_PARM_ISO_DENS_LOW
			Low iso line density
		FZ_ATTR_REFN_PARM_ISO_DENS_MEDIUM
			Medium iso line density
		FZ_ATTR_REFN_PARM_ISO_DENS_HIGH
			High iso line density

	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_objt_attr_refn_get, fz_objt_attr_refn_set, fz_attr_refn_parm_enum

 ****************************************************************/
typedef enum fz_attr_refn_iso_dens_enum
{	FZ_ATTR_REFN_PARM_ISO_DENS_LOW = 0,
	FZ_ATTR_REFN_PARM_ISO_DENS_MEDIUM,
	FZ_ATTR_REFN_PARM_ISO_DENS_HIGH

} fz_attr_refn_iso_dens_enum;

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

	fz_attr_refn_which_init_enum


	Description
		iso line density options for the display resolution attribute. 
		used by fz_objt_attr_refn_get and fz_objt_attr_refn_set with the 
		FZ_ATTR_REFN_PARM_DETL_ISO_DENS parameter id.

	Members
		FZ_ATTR_REFN_INIT_SYSTEM
			System hardcoded defaults
		FZ_ATTR_REFN_INIT_DEFAULT
			Current settings of the global display resolution defaults
		FZ_ATTR_REFN_INIT_MINIMAL
			Setting for minimal facetting. Should be used to allow for fast 
			regeneration of facets, when performing lots of temporary 
			modeling steps. A final refacetting of the resulting objects 
			should then be done with a permanent display resolution attribute.

	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_objt_attr_refn_get, fz_objt_attr_refn_set, fz_objt_attr_refn_init

 ****************************************************************/
typedef enum fz_attr_refn_which_init_enum
{
	FZ_ATTR_REFN_INIT_SYSTEM,
	FZ_ATTR_REFN_INIT_DEFAULT,
	FZ_ATTR_REFN_INIT_MINIMAL,
	
	FZ_ATTR_REFN_INIT_MAX

} fz_attr_refn_which_init_enum;

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

	fz_objt_attr_refn_init



	Description
		Allocates display resolution options and fills it with defaults

	Parameters
		windex  [Input]
			project window index
		which_init  [Input]
			which values to use when setting the defaults
		opts  [Result]
			display resolution options

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_objt_attr_refn_get,fz_objt_attr_refn_set,fz_objt_attr_refn_finit

 ****************************************************************/
typedef fzrt_error_td	 (*fz_objt_attr_refn_init_func) (
	fzrt_int				windex,
	fz_attr_refn_which_init_enum	which_init,
	fz_attr_refn_ptr	*opts
	);

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

	fz_objt_attr_refn_get



	Description
		Gets a display resolution parameter

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			display resolution options
		which  [Input]
			parameter identifier
		data  [Result]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_objt_attr_refn_init,fz_objt_attr_refn_set,fz_objt_attr_refn_finit

 ****************************************************************/
typedef fzrt_error_td	 (*fz_objt_attr_refn_get_func) (
	fzrt_int					windex,
	fz_attr_refn_ptr		opts,
	fz_attr_refn_parm_enum	which,
	fz_type_td				*data
	);

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

	fz_objt_attr_refn_set



	Description
		Sets a display resolution parameter.

	Parameters
		windex  [Input]
			project window index
		opts  [Input]
			display resolution options
		which  [Input]
			parameter identifier
		data  [Input]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_objt_attr_refn_init,fz_objt_attr_refn_get,fz_objt_attr_refn_finit

 ****************************************************************/
typedef fzrt_error_td	 (*fz_objt_attr_refn_set_func) (
	fzrt_int					windex,
	fz_attr_refn_ptr		opts,
	fz_attr_refn_parm_enum	which,
	fz_type_td				*data
	);

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

	fz_objt_attr_refn_finit



	Description
		Frees display resolution options. 
		The opts pointer is deallocated and returned back as NULL.

	Parameters
		windex  [Input]
			project window index
		opts  [Input, Result]
			display resolution options (will become NULL)

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_objt_attr_refn_init,fz_objt_attr_refn_get,fz_objt_attr_refn_set

 ****************************************************************/
typedef fzrt_error_td	 (*fz_objt_attr_refn_finit_func) (
	fzrt_int				windex,
	fz_attr_refn_ptr	*opts
	);

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

	fz_objt_attr_refn_are_equal



	Description
		Checks whether two display resolution attributes are equal.

	Parameters
		windex1  [Input]
			project 1
		refn1  [Input]
			display resolution attribute 1
		windex2  [Input]
			project 2
		refn2  [Input]
			display resolution attribute 2
		are_equal  [Result]
			TRUE if they are equal, FALSE otherwise

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_objt_attr_refn_init,fz_objt_attr_refn_get,fz_objt_attr_refn_set,fz_objt_attr_refn_finit

 ****************************************************************/
typedef fzrt_error_td	 (*fz_objt_attr_refn_are_equal_func) (
	fzrt_int					windex1,
	fz_attr_refn_ptr		refn1,
	fzrt_int					windex2,
	fz_attr_refn_ptr		refn2,
	fzrt_boolean			*are_equal
	);

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

	fz_objt_attr_refn_copy



	Description
		Copy the content of one display resolution attribute to another. Note, that 
		the destination display resolution must already be allocated. This can be 
		done by a call to fz_objt_attr_refn_init.

	Parameters
		src_windex  [Input]
			source project
		src_refn  [Input]
			source attribute
		dst_windex  [Input]
			destination project
		dst_refn  [Input]
			destination attribute

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_objt_attr_refn_init,fz_objt_attr_refn_get,fz_objt_attr_refn_set,fz_objt_attr_refn_finit

 ****************************************************************/
typedef fzrt_error_td	 (*fz_objt_attr_refn_copy_func) (
	fzrt_int					src_windex,
	fz_attr_refn_ptr		src_refn,
	fzrt_int					dst_windex,
	fz_attr_refn_ptr		dst_refn
	);

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

	fz_objt_attr_get_objt_refn



	Description
		Get the display resolution attribute of an object. The 
		fz_attr_refn_ptr refn parameter must be created and 
		deleted by the calling function. For example :

		fz_objt_attr_refn_init(windex,&refn); 
		fz_objt_attr_get_objt_refn(windex,obj,&has_refn,refn); 
		... 
		fz_objt_attr_refn_finit(windex,&refn);

		Note, that an object may not have a display resolution attribute, in which case 
		the has_refn parameter will be returned as FALSE.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		has_refn  [Result, Optional]
			TRUE if the object has a display resolution attribute. FALSE otherwise.
		refn  [Result, Optional]
			display resolution attribute

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_objt_attr_set_objt_refn

 ****************************************************************/
typedef fzrt_error_td	 (*fz_objt_attr_get_objt_refn_func) (
	fzrt_int 					windex,
	fz_objt_ptr			obj,
	fzrt_boolean			*has_refn,
	fz_attr_refn_ptr		refn
	);
	
/****************************************************************

	fz_objt_attr_set_objt_refn



	Description
		Set the display resolution attribute of an object. Note, that 
		the display resolution attribute is mandatory for all 
		smooth objects and therefore cannot be removed. Likewise 
		it is not allowed on a plain facetted object. Therefore an error will 
		be returned if this function is called with a plain facetted object 
		as input. 
		The do_refacet argument determines, whether the facets of the object are 
		generated by this function as well or not. If set to TRUE, facets are 
		regenerated based on the display resolution attribute passed in. If 
		set to FALSE, the facets are not regenerated. This may be useful when 
		making other changes to the object and facetting needs to be delayed. 
		Facets can be regenerated independently with the API fz_objt_edit_regen_facets.

	Parameters
		windex  [Input]
			project window index
		obj  [Input]
			object
		refn  [Input]
			display resolution attribute
		do_refacet  [Input]
			If set to TRUE, object is refacetted right away. Otherwise, just the attribute is set.

	Returns
		Error codes 
		MODEL_ERR_INVALID_REFN_ATTRIBUTE - Display resolution attribute cannot be assigned to a plain facetted object


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_objt_attr_get_objt_refn,fz_objt_edit_regen_facets

 ****************************************************************/
typedef fzrt_error_td	 (*fz_objt_attr_set_objt_refn_func) (
	fzrt_int 					windex,
	fz_objt_ptr			obj,
	fz_attr_refn_ptr		refn,
	fzrt_boolean		do_refacet
	);
	
	
	
/****************************************************************

	fz_facet_scheme_parm_enum


	Description
		Parameter identifiers for the display resolution attribute. 
		Used for the "which" argument of fz_objt_attr_refn_get 
		and fz_objt_attr_refn_set

	Members
		FZ_FACET_SCHEME_PARM_NAME
			Name of scheme
			Type: fz_string_td
			Default Value: TRUE
		FZ_FACET_SCHEME_PARM_USE_NORMAL_TOLERANCE
			Deprecated
			Type: fzrt_boolean
			Default Value: TRUE
		FZ_FACET_SCHEME_PARM_USE_SURFACE_TOLERANCE
			Deprecated
			Type: fzrt_boolean
			Default Value: TRUE
		FZ_FACET_SCHEME_PARM_SURFACE_TOLERANCE_TYPE
			Surface Tolerance: Use normal angle tolerance on/off
			Type: fzrt_boolean
			Default Value: TRUE
		FZ_FACET_SCHEME_PARM_USE_MAX_ASPECT_RATIO
			Restrict based on maximum aspect ratio of a quad facet in 3D space 
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_FACET_SCHEME_PARM_USE_MAX_EDGE_LENGTH
			Restrict based on maximum length of a facet edge
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_FACET_SCHEME_PARM_USE_MIN_GRID_LINES_U
			Restrict number of constant U grid lines 
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_FACET_SCHEME_PARM_USE_MIN_GRID_LINES_V
			Restrict number of constant V grid lines 
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_FACET_SCHEME_PARM_MERGE_COPLANAR
			Merge Coplanr facets on/off
			Type: fzrt_boolean
			Default Value: TRUE
		FZ_FACET_SCHEME_PARM_NO_GRID_ON_PLANAR
			Planar faces not subdivided
			Type: fzrt_boolean
			Default Value: TRUE
		FZ_FACET_SCHEME_PARM_NO_TRIANGLES_ON_CONIC
			Conic faces of an object faceted with quads, regardless of other settings
			Type: fzrt_boolean
			Default Value: TRUE
		FZ_FACET_SCHEME_PARM_NO_FRINGE_ON_SINGLE
			Boundary of an object with a single face will not be triangulated
			Type: fzrt_boolean
			Default Value: TRUE
		FZ_FACET_SCHEME_PARM_POLYGON_TYPE
			0 = all triangles, 1 = triangles on fringe only, quad-tree, 2 = no triangles, full mesh, 3 = no triangles, quad-tree
			Type: fzrt_int
			Default Value: 1
		FZ_FACET_SCHEME_PARM_MAX_GRID_LINES
			Maximum grid lines in U or V.
			Type: fzrt_int
			Default Value: 2000
		FZ_FACET_SCHEME_PARM_MIN_GRID_LINES_U
			Minimum number of constant U grid lines per face when FZ_FACET_SCHEME_PARM_USE_MIN_GRID_LINES_U is TRUE
			Type: fzrt_int
			Default Value: 0
		FZ_FACET_SCHEME_PARM_MIN_GRID_LINES_V
			Minimum number of constant V grid lines per face when FZ_FACET_SCHEME_PARM_USE_MIN_GRID_LINES_V is TRUE
			Type: fzrt_int
			Default Value: 0
		FZ_FACET_SCHEME_PARM_MAX_EDGE_LENGTH
			Max edge lenth value used when FZ_FACET_SCHEME_PARM_USE_MAX_EDGE_LENGTH is true
			Type: double
			Default Value: TRUE
		FZ_FACET_SCHEME_PARM_MAX_ASPECT_RATIO
			Max aspect ratio value used when FZ_FACET_SCHEME_PARM_USE_MAX_ASPECT_RATIO is TRUE
			Type: fzrt_boolean
			Default Value: TRUE
		FZ_FACET_SCHEME_PARM_NORMAL_TOLERANCE
			Maximum angle allowed between surface normals at adjacent points on the facet mesh when FZ_FACET_SCHEME_PARM_SURFACE_TOLERANCE_TYPE is TRUE
			Type: fzrt_boolean
			Default Value: TRUE
		FZ_FACET_SCHEME_PARM_EDGE_TOLERANCE_RATIO
			Rratio of edge to surface faceting tolerances. 
			Type: 1.0
			Default Value: double
		FZ_FACET_SCHEME_PARM_SURFACE_TOLERANCE
			Point to surface Tolerance: absolute distance between point and surface
			Type: fzrt_boolean
			Default Value: 0
		FZ_FACET_SCHEME_PARM_SURFACE_TOLERANCE_FRACTION
			Point to surface Tolerance: distance as a decimal fraction of the length of the diagonal of the objects bounding box. 
			Type: double
			Default Value: 0.002
		FZ_FACET_SCHEME_PARM_COPLANAR_TOLERANCE
			Angle tolerance for Merge Coplanar Taringles when FZ_FACET_SCHEME_PARM_MERGE_COPLANAR is TRUE
			Type: double
			Default Value: 0.01

	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_attr_refn.fsl

	See Also
		fz_facet_scheme_parm_get, fz_facet_scheme_parm_set

 ****************************************************************/
typedef enum fz_facet_scheme_parm_enum
{
	FZ_FACET_SCHEME_PARM_NAME = 0,

	FZ_FACET_SCHEME_PARM_USE_NORMAL_TOLERANCE,
	
	FZ_FACET_SCHEME_PARM_USE_SURFACE_TOLERANCE,
	
	FZ_FACET_SCHEME_PARM_SURFACE_TOLERANCE_TYPE,
	
	FZ_FACET_SCHEME_PARM_USE_MAX_ASPECT_RATIO,
	
	FZ_FACET_SCHEME_PARM_USE_MAX_EDGE_LENGTH,
	
	FZ_FACET_SCHEME_PARM_USE_MIN_GRID_LINES_U,
	
	FZ_FACET_SCHEME_PARM_USE_MIN_GRID_LINES_V,
	
	FZ_FACET_SCHEME_PARM_MERGE_COPLANAR,
	
	FZ_FACET_SCHEME_PARM_NO_GRID_ON_PLANAR,
	
	FZ_FACET_SCHEME_PARM_NO_TRIANGLES_ON_CONIC,
	
	FZ_FACET_SCHEME_PARM_NO_FRINGE_ON_SINGLE,
	
	FZ_FACET_SCHEME_PARM_POLYGON_TYPE,
	
	FZ_FACET_SCHEME_PARM_MAX_GRID_LINES,
	
	FZ_FACET_SCHEME_PARM_MIN_GRID_LINES_U,
	
	FZ_FACET_SCHEME_PARM_MIN_GRID_LINES_V,
	
	FZ_FACET_SCHEME_PARM_MAX_EDGE_LENGTH,
	
	FZ_FACET_SCHEME_PARM_MAX_ASPECT_RATIO,
	
	FZ_FACET_SCHEME_PARM_NORMAL_TOLERANCE,
	
	FZ_FACET_SCHEME_PARM_EDGE_TOLERANCE_RATIO,
	
	FZ_FACET_SCHEME_PARM_SURFACE_TOLERANCE,
	
	FZ_FACET_SCHEME_PARM_SURFACE_TOLERANCE_FRACTION,
	
	FZ_FACET_SCHEME_PARM_COPLANAR_TOLERANCE,
		
	FZ_FACET_SCHEME_PARM_MAX
	
	
} fz_facet_scheme_parm_enum;

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

	fz_facet_scheme_create



	Description
		

	Parameters
		windex  [Input]
			project window index
		name  [Input, Optional]
			name for new scheme
		facet_scheme_tag  [Result, Optional]
			tag of newly craeted scheme.

	Returns
		


	Availability	8.7.0.0

 ****************************************************************/
typedef fzrt_error_td	 (*fz_facet_scheme_create_func) (
	fzrt_int 					windex,
	fz_string_td				*name,
	fz_tag_td					*facet_scheme_tag
	);
	
/****************************************************************

	fz_facet_scheme_delete



	Description
		

	Parameters
		windex  [Input]
			project window index
		facet_scheme_tag  [Result, Optional]
			tag of newly craeted scheme.

	Returns
		


	Availability	8.7.0.0

 ****************************************************************/
typedef fzrt_error_td	 (*fz_facet_scheme_delete_func) (
	fzrt_int 					windex,
	fz_tag_td					*facet_scheme_tag
	);


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

	fz_facet_scheme_parm_get



	Description
		

	Parameters
		windex  [Input]
			project window index
		facet_scheme_tag  [Input]
			tag of scheme
		which  [Input]
			parameter identifier
		data  [Result]
			parameter data

	Returns
		


	Availability	8.7.0.0

 ****************************************************************/
typedef fzrt_error_td	 (*fz_facet_scheme_parm_get_func) (
	fzrt_int					windex,
	fz_tag_td					*facet_scheme_tag,
	fz_facet_scheme_parm_enum	which,
	fz_type_td					*data
	);

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

	fz_facet_scheme_parm_set



	Description
		

	Parameters
		windex  [Input]
			project window index
		facet_scheme_tag  [Input]
			tag of scheme
		which  [Input]
			parameter identifier
		data  [Input]
			parameter data

	Returns
		


	Availability	8.7.0.0

 ****************************************************************/
typedef fzrt_error_td	 (*fz_facet_scheme_parm_set_func) (
	fzrt_int					windex,
	fz_tag_td					*facet_scheme_tag,
	fz_facet_scheme_parm_enum	which,
	fz_type_td					*data
	);

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

	fz_facet_scheme_parm_compare



	Description
		

	Parameters
		src_windex  [Input]
			project window index
		src_facet_scheme_tag  [Input]
			tag of scheme
		dst_windex  [Input]
			project window index
		dst_facet_scheme_tag  [Input]
			tag of scheme
		same  [Result]
			tag of scheme

	Returns
		


	Availability	8.7.0.0

 ****************************************************************/
typedef fzrt_error_td	 (*fz_facet_scheme_parm_compare_func) (
	fzrt_int					src_windex,
	fz_tag_td					*src_facet_scheme_tag,
	fzrt_int					dst_windex,
	fz_tag_td					*dst_facet_scheme_tag,
	fzrt_boolean				*same
	);

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

	fz_facet_scheme_parm_copy



	Description
		

	Parameters
		src_windex  [Input]
			project window index
		src_facet_scheme_tag  [Input]
			tag of scheme
		dst_windex  [Input]
			project window index
		dst_facet_scheme_tag  [Result]
			tag of new scheme

	Returns
		


	Availability	8.7.0.0

 ****************************************************************/
typedef fzrt_error_td	 (*fz_facet_scheme_parm_copy_func) (
	fzrt_int					src_windex,
	fz_tag_td					*src_facet_scheme_tag,
	fzrt_int					dst_windex,
	fz_tag_td					*dst_facet_scheme_tag
	);

	
	
#ifdef __cplusplus
}
#endif

#endif
