/*
 
uf_cam_prefs.h
* File description:
*    This file contains the information required to use the UF_CAM module.
*    This module allows the CAM User Function programmer to interface
*    with the current CAM session object and the current CAM Object Parameter
*    Templates object (OPT). See the documentation of the below functions for
*    a description of the functionality provided by these objects.
*
*    If a function takes a file name as an input parameter then this can
*    be a full path name or a relative path name. It can also contain
*    environment variables. If it is not a full path name, UF CAM will use
*    the directories found in the UGII_CAM_STANDARD_SEARCH_PATH to locate
*    the specified file.
*
*    For a sample CAM application, please refer to ufx_cam.c in the UGOPEN
*    kit.
*
******************************************************************************/

#ifndef UF_CAM_PREFS_H_INCLUDED
#define UF_CAM_PREFS_H_INCLUDED

/***************************** Include Files **********************************/
#include <uf.h>
#include <uf_cam.h>
#include <uf_defs.h>
#include <uf_cam_spec.h>
#include <uf_cam_errors.h>
#include <uf_param.h>
#include <libufun_cam_exports.h>

/******************************** Defines *************************************/



/***************************** Public Typedefs ********************************/


enum UF_CAM_PREF_e
{
  UF_CAM_PREF_blank_geom_color,                 /*  integer  */
  UF_CAM_PREF_blank_geom_type,                  /*  integer  */
  UF_CAM_PREF_check_geom_color,                 /*  integer  */
  UF_CAM_PREF_check_geom_type,                  /*  integer  */
  UF_CAM_PREF_clearance_geom_color,             /*  integer  */
  UF_CAM_PREF_clsf_decimal_place,               /*  integer  */
  UF_CAM_PREF_refresh_bef_path_replay,          /*  logical  */
  UF_CAM_PREF_collect_instances,                /*  logical  */
  UF_CAM_PREF_cut_area_geom_color,              /*  integer  */
  UF_CAM_PREF_cut_area_geom_type,               /*  integer  */
  UF_CAM_PREF_drive_geom_color,                 /*  integer  */
  UF_CAM_PREF_generate_instance,                /*  logical  */
  UF_CAM_PREF_info_csys,                        /*  integer  */
  UF_CAM_PREF_mcs_link_to_rcs,                  /*  integer  */
  UF_CAM_PREF_part_geom_color,                  /*  integer  */
  UF_CAM_PREF_part_geom_type,                   /*  integer  */
  UF_CAM_PREF_pause_aft_path,                   /*  logical  */
  UF_CAM_PREF_refresh_bef_path_generate,        /*  logical  */
  UF_CAM_PREF_relocate_parameters,              /*  logical  */
  UF_CAM_PREF_run_process_assistant,            /*  integer  */
  UF_CAM_PREF_suspect_bounding_box_color,       /*  integer  */
  UF_CAM_PREF_transform_toolpath,               /*  logical  */
  UF_CAM_PREF_trim_geom_color,                  /*  integer  */
  UF_CAM_PREF_uncut_geom_color,                 /*  integer  */
  UF_CAM_PREF_unlink_instance,                  /*  logical  */
  UF_CAM_PREF_update_post_from_tool,            /*  integer  */
  UF_CAM_PREF_force_load_and_turret_tool,       /*  integer  */
  UF_CAM_PREF_use_customized_interface,         /*  logical  */
  UF_CAM_PREF_visible_scrollable_items,         /*  integer  */
  UF_CAM_PREF_visualize_tool_display_color,     /*  integer  */
  UF_CAM_PREF_visualize_gouge_color,            /*  integer  */
  UF_CAM_PREF_visualize_collision_color,        /*  integer  */
  UF_CAM_PREF_visualize_excess_material_color,  /*  integer  */
  UF_CAM_PREF_visualize_auto_block_color,       /*  integer  */
  UF_CAM_PREF_visualize_DMR_tool1_color,        /*  integer  */
  UF_CAM_PREF_visualize_DMR_tool2_color,        /*  integer  */
  UF_CAM_PREF_visualize_DMR_tool3_color,        /*  integer  */
  UF_CAM_PREF_visualize_DMR_tool4_color,        /*  integer  */
  UF_CAM_PREF_visualize_DMR_tool5_color,        /*  integer  */
  UF_CAM_PREF_orient_wcs_to_mcs,                /*  integer  */
  UF_CAM_PREF_cre_fea_grp_in_manu_fea_mang,     /*  integer  */
  UF_CAM_PREF_autoset_machining_data,           /*  integer  */
  UF_CAM_PREF_automatically_update_when_loading /*  logical  NEW in NX 3.0 */
} ;
typedef enum UF_CAM_PREF_e UF_CAM_PREF_t;

