/*********************************************************************************************
 *                                                                                           *
 *                                                                                           *
 *   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_LAYR_API_H
#define __FORMZ_LAYR_API_H 1


#include "fzpl_plugin.h"

#include "fz_type_api.h"
#include "fz_objt_attr_api.h"
#include "fz_grup_api.h"

#ifdef __cplusplus
extern "C" {
#endif



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

	Layer Manager


	Description
		The Layer data type and functions provides access to object layer information. Layers are a 
		used to organize objects. Each objects resides on a layer.\n

		Layers use groups to form a hierarchical structure as seen in the formZ interface.
 ****************************************************************/

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

	fz_layr_ptr


	Description
		Data structure for a layer.

	Availability	5.0.0.0


	See Also
		fz_expt_vect_set_layr, fz_layr_attr_get_rmtl, fz_layr_attr_get_rndr_lwid,  
		fz_layr_attr_get_rndr_surf, fz_layr_attr_get_rndr_wire, fz_layr_attr_get_shad_cast,  
		fz_layr_attr_get_shad_recv, fz_layr_attr_get_sshd, fz_layr_attr_set_rmtl,  
		fz_layr_attr_set_rndr_lwid, fz_layr_attr_set_rndr_surf, fz_layr_attr_set_rndr_wire,  
		fz_layr_attr_set_shad_cast, fz_layr_attr_set_shad_recv, fz_layr_attr_set_sshd,  
		fz_layr_delete, fz_layr_duplicate, fz_layr_get_grup_tag,  
		fz_layr_get_next, fz_layr_get_parm_data, fz_layr_get_prev,  
		fz_layr_ptr_to_tag, fz_layr_set_active, fz_layr_set_parm_data,  
		fz_notf_cbak_layr

 ****************************************************************/
typedef struct layer_td 			*fz_layr_ptr;



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

	fz_layr_get_count



	Description
		Gets the number of layers in a projects layer list.

	Parameters
		windex  [Input]
			project window index
		num_layrs  [Result]
			number of layrs in project

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layers.fsl
 ****************************************************************/
typedef fzrt_error_td  (*fz_layr_get_count_func)(
	fzrt_int			windex,
	fzrt_int			*num_layrs
	);


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

	fz_layr_tag_to_ptr



	Description
		Gets the layer pointer from a layer tag.

	Parameters
		windex  [Input]
			project window index
		fz_tag  [Input]
			layer tag
		layr  [Result]
			layer

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_layr_ptr_to_tag

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_tag_to_ptr_func)(
	fzrt_int				windex,
	fz_tag_td 			*fz_tag,
	fz_layr_ptr			*layr
	);

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

	fz_layr_ptr_to_tag



	Description
		Gets the layer tag from a layer pointer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		fz_tag  [Result]
			layer tag

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_layr_tag_to_ptr

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_ptr_to_tag_func)(
	fzrt_int				windex,
	fz_layr_ptr			layr,
	fz_tag_td 			*fz_tag
	);

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

	fz_layr_get_next



	Description
		Given a layer pointer, get the next layer pointer in the project. 
		If layr_in is passed as NULL, the first layer in the project is 
		returned.

	Parameters
		windex  [Input]
			project window index
		layr_in  [Input]
			layer
		layr_next  [Result]
			next layer

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_layr_get_prev

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_get_next_func)(
	fzrt_int				windex,
	fz_layr_ptr			layr_in,
	fz_layr_ptr			*layr_next
	);

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

	fz_layr_get_prev



	Description
		Given a layer pointer, get the previous layer pointer in the project. 
		If layr_in is passed as NULL, the last layer in the project is returned.

	Parameters
		windex  [Input]
			project window index
		layr_in  [Input]
			layer
		layr_prev  [Result]
			previous layer

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_layr_get_next

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_get_prev_func)(
	fzrt_int				windex,
	fz_layr_ptr			layr_in,
	fz_layr_ptr			*layr_prev
	);

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

	fz_layr_find



	Description
		Find a layer with a given name.

	Parameters
		windex  [Input]
			project window index
		name  [Input]
			name of layer to find
		layr  [Result]
			found layer or NULL for NONE

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layers.fsl
 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_find_func)(
	fzrt_int				windex,
	char				*name,
	fz_layr_ptr			*layr
	);

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

	fz_layr_new



	Description
		Creates a new layer in the given project.

	Parameters
		windex  [Input]
			project window index
		layr  [Result]
			layer

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layers.fsl
 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_new_func)(
	fzrt_int				windex,
	fz_layr_ptr			*layr
	);


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

	fz_layr_duplicate



	Description
		Creates a duplicate layer from a given layer.

	Parameters
		windex  [Input]
			project window index
		layr_in  [Input]
			source layer
		layr_dupl  [Result]
			new layer

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layers.fsl
 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_duplicate_func)(
	fzrt_int				windex,
	fz_layr_ptr			layr_in,
	fz_layr_ptr			*layr_dupl
	);

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

	fz_layr_delete



	Description
		Deletes a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer to delete

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layers.fsl
 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_delete_func)(
	fzrt_int				windex,
	fz_layr_ptr			layr
	);


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

	fz_layr_get_active



	Description
		Gets the specified layer as the active layer. This is the layer that 
		all new objects are placed when they are created.

	Parameters
		windex  [Input]
			project window index
		layr  [Result]
			active layer

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layers.fsl
 ****************************************************************/
