/* 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 #include "Fl_Osc_Widget.H" #include 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 cb_data; private: float old_value; int mod_state; int slow_state; int start_pos; bool just_pushed; float denominator; };