Browse Source

Setup tabs controls, and plugin now passes connection state to GUI

master
waxfrenzy 22 years ago
parent
commit
9714491cd9
4 changed files with 187 additions and 130 deletions
  1. +90
    -29
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C
  2. +7
    -8
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h
  3. +68
    -67
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C
  4. +22
    -26
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h

+ 90
- 29
SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C View File

@@ -64,8 +64,6 @@ LADSPAPlugin::LADSPAPlugin()
m_MaxInputPortCount = m_LADSPAInfo.GetMaxInputPortCount(); m_MaxInputPortCount = m_LADSPAInfo.GetMaxInputPortCount();


// For receiving from GUI // For receiving from GUI
m_AudioCH->Register("SetGain",&(m_InData.Gain));
m_AudioCH->Register("SetAmped",&(m_InData.Amped));
m_AudioCH->RegisterData("SetPluginIndex", ChannelHandler::INPUT,&(m_InData.PluginIndex),sizeof(m_InData.PluginIndex)); m_AudioCH->RegisterData("SetPluginIndex", ChannelHandler::INPUT,&(m_InData.PluginIndex),sizeof(m_InData.PluginIndex));


// For sending to GUI // For sending to GUI
@@ -77,7 +75,7 @@ LADSPAPlugin::LADSPAPlugin()


m_OutData.InputPortNames = (char *)malloc(256 * m_MaxInputPortCount); m_OutData.InputPortNames = (char *)malloc(256 * m_MaxInputPortCount);
m_OutData.InputPortSettings = (PortSettings *)malloc(sizeof(PortSettings) * m_MaxInputPortCount); m_OutData.InputPortSettings = (PortSettings *)malloc(sizeof(PortSettings) * m_MaxInputPortCount);
m_OutData.InputPortValues = (float *)calloc(m_MaxInputPortCount, sizeof(float));
m_OutData.InputPortValues = (PortValues *)calloc(m_MaxInputPortCount, sizeof(PortValues));
m_InData.InputPortSettings = (PortSettings *)malloc(sizeof(PortSettings) * m_MaxInputPortCount); m_InData.InputPortSettings = (PortSettings *)malloc(sizeof(PortSettings) * m_MaxInputPortCount);


if (m_OutData.InputPortNames && if (m_OutData.InputPortNames &&
@@ -85,7 +83,7 @@ LADSPAPlugin::LADSPAPlugin()
m_InData.InputPortSettings) { m_InData.InputPortSettings) {
m_AudioCH->RegisterData("GetInputPortNames", ChannelHandler::OUTPUT, m_OutData.InputPortNames, 256 * m_MaxInputPortCount); m_AudioCH->RegisterData("GetInputPortNames", ChannelHandler::OUTPUT, m_OutData.InputPortNames, 256 * m_MaxInputPortCount);
m_AudioCH->RegisterData("GetInputPortSettings", ChannelHandler::OUTPUT, m_OutData.InputPortSettings, sizeof(PortSettings) * m_MaxInputPortCount); m_AudioCH->RegisterData("GetInputPortSettings", ChannelHandler::OUTPUT, m_OutData.InputPortSettings, sizeof(PortSettings) * m_MaxInputPortCount);
m_AudioCH->RegisterData("GetInputPortValues", ChannelHandler::OUTPUT, m_OutData.InputPortValues, sizeof(float) * m_MaxInputPortCount);
m_AudioCH->RegisterData("GetInputPortValues", ChannelHandler::OUTPUT, m_OutData.InputPortValues, sizeof(PortValues) * m_MaxInputPortCount);
m_AudioCH->RegisterData("SetInputPortSettings", ChannelHandler::INPUT, m_InData.InputPortSettings, sizeof(PortSettings) * m_MaxInputPortCount); m_AudioCH->RegisterData("SetInputPortSettings", ChannelHandler::INPUT, m_InData.InputPortSettings, sizeof(PortSettings) * m_MaxInputPortCount);
} else { } else {
cerr<<"Memory allocation error"<<endl; cerr<<"Memory allocation error"<<endl;
@@ -146,15 +144,17 @@ void LADSPAPlugin::Execute()
m_LADSPABufVec[n][i]=GetInput(n,i); m_LADSPABufVec[n][i]=GetInput(n,i);
} }
} }
// Copy values into OutData value buffer for display in GUI
m_OutData.InputPortValues[n] = m_LADSPABufVec[n][0];
m_OutData.InputPortValues[n].Connected = true;
} }
else // Use default else // Use default
{ {
for (int i=0; i<m_HostInfo->BUFSIZE; i++) { for (int i=0; i<m_HostInfo->BUFSIZE; i++) {
m_LADSPABufVec[n][i]=m_PortDefault[n]; m_LADSPABufVec[n][i]=m_PortDefault[n];
} }
m_OutData.InputPortValues[n].Connected = false;
} }
// Copy values into OutData value buffer for display in GUI
m_OutData.InputPortValues[n].Value = m_LADSPABufVec[n][0];
} }