typedef fzrt_error_td  (*fz_layr_get_active_func)(
	fzrt_int			windex,
	fz_layr_ptr		*layr
	);

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

	fz_layr_set_active



	Description
		Sets the active layer for the project.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			new active layer

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layers.fsl
 ****************************************************************/
typedef fzrt_error_td  (*fz_layr_set_active_func)(
	fzrt_int			windex,
	fz_layr_ptr		layr
	);

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

	fz_layr_parm_enum


	Description
		Layer parameters shared by all layrs.

	Members
		FZ_LAYR_PARM_NAME
			layer name (48 characters max).
			Type: char*
		FZ_LAYR_PARM_VISIBLE
			Indicates the layer is visible in the project windows.
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_LAYR_PARM_GHOST
			Indicates the layer is ghosted in the project windows.
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_LAYR_PARM_LOCK
			Indicates the layer is locked in the project windows.
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_LAYR_PARM_SNAP
			Indicates the layer is snappable in the project windows.
			Type: fzrt_boolean
			Default Value: FALSE

	Availability	5.0.0.0

 ****************************************************************/
typedef enum fz_layr_parm_enum
{
																	
	
	FZ_LAYR_PARM_NAME=0,
									
	FZ_LAYR_PARM_VISIBLE,
													
	FZ_LAYR_PARM_GHOST,
		
	FZ_LAYR_PARM_LOCK,
	FZ_LAYR_PARM_SNAP,
	LAYR_PARM_MAX
} fz_layr_parm_enum;

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

	fz_layr_get_parm_data



	Description
		Gets one of the parameters of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		which  [Input]
			parameter identifier
		data  [Result]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layers.fsl
 ****************************************************************/
typedef fzrt_error_td  (*fz_layr_get_parm_data_func)(
	fzrt_int						windex,
	fz_layr_ptr					layr,
	fz_layr_parm_enum				which,
	fz_type_td					*data
	);

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

	fz_layr_set_parm_data



	Description
		Sets one of the parameters of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		which  [Input]
			parameter identifier
		data  [Input]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layers.fsl
 ****************************************************************/
