/*********************************************************************************************
 *                                                                                           *
 *                                                                                           *
 *   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_FILT_API_H
#define _FORMZ_MODEL_FILT_API_H


#include "fz_model_core_api.h"

#ifdef __cplusplus
extern "C" {
#endif



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

	Plain Object Construction


	Description
		This module contains functions for different ways to construct plain objects in formZ.
 ****************************************************************/

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

	fz_objt_cnstr_fillet



	Description
		Creates a fillet surface between the two input faces. 
		The source objects must be either surfaces or solids. 
		The faces between which a fillet surface needs to be constructed 
		are specified by their indices. The parameter do_convex specifies whether 
		a convex or a concave fillet is requested. If do_basic is TRUE then radius 
		is used else srnd_opts is used for the cross-section of fillet surface. 
		An approximate starting point for fillet surface needs to be specified.

	Parameters
		windex  [Input]
			project window index
		src_obj1  [Input]
			Source object 1
		findx1  [Input]
			Face index 1
		src_obj2  [Input]
			Source object 2
		findx2  [Input]
			Face index 2
		do_convex  [Input]
			TRUE=Convex/FALSE=Concave
		do_basic  [Input]
			TRUE=Basic/FALSE=Advanced
		radius  [Input, Optional]
			Radius- Applicable only if do_basic is TRUE
		srnd_opts  [Input, Optional]
			Advanced options- Applicable only if do_basic is FALSE
		start_pt  [Input]
			Approximate starting point
		refn_opts  [Input, Optional] Display resolution options- See fz_attr_refn_parm_enum for defaults
			
		obj  [Result]
			New object

	Returns
		Error codes


	Availability	5.0.0.0

	Example Files
		../../../../Scripts/Samples/Utilities/util_objt_filt.fsl
 ****************************************************************/
typedef fzrt_error_td	 (*fz_objt_cnstr_fillet_func)(
	fzrt_int 					windex,
	fz_objt_ptr			src_obj1,
	fzrt_int 					findx1,
	fz_objt_ptr			src_obj2,
	fzrt_int 					findx2,
	fzrt_boolean 			do_convex,
	fzrt_boolean 			do_basic,
	double 					radius,
	fz_objt_srnd_opts_ptr 			srnd_opts,
	fz_xyz_td 					*start_pt,
	fz_attr_refn_ptr		refn_opts,
	fz_objt_ptr			*obj
	);

#ifdef __cplusplus
}
#endif

#endif
