Add rayman2 source files
This commit is contained in:
358
Rayman_X/cpa/tempgrp/SND/src/Win95/Supervis99/VoicesPage.cpp
Normal file
358
Rayman_X/cpa/tempgrp/SND/src/Win95/Supervis99/VoicesPage.cpp
Normal file
@@ -0,0 +1,358 @@
|
||||
// VoicesPage.cpp : implementation file
|
||||
//
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "supervis.h"
|
||||
#include "VoicesPage.h"
|
||||
|
||||
//ACP Virtual Voice
|
||||
#include "sndvirt.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define new DEBUG_NEW
|
||||
#undef THIS_FILE
|
||||
static char THIS_FILE[] = __FILE__;
|
||||
#endif
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CVoicesPage property page
|
||||
|
||||
IMPLEMENT_DYNCREATE(CVoicesPage, CPropertyPage)
|
||||
|
||||
CVoicesPage::CVoicesPage() : CPropertyPage(CVoicesPage::IDD)
|
||||
{
|
||||
//{{AFX_DATA_INIT(CVoicesPage)
|
||||
m_iMaxVoices = 0;
|
||||
m_iUsedVoices = 0;
|
||||
//}}AFX_DATA_INIT
|
||||
}
|
||||
|
||||
CVoicesPage::~CVoicesPage()
|
||||
{
|
||||
}
|
||||
|
||||
void CVoicesPage::DoDataExchange(CDataExchange* pDX)
|
||||
{
|
||||
CPropertyPage::DoDataExchange(pDX);
|
||||
//{{AFX_DATA_MAP(CVoicesPage)
|
||||
DDX_Control(pDX, IDC_VOICES_COMBO, m_VoicesCombo);
|
||||
DDX_Control(pDX, IDC_VOICES_LIST, m_VoicesListCtrl);
|
||||
DDX_Text(pDX, IDC_MAX_VOICES, m_iMaxVoices);
|
||||
DDX_Text(pDX, IDC_USED_VOICES, m_iUsedVoices);
|
||||
//}}AFX_DATA_MAP
|
||||
}
|
||||
|
||||
|
||||
BEGIN_MESSAGE_MAP(CVoicesPage, CPropertyPage)
|
||||
//{{AFX_MSG_MAP(CVoicesPage)
|
||||
ON_WM_DESTROY()
|
||||
//}}AFX_MSG_MAP
|
||||
END_MESSAGE_MAP()
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// CVoicesPage message handlers
|
||||
|
||||
BOOL CVoicesPage::OnInitDialog()
|
||||
{
|
||||
CPropertyPage::OnInitDialog();
|
||||
|
||||
CSupervisApp* pSuperVisApp = (CSupervisApp*)AfxGetApp();
|
||||
|
||||
//Initialise the ClistCtrl containing virtual voices descriptions
|
||||
LV_COLUMN* lvc;
|
||||
|
||||
lvc = (LV_COLUMN*)malloc(sizeof(LV_COLUMN));
|
||||
|
||||
lvc->mask = LVCF_FMT |LVCF_SUBITEM
|
||||
| LVCF_TEXT | LVCF_WIDTH; // members contain valid information
|
||||
lvc->fmt = LVCFMT_LEFT; // Alignment of the column
|
||||
lvc->cx = pSuperVisApp->m_RegKeyVoicePage.iColVoiceId; // width of the column, in pixels
|
||||
lvc->pszText = "Voices Id"; // column heading
|
||||
lvc->iSubItem = 0; // index of subitem associated with column
|
||||
m_VoicesListCtrl.InsertColumn(0, lvc);
|
||||
|
||||
|
||||
lvc->pszText = "Paused?"; // column heading
|
||||
lvc->cx = pSuperVisApp->m_RegKeyVoicePage.iColPaused; // width of the column, in pixels
|
||||
lvc->iSubItem = 1; // index of subitem associated with column
|
||||
m_VoicesListCtrl.InsertColumn(1, lvc);
|
||||
|
||||
|
||||
lvc->pszText = "Res Ptr"; // column heading
|
||||
lvc->cx = pSuperVisApp->m_RegKeyVoicePage.iColResPtr; // width of the column, in pixels
|
||||
lvc->iSubItem = 2; // index of subitem associated with column
|
||||
m_VoicesListCtrl.InsertColumn(2, lvc);
|
||||
|
||||
|
||||
lvc->pszText = "Res Id"; // column heading
|
||||
lvc->cx = pSuperVisApp->m_RegKeyVoicePage.iColResId; // width of the column, in pixels
|
||||
lvc->iSubItem = 3; // index of subitem associated with column
|
||||
m_VoicesListCtrl.InsertColumn(3, lvc);
|
||||
|
||||
|
||||
lvc->pszText = "Loop"; // column heading
|
||||
lvc->cx = pSuperVisApp->m_RegKeyVoicePage.iColLoop; // width of the column, in pixels
|
||||
lvc->iSubItem = 4; // index of subitem associated with column
|
||||
m_VoicesListCtrl.InsertColumn(4, lvc);
|
||||
|
||||
|
||||
lvc->pszText = "Norm"; // column heading
|
||||
lvc->cx = pSuperVisApp->m_RegKeyVoicePage.iColNorm; // width of the column, in pixels
|
||||
lvc->iSubItem = 5; // index of subitem associated with column
|
||||
m_VoicesListCtrl.InsertColumn(5, lvc);
|
||||
|
||||
|
||||
lvc->pszText = "Instance"; // column heading
|
||||
lvc->cx = pSuperVisApp->m_RegKeyVoicePage.iColInstance; // width of the column, in pixels
|
||||
lvc->iSubItem = 6; // index of subitem associated with column
|
||||
m_VoicesListCtrl.InsertColumn(6, lvc);
|
||||
|
||||
|
||||
lvc->pszText = "Audible Voice"; // column heading
|
||||
lvc->cx = pSuperVisApp->m_RegKeyVoicePage.iColAudibleV; // width of the column, in pixels
|
||||
lvc->iSubItem = 7; // index of subitem associated with column
|
||||
m_VoicesListCtrl.InsertColumn(7, lvc);
|
||||
|
||||
lvc->pszText = "Hard Voice"; // column heading
|
||||
lvc->cx = pSuperVisApp->m_RegKeyVoicePage.iColHardV; // width of the column, in pixels
|
||||
lvc->iSubItem = 8; // index of subitem associated with column
|
||||
m_VoicesListCtrl.InsertColumn(8, lvc);
|
||||
|
||||
free( lvc );
|
||||
|
||||
//init module ComboBox so GetCurSel() wont return a CB_ERR
|
||||
m_VoicesCombo.SetCurSel(0);
|
||||
|
||||
|
||||
UpdateData(FALSE);
|
||||
|
||||
|
||||
return TRUE; // return TRUE unless you set the focus to a control
|
||||
// EXCEPTION: OCX Property Pages should return FALSE
|
||||
}
|
||||
|
||||
void CVoicesPage::RefreshVoiceList()
|
||||
{
|
||||
|
||||
int i;
|
||||
|
||||
CSupervisApp* pSuperVisApp = (CSupervisApp*)AfxGetApp();
|
||||
|
||||
|
||||
//Get the module currently selected...
|
||||
int iSelectedModule = m_VoicesCombo.GetCurSel();
|
||||
|
||||
//Clear the list
|
||||
m_VoicesListCtrl.DeleteAllItems();
|
||||
|
||||
//Clear the comboBox
|
||||
m_VoicesCombo.ResetContent();
|
||||
|
||||
|
||||
//If there is nothing in the array we leave
|
||||
int iNbModule = pSuperVisApp->m_apVirtualVoiceModule.GetSize();
|
||||
if (iNbModule == 0)
|
||||
return;
|
||||
|
||||
|
||||
VirtualVoiceModule *pModule;
|
||||
|
||||
//Add module desciption in the ComboBox
|
||||
for (i = 0; i < iNbModule; i++ )
|
||||
{
|
||||
pModule = (VirtualVoiceModule *)pSuperVisApp->m_apVirtualVoiceModule.GetAt(i);
|
||||
m_VoicesCombo.AddString(pModule->cDescription);
|
||||
}
|
||||
|
||||
|
||||
//Set to the module currently
|
||||
//No item is selected
|
||||
if (iSelectedModule == CB_ERR)
|
||||
iSelectedModule = 0;
|
||||
|
||||
//Set the combobox to the selected module
|
||||
m_VoicesCombo.SetCurSel(iSelectedModule);
|
||||
|
||||
pModule = (VirtualVoiceModule *)pSuperVisApp->m_apVirtualVoiceModule.GetAt(iSelectedModule);
|
||||
|
||||
|
||||
//Clean the virtual voices array
|
||||
int iArraySize = pModule->apVirtualVoicesArray.GetSize();
|
||||
VirtualVoice *pVoice;
|
||||
for (i = 0; i < iArraySize; i ++ )
|
||||
{
|
||||
//Retrieve the current Voice
|
||||
pVoice = (VirtualVoice *)(pModule->apVirtualVoicesArray.GetAt(i));
|
||||
|
||||
//Is the voice still active
|
||||
if(!pVoice->bStillActive){
|
||||
|
||||
//Erase
|
||||
pModule->apVirtualVoicesArray.RemoveAt(i);
|
||||
delete pVoice;
|
||||
i --;
|
||||
iArraySize--;
|
||||
}
|
||||
}
|
||||
|
||||
//Cycle through the Current Virtual voices module.
|
||||
iArraySize = pModule->apVirtualVoicesArray.GetSize();
|
||||
for (i = 0; i < iArraySize; i ++ )
|
||||
{
|
||||
//We have to pass the index to the current module
|
||||
AddVoiceToList(i, iSelectedModule);
|
||||
|
||||
}
|
||||
|
||||
|
||||
//We display here the number of voices
|
||||
SND_tdhVirtualModule pVirtualModule = (SND_tdhVirtualModule)pModule->lIdModule;
|
||||
// m_iUsedVoices = SNDLST2_M_DynamicGetNumberOfElements(&pVirtualModule->virtual_voices.pList);
|
||||
m_iUsedVoices = pModule->apVirtualVoicesArray.GetSize();
|
||||
m_iMaxVoices = pVirtualModule->g_lNbSxdAudible;
|
||||
|
||||
UpdateData(FALSE);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
void CVoicesPage::AddVoiceToList(long lVoiceIndex, long lModuleIndex)
|
||||
{
|
||||
|
||||
CSupervisApp* pSuperVisApp = (CSupervisApp*)AfxGetApp();
|
||||
|
||||
//Retrieve the current module
|
||||
VirtualVoiceModule *pModule;
|
||||
pModule = (VirtualVoiceModule *)pSuperVisApp->m_apVirtualVoiceModule.GetAt(lModuleIndex);
|
||||
|
||||
|
||||
//Retrieve the current Voice
|
||||
VirtualVoice *pVoice;
|
||||
pVoice = (VirtualVoice *)(pModule->apVirtualVoicesArray.GetAt(lVoiceIndex));
|
||||
|
||||
|
||||
|
||||
//Retrieve data from the control
|
||||
PostMessage(WM_USER_UPDATE_DATA_TRUE, 0, 0);
|
||||
|
||||
char buffer[128];
|
||||
|
||||
|
||||
|
||||
//Display item, Voice Id
|
||||
sprintf(buffer,"0x%08x", pVoice->lId);
|
||||
m_VoicesListCtrl.InsertItem( 0, buffer );
|
||||
|
||||
|
||||
//Set the item data with the Micro Array index, to be used later for drag&drop, pop-memnu, etc.
|
||||
m_VoicesListCtrl.SetItemData( 0, (DWORD)lVoiceIndex );
|
||||
|
||||
//Paused?
|
||||
if(pVoice->bPaused)
|
||||
sprintf(buffer, "Yes");
|
||||
else
|
||||
sprintf(buffer, "No");
|
||||
m_VoicesListCtrl.SetItem(0, 1, LVIF_TEXT, buffer, 0, 0, 0, NULL );
|
||||
|
||||
|
||||
//Resource pointer
|
||||
sprintf(buffer,"0x%08x", pVoice->lResRef);
|
||||
m_VoicesListCtrl.SetItem(0, 2, LVIF_TEXT, buffer, 0, 0, 0, NULL );
|
||||
|
||||
//Resource ID
|
||||
sprintf(buffer,"0x%08x", pVoice->lResId);
|
||||
m_VoicesListCtrl.SetItem(0, 3, LVIF_TEXT, buffer, 0, 0, 0, NULL );
|
||||
|
||||
//loop?
|
||||
if(pVoice->bLoop)
|
||||
sprintf(buffer, "Yes");
|
||||
else
|
||||
sprintf(buffer, "No");
|
||||
m_VoicesListCtrl.SetItem(0, 4, LVIF_TEXT, buffer, 0, 0, 0, NULL );
|
||||
|
||||
//Norm
|
||||
sprintf(buffer, "%6.3f", pVoice->dNorme);
|
||||
m_VoicesListCtrl.SetItem(0, 5, LVIF_TEXT, buffer, 0, 0, 0, NULL );
|
||||
|
||||
//Instance
|
||||
sprintf(buffer, "%d", pVoice->lInstance);
|
||||
m_VoicesListCtrl.SetItem(0, 6, LVIF_TEXT, buffer, 0, 0, 0, NULL );
|
||||
|
||||
|
||||
if (pVoice->lAudible)
|
||||
{
|
||||
//Audible voice
|
||||
sprintf(buffer, "0x%08x", pVoice->lAudible);
|
||||
m_VoicesListCtrl.SetItem(0, 7, LVIF_TEXT, buffer, 0, 0, 0, NULL );
|
||||
|
||||
|
||||
//Hard voice
|
||||
sprintf(buffer, "0x%08x", pVoice->lVoice);
|
||||
m_VoicesListCtrl.SetItem(0, 8, LVIF_TEXT, buffer, 0, 0, 0, NULL );
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
//Audible voice
|
||||
sprintf(buffer, "");
|
||||
m_VoicesListCtrl.SetItem(0, 7, LVIF_TEXT, buffer, 0, 0, 0, NULL );
|
||||
|
||||
|
||||
//Hard voice
|
||||
sprintf(buffer, "");
|
||||
m_VoicesListCtrl.SetItem(0, 8, LVIF_TEXT, buffer, 0, 0, 0, NULL );
|
||||
|
||||
}
|
||||
|
||||
//Refresh data from the control
|
||||
// PostMessage(WM_USER_UPDATE_DATA_FALSE, 0, 0);
|
||||
|
||||
}
|
||||
|
||||
BOOL CVoicesPage::PreTranslateMessage(MSG* pMsg)
|
||||
{
|
||||
if(pMsg->message == WM_USER_UPDATE_DATA_TRUE)
|
||||
{
|
||||
//We send the updatedata(TRUE) here
|
||||
//We cannot pass the CWnd across thread and this cause problem while using updatedata
|
||||
UpdateData(TRUE);
|
||||
}
|
||||
|
||||
if(pMsg->message == WM_USER_UPDATE_DATA_FALSE)
|
||||
{
|
||||
//We send the updatedata(TRUE) here
|
||||
//We cannot pass the CWnd across thread and this cause problem while using updatedata
|
||||
UpdateData(FALSE);
|
||||
}
|
||||
|
||||
return CPropertyPage::PreTranslateMessage(pMsg);
|
||||
}
|
||||
|
||||
void CVoicesPage::OnDestroy()
|
||||
{
|
||||
CPropertyPage::OnDestroy();
|
||||
|
||||
|
||||
CSupervisApp* pSuperVisApp = (CSupervisApp*)AfxGetApp();
|
||||
|
||||
int ColWidth = m_VoicesListCtrl.GetColumnWidth(0);
|
||||
pSuperVisApp->m_RegKeyVoicePage.iColVoiceId = ColWidth;
|
||||
ColWidth = m_VoicesListCtrl.GetColumnWidth(1);
|
||||
pSuperVisApp->m_RegKeyVoicePage.iColPaused = ColWidth;
|
||||
ColWidth = m_VoicesListCtrl.GetColumnWidth(2);
|
||||
pSuperVisApp->m_RegKeyVoicePage.iColResPtr = ColWidth;
|
||||
ColWidth = m_VoicesListCtrl.GetColumnWidth(3);
|
||||
pSuperVisApp->m_RegKeyVoicePage.iColResId = ColWidth;
|
||||
ColWidth = m_VoicesListCtrl.GetColumnWidth(4);
|
||||
pSuperVisApp->m_RegKeyVoicePage.iColLoop= ColWidth;
|
||||
ColWidth = m_VoicesListCtrl.GetColumnWidth(5);
|
||||
pSuperVisApp->m_RegKeyVoicePage.iColNorm = ColWidth;
|
||||
ColWidth = m_VoicesListCtrl.GetColumnWidth(6);
|
||||
pSuperVisApp->m_RegKeyVoicePage.iColInstance = ColWidth;
|
||||
ColWidth = m_VoicesListCtrl.GetColumnWidth(7);
|
||||
pSuperVisApp->m_RegKeyVoicePage.iColAudibleV = ColWidth;
|
||||
ColWidth = m_VoicesListCtrl.GetColumnWidth(8);
|
||||
pSuperVisApp->m_RegKeyVoicePage.iColHardV = ColWidth;
|
||||
}
|
Reference in New Issue
Block a user