typedef fzrt_error_td  (*fz_layr_set_parm_data_func)(
	fzrt_int						windex,
	fz_layr_ptr					layr,
	fz_layr_parm_enum				which,
	fz_type_td					*data
	);




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

	fz_layr_attr_get_rmtl



	Description
		Gets the surface style tag override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Result, Optional]
			override is on or off
		rmtl_tag  [Result, Optional]
			surface style tag

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_rmtl

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_get_rmtl_func) (
	fzrt_int				windex,
	fz_layr_ptr 		layr,
	fzrt_boolean		*on_off,
	fz_tag_td			*rmtl_tag
	);

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

	fz_layr_attr_set_rmtl



	Description
		Sets the surface style tag override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Input, Optional]
			override is on or off
		rmtl_tag  [Input, Optional]
			surface style tag

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_rmtl

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_set_rmtl_func) (
	fzrt_int				windex,
	fz_layr_ptr 		layr,
	fzrt_boolean		*on_off,
	fz_tag_td			*rmtl_tag
	);


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

	fz_layr_attr_get_shad_cast



	Description
		Gets the shadow casting status override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Result, Optional]
			override is on or off
		shad_cast  [Result, Optional]
			shadow casting status

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_shad_cast

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_get_shad_cast_func) (
	fzrt_int			windex,
	fz_layr_ptr 		layr,
	fzrt_boolean	*on_off,
	fzrt_boolean	*shad_cast
	);

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

	fz_layr_attr_set_shad_cast



	Description
		Sets the shadow casting status override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Input, Optional]
			override is on or off
		shad_cast  [Input, Optional]
			shadow casting status

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_shad_cast

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_set_shad_cast_func) (
	fzrt_int			windex,
	fz_layr_ptr 		layr,
	fzrt_boolean	*on_off,
	fzrt_boolean	*shad_cast
	);

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

	fz_layr_attr_get_shad_recv



	Description
		Gets the shadow receiving status override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Result, Optional]
			override is on or off
		shad_recv  [Result, Optional]
			shadow receiving status

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_shad_recv

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_get_shad_recv_func) (
	fzrt_int			windex,
	fz_layr_ptr 		layr,
	fzrt_boolean	*on_off,
	fzrt_boolean	*shad_recv
	);

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

	fz_layr_attr_set_shad_recv



	Description
		Sets the shadow receiving status override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Input, Optional]
			override is on or off
		shad_recv  [Input, Optional]
			shadow receiving status

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_shad_recv

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_set_shad_recv_func) (
	fzrt_int			windex,
	fz_layr_ptr 		layr,
	fzrt_boolean	*on_off,
	fzrt_boolean	*shad_recv
	);
	
