reman3/Rayman_X/cpa/tempgrp/msn/MnuSNDmw/MnuSNDmw.c

97 lines
3.0 KiB
C

//gestion du menu ED (module MNU) pour
// target MW
//!!!! aucune fonction en peut être appelée
//seuls les prototypes sont exploités
#include "cpa_std.h"
#include "acp_base.h"
#include "hdl.h"
#include "mth.h"
#include "pos.h"
#include "geo.h"
#include "gli.h"
#include "gld.h"
#include "fon.h"
#include "mnu.h"
#include "SND.h"
#include "mnusnd.h"
//!!!!!!! les conventions d'appel ne sont pas les mêmes pour toutes les fonctions
// définir DLLCALL avec la valeur adéquat avant d'utiliser SND_DefinePointerx
//definitions des fct MNU
#define DLLCALL
SND_DefinePointer_void2(MNU_fn_vAddCallback,void,MNU_tdpfn_Callback,char*);
SND_DefinePointer1(MNU_fn_lGetValue,long,MNU_tdxHandleOfSlider);
SND_DefinePointer2(MNU_fn_bSetValue,BOOL,MNU_tdxHandleOfSlider,short);
//defintions des fct SND
SND_DefinePointer0(SND_fn_bGetReverseStereoSound,SndBool);
SND_DefinePointer_void1(SND_fn_vSetReverseStereoSound,void,SndBool);
#undef DLLCALL
#define DLLCALL WINAPI
SND_DefinePointer0(SND_fn_bGetDolbySample,SndBool);
SND_DefinePointer_void1(SND_fn_vSetDolbySample,void,SndBool);
SND_DefinePointer0(SND_fn_vGetHModuleWav,HMODULE);
void fn_vMenuSon_InitStereo(struct MNU_stMenuItem_ *hMenuItem,char *szText[])
{
SndBool stereo;
stereo=SND_fn_bGetReverseStereoSound();
MNU_fn_bSetValue(hMenuItem->uItem.hSlider,(short)(stereo ? 2 : 1));
}
void fn_vMenuSon_ChangeStereo(struct MNU_stMenuItem_ *hMenuItem,char *szText[])
{
long stereo;
stereo=MNU_fn_lGetValue(hMenuItem->uItem.hSlider);
SND_fn_vSetReverseStereoSound((stereo==2) ? TRUE : FALSE);
}
void fn_vMenuSon_InitDolby(struct MNU_stMenuItem_ *hMenuItem,char *szText[])
{
SndBool dolby;
dolby=SND_fn_bGetDolbySample();
MNU_fn_bSetValue(hMenuItem->uItem.hSlider,(short)(dolby ? 2 : 1));
}
void fn_vMenuSon_ChangeDolby(struct MNU_stMenuItem_ *hMenuItem,char *szText[])
{
long dolby;
dolby=MNU_fn_lGetValue(hMenuItem->uItem.hSlider);
SND_fn_vSetDolbySample((dolby==2) ? TRUE : FALSE);
}
//Init géné
__declspec(dllexport) void SNDMNUInit(HINSTANCE hinst)
{
HMODULE hWavModule;
//init des pointeurs de fonctions MNU
DLLpfn_MNU_fn_vAddCallback=(DLLtdpfn_MNU_fn_vAddCallback)GetProcAddress(hinst,"MNU_fn_vAddCallback");
DLLpfn_MNU_fn_lGetValue=(DLLtdpfn_MNU_fn_lGetValue)GetProcAddress(hinst,"MNU_fn_lGetValue");
DLLpfn_MNU_fn_bSetValue=(DLLtdpfn_MNU_fn_bSetValue)GetProcAddress(hinst,"MNU_fn_bSetValue");
//init des pointeurs de fonctions SND
DLL_M_GetProcAddress(SND_fn_bGetReverseStereoSound,hinst);
DLL_M_GetProcAddress(SND_fn_vSetReverseStereoSound,hinst);
DLL_M_GetProcAddressDecored(SND_fn_vGetHModuleWav,hinst);
hWavModule=SND_fn_vGetHModuleWav();
DLL_M_GetProcAddressDecored(SND_fn_bGetDolbySample,hWavModule);
DLL_M_GetProcAddressDecored(SND_fn_vSetDolbySample,hWavModule);
//init des callback MNU
MNU_fn_vAddCallback(fn_vMenuSon_InitStereo,"InitStereo");
MNU_fn_vAddCallback(fn_vMenuSon_ChangeStereo,"ChangeStereo");
MNU_fn_vAddCallback(fn_vMenuSon_InitDolby,"InitDolby");
MNU_fn_vAddCallback(fn_vMenuSon_ChangeDolby,"ChangeDolby");
}