/*=========================================================================
* Vignette.h : Load and display vignette
* This is a part of the Game project.
*
* Version              1.0
* Creation date        06/06/97
* Revision date
*
* That file needs to be compatible for all platforms.
*
* (c) Ubi Studios 1997
*=======================================================================*/
#if !defined(__VIG_Def_h__)
#define __VIG_Def_h__
 
/******************************************/
#if _MSC_VER >= 1000
#pragma once
#endif /* _MSC_VER >= 1000 */
/******************************************/
 
#include "CPA_Expt.h"
 
#undef EXTERN
#undef extern
#if !defined(D_VIG_Input_VariableDefine)
#define EXTERN extern
#else
#define EXTERN
#endif /* D_VIG_Input_VariableDefine */
 
#define VIG_C_ScriptPgbSuffixe "pgb"
 
#if defined(__cplusplus)
extern "C"
{
#endif /* __cplusplus */
 
#define VIG_C_SectionLoadVignettesDescription "Vignette"
#define VIG_C_EVignetteMemoryBlock E_ucGameMiscMemory
 
#define VIG_C_lVignetteMaxNb 100
 
/* a virer */
typedef enum GLI_tdeVignetteFormat_
{
 GLI_EVF_RGB888_DL,
 GLI_EVF_BGRA8888_UL,
 GLI_EVF_BGR565_UL,
 GLI_EVF_BGR1555_UL,
 GLI_EVF_BGR4444_UL,
 GLI_EVF_NumberOfFormat
} GLI_tdeVignetteFormat;
 
 
/*
#pragma pack(push,1)
struct VIG_tdstVignetteBmpFileHeader_
{
 unsigned short uwType;
 unsigned long  ulSize;
 unsigned long  ulReserved;
 unsigned long  ulOffsetBits;
};
 
struct VIG_tdstVignetteBmpInfoHeader_
{
 unsigned long  ulSize;
 unsigned long  ulWidth;
 unsigned long  ulHeight;
 unsigned short uwPlanes;
 unsigned short uwBitCount;
 unsigned long  ulCompression;
 unsigned long  ulSizeImage;
 unsigned long  ulXPelsPerMeter;
 unsigned long  ulYPelsPerMeter;
 unsigned long  ulColorsUsed;
 unsigned long  ulColorsImportant;
};
#pragma pack(pop)
*/
 
struct VIG_tdstVignetteStructure_
{
 char szVignetteFileName[_MAX_PATH];
 char szLevelVignetteFileName[_MAX_PATH];
 unsigned long ulMemoryBufferSize;
 unsigned char *p_ucMemoryBuffer;
 unsigned long ulWidth;
 unsigned long ulHeight;
 GLI_tdeVignetteFormat eFormat;
 GLD_tdstPixelFormat stVignetteFormat;
 
 unsigned char bDisplayBar;
 unsigned long ulMaxBarValue;
 unsigned long ulActualBarValue; /* [0,ulMaxBarValue]*/
 unsigned long ulOldBarValue;    /**** in pixel ****/
 unsigned long ulNewBarValue;    /**** in pixel ****/
 unsigned long ulBarXMinPos,ulBarYMinPos;
 unsigned long ulBarXMaxPos,ulBarYMaxPos;
 
 struct GEO_tdstColor_ stOutsideColor;
 struct GEO_tdstColor_ stInsideColor;
 struct GEO_tdstColor_ stUpLeftColor;
 struct GEO_tdstColor_ stUpRightColor;
 struct GEO_tdstColor_ stDownLeftColor;
 struct GEO_tdstColor_ stDownRightColor;
};
 
extern CPA_EXPORT void VIG_fn_vOpenBigFileVignette(char *p_szFileName);
extern CPA_EXPORT void VIG_fn_vCloseBigFileVignette(void);
 
extern CPA_EXPORT void VIG_fn_vSetPointToMemoryBuffer(struct VIG_tdstVignetteStructure_ *_p_stVignette,long _lX,long _lY,struct GEO_tdstColor_ *p_stColor);
extern CPA_EXPORT struct VIG_tdstVignetteStructure_ *fn_p_stCreateVignette(void);
 
extern CPA_EXPORT void VIG_fn_vFirstInit(void);
extern CPA_EXPORT void VIG_fn_vInitVignette();
extern CPA_EXPORT void VIG_fn_vInitDeviceVignette(GLD_tdhDevice _hGLDDevice,GLD_tdhViewport  _hGLDViewport, void * _hDrawSem);
extern CPA_EXPORT void VIG_fn_vRegisterSection(void);
extern CPA_EXPORT void VIG_fn_vDisplayVignette(struct VIG_tdstVignetteStructure_ *_p_stVignette);
extern CPA_EXPORT void VIG_fn_vRefreshActualVignette(void);
extern CPA_EXPORT void VIG_fn_vCopyVignetteToBackBuffer(struct VIG_tdstVignetteStructure_ *_p_stVignette);
extern CPA_EXPORT void VIG_fn_vAddBarToVignette(struct VIG_tdstVignetteStructure_ *_p_stVignette);
extern CPA_EXPORT void VIG_fn_vRefreshBarToVignette(struct VIG_tdstVignetteStructure_ *_p_stVignette,unsigned long _ulXMin,unsigned long _ulXMax);
extern CPA_EXPORT void VIG_fn_vAddToProgressBar(unsigned long _ulInc);
extern CPA_EXPORT void VIG_fn_vLoadBMPVignette(struct VIG_tdstVignetteStructure_ *_p_stVignette,char *_szFileName,GLI_tdeVignetteFormat _eFormat);
extern CPA_EXPORT void VIG_fn_vLoadVignetteInStructure(struct VIG_tdstVignetteStructure_ *_p_stVignette,char *_szFileName,GLI_tdeVignetteFormat _eFormat);
extern CPA_EXPORT void VIG_fn_vPreLoadVignetteInStructure(struct VIG_tdstVignetteStructure_ *_p_stVignette,char *_szFileName,GLI_tdeVignetteFormat _eFormat);
#if !defined(U64)
extern CPA_EXPORT SCR_tde_Anl_ReturnValue VIG_fn_eScriptCallBackVignettesDescription(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action	_eAction);
extern CPA_EXPORT SCR_tde_Anl_ReturnValue VIG_fn_eScriptCallBackBinVignettesDescription(SCR_tdst_File_Description *_p_stFile,char *_p_szName,char *_ap_szParams[],SCR_tde_Anl_Action	_eAction);
#endif /* U64 */
extern CPA_EXPORT void VIG_fn_vSaveProgressBarLevelInfo(struct VIG_tdstVignetteStructure_ *_p_stVignette,char *_szFilemane);
extern CPA_EXPORT void VIG_fn_vSaveProgressBarStandardInfo(struct VIG_tdstVignetteStructure_ *_p_stVignette,char *_szFileName);
extern CPA_EXPORT void VIG_fn_vFreeVignette(struct VIG_tdstVignetteStructure_ *_p_stVignette);
extern CPA_EXPORT void VIG_fn_vFreeMemoryVignette(struct VIG_tdstVignetteStructure_ *_p_stVignette);
extern CPA_EXPORT void VIG_fn_vConvertAllVignette ( GLD_tdpstPixelFormat p_stDstPixelFormat );
 
EXTERN struct VIG_tdstVignetteStructure_ VIG_g_stActualVignette;
 
#if defined(__cplusplus)
}
#endif /* __cplusplus */
 
#endif /* __VIG_Def_h__ */
