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

#ifndef ProjectH
#define ProjectH
//---------------------------------------------------------------------------
#define E_ERROR_BASE			0x80000000

#define E_PROJ_NOERROR			0x00
#define E_PROJ_INVALIDFONT		0x01
#define E_PROJ_INVALSTAGESTYLE 	0x02
#define E_PROJ_INVALIDFX	 	0x04
#define E_PROJ_FATALERROR		0x100
#define E_PROJ_FILENOTEXIST 	0x103   //文件不存在
#define E_PROJ_EARLERVERSION 	0x104	//早期版本号
#define E_PROJ_LATERVERSION 	0x105	//后期版本号
#define E_PROJ_INVALIDVERSION 	0x106	//无法识别的版本号
#define E_PROJ_FILECRUPT	 	0x107   //文件已损坏
#define E_PROJ_CANTLOADAUDIO 	0x108	//音频加载失败
#define E_PROJ_INVALIDSTYLE 	0x109	//无效的风格
#define E_PROJ_NOAUTHURITY	 	0x110	//未登录使用本地风格
#define E_PROJ_UNSAVEDTEMPSTYLE 0x200	//未保存的临时风格

#define PROJ_MODE_AUTO			0
#define PROJ_MODE_NORMAL		1
#define PROJ_MODE_UPLOAD		2

extern const DWORD g_dwProjectVersion;

BOOL SaveProject( LPCSTR strProjectName, int iSaveMode=0, HWND hNotifyWnd=NULL );
BOOL LoadProject( LPCSTR strProjectName, HWND hNotifyWnd );
int LoadVersion2( FILE *pFile, DWORD dwVersion, HWND hNotifyWnd, int iLoadMode );
int LoadVersion3( FILE *pFile, DWORD dwVersion, HWND hNotifyWnd );
int LoadVersion4( FILE *pFile, DWORD dwVersion, HWND hNotifyWnd );
int LoadVersion5( FILE *pFile, DWORD dwVersion, HWND hNotifyWnd, int* iContentView );

void ClearSVDVars();
void UpdateSVDVars();
void UpdateRecentProject(wstring wstrProj);//更新最近工程列表
BOOL HasProjectModified( bool bAuto=false );
void ClearAutoProj();
void SaveAutoProj();
int CanSaveProj();

void ClearProjStyleMap();
TPROSTYLE* CheckStyle( int idLoc, int idStyle );

void SaveOpusStages( TOpusStageList& lstStages, LOCSEGLIST& lstLocSeg, FILE* pFile );
int LoadOpusStages( TOpusStageList& lstStages, STYLELIST& aUnsolvedStyles, FILE* pFile, DWORD dwVersion );

extern const char       	*g_strProjError[11];
extern vector<wstring>		g_lstRecentProject;		//最近的工程文件
extern HANDLE				g_hProjectEvent;		//工程文件读写互斥变量
extern wstring 				g_strLastProjSavePath,	// 上次保存工程路径
							g_strProjectName,  		// 工程文件名
							g_strAutoProjName; 		// 自动保存文件名
							//g_strFontFile_SVD;		// 音色库文件名(已保存)

extern char					g_strSoundFont_SVD[];	//全局音色库名(已保存)

extern int					g_iMelodyKey_SVD,		// 主旋律调号(已保存)
							g_nMelodyTempo_SVD;		// 主旋律速度(已保存)

extern float				g_fRecordVolume_SVD,		//录音音量(已保存)
							g_fSpeakerVolume_SVD;		//播放音量(已保存)

#endif