/****************************************************************

	fz_layr_attr_get_rndr_wire



	Description
		Gets the render as wireframe status override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Result, Optional]
			override is on or off
		rndr_wire  [Result, Optional]
			render as wireframe status

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_rndr_wire

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_get_rndr_wire_func) (
	fzrt_int			windex,
	fz_layr_ptr 		layr,
	fzrt_boolean	*on_off,
	fzrt_boolean	*rndr_wire
	);

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

	fz_layr_attr_set_rndr_wire



	Description
		Sets the render as wireframe status override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Input, Optional]
			override is on or off
		rndr_wire  [Input, Optional]
			render as wireframe status

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_rndr_wire

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_set_rndr_wire_func) (
	fzrt_int			windex,
	fz_layr_ptr 		layr,
	fzrt_boolean	*on_off,
	fzrt_boolean	*rndr_wire
	);


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

	fz_layr_attr_get_rndr_lwid



	Description
		Gets the render as wireframe line width override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Result, Optional]
			override is on or off
		rndr_lwid  [Result, Optional]
			render as wireframe line width

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_rndr_lwid

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_get_rndr_lwid_func) (
	fzrt_int			windex,
	fz_layr_ptr 		layr,
	fzrt_boolean	*on_off,
	fzrt_int			*rndr_lwid
	);

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

	fz_layr_attr_set_rndr_lwid



	Description
		Sets the render as wireframe line width status override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Input, Optional]
			override is on or off
		rndr_lwid  [Input, Optional]
			render as wireframe line width

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_rndr_lwid

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_set_rndr_lwid_func) (
	fzrt_int			windex,
	fz_layr_ptr 		layr,
	fzrt_boolean	*on_off,
	fzrt_int			*rndr_lwid
	);


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

	fz_layr_attr_get_rndr_surf



	Description
		Gets the render as surface status override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Result, Optional]
			override is on or off
		rndr_surf  [Result, Optional]
			render as surface status

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_rndr_surf

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_get_rndr_surf_func) (
	fzrt_int			windex,
	fz_layr_ptr 		layr,
	fzrt_boolean	*on_off,
	fzrt_boolean	*rndr_surf
	);

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

	fz_layr_attr_set_rndr_surf



	Description
		Sets the render as surface status override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Input, Optional]
			override is on or off
		rndr_surf  [Input, Optional]
			render as surface status

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_rndr_surf

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_set_rndr_surf_func) (
	fzrt_int			windex,
	fz_layr_ptr 		layr,
	fzrt_boolean	*on_off,
	fzrt_boolean	*rndr_surf
	);

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

	fz_layr_attr_get_sshd



	Description
		Gets the smooth shading status override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Result, Optional]
			override is on or off
		sshd  [Result, Optional]
			smooth shading options

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_sshd

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_get_sshd_func) (
	fzrt_int				windex,
	fz_layr_ptr 			layr,
	fzrt_boolean		*on_off,
	fz_attr_sshd_ptr	sshd
	);

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

	fz_layr_attr_set_sshd



	Description
		Sets the smooth shading status override of a layer.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		on_off  [Input, Optional]
			override is on or off
		sshd  [Input, Optional]
			smooth shading options

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_objt_attr_get_objt_sshd

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_attr_set_sshd_func) (
	fzrt_int				windex,
	fz_layr_ptr 			layr,
	fzrt_boolean		*on_off,
	fz_attr_sshd_ptr	sshd
	);


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

	fz_layr_get_grup_table



	Description
		Gets the layer group table.

	Parameters
		windex  [Input]
			project window index
		gtable  [Result]
			layer group table

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layers.fsl
 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_get_grup_table_func) (
	fzrt_int				windex,
	fz_grup_table_ptr		*gtable
	);

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

	fz_layr_get_grup_tag



	Description
		Gets a layer's group tag.

	Parameters
		windex  [Input]
			project window index
		layr  [Input]
			layer
		group_tag  [Result]
			layer's group tag

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_get_grup_tag_func) (
	fzrt_int				windex,
	fz_layr_ptr			layr,
	fz_tag_td 			*group_tag
	);




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

	fz_layr_grup_get_parm_data



	Description
		Gets a layer group's parameter. 
		For the parameters 
		if the return value is -1, the status of the layers in the group is not the same. 
		For example, if there are 3 layers in a group with two layers which have 
		visibility on and one layer with visibility off, the LAYR_GROUP_PARAM_VISIBILITY 
		parameter will be returned as -1.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		which  [Input]
			parameter identifier
		data  [Result]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_layr_grup_set_parm_data

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_get_parm_data_func) (
	fzrt_int					windex,
	fz_grup_ptr 				grup,
	fz_layr_parm_enum			which,
	fz_type_td				*data
	);

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

	fz_layr_grup_set_parm_data



	Description
		Sets a layer group's parameter.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		which  [Input]
			parameter identifier
		data  [Input]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_layr_grup_get_parm_data

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_set_parm_data_func) (
	fzrt_int					windex,
	fz_grup_ptr 				grup,
	fz_layr_parm_enum			which,
	fz_type_td				*data
	);



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

	fz_layr_grup_attr_get_rmtl



	Description
		Gets the surface style tag override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Result, Optional]
			override is on or off
		rmtl_tag  [Result, Optional]
			surface style tag

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_set_rmtl

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_get_rmtl_func) (
	fzrt_int			windex,
	fz_grup_ptr 	grup,
	fzrt_boolean	*on_off,
	fz_tag_td		*rmtl_tag
	);

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

	fz_layr_grup_attr_set_rmtl



	Description
		Sets the surface style tag override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Input, Optional]
			override is on or off
		rmtl_tag  [Input, Optional]
			surface style tag

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_get_rmtl

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_set_rmtl_func) (
	fzrt_int			windex,
	fz_grup_ptr 		grup,
	fzrt_boolean	*on_off,
	fz_tag_td		*rmtl_tag
	);


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

	fz_layr_grup_attr_get_shad_cast



	Description
		Gets the shadow casting status override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Result, Optional]
			override is on or off
		shad_cast  [Result, Optional]
			shadow casting status

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_set_shad_cast

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_get_shad_cast_func) (
	fzrt_int			windex,
	fz_grup_ptr 		grup,
	fzrt_boolean	*on_off,
	fzrt_boolean	*shad_cast
	);

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

	fz_layr_grup_attr_set_shad_cast



	Description
		Sets the shadow casting status override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Input, Optional]
			override is on or off
		shad_cast  [Input, Optional]
			shadow casting status

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_get_shad_cast

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_set_shad_cast_func) (
	fzrt_int			windex,
	fz_grup_ptr 		grup,
	fzrt_boolean	*on_off,
	fzrt_boolean	*shad_cast
	);

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

	fz_layr_grup_attr_get_shad_recv



	Description
		Gets the shadow receiving status override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Result, Optional]
			override is on or off
		shad_recv  [Result, Optional]
			shadow receiving status

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_set_shad_recv

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_get_shad_recv_func) (
	fzrt_int			windex,
	fz_grup_ptr 		grup,
	fzrt_boolean	*on_off,
	fzrt_boolean	*shad_recv
	);

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

	fz_layr_grup_attr_set_shad_recv



	Description
		Sets the shadow receiving status override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Input, Optional]
			override is on or off
		shad_recv  [Input, Optional]
			shadow receiving status

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_get_shad_recv

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_set_shad_recv_func) (
	fzrt_int			windex,
	fz_grup_ptr 		grup,
	fzrt_boolean	*on_off,
	fzrt_boolean	*shad_recv
	);
	
/****************************************************************

	fz_layr_grup_attr_get_rndr_wire



	Description
		Gets the render as wireframe status override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Result, Optional]
			override is on or off
		rndr_wire  [Result, Optional]
			render as wireframe status

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_set_rndr_wire

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_get_rndr_wire_func) (
	fzrt_int			windex,
	fz_grup_ptr 		grup,
	fzrt_boolean	*on_off,
	fzrt_boolean	*rndr_wire
	);

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

	fz_layr_grup_attr_set_rndr_wire



	Description
		Sets the render as wireframe status override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Input, Optional]
			override is on or off
		rndr_wire  [Input, Optional]
			render as wireframe status

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_get_rndr_wire

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_set_rndr_wire_func) (
	fzrt_int			windex,
	fz_grup_ptr 		grup,
	fzrt_boolean	*on_off,
	fzrt_boolean	*rndr_wire
	);


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

	fz_layr_grup_attr_get_rndr_lwid



	Description
		Gets the render as wireframe line width override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Result, Optional]
			override is on or off
		rndr_lwid  [Result, Optional]
			render as wireframe line width

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_set_rndr_lwid

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_get_rndr_lwid_func) (
	fzrt_int			windex,
	fz_grup_ptr 		grup,
	fzrt_boolean	*on_off,
	fzrt_int			*rndr_lwid
	);

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

	fz_layr_grup_attr_set_rndr_lwid



	Description
		Sets the render as wireframe line width status override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Input, Optional]
			override is on or off
		rndr_lwid  [Input, Optional]
			render as wireframe line width

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_get_rndr_lwid

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_set_rndr_lwid_func) (
	fzrt_int			windex,
	fz_grup_ptr 		grup,
	fzrt_boolean	*on_off,
	fzrt_int			*rndr_lwid
	);


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

	fz_layr_grup_attr_get_rndr_surf



	Description
		Gets the render as surface status override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Result, Optional]
			override is on or off
		rndr_surf  [Result, Optional]
			render as surface status

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_set_rndr_surf

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_get_rndr_surf_func) (
	fzrt_int			windex,
	fz_grup_ptr 		grup,
	fzrt_boolean	*on_off,
	fzrt_boolean	*rndr_surf
	);

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

	fz_layr_grup_attr_set_rndr_surf



	Description
		Sets the render as surface status override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Input, Optional]
			override is on or off
		rndr_surf  [Input, Optional]
			render as surface status

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_get_rndr_surf

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_set_rndr_surf_func) (
	fzrt_int			windex,
	fz_grup_ptr 		grup,
	fzrt_boolean	*on_off,
	fzrt_boolean	*rndr_surf
	);

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

	fz_layr_grup_attr_get_sshd



	Description
		Gets the smooth shading status override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Result, Optional]
			override is on or off
		sshd  [Result, Optional]
			smooth shading options

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_set_sshd

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_get_sshd_func) (
	fzrt_int				windex,
	fz_grup_ptr 			grup,
	fzrt_boolean		*on_off,
	fz_attr_sshd_ptr	sshd
	);

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

	fz_layr_grup_attr_set_sshd



	Description
		Sets the smooth shading status override of a layer group.

	Parameters
		windex  [Input]
			project window index
		grup  [Input]
			layer group
		on_off  [Input, Optional]
			override is on or off
		sshd  [Input, Optional]
			smooth shading options

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layer_tree.fsl
		../../../../Scripts/Samples/Utilities/util_layer_grups.fsl

	See Also
		fz_layr_grup_attr_get_sshd

 ****************************************************************/