/************************* Public Function Definitions ************************/


/*****************************************************************************
* This function provides the logical setting of the specified CAM Preference.
*
* Return:
*    UF_CAM_ERROR_DATA_NOT_CORRECT_TYPE - if specified preference does not
*                                         hold logical data
* Environment : Internal  and  External
* See Also:
* History : Released in V19.0
****************************************************************************/

extern UFUN_CAMEXPORT int UF_CAM_PREF_ask_logical_value
(
  UF_CAM_PREF_t   pref,    /* <I> - the specific desired preference  */
  logical        *value    /* <O> - the value of the specified preference  */
);

/*****************************************************************************
* This function provides the integer value of the specified CAM Preference.
*
* Return:
*    UF_CAM_ERROR_DATA_NOT_CORRECT_TYPE - if specified preference does not
*                                         hold integer data
* Environment : Internal  and  External
* See Also:
* History : Released in V19.0
****************************************************************************/

extern UFUN_CAMEXPORT int UF_CAM_PREF_ask_integer_value
(
  UF_CAM_PREF_t   pref,    /* <I> - the specific desired preference  */
  int            *value    /* <O> - the value of the specified preference  */
);

/*****************************************************************************
* This function sets the logical setting of the specified CAM Preference.
*
* Return:
*    UF_CAM_ERROR_DATA_NOT_CORRECT_TYPE - if specified preference does not
*                                         hold logical data
* Environment : Internal  and  External
* See Also:
* History : Released in V19.0
****************************************************************************/

extern UFUN_CAMEXPORT int UF_CAM_PREF_set_logical_value
(
  UF_CAM_PREF_t   pref,    /* <I> - the specific desired preference  */
  logical         value    /* <I> - the value of the specified preference  */
);

/*****************************************************************************
* This function sets the integer value of the specified CAM Preference.
*
* Return:
*    UF_CAM_ERROR_DATA_NOT_CORRECT_TYPE - if specified preference does not
*                                         hold integer data
* Environment : Internal  and  External
* See Also:
* History : Released in V19.0
****************************************************************************/

extern UFUN_CAMEXPORT int UF_CAM_PREF_set_integer_value
(
  UF_CAM_PREF_t   pref,    /* <I> - the specific desired preference  */
  int             value    /* <I> - the value of the specified preference  */
);

/*****************************************************************************
* This function provides the data type of the specified CAM Preference.
*
* Return:
*    UF_CAM_ERROR_PREFERENCE_NOT_DEFINED - if the specified preference is not
*                                          defined in the above enum
* Environment : Internal  and  External
* See Also:
* History : Released in V19.0
****************************************************************************/

extern UFUN_CAMEXPORT int UF_CAM_PREF_ask_data_type
(
  UF_CAM_PREF_t     pref,   /* <I> - the specific desired preference  */
  UF_PARAM_type_t  *type    /* <O> - the data type of the specified preference -
                                     currently only UF_PARAM_TYPE_LOGICAL and
                                     UF_PARAM_TYPE_INT are supported  */

);



#undef EXPORTLIBRARY

#endif /* UF_CAM_H_INCLUDED */