LMMS
Loading...
Searching...
No Matches
Fl_Osc_Choice.cpp
Go to the documentation of this file.
1/*
2 ZynAddSubFX - a software synthesizer
3
4 Fl_Osc_Choice.cpp - OSC Powered Dropdown Choice
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_Choice.H"
13#include "Fl_Osc_Interface.h"
14#include "Fl_Osc_Pane.H"
15#include <cstdlib>
16#include <cstring>
17#include <cmath>
18#include <cassert>
19#include <sstream>
20
21static void callback_fn_choice(Fl_Widget *w, void *)
22{
23 ((Fl_Osc_Choice*)w)->cb();
24}
25
26Fl_Osc_Choice::Fl_Osc_Choice(int X, int Y, int W, int H, const char *label)
27 :Fl_Choice(X,Y,W,H, label), Fl_Osc_Widget(this), cb_data(NULL, NULL)
28{
29 min = 0;
30 Fl_Choice::callback(callback_fn_choice, NULL);
31}
32
33void Fl_Osc_Choice::init(std::string path_, int base)
34{
35 min = base;
36 ext = path_;
37 Fl_Osc_Pane *pane = fetch_osc_pane(this);
38 assert(pane);
39 assert(pane->osc);
40 osc = pane->osc;
41 oscRegister(path_.c_str());
42};
43
46
47void Fl_Osc_Choice::callback(Fl_Callback *cb, void *p)
48{
49 cb_data.first = cb;
50 cb_data.second = p;
51}
52
54{
55 if(v-min == value())
56 return;
57 value(v-min);
58 if(cb_data.first)
59 cb_data.first(this, cb_data.second);
60}
61
63{
64 OSC_value((int)v);
65}
66
68{
69 assert(osc);
70 oscWrite(ext, "i", value()+min);
71 if(cb_data.first)
72 cb_data.first(this, cb_data.second);
73}
74
76{
77 assert(osc);
79}
80
#define NULL
Definition CarlaBridgeFormat.cpp:30
static void callback_fn_choice(Fl_Widget *w, void *)
Definition Fl_Osc_Choice.cpp:21
assert(0)
Definition Fl_Osc_Choice.H:18
virtual ~Fl_Osc_Choice(void)
Definition Fl_Osc_Choice.cpp:44
std::pair< Fl_Callback *, void * > cb_data
Definition Fl_Osc_Choice.H:39
void update(void)
Definition Fl_Osc_Choice.cpp:75
void callback(Fl_Callback *cb, void *p=NULL)
Definition Fl_Osc_Choice.cpp:47
void init(std::string path, int base=0)
Definition Fl_Osc_Choice.cpp:33
virtual void cb(void)
Definition Fl_Osc_Choice.cpp:67
int min
Definition Fl_Osc_Choice.H:37
void OSC_value(int)
Definition Fl_Osc_Choice.cpp:53
Fl_Osc_Choice(int X, int Y, int W, int H, const char *label=NULL)
Definition Fl_Osc_Choice.cpp:26
Definition Fl_Osc_Pane.H:20
class Fl_Osc_Interface * osc
Definition Fl_Osc_Pane.H:23
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
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
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
static PuglViewHint int value
Definition pugl.h:1708
#define X(str)
Definition juce_LV2Common.h:197
uch * p
Definition crypt.c:594