Browse Source

Next phase of MousePlugin development

master
edgeeffect 21 years ago
parent
commit
3ea7426070
7 changed files with 92 additions and 58 deletions
  1. +7
    -0
      SpiralSound/Plugins/MousePlugin/Makefile.in
  2. +16
    -10
      SpiralSound/Plugins/MousePlugin/MousePlugin.C
  3. +4
    -2
      SpiralSound/Plugins/MousePlugin/MousePlugin.h
  4. +39
    -11
      SpiralSound/Plugins/MousePlugin/MousePluginGUI.C
  5. +7
    -11
      SpiralSound/Plugins/MousePlugin/MousePluginGUI.h
  6. +14
    -19
      SpiralSound/Plugins/MousePlugin/scratch.h
  7. +5
    -5
      SpiralSynthModular.C

+ 7
- 0
SpiralSound/Plugins/MousePlugin/Makefile.in View File

@@ -45,6 +45,7 @@ HEADERS = MousePlugin.h \
../../ChannelHandler.h \
../../Sample.h \
scratch.h \
../Widgets/Fl_LED_Button.H \
../../../GUI/Widgets/SpiralGUI.H
SOURCES = MousePlugin.C \
MousePluginGUI.C \
@@ -53,6 +54,7 @@ SOURCES = MousePlugin.C \
../../ChannelHandler.C \
../../Sample.C \
scratch.C \
../Widgets/Fl_LED_Button.cxx \
../../../GUI/Widgets/SpiralGUI.C
OBJECTS = MousePlugin.o \
MousePluginGUI.o \
@@ -61,6 +63,7 @@ OBJECTS = MousePlugin.o \
../../ChannelHandler.o \
../../Sample.o \
scratch.o \
../Widgets/Fl_LED_Button.o \
../../../GUI/Widgets/SpiralGUI.o
INTERFACES =
UICDECLS =
@@ -128,6 +131,9 @@ install:
../../ChannelHandler.h \
../../../GUI/Widgets/SpiralGUI.H

../Widgets/Fl_LED_Button.o: ../Widgets/Fl_LED_Button.cxx \
../Widgets/Fl_LED_Button.H

../../../GUI/Widgets/SpiralGUI.o: ../../../GUI/Widgets/SpiralGUI.C \
../../../GUI/Widgets/SpiralGUI.H

@@ -148,6 +154,7 @@ MousePluginGUI.o: MousePluginGUI.C \
MousePlugin.h \
../SpiralPluginGUI.h \
../SpiralPlugin.h \
../Widgets/Fl_LED_Button.H \
../../../GUI/Widgets/SpiralGUI.H \
../../Sample.h \
scratch.h


+ 16
- 10
SpiralSound/Plugins/MousePlugin/MousePlugin.C View File

@@ -18,7 +18,7 @@
*/


#define SCRATCH_DEVICE "/dev/ttyS1"
#define SCRATCH_DEVICE "/dev/ttyS0"

#include "MousePlugin.h"
#include "MousePluginGUI.h"
@@ -38,37 +38,34 @@ string SpiralPlugin_GetGroupName() { return "InputOutput"; }

///////////////////////////////////////////////////////

//static const HostInfo* host;

MousePluginSingleton* MousePluginSingleton::m_Singleton = NULL;

int MousePlugin::m_RefCount=0;

///////////////////////////////////////////////////////

MousePluginSingleton::MousePluginSingleton() {
scr = new scratch(SCRATCH_DEVICE); // create scratch object
}

MousePluginSingleton::~MousePluginSingleton() {
if (scr!=NULL) {
delete scr;
}
if (scr!=NULL) delete scr;
}

///////////////////////////////////////////////////////

MousePlugin::MousePlugin():
m_Port ('0'),
m_Data (0.0)
{
m_RefCount++;
m_PluginInfo.Name = "Mouse";
m_PluginInfo.Width = 70;
m_PluginInfo.Height = 125;
m_PluginInfo.Width = 200;
m_PluginInfo.Height = 400;
m_PluginInfo.NumInputs = 1;
m_PluginInfo.NumOutputs = 1;
m_PluginInfo.PortTips.push_back ("Trigger");
m_PluginInfo.PortTips.push_back ("Output");
m_AudioCH->Register ("Port", &m_Port);
m_Version = 1;
}