typedef fzrt_error_td	 (*fz_layr_grup_attr_set_sshd_func) (
	fzrt_int				windex,
	fz_grup_ptr 			grup,
	fzrt_boolean		*on_off,
	fz_attr_sshd_ptr	sshd
	);

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

	fz_layr_opts_parm_enum


	Description
		Layer setup parameters. 
		Used for the "which" argument of fz_layr_get_opts_parm_data and fz_layr_set_opts_parm_data.

	Members
		FZ_LAYR_OPTS_DRAW_IN_ORDER
			Indicates if the layers should be drawn in the order shown in 
			the layer list.
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_LAYR_OPTS_DRAW_ACTIVE_LAST
			Indicates if the active layer should be drawn last.
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_LAYR_OPTS_PASTE_ON_ACTIVE
			Indicates how entities being pasted in the project act. If set, the entity will 
			be placed in the active layer. Otherwise the entity will be placed in a layer with 
			the same name as the entity; a new layer with the same name as the entity will 
			be created if a layer with that name doesn't already exist.
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_LAYR_OPTS_SHOW_COLOR
			Indicates if the names of the layers will be drawn in the color that 
			was assigned to them in the layers palette. If not set, the names 
			are all drawn the same.
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_LAYR_OPTS_HIGHLIGHT_PICKED
			When set, the layer name in the layers palette will be highlighted whenever 
			an item in that layer is picked.
			Type: fzrt_boolean
			Default Value: FALSE
		FZ_LAYR_OPTS_LAYER_NAME
			The default layer name (32 characters max).
			Type: char*
		FZ_LAYR_OPTS_GROUP_NAME
			The default group name (32 characters max).
			Type: char*

	Availability	5.0.0.0


	See Also
		fz_layr_get_opts_parm_data, fz_layr_set_opts_parm_data

 ****************************************************************/
