// generated by Fast Light User Interface Designer (fluid) version 1.0300 #include "ducka_widget.h" START_NAMESPACE_DISTRHO void DuckaUI::cb_headerImage_i(Avtk::Image*, void*) { //system("xdg-open http://www.openavproductions.com/artyfx#ducka"); } void DuckaUI::cb_headerImage(Avtk::Image* o, void* v) { ((DuckaUI*)(o->parent()->user_data()))->cb_headerImage_i(o,v); } void DuckaUI::cb_graph_i(Avtk::SidechainGain* o, void*) { //cutoff = o->value(); //float g = o->getGain(); //gainDial->value( g ); //freq->value( cutoff ); // update dial //writePort(CUTOFF_FREQ, cutoff); //writePort(CUTOFF_GAIN, g); } void DuckaUI::cb_graph(Avtk::SidechainGain* o, void* v) { ((DuckaUI*)(o->parent()->user_data()))->cb_graph_i(o,v); } void DuckaUI::cb_threshold_i(Avtk::Dial* o, void*) { float tmp = o->value(); graph->threshold( tmp ); setHostParameter( 0, tmp ); } void DuckaUI::cb_threshold(Avtk::Dial* o, void* v) { ((DuckaUI*)(o->parent()->user_data()))->cb_threshold_i(o,v); } void DuckaUI::cb_drop_i(Avtk::Dial* o, void*) { float tmp = o->value(); graph->reduce( tmp ); setHostParameter( 1, tmp ); } void DuckaUI::cb_drop(Avtk::Dial* o, void* v) { ((DuckaUI*)(o->parent()->user_data()))->cb_drop_i(o,v); } void DuckaUI::cb_time_i(Avtk::Dial* o, void*) { float tmp = o->value(); graph->release( tmp ); setHostParameter( 2, tmp ); } void DuckaUI::cb_time(Avtk::Dial* o, void* v) { ((DuckaUI*)(o->parent()->user_data()))->cb_time_i(o,v); } /** if the type of filter changes, this function will highlight the right button */ void DuckaUI::update_button(int button) { } DuckaUI::DuckaUI(UI* const uic) : ui(uic) { { Fl_Double_Window* o = window = new Fl_Double_Window(160, 220); window->user_data((void*)(this)); { headerImage = new Avtk::Image(0, 0, 160, 29, "header.png"); headerImage->box(FL_NO_BOX); headerImage->color(FL_BACKGROUND_COLOR); headerImage->selection_color(FL_BACKGROUND_COLOR); headerImage->labeltype(FL_NORMAL_LABEL); headerImage->labelfont(0); headerImage->labelsize(14); headerImage->labelcolor((Fl_Color)20); headerImage->callback((Fl_Callback*)cb_headerImage); headerImage->align(Fl_Align(FL_ALIGN_CENTER)); headerImage->when(FL_WHEN_RELEASE_ALWAYS); headerImage->setPixbuf(header.pixel_data,4); } // Avtk::Image* headerImage { graph = new Avtk::SidechainGain(5, 36, 150, 126, "graph"); graph->box(FL_UP_BOX); graph->color((Fl_Color)179); graph->selection_color(FL_INACTIVE_COLOR); graph->labeltype(FL_NO_LABEL); graph->labelfont(0); graph->labelsize(14); graph->labelcolor(FL_FOREGROUND_COLOR); graph->callback((Fl_Callback*)cb_graph); graph->align(Fl_Align(FL_ALIGN_BOTTOM)); graph->when(FL_WHEN_CHANGED); } // Avtk::SidechainGain* graph { threshold = new Avtk::Dial(10, 169, 37, 37, "Thres"); threshold->box(FL_NO_BOX); threshold->color((Fl_Color)90); threshold->selection_color(FL_INACTIVE_COLOR); threshold->labeltype(FL_NORMAL_LABEL); threshold->labelfont(0); threshold->labelsize(10); threshold->labelcolor(FL_FOREGROUND_COLOR); threshold->callback((Fl_Callback*)cb_threshold); threshold->align(Fl_Align(FL_ALIGN_BOTTOM)); threshold->when(FL_WHEN_CHANGED); } // Avtk::Dial* threshold { drop = new Avtk::Dial(62, 169, 37, 37, "Drop"); drop->box(FL_NO_BOX); drop->color((Fl_Color)90); drop->selection_color(FL_INACTIVE_COLOR); drop->labeltype(FL_NORMAL_LABEL); drop->labelfont(0); drop->labelsize(10); drop->labelcolor(FL_FOREGROUND_COLOR); drop->callback((Fl_Callback*)cb_drop); drop->align(Fl_Align(FL_ALIGN_BOTTOM)); drop->when(FL_WHEN_CHANGED); } // Avtk::Dial* drop { time = new Avtk::Dial(113, 168, 37, 37, "Time"); time->box(FL_NO_BOX); time->color((Fl_Color)90); time->selection_color(FL_INACTIVE_COLOR); time->labeltype(FL_NORMAL_LABEL); time->labelfont(0); time->labelsize(10); time->labelcolor(FL_FOREGROUND_COLOR); time->callback((Fl_Callback*)cb_time); time->align(Fl_Align(FL_ALIGN_BOTTOM)); time->when(FL_WHEN_CHANGED); } // Avtk::Dial* time window->color( fl_rgb_color( 17,17,17) ); close_cb( o, 0 ); window->end(); } // Fl_Double_Window* window } int DuckaUI::getWidth() { return window->w(); } int DuckaUI::getHeight() { return window->h(); } void DuckaUI::setHostParameter(uint32_t index, float value) { //cout << "port " << port << " value " << value << endl; ui->d_setParameterValue(index, value); } void DuckaUI::close_cb(Fl_Widget* o, void*) { if ((Fl::event() == FL_KEYDOWN || Fl::event() == FL_SHORTCUT) && Fl::event_key() == FL_Escape) { return; // ignore ESC } else { o->hide(); } } END_NAMESPACE_DISTRHO