|
- /*
- ZynAddSubFX - a software synthesizer
-
- Fl_Osc_Slider.H - OSC Based Slider
- Copyright (C) 2016 Mark McCurry
-
- This program is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License
- as published by the Free Software Foundation; either version 2
- of the License, or (at your option) any later version.
- */
- #pragma once
- #include <FL/Fl_Slider.H>
- #include "Fl_Osc_Widget.H"
- #include <string>
-
- class Fl_Osc_Slider:public Fl_Slider, public Fl_Osc_Widget
- {
- public:
- Fl_Osc_Slider(int X, int Y, int W, int H, const char *label = NULL);
- // string name,
- // const char *metadata);
-
- virtual ~Fl_Osc_Slider(void);
- void OSC_value(int) override;
- void OSC_value(float) override;
- void OSC_value(char) override;
- void init(std::string, char type = 'f');
-
- //Refetch parameter information
- void update(void);
- void callback(Fl_Callback *cb, void *p = NULL);
-
- //MIDI Learn
- int handle(int ev, int X, int Y, int W, int H);
- int handle(int ev);
-
- virtual void cb(void);
- static void _cb(Fl_Widget *w, void *);
- float reset_value;
- protected:
- char osc_type;
- std::pair<Fl_Callback*, void*> cb_data;
-
- private:
- float old_value;
- int mod_state;
- int slow_state;
- int start_pos;
- bool just_pushed;
- float denominator;
- };
|