/******************************************************************************\
|*                                                                            *|
|*                          FingerCell Extractor 2.1                          *|
|*                                                                            *|
|* FncExtractorParams.h                                                       *|
|* FncExtractor parameters definition                                         *|
|*                                                                            *|
|* Copyright (C) 2006-2008 Neurotechnology                                    *|
|*                                                                            *|
\******************************************************************************/

#ifndef FNC_EXTRACTOR_PARAMS_H_INCLUDED
#define FNC_EXTRACTOR_PARAMS_H_INCLUDED

#include "NParameters.h"

#ifdef N_CPP
extern "C"
{
#endif

// Main parameters

/**
 * \brief Identifier specifying template size parameter
 * 
 * Identifier specifying template size parameter. Parameter value can be one of the #FnceTemplateSize enumeration members
 */
#define FNCEP_TEMPLATE_SIZE  100 // Int | Can be one of VfeTemplateSize values

/**
 * \brief Identifier specifying kind of image returned after extraction parameter of type #N_TYPE_INT
 * 
 * Identifier specifying kind of image returned after extraction parameter of type #N_TYPE_INT. Parameter value can be one of the #FnceReturnedImage enumeration members. 
 */
#define FNCEP_RETURNED_IMAGE 190 // Int | Can be one of VfeReturnedImage values

/**
 * \brief Determine image quality while extracting template
 * 
 * If identifier is set to true(parameter of type #N_TYPE_BOOL), then functions #FnceExtract, #FnceExtractFromImage, #FnceExtractUnpacked, #FnceExtractUnpackedFromImage determines the quality of the image. If the image quality threshold is lower than #FNCEP_QUALITY_THRESHOLD the function do not returns template.
 */
#define FNCEP_USE_QUALITY       900 // Bool

/**
 * \brief Identifier specifies image quality threshold.
 * 
 * Identifier specifies image quality threshold.(#NByte)
 */
#define FNCEP_QUALITY_THRESHOLD 910 // Byte

/**
 * \brief specifies generalization threshold
 * 
 *  Has the same meaning for features generalization as #FNCMP_MATCHING_THRESHOLD parameter for features matching. 
 */
#define FNCEP_GENERALIZATION_THRESHOLD          300 // Int | >= 0

/**
 * \brief Specifies maximal rotation of two features colletcions
 * 
 * Maximal rotation of two features collections to each other. Must be in range 0°..180°. 
 */
#define FNCEP_GENERALIZATION_MAXIMAL_ROTATION   301 // Byte | 0..128

/**
 * \brief Int, parameter set
 * 
 * Identifier specifying mode (parameter value set) parameter of type #N_TYPE_UINT. Parameter value can be one of the FNCE_MODE_XXX. 
 */
#define FNCEP_MODE 1000
	#define FNCE_MODE_GENERAL                           0 ///<The general mode.
	#define FNCE_MODE_DIGITALPERSONA_UAREU            100 ///<The mode for Digital Persona U.are.U scanner.
	#define FNCE_MODE_BIOMETRIKA_FX2000               200 ///<The mode for Biometrika FX2000 scanner.
	#define FNCE_MODE_BIOMETRIKA_FX3000               201 ///<The mode for Biometrika FX3000 scanner.
	#define FNCE_MODE_KEYTRONIC_SECUREDESKTOP         300 ///<The mode for Keytronic Secure Desktop scanner.
	#define FNCE_MODE_IDENTIX_TOUCHVIEW               400 ///<The mode for Identix TouchView scanner.
	#define FNCE_MODE_IDENTIX_DFR2090                 401 ///<The mode for Identix DFR 2090 scanner.
	#define FNCE_MODE_PRECISEBIOMETRICS_100CS         500 ///<The mode for Precise Biometrics 100CS scanner.
	#define FNCE_MODE_UPEK_TOUCHCHIP                  600 ///<The mode for UPEK TouchChip TCRU1C/TCRU2C sensors.
	#define FNCE_MODE_IDENTICATORTECHNOLOGY_DF90      700 ///<The mode for Identicator Technology DF90 scanner.
	#define FNCE_MODE_AUTHENTEC_AFS2                  800 ///<The mode for AuthenTec AF-S2 sensor.
	#define FNCE_MODE_AUTHENTEC_AES4000               810 ///<The mode for AuthenTec AES4000 sensor.
	#define FNCE_MODE_AUTHENTEC_AES2501B              811 ///<The mode for AuthenTec AES2501B sensor.
	#define FNCE_MODE_ATMEL_FINGERCHIP                900 ///<The mode for Atmel FingerChip sensor.
	#define FNCE_MODE_BMF_BLP100                     1000 ///<The mode for BMF BLP100 scanner.
	#define FNCE_MODE_SECUGEN_HAMSTER                1100 ///<The mode for SecuGen Hamster III scanner.
	#define FNCE_MODE_ETHENTICA                      1200 ///<The mode for Ethentica scanner.
	#define FNCE_MODE_CROSSMATCH_VERIFIER300         1300 ///<The mode for CrossMatch Verifier 300 scanner.
	#define FNCE_MODE_NITGEN_FINGKEY_HAMSTER         1400 ///<The mode for NITGEN Fingkey Hamster scanner.
	#define FNCE_MODE_TESTECH_BIOI                   1500 ///<The mode for Testech Bio-i sensor.
	#define FNCE_MODE_DIGENT_IZZIX                   1600 ///<The mode for Digent Izzix FD1000 scanner.
	#define FNCE_MODE_STARTEK_FM200                  1700 ///<The mode for Startek FM200 sensor.
	#define FNCE_MODE_FUJITSU_MBF200                 1800 ///<The mode for Fujitsu MBF200 scanner.
	#define FNCE_MODE_FUTRONIC_FS80                  1900 ///<The mode for Futronic's FS80 scanner.
	#define FNCE_MODE_LIGHTUNING_LTTC500             2000 ///<The mode for LighTuning LTT-C500 scanner.
	#define FNCE_MODE_TACOMA_CMOS                    2100 ///<The mode for Tacoma CMOS sensor.

/**
 * \brief Specifies kind of image returned after extraction using NFExtractor.
 * 
 * \sa FncExtractor Module 
 */
typedef enum FnceReturnedImage_
{
	fnceriNone = 0, ///<The image used for extraction is left unchanged.
	fnceriBinarized = 1, ///<Binarized (filtered) image is written to the image used for extraction.
	fnceriSkeletonized = 2 ///<Skeletonized image is written to the image used for extraction.
} FnceReturnedImage;

/**
 * \brief Specifies a returned #NFRecord size from extraction functions
 * 
 * Specifies a returned #NFRecord size from functions: #FnceExtract, #FnceExtractFromImage, #FnceExtractUnpacked, #FnceExtractUnpackedFromImage.
 * \sa FncExtractor Module 
 */
typedef enum FnceTemplateSize_
{
	fncetsSmall = 0, ///< The small #NFRecord size.
	fncetsLarge = 256 ///< The large #NFRecord size.
} FnceTemplateSize;

#ifdef N_CPP
}
#endif

#endif // !FNC_EXTRACTOR_PARAMS_H_INCLUDED
