deargui-vpl/ref/virtools/Includes/CKMidiSound.h

85 lines
2.5 KiB
C++

/*************************************************************************/
/* File : CKMidiSound.h */
/* Author : Francisco Cabrita */
/* */
/* Virtools SDK */
/* Copyright (c) Virtools 2000, All Rights Reserved. */
/*************************************************************************/
#ifndef CKMIDISOUND_H
#define CKMIDISOUND_H "$Id:$"
#include "CKSound.h"
/**************************************************************************
Name: CKMidiSound
Summary: Midi sound.
Remarks:
+ CKMidiSound provides the basic methods for playing a midi sound file.
+ Its class id is CKCID_MIDISOUND
See also: CKWaveSound,CKSoundManager
******************************************************************************/
class CKMidiSound : public CKSound {
public :
//---------------------------------------------------
// Sound File
CKERROR SetSoundFileName(CKSTRING filename);
CKSTRING GetSoundFileName();
//----------------------------------------------------
// Current Position In MilliSeconds
CKDWORD GetCurrentPos();
//-----------------------------------------------------
// Sound File
CKERROR Play();
CKERROR Stop();
CKERROR Pause(CKBOOL pause=TRUE);
CKBOOL IsPlaying();
CKBOOL IsPaused();
//-------------------------------------------------------------------
#ifdef DOCJETDUMMY // Docjet secret macro
#else
CKMidiSound(CKContext *Context,CKSTRING name=NULL);
virtual ~CKMidiSound();
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 CKMidiSound* CreateInstance(CKContext *Context);
static void ReleaseInstance(CKContext* iContext,CKMidiSound*);
static CK_CLASSID m_ClassID;
// Dynamic Cast method (returns NULL if the object can't be casted)
static CKMidiSound* Cast(CKObject* iO)
{
return CKIsChildClassOf(iO,CKCID_MIDISOUND)?(CKMidiSound*)iO:NULL;
}
CKERROR OpenFile();
CKERROR CloseFile();
CKERROR Prepare();
CKERROR Start();
protected :
void* m_Source;
CKMidiManager* m_MidiManager;
#endif // Docjet secret macro
};
#endif