typedef enum fz_layr_opts_parm_enum
{	FZ_LAYR_OPTS_DRAW_IN_ORDER = 0,

	FZ_LAYR_OPTS_DRAW_ACTIVE_LAST,

	FZ_LAYR_OPTS_PASTE_ON_ACTIVE,

	FZ_LAYR_OPTS_SHOW_COLOR,

	FZ_LAYR_OPTS_HIGHLIGHT_PICKED,

	FZ_LAYR_OPTS_LAYER_NAME,

	FZ_LAYR_OPTS_GROUP_NAME,

	FZ_LAYR_OPTS_MAX
} fz_layr_opts_parm_enum;

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

	fz_layr_get_opts_parm_data



	Description
		Gets layer setup parameters.

	Parameters
		windex  [Input]
			project window index
		which  [Input]
			parameter identifier
		value  [Result]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_layr_set_opts_parm_data

 ****************************************************************/
typedef fzrt_error_td 	 (*fz_layr_get_opts_parm_data_func)(
	fzrt_int						windex,
	fz_layr_opts_parm_enum		which,
	fz_type_td					*value
	);

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

	fz_layr_set_opts_parm_data



	Description
		Sets layer setup parameters.

	Parameters
		windex  [Input]
			project window index
		which  [Input]
			parameter identifier
		value  [Input]
			parameter data

	Returns
		Error codes


	Availability	5.0.0.0

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

	See Also
		fz_layr_get_opts_parm_data

 ****************************************************************/
typedef fzrt_error_td 	 (*fz_layr_set_opts_parm_data_func)(
	fzrt_int						windex,
	fz_layr_opts_parm_enum		which,
	fz_type_td					*value
	);

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

	fz_layr_sort



	Description
		Sorts the entries in the layers palette list in alphabetical order. 
		Upper case characters precede the lower case.

	Parameters
		windex  [Input]
			project window index

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layers.fsl
 ****************************************************************/
typedef fzrt_error_td 	 (*fz_layr_sort_func)(
	fzrt_int						windex
	);

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

	fz_layr_purge



	Description
		Purges all empty layers and layer groups in the layers palette list.

	Parameters
		windex  [Input]
			project window index

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_layers.fsl
 ****************************************************************/
typedef fzrt_error_td 	 (*fz_layr_purge_func)(
	fzrt_int						windex
	);


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

	fz_layr_fset


	FZ_LAYR_FSET_TYPE
		formZ layer function set UUID.

	FZ_LAYR_FSET_NAME
		formZ layer function set name.

	FZ_LAYR_FSET_VERSION
		formZ layer function set version.

	Description
		formZ layer function Set

	Availability	5.0.0.0

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


#define FZ_LAYR_FSET_TYPE		"\xa6\xa6\xde\x5e\xf8\x68\x43\x97\xbe\xae\x13\x10\x19\xc9\xc3\x4b"

#define FZ_LAYR_FSET_NAME		"formZ layr funcs"

#define FZ_LAYR_FSET_VERSION	FZPL_VERS_MAKE(5,0,0,0)