// run plugin // run plugin
@@ -163,19 +163,9 @@ void LADSPAPlugin::Execute()
// convert outputs // convert outputs
for (int n=0; n<m_PluginInfo.NumOutputs; n++) for (int n=0; n<m_PluginInfo.NumOutputs; n++)
{ {
/*if (m_Amped)
for (int i=0; i<m_HostInfo->BUFSIZE; i++)
{ {
for (int i=0; i<m_HostInfo->BUFSIZE; i++)
{
SetOutput(n,i,m_LADSPABufVec[n+m_PluginInfo.NumInputs][i]*m_Gain*10);
}
}
else*/
{
for (int i=0; i<m_HostInfo->BUFSIZE; i++)
{
SetOutput(n,i,m_LADSPABufVec[n+m_PluginInfo.NumInputs][i]*m_Gain);
}
SetOutput(n,i,m_LADSPABufVec[n+m_PluginInfo.NumInputs][i]);
} }
} }
} }
@@ -210,9 +200,8 @@ void LADSPAPlugin::StreamOut(ostream &s)


switch (m_Version) switch (m_Version)
{ {
case 5:
case 6:
{ {
s<<m_Gain<<" ";
s<<m_UniqueID<<" "; s<<m_UniqueID<<" ";
s<<m_PortMin.size()<<" "; s<<m_PortMin.size()<<" ";
assert(m_PortMin.size()==m_PortMax.size()); assert(m_PortMin.size()==m_PortMax.size());
@@ -239,11 +228,40 @@ void LADSPAPlugin::StreamOut(ostream &s)
s<<*i<<" "; s<<*i<<" ";
} }
} }
case 5:
{
// Here for consistency - should never actually happen, as
// version is always 6!
// s<<m_Gain<<" ";
// s<<m_UniqueID<<" ";
// s<<m_PortMin.size()<<" ";
// assert(m_PortMin.size()==m_PortMax.size());
// assert(m_PortMin.size()==m_PortClamp.size());
// assert(m_PortMin.size()==m_PortDefault.size());
// for (vector<float>::iterator i=m_PortMin.begin();
// i!=m_PortMin.end(); i++)
// {
// s<<*i<<" ";
// }
// for (vector<float>::iterator i=m_PortMax.begin();
// i!=m_PortMax.end(); i++)
// {
// s<<*i<<" ";
// }
// for (vector<bool>::iterator i=m_PortClamp.begin();
// i!=m_PortClamp.end(); i++)
// {
// s<<*i<<" ";
// }
// for (vector<float>::iterator i=m_PortDefault.begin();
// i!=m_PortDefault.end(); i++)
// {
// s<<*i<<" ";
// }
}
break; break;
case 4: case 4:
{ {
// Here for consistency - should never actually happen, as
// version is always 5!
// s<<m_Gain<<" "; // s<<m_Gain<<" ";
// s<<m_UniqueID<<" "; // s<<m_UniqueID<<" ";
// s<<m_PortMin.size()<<" "; // s<<m_PortMin.size()<<" ";
@@ -328,11 +346,52 @@ void LADSPAPlugin::StreamIn(istream &s)


switch (version) switch (version)
{ {
case 6:
{
ClearPlugin();

unsigned long UniqueID;
s>>UniqueID;
int PortCount;
s>>PortCount;
float Min, Max;
bool Clamp;
float Default;

for (int n=0; n<PortCount; n++)
{
s>>Min;
m_PortMin.push_back(Min);
}

for (int n=0; n<PortCount; n++)
{
s>>Max;
m_PortMax.push_back(Max);
}
for (int n=0; n<PortCount; n++)
{
s>>Clamp;
m_PortClamp.push_back(Clamp);
}
for (int n=0; n<PortCount; n++)
{
s>>Default;
m_PortDefault.push_back(Default);
}

if (SelectPlugin(UniqueID)) {
SetGUIExports();
} else {
ClearPlugin();
}
}
case 5: case 5:
{ {
ClearPlugin(); ClearPlugin();


s>>m_Gain;
float temp_gain;
s>>temp_gain;


unsigned long UniqueID; unsigned long UniqueID;
s>>UniqueID; s>>UniqueID;
@@ -375,7 +434,8 @@ void LADSPAPlugin::StreamIn(istream &s)
{ {
ClearPlugin(); ClearPlugin();


s>>m_Gain;
float temp_gain;
s>>temp_gain;


unsigned long UniqueID; unsigned long UniqueID;
s>>UniqueID; s>>UniqueID;
@@ -418,7 +478,8 @@ void LADSPAPlugin::StreamIn(istream &s)
{ {
ClearPlugin(); ClearPlugin();


s>>m_Gain;
float temp_gain;
s>>temp_gain;


string Filename,Label; string Filename,Label;
s>>Filename>>Label; s>>Filename>>Label;
@@ -467,7 +528,8 @@ void LADSPAPlugin::StreamIn(istream &s)
{ {
ClearPlugin(); ClearPlugin();


s>>m_Gain;
float temp_gain;
s>>temp_gain;


string Filename,Label; string Filename,Label;
s>>Filename>>Label; s>>Filename>>Label;
@@ -513,7 +575,8 @@ void LADSPAPlugin::StreamIn(istream &s)


case 1: case 1:
{ {
s>>m_Gain;
float temp_gain;
s>>temp_gain;


string Filename,Label; string Filename,Label;
s>>Filename>>Label; s>>Filename>>Label;
@@ -653,8 +716,6 @@ void LADSPAPlugin::ClearPlugin(void)


m_PluginIndex = 0; m_PluginIndex = 0;
m_InputPortCount = 0; m_InputPortCount = 0;
m_Gain = 1.0f;
m_Amped = false;
strncpy(m_Name, "None\0", 5); strncpy(m_Name, "None\0", 5);
strncpy(m_Maker, "None\0", 5); strncpy(m_Maker, "None\0", 5);




+ 7
- 8
SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h View File

@@ -34,6 +34,11 @@ struct PortSettings
bool Clamp; bool Clamp;
float Default; float Default;
}; };
struct PortValues
{
float Value;
bool Connected;
};


class LADSPAPlugin : public SpiralPlugin class LADSPAPlugin : public SpiralPlugin
{ {
@@ -48,14 +53,12 @@ public:
virtual void StreamOut(ostream &s); virtual void StreamOut(ostream &s);
virtual void StreamIn(istream &s); virtual void StreamIn(istream &s);


float GetGain() { return m_Gain; }
bool GetAmped() { return m_Amped; }
const char *GetName() { return (const char *)m_Name; } const char *GetName() { return (const char *)m_Name; }
const char *GetMaker() { return (const char *)m_Maker; } const char *GetMaker() { return (const char *)m_Maker; }
unsigned long GetInputPortCount() { return m_InputPortCount; } unsigned long GetInputPortCount() { return m_InputPortCount; }
const char *GetPortName(unsigned long p) const char *GetPortName(unsigned long p)
{ {
return (const char *)(m_OutData.InputPortNames + p * 256);
return (const char *)(m_OutData.InputPortNames + p * 256);
} }
PortSettings GetPortSettings(unsigned long p) PortSettings GetPortSettings(unsigned long p)
{ {
@@ -99,8 +102,6 @@ private:
unsigned long m_PluginIndex; unsigned long m_PluginIndex;
unsigned long m_UniqueID; unsigned long m_UniqueID;


float m_Gain;
bool m_Amped;
unsigned long m_MaxInputPortCount; unsigned long m_MaxInputPortCount;
unsigned long m_InputPortCount; unsigned long m_InputPortCount;
char m_Name[256]; char m_Name[256];
@@ -111,15 +112,13 @@ private:
{ {
char *InputPortNames; char *InputPortNames;
PortSettings *InputPortSettings; PortSettings *InputPortSettings;
float *InputPortValues;
PortValues *InputPortValues;
}; };


// Data received from GUI // Data received from GUI
struct InputChannelData struct InputChannelData
{ {
unsigned long PluginIndex; unsigned long PluginIndex;
float Gain;
bool Amped;
PortSettings *InputPortSettings; PortSettings *InputPortSettings;
}; };




+ 68
- 67
SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C View File

@@ -50,14 +50,37 @@ SpiralPluginGUI(w,h,o,ch)
// Set up buffers for data transfer via ChannelHandler // Set up buffers for data transfer via ChannelHandler
m_InData.InputPortNames = (char *)malloc(256 * m_InData.MaxInputPortCount); m_InData.InputPortNames = (char *)malloc(256 * m_InData.MaxInputPortCount);
m_InData.InputPortSettings = (PortSettings *)malloc(sizeof(PortSettings) * m_InData.MaxInputPortCount); m_InData.InputPortSettings = (PortSettings *)malloc(sizeof(PortSettings) * m_InData.MaxInputPortCount);
m_InData.InputPortValues = (float *)calloc(m_InData.MaxInputPortCount, sizeof(float));
m_InData.InputPortValues = (PortValues *)calloc(m_InData.MaxInputPortCount, sizeof(PortValues));


if (!(m_InData.InputPortNames && m_InData.InputPortSettings)) { if (!(m_InData.InputPortNames && m_InData.InputPortSettings)) {
cerr<<"Memory allocation error\n"<<endl; cerr<<"Memory allocation error\n"<<endl;
} }


// Set up widgets // Set up widgets
m_Browser = new Fl_Choice(60,20,420,25,"Plugin:");
m_Name = new Fl_Box(10,20,480,15,"None");
m_Name->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
m_Name->labelcolor(GUI_COLOUR);
m_Name->labelsize(12);
add(m_Name);

m_Maker = new Fl_Box(10,40,480,15,"None");
m_Maker->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
m_Maker->labelcolor(GUI_COLOUR);
m_Maker->labelsize(12);
add(m_Maker);

m_Tab = new Fl_Tabs(5,60,490,255,"");
add(m_Tab);

m_ControlGroup = new Fl_Group(0,80,490,255,"Control");
m_ControlGroup->labelsize(12);

m_SetupGroup = new Fl_Group(0,80,490,255,"Setup");
m_SetupGroup->labelsize(12);

m_Browser = new Fl_Choice(50,85,440,22,"Plugin:");
m_Browser->labelsize(12);
m_Browser->textsize(12);
m_Browser->callback((Fl_Callback *)cb_Select); m_Browser->callback((Fl_Callback *)cb_Select);


m_Browser->add("(None)"); m_Browser->add("(None)");
@@ -68,54 +91,36 @@ SpiralPluginGUI(w,h,o,ch)
} }
m_Browser->value(0); m_Browser->value(0);


m_Name = new Fl_Box(10,50,480,20,"None");
m_Name->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
m_Name->labelcolor(GUI_COLOUR);
m_Name->labelsize(10);
add(m_Name);

m_Maker = new Fl_Box(10,70,480,20,"None");
m_Maker->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
m_Maker->labelcolor(GUI_COLOUR);
m_Maker->labelsize(10);
add(m_Maker);
m_SetupGroup->add(m_Browser);


m_InputScroll = new Fl_Scroll(10,110,480,150," Value Default Min Max Clamp? Port Name");
m_InputScroll = new Fl_Scroll(10,130,480,145," Value Default Min Max Clamp? Port Name");
m_InputScroll->labelsize(12); m_InputScroll->labelsize(12);
m_InputScroll->align(FL_ALIGN_TOP_LEFT); m_InputScroll->align(FL_ALIGN_TOP_LEFT);
m_InputScroll->type(Fl_Scroll::VERTICAL); m_InputScroll->type(Fl_Scroll::VERTICAL);
m_InputScroll->box(FL_DOWN_BOX); m_InputScroll->box(FL_DOWN_BOX);
add(m_InputScroll); add(m_InputScroll);
m_InputPack = new Fl_Pack(5,115,460,20,"");
m_InputPack = new Fl_Pack(5,135,460,26,"");
m_InputScroll->add(m_InputPack); m_InputScroll->add(m_InputPack);


m_PowerAmp = new Fl_Button(125,277,100,25,"PowerAmp");
m_PowerAmp->labelsize(10);
m_PowerAmp->value(0);
m_PowerAmp->type(1);
m_PowerAmp->callback((Fl_Callback*)cb_PowerAmp);
add(m_PowerAmp);
m_SetupGroup->add(m_InputScroll);


m_UpdateMinMax = new Fl_Button(230,277,100,25,"Update Settings");
m_UpdateMinMax->labelsize(10);
m_UpdateMinMax->callback((Fl_Callback*)cb_MinMax);
add(m_UpdateMinMax);

m_UpdateInputs = new Fl_Button(335,277,100,25,"Refresh");
m_UpdateInputs->labelsize(10);
m_UpdateInputs = new Fl_Button(10,282,120,25,"Refresh");
m_UpdateInputs->labelsize(12);
m_UpdateInputs->value(1); m_UpdateInputs->value(1);
m_UpdateInputs->type(1); m_UpdateInputs->type(1);
add(m_UpdateInputs); add(m_UpdateInputs);


m_OutputGain = new Fl_Knob(440,265,40,40,"Output Gain");
m_OutputGain->color(GUI_COLOUR);
m_OutputGain->type(Fl_Knob::DOTLIN);
m_OutputGain->maximum(2);
m_OutputGain->step(0.001);
m_OutputGain->value(1.0);
m_OutputGain->labelsize(10);
m_OutputGain->callback((Fl_Callback*)cb_Gain);
add(m_OutputGain);
m_SetupGroup->add(m_UpdateInputs);

m_UpdatePortSettings = new Fl_Button(140,282,120,25,"Update Settings");
m_UpdatePortSettings->labelsize(12);
m_UpdatePortSettings->callback((Fl_Callback*)cb_PortSettings);
add(m_UpdatePortSettings);

m_SetupGroup->add(m_UpdatePortSettings);

m_Tab->add(m_ControlGroup);
m_Tab->add(m_SetupGroup);


end(); end();
} }
@@ -127,12 +132,26 @@ LADSPAPluginGUI::~LADSPAPluginGUI(void)
Fl::check(); Fl::check();
} }


void LADSPAPluginGUI::UpdatePortDisplay(int n, float v)
void LADSPAPluginGUI::UpdatePortDisplay(int n, PortValues pv)
{ {
// Need to show that a connection is present
// regardless of Refresh being set
if (pv.Connected) {
// Disable
m_PortDefault[n]->readonly(1);
m_PortDefault[n]->color(FL_BACKGROUND_COLOR);
} else {
// Enable
m_PortDefault[n]->readonly(0);
m_PortDefault[n]->color(FL_BACKGROUND2_COLOR);
}
m_PortDefault[n]->redraw();

// Only update values if Refresh is set
if (!m_UpdateInputs->value()) return; if (!m_UpdateInputs->value()) return;


char temp[256]; char temp[256];
sprintf(temp,"%.4f",v);
sprintf(temp,"%.4f",pv.Value);
m_PortOutput[n]->value(temp); m_PortOutput[n]->value(temp);
} }


@@ -172,7 +191,7 @@ void LADSPAPluginGUI::ClearPortInfo()


m_InputScroll->remove(m_InputPack); m_InputScroll->remove(m_InputPack);
delete m_InputPack; delete m_InputPack;
m_InputPack = new Fl_Pack(x()+5,y()+115,460,20,"");
m_InputPack = new Fl_Pack(x()+5,y()+135,460,26,"");
m_InputScroll->add(m_InputPack); m_InputScroll->add(m_InputPack);


m_PortOutput.clear(); m_PortOutput.clear();
@@ -185,7 +204,7 @@ void LADSPAPluginGUI::ClearPortInfo()


void LADSPAPluginGUI::AddPortInfo(const char *Info) void LADSPAPluginGUI::AddPortInfo(const char *Info)
{ {
Fl_Group* NewGroup = new Fl_Group(0,0,430,18,"");
Fl_Group* NewGroup = new Fl_Group(0,0,430,24,"");
NewGroup->box(FL_FLAT_BOX); NewGroup->box(FL_FLAT_BOX);
m_InputPack->add(NewGroup); m_InputPack->add(NewGroup);
m_PackVec.push_back(NewGroup); m_PackVec.push_back(NewGroup);
@@ -194,6 +213,8 @@ void LADSPAPluginGUI::AddPortInfo(const char *Info)
Fl_Output* NewOutput = new Fl_Output(10,0,60,18,""); Fl_Output* NewOutput = new Fl_Output(10,0,60,18,"");
NewOutput->value(0); NewOutput->value(0);
NewOutput->textsize(10); NewOutput->textsize(10);
NewOutput->color(FL_BACKGROUND_COLOR);
NewOutput->readonly(1);
NewGroup->add(NewOutput); NewGroup->add(NewOutput);
m_PortOutput.push_back(NewOutput); m_PortOutput.push_back(NewOutput);


@@ -219,13 +240,13 @@ void LADSPAPluginGUI::AddPortInfo(const char *Info)
m_PortMax.push_back(NewInput); m_PortMax.push_back(NewInput);


// Clamp // Clamp
Fl_Check_Button* NewCheckButton = new Fl_Check_Button(270,0,10,18,"");
Fl_Check_Button* NewCheckButton = new Fl_Check_Button(265,0,10,18,"");
NewCheckButton->value(0); NewCheckButton->value(0);
NewGroup->add(NewCheckButton); NewGroup->add(NewCheckButton);
m_PortClamp.push_back(NewCheckButton); m_PortClamp.push_back(NewCheckButton);


// Port Name // Port Name
Fl_Box* NewText = new Fl_Box(322,0,10,18,"");
Fl_Box* NewText = new Fl_Box(320,0,10,18,"");
NewText->label(Info); NewText->label(Info);
NewText->labelsize(10); NewText->labelsize(10);
NewText->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); NewText->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
@@ -239,8 +260,6 @@ void LADSPAPluginGUI::AddPortInfo(const char *Info)
void LADSPAPluginGUI::UpdateValues(SpiralPlugin *o) void LADSPAPluginGUI::UpdateValues(SpiralPlugin *o)
{ {
LADSPAPlugin* Plugin = (LADSPAPlugin*)o; LADSPAPlugin* Plugin = (LADSPAPlugin*)o;
m_OutputGain->value(Plugin->GetGain());
m_PowerAmp->value(Plugin->GetAmped());
SetName(Plugin->GetName()); SetName(Plugin->GetName());
SetMaker(Plugin->GetMaker()); SetMaker(Plugin->GetMaker());


@@ -269,15 +288,6 @@ void LADSPAPluginGUI::Update(void)
} }
} }


inline void LADSPAPluginGUI::cb_Gain_i(Fl_Knob* o, void* v)
{
m_GUICH->Set("SetGain",(float)(o->value()));
}
void LADSPAPluginGUI::cb_Gain(Fl_Knob* o, void* v)
{
((LADSPAPluginGUI*)(o->parent()))->cb_Gain_i(o,v);
}

inline void LADSPAPluginGUI::cb_Select_i(Fl_Choice* o) inline void LADSPAPluginGUI::cb_Select_i(Fl_Choice* o)
{ {
if (o->value() == 0) { if (o->value() == 0) {
@@ -317,10 +327,10 @@ inline void LADSPAPluginGUI::cb_Select_i(Fl_Choice* o)
} }
void LADSPAPluginGUI::cb_Select(Fl_Choice* o) void LADSPAPluginGUI::cb_Select(Fl_Choice* o)
{ {
((LADSPAPluginGUI*)(o->parent()))->cb_Select_i(o);
((LADSPAPluginGUI*)(o->parent()->parent()->parent()))->cb_Select_i(o);
} }


inline void LADSPAPluginGUI::cb_MinMax_i(Fl_Button* o, void* v)
inline void LADSPAPluginGUI::cb_PortSettings_i(Fl_Button* o, void* v)
{ {
unsigned long n=0; unsigned long n=0;
for (vector<Fl_Input*>::iterator i=m_PortMin.begin(); for (vector<Fl_Input*>::iterator i=m_PortMin.begin();
@@ -354,16 +364,7 @@ inline void LADSPAPluginGUI::cb_MinMax_i(Fl_Button* o, void* v)
m_GUICH->SetData("SetInputPortSettings", m_InData.InputPortSettings); m_GUICH->SetData("SetInputPortSettings", m_InData.InputPortSettings);
m_GUICH->SetCommand(LADSPAPlugin::SETPORTSETTINGS); m_GUICH->SetCommand(LADSPAPlugin::SETPORTSETTINGS);
} }
void LADSPAPluginGUI::cb_MinMax(Fl_Button* o, void* v)
{
((LADSPAPluginGUI*)(o->parent()))->cb_MinMax_i(o,v);
}

inline void LADSPAPluginGUI::cb_PowerAmp_i(Fl_Button* o, void* v)
{
m_GUICH->Set("SetAmped",(bool)(o->value()));
}
void LADSPAPluginGUI::cb_PowerAmp(Fl_Button* o, void* v)
void LADSPAPluginGUI::cb_PortSettings(Fl_Button* o, void* v)
{ {
((LADSPAPluginGUI*)(o->parent()))->cb_PowerAmp_i(o,v);
((LADSPAPluginGUI*)(o->parent()->parent()->parent()))->cb_PortSettings_i(o,v);
} }

+ 22
- 26
SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h View File

@@ -24,12 +24,13 @@
#include <FL/Fl_Group.H> #include <FL/Fl_Group.H>
#include <FL/Fl_Pack.H> #include <FL/Fl_Pack.H>
#include <FL/Fl_Choice.H> #include <FL/Fl_Choice.H>
#include <FL/Fl_Tabs.H>
#include <FL/Fl_Scroll.H>
#include <FL/Fl_Input.H> #include <FL/Fl_Input.H>
#include <FL/Fl_Button.H> #include <FL/Fl_Button.H>
#include <FL/Fl_Check_Button.H> #include <FL/Fl_Check_Button.H>
#include <FL/Fl_Box.H> #include <FL/Fl_Box.H>
#include <FL/Fl_Output.H> #include <FL/Fl_Output.H>
#include <FL/Fl_Scroll.H>
#include "../Widgets/Fl_Knob.H" #include "../Widgets/Fl_Knob.H"


#include <vector> #include <vector>
@@ -60,26 +61,26 @@ public:


void ClearPortInfo(); void ClearPortInfo();
void AddPortInfo(const char *Info); void AddPortInfo(const char *Info);
void UpdatePortDisplay(int n, float v);
void UpdatePortDisplay(int n, PortValues pv);
void SetPortSettings(unsigned long n, float min, float max, bool clamp, float defolt); void SetPortSettings(unsigned long n, float min, float max, bool clamp, float defolt);
// void SetMinMax(int n, float min, float max, bool clamp);
// void GetMinMax(int n, float &min, float &max, bool &clamp);


private: private:
Fl_Scroll *m_InputScroll;
Fl_Pack *m_InputPack;
Fl_Choice *m_Browser;
Fl_Knob *m_OutputGain;
Fl_Box *m_Name;
Fl_Box *m_Maker;
Fl_Button *m_UpdateInputs;
Fl_Button *m_UpdateMinMax;
Fl_Button *m_PowerAmp;
std::vector<Fl_Output*> m_PortOutput;
std::vector<Fl_Input*> m_PortMin;
std::vector<Fl_Input*> m_PortMax;
std::vector<Fl_Check_Button*> m_PortClamp;
std::vector<Fl_Input*> m_PortDefault;
Fl_Tabs *m_Tab;
Fl_Group *m_ControlGroup;
Fl_Group *m_SetupGroup;
Fl_Scroll *m_InputScroll;
Fl_Pack *m_InputPack;
Fl_Choice *m_Browser;
Fl_Box *m_Name;
Fl_Box *m_Maker;
Fl_Button *m_UpdateInputs;
Fl_Button *m_UpdatePortSettings;
std::vector<Fl_Output*> m_PortOutput;
std::vector<Fl_Input*> m_PortMin;
std::vector<Fl_Input*> m_PortMax;
std::vector<Fl_Check_Button*> m_PortClamp;
std::vector<Fl_Input*> m_PortDefault;
std::vector<Fl_Knob*> m_PortDefaultKnob;


std::vector<LADSPAInfo::PluginEntry> PluginList; std::vector<LADSPAInfo::PluginEntry> PluginList;


@@ -91,24 +92,19 @@ private:


inline void cb_Select_i(Fl_Choice* o); inline void cb_Select_i(Fl_Choice* o);
static void cb_Select(Fl_Choice* o); static void cb_Select(Fl_Choice* o);
inline void cb_Gain_i(Fl_Knob* o, void* v);
static void cb_Gain(Fl_Knob* o, void* v);
inline void cb_MinMax_i(Fl_Button* o, void* v);
static void cb_MinMax(Fl_Button* o, void* v);
inline void cb_PowerAmp_i(Fl_Button* o, void* v);
static void cb_PowerAmp(Fl_Button* o, void* v);
inline void cb_PortSettings_i(Fl_Button* o, void* v);
static void cb_PortSettings(Fl_Button* o, void* v);


struct InChannelData struct InChannelData
{ {
unsigned long PluginIndex; unsigned long PluginIndex;
float Gain;
char Name[256]; char Name[256];
char Maker[256]; char Maker[256];
unsigned long MaxInputPortCount; unsigned long MaxInputPortCount;
unsigned long InputPortCount; unsigned long InputPortCount;
char *InputPortNames; char *InputPortNames;
PortSettings *InputPortSettings; PortSettings *InputPortSettings;
float *InputPortValues;
PortValues *InputPortValues;
}; };


InChannelData m_InData; InChannelData m_InData;


Loading…
Cancel
Save