/*************************************************************************/
/*	File : CKSound.h													 */
/*	Author :  Romain Sididris											 */	
/*																		 */	
/*	Virtools SDK 															 */	 
/*	Copyright (c) Virtools 2000, All Rights Reserved.						 */	
/*************************************************************************/
#ifndef CKSOUND_H

#define CKSOUND_H "$Id:$"

#include "CKBeObject.h"

/*************************************************
{filename:CKSound}
Name: CKSound

Summary: Base Class for Sound management

Remarks:
	+ CKSound provides only common method for the save options of sounds.
See also: CKWaveSound,CKMidiSound
*************************************************/
class CKSound:public CKBeObject {
public :
//-------- Save format
CK_SOUND_SAVEOPTIONS	GetSaveOptions();
void	SetSaveOptions(CK_SOUND_SAVEOPTIONS Options);

//-------------------------------------------------------------------
#ifdef DOCJETDUMMY // Docjet secret macro
#else

			CKSound(CKContext *Context,CKSTRING name=NULL);						
	virtual	~CKSound();															
	virtual CK_CLASSID GetClassID();											

	virtual CKStateChunk*	Save(CKFile *file,CKDWORD flags);					
	virtual CKERROR			Load(CKStateChunk *chunk,CKFile* file);				

	virtual int				GetMemoryOccupation();								

	//--------------------------------------------
	// Class Registering 
	static CKSTRING  GetClassName();											
	static int		 GetDependenciesCount(int mode);							
	static CKSTRING  GetDependencies(int i,int mode);							
	static void		 Register();												
	static CKSound*  CreateInstance(CKContext *Context);						
	static void		 ReleaseInstance(CKContext* iContext,CKSound*);							
	static CK_CLASSID m_ClassID;												

	// Dynamic Cast method (returns NULL if the object can't be casted)
	static CKSound* Cast(CKObject* iO) 
	{
		return CKIsChildClassOf(iO,CKCID_SOUND)?(CKSound*)iO:NULL;
	}

protected :
	CKSTRING					m_FileName;
	CK_SOUND_SAVEOPTIONS		m_SaveOptions;

#endif // docjet secret macro
};

#endif

