/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
DESCRIPTION :
~~~~~~~~~~~
        THIS IS AN EXAMPLE OF ACP HEADER FILES 
 
For a given file <HeaderName>.h, all occurences of the string HEADERNAME 
must be replaced with the string <HeaderName>.   
For a given module, all occurences of the string MODULETAG must be replaced 
with the CPA tag of the module (GLI, MTH ...) .
You must do : 
#define MODULETAG_GLOBALS 
in one (and only one) .c file of your Module.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*/
 
/* To avoid unnecessary includes :  */
#ifndef __GEO_FMD_H
#define __GEO_FMD_H
 
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
 
 
/* For DLLs who are using this module : */ 
#undef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
 #define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
 #define CPA_EXPORT __declspec(dllexport)
#else
 #define CPA_EXPORT
#endif
 
 
/* For Global declaration in C files : */
#ifdef GEO_GLOBALS
 #define __GEO_EXTERN extern
#else /* !GEO_GLOBALS */
 #define __GEO_EXTERN
#endif /* !GEO_GLOBALS */
 
/*
-----------------------------------------------------------------------------
INCLUDES FILES :
Include here any other header files of your module you need !
Ex : 
Note : Do Not include header files from other Modules (do this in C files 
only)
-----------------------------------------------------------------------------
*/
 
#include "ErrGEO.h"
#include "MmgGEO.h"
 
/*
-----------------------------------------------------------------------------
CONSTANT DECLARATION:
Ex :
#define MODULETAG_C_LMAX 100
-----------------------------------------------------------------------------
*/
 
 
/*
-----------------------------------------------------------------------------
TYPES DEFINITION : 
Declare here any type you need, and constant you need to do this :
Ex :              typedef struct MODULETAG_tdstToto_
{
        long aLMAX_lBuffer[MODULETAG_C_LMAX];
    ...
} MODULETAG_tdst_Toto ;
-----------------------------------------------------------------------------
*/
 
typedef float GLI_tdxUVValue ;
 
typedef struct ACP_tdst2DUVValues_
{
	GLI_tdxUVValue xU;
	GLI_tdxUVValue xV;
}
ACP_tdst2DUVValues ;
 
typedef struct GEO_tdstFaceMapDescriptor_
{
    ACP_tdst2DUVValues stUVValues[3];
	GMT_tdxHandleToGameMaterial hMaterial;
} GEO_tdstFaceMapDescriptor ;
 
/*
-----------------------------------------------------------------------------
GLOBAL VARIABLE DECLARATION :
Ex : 
__MODULETAG_EXTERN <type> <variable name>
 #ifdef MODULETAG_GLOBALS
 = <initial values>
 #endif
 ;
-----------------------------------------------------------------------------
*/
 
/*
-----------------------------------------------------------------------------
PUBLIC FUNCTIONS DECLARATION:
Ex : 
extern CPA_EXPORT void MODULETAG_fn_vMyPublicFunction(void); 
Note : Public functions declaration must be done in PUBLIC HEADER files (.h)
in your Inc directory
-----------------------------------------------------------------------------
*/
 
extern CPA_EXPORT void
GEO_xCreateFaceMapDescriptor ( ACP_tdxHandleOfFMD  *hFmd ) ;
 
extern CPA_EXPORT void
GEO_xSetFaceMapDescriptorUV ( ACP_tdxHandleOfFMD  hFmd ,
							  ACP_tdst2DUVValues *p_stUVA,
							  ACP_tdst2DUVValues *p_stUVB,
							  ACP_tdst2DUVValues *p_stUVC) ;
 
extern CPA_EXPORT void
GEO_xGetFaceMapDescriptorUV ( ACP_tdxHandleOfFMD  hFmd ,
							  ACP_tdst2DUVValues *p_stUVA,
							  ACP_tdst2DUVValues *p_stUVB,
							  ACP_tdst2DUVValues *p_stUVC) ;
 
extern CPA_EXPORT void
GEO_xSetFaceMapDescriptorGameMaterial ( ACP_tdxHandleOfFMD  hFmd ,
							        GMT_tdxHandleToGameMaterial  hMaterial);
 
extern CPA_EXPORT void
GEO_xGetFaceMapDescriptorGameMaterial ( ACP_tdxHandleOfFMD  hFmd ,
							        GMT_tdxHandleToGameMaterial  *p_hMaterial);
 
extern CPA_EXPORT void
GEO_xSetFaceMapDescriptorMaterial ( ACP_tdxHandleOfFMD  hFmd ,
							        ACP_tdxHandleOfMaterial  hMaterial);
 
extern CPA_EXPORT void
GEO_xGetFaceMapDescriptorMaterial ( ACP_tdxHandleOfFMD  hFmd ,
							        ACP_tdxHandleOfMaterial  *p_hMaterial);
 
/*
-----------------------------------------------------------------------------
PRIVATE FUNCTIONS DECLARATION: 
Ex : 
extern void MODULETAG_fn_vMyPrivateFunction(void); 
Note : Private functions MUST appear ONLY in PRIVATE HEADER files (.h) in 
your Src directory with source files (.c)
-----------------------------------------------------------------------------
*/
 
 
#ifdef __cplusplus
};
#endif /* __cplusplus */
 
 
#endif /* __GEO_FMD_H  */
 
