45 lines
1.2 KiB
C
45 lines
1.2 KiB
C
|
#ifndef NULLSOFT_OUT_DS_VOLCTRL_H
|
||
|
#define NULLSOFT_OUT_DS_VOLCTRL_H
|
||
|
|
||
|
#include <windows.h>
|
||
|
#include <mmsystem.h>
|
||
|
#include <dsound.h>
|
||
|
|
||
|
class DsVolCtrl
|
||
|
{
|
||
|
public:
|
||
|
DsVolCtrl(int VolMode, double LogVolMin, bool logfades);
|
||
|
void SetFade(__int64 duration, double destvol, double destpan);
|
||
|
inline void SetFadeVol(__int64 duration, double destvol) {SetFade(duration, destvol, DestPanHack);}
|
||
|
inline void SetFadePan(__int64 duration, double destpan) {SetFade(duration, DestVolHack, destpan);}
|
||
|
__int64 RelFade(__int64 max, double destvol);
|
||
|
void SetTime(__int64 time);
|
||
|
void SetVolume(double vol);
|
||
|
void SetPan(double pan);
|
||
|
void Apply(IDirectSoundBuffer * pDSB);
|
||
|
// inline double GetCurVol() {return CurVol;}
|
||
|
inline double GetDestVol() { return DestVolHack;}
|
||
|
inline void Reset() {CurTime = 0;FadeDstTime = -1;}
|
||
|
double Stat_GetVolLeft();
|
||
|
double Stat_GetVolRight();
|
||
|
|
||
|
bool Fading();
|
||
|
|
||
|
private:
|
||
|
bool IsFading;
|
||
|
int VolMode;
|
||
|
double LogVolMin;
|
||
|
|
||
|
double FadeSrcVol, FadeDstVol, FadeSrcPan, FadeDstPan;
|
||
|
__int64 FadeSrcTime, FadeDstTime;
|
||
|
|
||
|
__int64 CurTime;
|
||
|
|
||
|
double CurVol, CurPan, LastVol, LastPan;
|
||
|
double DestVolHack, DestPanHack;
|
||
|
bool LogFades;
|
||
|
void MapVol(double Vol, double Pan, double &NewVol, double &NewPan);
|
||
|
};
|
||
|
|
||
|
#endif
|