LMMS
Loading...
Searching...
No Matches
Fl_Osc_Check.cpp
Go to the documentation of this file.
1/*
2 ZynAddSubFX - a software synthesizer
3
4 Fl_Osc_Check.cpp - OSC Powered Check Button
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_Check.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
21Fl_Osc_Check::Fl_Osc_Check(int X, int Y, int W, int H, const char *label)
22 :Fl_Check_Button(X,Y,W,H,label), Fl_Osc_Widget(this), is_osc(false), cb_data(NULL, NULL)
23{
24 Fl_Check_Button::callback(Fl_Osc_Check::_cb);
25}
26
29
31{
32 value(v);
33
34 is_osc = true;
35 if(cb_data.first)
36 cb_data.first(this, cb_data.second);
37 is_osc = false;
38}
39
40void Fl_Osc_Check::init(std::string path, char type)
41{
42 this->ext = path;
43 this->type = type;
44 oscRegister(path.c_str());
45}
46
48{
49 //Order is significant for takeback style callbacks
50 if(cb_data.first)
51 cb_data.first(this, cb_data.second);
52
53
54 if(type == 'T')
55 oscWrite(ext, value() ? "T" : "F");
56 else {
57 if(type=='c')
58 fprintf(stderr, "invalid `c' from checkbox %s%s, using `i'\n", loc.c_str(), ext.c_str());
59 oscWrite(ext, "i", value());
60 }
61}
62
63void Fl_Osc_Check::callback(Fl_Callback *cb, void *p)
64{
65 cb_data.first = cb;
66 cb_data.second = p;
67}
68
69void Fl_Osc_Check::_cb(Fl_Widget *w, void *)
70{
71 static_cast<Fl_Osc_Check*>(w)->cb();
72}
#define NULL
Definition CarlaBridgeFormat.cpp:30
virtual void OSC_value(bool) override
Definition Fl_Osc_Check.cpp:30
Fl_Osc_Check(int X, int Y, int W, int H, const char *label=NULL)
Definition Fl_Osc_Check.cpp:21
std::pair< Fl_Callback *, void * > cb_data
Definition Fl_Osc_Check.H:37
int is_osc
Definition Fl_Osc_Check.H:35
char type
Definition Fl_Osc_Check.H:38
void cb(void)
Definition Fl_Osc_Check.cpp:47
virtual ~Fl_Osc_Check(void)
Definition Fl_Osc_Check.cpp:27
static void _cb(Fl_Widget *w, void *)
Definition Fl_Osc_Check.cpp:69
void init(std::string loc, char type='T')
Definition Fl_Osc_Check.cpp:40
void callback(Fl_Callback *cb, void *p=NULL)
Definition Fl_Osc_Check.cpp:63
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 oscRegister(const char *path)
Definition Fl_Osc_Widget.cpp:91
void oscWrite(std::string path, const char *args,...)
Definition Fl_Osc_Widget.cpp:60
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
#define false
Definition ordinals.h:83
uch * p
Definition crypt.c:594