D:/Zythum/DinoKod/Sound/StreamTrackDS.h

00001 //---------------------------------------------------------------------------------------------
00002 //      This file is a part of "DinoKod".
00003 //      Copyright © 2003 Dino Productions. All Rights Reserved.
00004 //      
00005 //      File                    : StreamTrackDS.h
00006 //      Author                  : Sebastien LEIX        sebastien.leix@wanadoo.fr
00007 //      Date                    : 19/10/2003
00008 //      Modification    :
00009 //
00010 //---------------------------------------------------------------------------------------------
00011 #ifndef __STREAMTRACKDS_H__
00012 #define __STREAMTRACKDS_H__
00013 
00014 #include <windows.h>
00015 #include "Sound/SoundDll.h"
00016 #include "Common/Types.h"
00017 #include "Common/Table.h"
00018 #include "Common/Time.h"
00019 
00020 #define KDSBVOLUME_MIN                          -5000
00021 typedef u32                                                     KSTREAMTRACK;
00022 #define KSTREAMTRACK_NO                         ((KSTREAMTRACK)-1)
00023 #define KSTREAMTRACK_FADE_TIME          1000    // 1 seconde
00024 
00025 class KSound;
00026 class KWave;
00027 class KStreamTrackBank;
00028 struct IDirectSoundBuffer8;
00029 struct IDirectSoundNotify8;
00030 
00031 //---------------------------------------------------------------------------------------------
00032 typedef enum _KSTRACKFADE
00033 {
00034         KSTF_NONE,
00035         KSTF_IN,
00036         KSTF_OUT
00037 } KSTRACKFADE;
00038 
00039 //---------------------------------------------------------------------------------------------
00040 class SOUND_API KStreamTrack
00041 {
00042 protected:
00043         IDirectSoundBuffer8*    m_pDSBuffer;
00044         IDirectSoundNotify8*    m_pDSNotify;
00045         KStr                                    m_sFileName;
00046         KWave*                                  m_pWaveFile;
00047         HANDLE                                  m_hStopEvent1;
00048         HANDLE                                  m_hStopEvent2;
00049         KSTRACKFADE                             m_Fade;
00050         KTIME                                   m_StartFade;
00051         KTIME                                   m_EndFade;
00052 
00053 public:
00054                                                         KStreamTrack();
00055                                                         ~KStreamTrack();
00056         
00057         bool                                    LoadTrack( KStreamTrackBank* pStreamTrackBank, KStr& sFileName );
00058         bool                                    UnloadTrack();
00059         KStr&                                   GetsFileName()          { return m_sFileName;           }
00060         bool                                    Play( bool bFadeIn = false, KTIME FadeTime = KSTREAMTRACK_FADE_TIME );
00061         bool                                    Stop( bool bFadeOut = false, KTIME FadeTime = KSTREAMTRACK_FADE_TIME );
00062         bool                                    Lock( void** pData, u32* Size, u32 StartOffset = 0, u32 SizeToLock = 0 );
00063         bool                                    Unlock( void* pData, u32 Size );
00064         bool                                    CopyNextBlock( u32 BufferId );
00065         bool                                    Manage();
00066         HANDLE                                  GethStopEvent1()                { return m_hStopEvent1;                 }
00067         HANDLE                                  GethStopEvent2()                { return m_hStopEvent2;                 }
00068 
00069         void                                    SetPlayPos( u32 Position );
00070 
00071         bool                                    IsPlaying();
00072 };
00073 
00074 //---------------------------------------------------------------------------------------------
00075 class SOUND_API KStreamTrackBank
00076 {
00077 protected:
00078         KSound*                                 m_pSound;
00079         KTable<KStreamTrack*>   m_pTrack;
00080         u32                                             m_nTracks;
00081 
00082 public:
00083                                                         KStreamTrackBank( KSound* pSound );
00084                                                         ~KStreamTrackBank();
00085 
00086         KSTREAMTRACK                    LoadTrack( KStr& sFileName );
00087         bool                                    UnloadTrack( KSTREAMTRACK& Track );
00088         KStreamTrack*                   GetTrack( KSTREAMTRACK TrackId );
00089 
00090         KSound*                                 GetSound()              { return m_pSound;                              }
00091         u32                                             GetnTracks()    { return m_nTracks;                             }
00092 };
00093 
00094 #endif  __STREAMTRACKDS_H__

Generated on Sun Mar 25 20:02:16 2007 for Zythum Project by  doxygen 1.5.1-p1