LMMS
Loading...
Searching...
No Matches
Fl_Osc_Widget.cpp
Go to the documentation of this file.
1/*
2 ZynAddSubFX - a software synthesizer
3
4 Fl_Osc_Widget.cpp - OSC Widget Superclass
5 Copyright (C) 2016 Mark McCurry
6
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License
9 as published by the Free Software Foundation; either version 2
10 of the License, or (at your option) any later version.
11*/
12#include "Fl_Osc_Widget.H"
13#include "Fl_Osc_Pane.H"
14#include <rtosc/rtosc.h>
15
17:loc(), osc(NULL)
18{}
19
21:loc(loc_), osc(osc_)
22{
23 assert(osc);
24}
26{
28 if(auto *pane = fetch_osc_pane(self)) {
29 osc = pane->osc;
30 loc = pane->loc();
31 }
36{
37 if(osc)
38 osc->removeLink(this);
39};
45void Fl_Osc_Widget::OSC_value(unsigned,void*) {}
46void Fl_Osc_Widget::OSC_value(const char *) {}
47
48//labeled forwarding methods
49void Fl_Osc_Widget::OSC_value(float x, const char *) {OSC_value(x);}
50void Fl_Osc_Widget::OSC_value(bool x, const char *) {OSC_value(x);}
51void Fl_Osc_Widget::OSC_value(int x, const char *) {OSC_value(x);}
52void Fl_Osc_Widget::OSC_value(char x, const char *) {OSC_value(x);}
53void Fl_Osc_Widget::OSC_value(unsigned x, void *v, const char *) {OSC_value(x,v);}
54void Fl_Osc_Widget::OSC_value(const char *x, const char *) {OSC_value(x);}
55
56void Fl_Osc_Widget::OSC_raw(const char *)
57{}
58
59
60void Fl_Osc_Widget::oscWrite(std::string path, const char *args, ...)
61{
62 char buffer[1024];
63 //puts("writing OSC");
64 //printf("Path = '%s'\n", path.c_str());
65
66 va_list va;
67 va_start(va, args);
68
69 if(rtosc_vmessage(buffer, 1024, (loc+path).c_str(), args, va))
70 osc->writeRaw(buffer);
71 else
72 puts("Dangerous Event ommision");
73
74 va_end(va);
76 //if(!strcmp(args, "c") || !strcmp(args, "i"))
77 // printf("Args = ['%d']\n", rtosc_argument(buffer, 0).i);
78 //if(!strcmp(args, "f"))
79 // printf("Args = ['%f']\n", rtosc_argument(buffer, 0).f);
80 //if(!strcmp(args, "T"))
81 // printf("Args = [True]\n");
82 //if(!strcmp(args, "F"))
83 // printf("Args = [False]\n");
84}
85
86void Fl_Osc_Widget::oscWrite(std::string path)
87{
88 osc->requestValue(loc+path);
89}
90
91void Fl_Osc_Widget::oscRegister(const char *path)
92{
93 osc->createLink(loc+path, this);
94 osc->requestValue(loc+path);
95}
96
98{
99 if(*((loc+ext).rbegin()) != '/' && osc)
100 osc->requestValue(loc+ext);
101}
102
104{
105 if(!w)
106 return NULL;
107
108 Fl_Osc_Pane *pane = dynamic_cast<Fl_Osc_Pane*>(w->parent());
109 if(pane)
110 return pane;
111 return fetch_osc_pane(w->parent());
112}
113
114
115void Fl_Osc_Widget::rebase(std::string new_base)
116{
117 osc->renameLink(loc+ext, new_base+ext, this);
118 loc = new_base;
119 osc->requestValue(loc+ext);
120}
121
122void Fl_Osc_Widget::oscMove(std::string new_ext)
123{
124 osc->renameLink(loc+ext, loc+new_ext, this);
125 ext = new_ext;
126 osc->requestValue(loc+ext);
127}
128
129void Fl_Osc_Widget::oscMove(std::string old_loc, std::string new_loc)
130{
131 osc->renameLink(old_loc, new_loc, this);
132 osc->requestValue(new_loc);
133}
#define NULL
Definition CarlaBridgeFormat.cpp:30
assert(0)
Definition Fl_Osc_Interface.h:56
Definition Fl_Osc_Pane.H:20
virtual void OSC_raw(const char *)
Definition Fl_Osc_Widget.cpp:56
Fl_Osc_Interface * osc
Definition Fl_Osc_Widget.H:65
std::string ext
Definition Fl_Osc_Widget.H:64
Fl_Osc_Widget(void)
Definition Fl_Osc_Widget.cpp:16
std::string loc
Definition Fl_Osc_Widget.H:62
void oscMove(std::string new_ext)
Definition Fl_Osc_Widget.cpp:122
virtual ~Fl_Osc_Widget(void)
Definition Fl_Osc_Widget.cpp:35
virtual void rebase(std::string new_base)
Definition Fl_Osc_Widget.cpp:115
void oscRegister(const char *path)
Definition Fl_Osc_Widget.cpp:91
void oscWrite(std::string path, const char *args,...)
Definition Fl_Osc_Widget.cpp:60
virtual void OSC_value(float)
Definition Fl_Osc_Widget.cpp:41
virtual void update(void)
Definition Fl_Osc_Widget.cpp:97
class Fl_Osc_Pane * fetch_osc_pane(Fl_Widget *w)
Definition Fl_Osc_Widget.cpp:103
UINT_D64 w
Definition inflate.c:942
unsigned v[N_MAX]
Definition inflate.c:1584
unsigned x[BMAX+1]
Definition inflate.c:1586
size_t rtosc_vmessage(char *buffer, size_t len, const char *address, const char *arguments, va_list ap)
Definition rtosc.c:497