/*=========================================================================
*
* SpoLoad.h	- Loading functions for SPO file
*
* Version			1.0
* Revision date
*
*=======================================================================*/
#ifndef __SpoLOAD_H__
#define __SpoLOAD_H__

//--- Includes --------------------------------------------------------

#include "SCR.h"

#include "typedef.h"

#include "sprobj.h"

//----------------------------------------------------------------------

#ifdef _WINDOWS
/********************************************************/
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus 
/********************************************************/
#endif // _WINDOWS



//--- structures --------------------------------------------------------

typedef struct MLT_tdstSPOFlags_
{
	char  szFlag[5];
	short sFlag;
}
MLT_tdstSPOFlags;


//--- Globals ---------------------------------------------------------

extern BOOL g_bSubFile;


extern MLT_tdstSPOFlags g_stSPOFlags[32];

extern int				g_iEditorSPOFlags[32];
extern int				g_iNbEditorSPOFlags;


//--- Functions ---------------------------------------------------------

// init
extern void MLT_vInitSPOLoad (void);

// loading
extern SCR_tde_Anl_ReturnValue MLT_xLoadSuperObject	(SCR_tdst_File_Description *p_fFile, char *szAction, char *szParams[], SCR_tde_Anl_Action cType);
extern SCR_tde_Anl_ReturnValue MLT_xLoadMatrix		(SCR_tdst_File_Description *p_fFile, char *szAction, char *szParams[], SCR_tde_Anl_Action cType);

// SPO flags
extern void MLT_vReadSPOFlagsFile	(xString sRawData);
extern void MLT_vSetSPOFlags		(unsigned long *p_ulSPOFlags, float *p_fTransparency, xString *sIdent);
extern int	MLT_iGetIndexSPOFlags	(char *szFlag);

// geometric propertie
extern void MLT_vGeomProp	(int * p_iGeomProp, xString *sIdent, char *p_cGeom, double* p_fGeom, char * p_sConstraintAxis[4]);

// hierarchy
extern void MLT_vLoadHierarchy		(MLT_tdxHandleToSuperObject *p_hRoot);
extern void MLT_vCheckHierarchy		(MLT_tdxHandleToSuperObject *p_hRoot);
extern void MLT_vDeleteHierarchy	(MLT_tdxHandleToSuperObject hSprObj);

// search functions
extern MLT_tdxHandleToSuperObject MLT_hFindInHierarchy		 (char *sName, MLT_tdxHandleToSuperObject hSprObj);
extern MLT_tdxHandleToSuperObject MLT_hFindInHierarchySector (char *sName, MLT_tdxHandleToSuperObject hSprObj);
extern BOOL						  MLT_bIsNotSameSector		 (char *sName, char *sSector);

// file parameters
extern double MLT_dGetUnitInMeterInFile	(char *szGeometricFile);


#ifdef _WINDOWS
/********************************************************/
#ifdef __cplusplus
}
#endif // __cplusplus 
/********************************************************/
#endif // _WINDOWS


#endif // __SpoLOAD_H__ 