MousePlugin::~MousePlugin() {
@@ -88,6 +85,15 @@ SpiralGUIType *MousePlugin::CreateGUI() {
return new MousePluginGUI (m_PluginInfo.Width, m_PluginInfo.Height, this, m_AudioCH, m_HostInfo);
}

void MousePlugin::ExecuteCommands () {
if (m_AudioCH->IsCommandWaiting ()) {
switch (m_AudioCH->GetCommand()) {
case (SETPORT) : // do something
break;
}
}
}

void MousePlugin::Execute() {
float trigger = 1.0;
if (GetOutputBuf(0)) {


+ 4
- 2
SpiralSound/Plugins/MousePlugin/MousePlugin.h View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/

#ifndef MousePlugin_H
#define MousePlugin_H
@@ -51,11 +51,13 @@ class MousePlugin : public SpiralPlugin {
virtual PluginInfo& Initialise (const HostInfo *Host);
virtual SpiralGUIType* CreateGUI();
virtual void Execute();
virtual void ExecuteCommands();
virtual void StreamOut (ostream &s);
virtual void StreamIn (istream &s);
//float getData() { return data; }
enum GUICommands {NONE, SETPORT};
private:
static int m_RefCount;
char m_Port;
float m_Data;
friend istream &operator>> (istream &s, MousePlugin &o);
friend ostream &operator<< (ostream &s, MousePlugin &o);


+ 39
- 11
SpiralSound/Plugins/MousePlugin/MousePluginGUI.C View File

@@ -21,24 +21,18 @@
#include <FL/fl_draw.h>
#include <FL/fl_draw.H>

static const int GUI_COLOUR = 154;
static const int GUIBG_COLOUR = 144;
static const int GUIBG2_COLOUR = 145;

ScratchWidget::ScratchWidget (int x, int y, int w, int h, const char *l, int BUFSIZE) :
ScratchWidget::ScratchWidget (int x, int y, int w, int h, const char *l) :
Fl_Widget (x, y, w, h, l),
m_Data (0.0),
m_Channels (1),
m_Bufsize (BUFSIZE)
m_Data (0.0)
{
}

void ScratchWidget::draw() {
fl_color (GUIBG_COLOUR);
fl_color (color ());
fl_rectf (x(), y(), w(), h());
fl_push_clip (x(), y(), w(), h());
int val = (int)(((m_Data * -1) + 1) * (h() / 2.0));
fl_color (FL_WHITE);
fl_color (selection_color ());
fl_rectf (x(), y() + val, w(), h());
fl_pop_clip();
}
@@ -48,7 +42,23 @@ void ScratchWidget::draw() {
MousePluginGUI::MousePluginGUI (int w, int h, MousePlugin *o, ChannelHandler *ch, const HostInfo *Info) :
SpiralPluginGUI (w, h, o, ch)
{
m_Scope = new ScratchWidget (5, 20, 60, 100, "Scratch", Info->BUFSIZE);
m_Port0 = new Fl_LED_Button (0, 10, 23, 23);
m_Port0->type (FL_RADIO_BUTTON);
m_Port0->labelsize (10);
m_Port0->label ("ttyS0");
m_Port0->set();
m_Port0->callback ((Fl_Callback*)cb_Port0);

m_Port1 = new Fl_LED_Button (50, 10, 23, 23);
m_Port1->type (FL_RADIO_BUTTON);
m_Port1->labelsize (10);
m_Port1->label ("ttyS1");
m_Port1->callback ((Fl_Callback*)cb_Port1);

m_Scope = new ScratchWidget (5, 40, 60, 100, "Scratch");
m_Scope->color(Info->SCOPE_BG_COLOUR);
m_Scope->selection_color(Info->SCOPE_FG_COLOUR);

end();
}

@@ -61,6 +71,24 @@ void MousePluginGUI::Update () {
void MousePluginGUI::UpdateValues (SpiralPlugin* o) {
}

inline void MousePluginGUI::cb_Port0_i (Fl_LED_Button* o, void* v) {
m_GUICH->Set("Port", '0');
m_GUICH->SetCommand (MousePlugin::SETPORT);
}

void MousePluginGUI::cb_Port0 (Fl_LED_Button* o, void* v) {
((MousePluginGUI*)(o->parent ()))->cb_Port0 (o, v);
}

inline void MousePluginGUI::cb_Port1_i (Fl_LED_Button* o, void* v) {
m_GUICH->Set("Port", '1');
m_GUICH->SetCommand (MousePlugin::SETPORT);
}

void MousePluginGUI::cb_Port1 (Fl_LED_Button* o, void* v) {
((MousePluginGUI*)(o->parent ()))->cb_Port1 (o, v);
}

const string MousePluginGUI::GetHelpText (const string &loc) {
return string("")
+ "\n"


+ 7
- 11
SpiralSound/Plugins/MousePlugin/MousePluginGUI.h View File

@@ -23,18 +23,13 @@
#include <FL/Fl.H>
#include "MousePlugin.h"
#include "../SpiralPluginGUI.h"
#include "../Widgets/Fl_LED_Button.H"

class ScratchWidget : public Fl_Widget {
public:
ScratchWidget (int x, int y, int w, int h, const char *l, int BUFSIZE);
ScratchWidget (int x, int y, int w, int h, const char *l);
void draw();
void SetNumChannels (int s) { m_Channels = s; }
float m_Data;
int m_Channels;
private:
int m_GUIColour;
int m_GUIBGColour;
int m_Bufsize;
};

class MousePluginGUI : public SpiralPluginGUI {
@@ -45,11 +40,12 @@ class MousePluginGUI : public SpiralPluginGUI {
protected:
const string GetHelpText (const string &loc);
private:
// virtual void draw();
// void Display(float data);
// virtual SpiralPlugin* GetPlugin() { return m_Plugin; }
// MousePlugin *m_Plugin;
ScratchWidget *m_Scope;
Fl_LED_Button *m_Port0, *m_Port1;
inline void cb_Port0_i (Fl_LED_Button *o, void *v);
static void cb_Port0 (Fl_LED_Button *o, void *v);
inline void cb_Port1_i (Fl_LED_Button *o, void *v);
static void cb_Port1 (Fl_LED_Button *o, void *v);
};

#endif

+ 14
- 19
SpiralSound/Plugins/MousePlugin/scratch.h View File

@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
*/
#ifndef SCRATCH_H
#define SCRATCH_H

@@ -29,26 +29,21 @@
#include <iostream.h>
#include <pthread.h>

class scratch
{
public:
scratch(char *dev);
~scratch();
void setData(char c);
char getData();
void stop();
private:
pthread_t scratch_thread;
pthread_mutex_t mutex;
char data;
class scratch {
public:
scratch (char *dev);
~scratch();
void setData(char c);
char getData();
void stop();
private:
pthread_t scratch_thread;
pthread_mutex_t mutex;
char data;
};

void openSerialPort(char *dev);
void openSerialPort (char *dev);
void closeSerialPort();
void listen(scratch *scr);
void listen (scratch *scr);

#endif

+ 5
- 5
SpiralSynthModular.C View File

@@ -1402,7 +1402,7 @@ inline void SynthModular::cb_Connection_i(Fl_Canvas* o, void* v)
}
if (!di->second->m_Device->SetInput(Wire->InputPort,(const Sample*)sample))
{
{
char num[32];
sprintf(num,"%d,%d",Wire->InputID,Wire->InputPort);
SpiralInfo::Alert("Warning: Connection problem - can't find source input "+string(num));
@@ -1455,12 +1455,12 @@ void SynthModular::LoadPatch(const char *fn)
{
ifstream in(fn);

if (in)
{
if (in)
{
fstream inf;
inf.open(fn, std::ios::in);
m_FilePath=fn;
m_FilePath=fn;

ClearUp();
inf>>*this;


Loading…
Cancel
Save