typedef struct fz_layr_fset
{
	fzpl_fset_prvt_data_td				prvt_data;
	
	fz_layr_get_count_func					fz_layr_get_count;
	fz_layr_tag_to_ptr_func					fz_layr_tag_to_ptr;
	fz_layr_ptr_to_tag_func					fz_layr_ptr_to_tag;
	fz_layr_get_next_func					fz_layr_get_next;
	fz_layr_get_prev_func					fz_layr_get_prev;
	fz_layr_find_func						fz_layr_find;
	fz_layr_new_func						fz_layr_new;
	fz_layr_duplicate_func					fz_layr_duplicate;
	fz_layr_delete_func						fz_layr_delete;
	fz_layr_get_active_func					fz_layr_get_active;
	fz_layr_set_active_func					fz_layr_set_active;
	fz_layr_get_parm_data_func				fz_layr_get_parm_data;
	fz_layr_set_parm_data_func				fz_layr_set_parm_data;
	
	fz_layr_attr_get_rmtl_func				fz_layr_attr_get_rmtl;
	fz_layr_attr_set_rmtl_func				fz_layr_attr_set_rmtl;
	fz_layr_attr_get_shad_cast_func			fz_layr_attr_get_shad_cast;
	fz_layr_attr_set_shad_cast_func			fz_layr_attr_set_shad_cast;
	fz_layr_attr_get_shad_recv_func			fz_layr_attr_get_shad_recv;
	fz_layr_attr_set_shad_recv_func			fz_layr_attr_set_shad_recv;
	fz_layr_attr_get_rndr_wire_func			fz_layr_attr_get_rndr_wire;
	fz_layr_attr_set_rndr_wire_func			fz_layr_attr_set_rndr_wire;
	fz_layr_attr_get_rndr_lwid_func			fz_layr_attr_get_rndr_lwid;
	fz_layr_attr_set_rndr_lwid_func			fz_layr_attr_set_rndr_lwid;
	fz_layr_attr_get_rndr_surf_func			fz_layr_attr_get_rndr_surf;
	fz_layr_attr_set_rndr_surf_func			fz_layr_attr_set_rndr_surf;
	fz_layr_attr_get_sshd_func				fz_layr_attr_get_sshd;
	fz_layr_attr_set_sshd_func				fz_layr_attr_set_sshd;
	
	fz_layr_get_grup_table_func				fz_layr_get_grup_table;
	fz_layr_get_grup_tag_func				fz_layr_get_grup_tag;
	fz_layr_grup_get_parm_data_func			fz_layr_grup_get_parm_data;
	fz_layr_grup_set_parm_data_func			fz_layr_grup_set_parm_data;

	fz_layr_grup_attr_get_rmtl_func			fz_layr_grup_attr_get_rmtl;
	fz_layr_grup_attr_set_rmtl_func			fz_layr_grup_attr_set_rmtl;
	fz_layr_grup_attr_get_shad_cast_func	fz_layr_grup_attr_get_shad_cast;
	fz_layr_grup_attr_set_shad_cast_func	fz_layr_grup_attr_set_shad_cast;
	fz_layr_grup_attr_get_shad_recv_func	fz_layr_grup_attr_get_shad_recv;
	fz_layr_grup_attr_set_shad_recv_func	fz_layr_grup_attr_set_shad_recv;
	fz_layr_grup_attr_get_rndr_wire_func	fz_layr_grup_attr_get_rndr_wire;
	fz_layr_grup_attr_set_rndr_wire_func	fz_layr_grup_attr_set_rndr_wire;
	fz_layr_grup_attr_get_rndr_lwid_func	fz_layr_grup_attr_get_rndr_lwid;
	fz_layr_grup_attr_set_rndr_lwid_func	fz_layr_grup_attr_set_rndr_lwid;
	fz_layr_grup_attr_get_rndr_surf_func	fz_layr_grup_attr_get_rndr_surf;
	fz_layr_grup_attr_set_rndr_surf_func	fz_layr_grup_attr_set_rndr_surf;
	fz_layr_grup_attr_get_sshd_func			fz_layr_grup_attr_get_sshd;
	fz_layr_grup_attr_set_sshd_func			fz_layr_grup_attr_set_sshd;
	fz_layr_get_opts_parm_data_func			fz_layr_get_opts_parm_data;
	fz_layr_set_opts_parm_data_func			fz_layr_set_opts_parm_data;
	fz_layr_sort_func						fz_layr_sort;
	fz_layr_purge_func						fz_layr_purge;
	
	
																			
}  fz_layr_fset;

#ifdef __cplusplus
}
#endif

#endif

