DPF Plugin examples
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

154 lines
4.8KB

  1. // generated by Fast Light User Interface Designer (fluid) version 1.0300
  2. #include "ducka_widget.h"
  3. START_NAMESPACE_DISTRHO
  4. void DuckaUI::cb_headerImage_i(Avtk::Image*, void*) {
  5. //system("xdg-open http://www.openavproductions.com/artyfx#ducka");
  6. }
  7. void DuckaUI::cb_headerImage(Avtk::Image* o, void* v) {
  8. ((DuckaUI*)(o->parent()->user_data()))->cb_headerImage_i(o,v);
  9. }
  10. void DuckaUI::cb_graph_i(Avtk::SidechainGain* o, void*) {
  11. //cutoff = o->value();
  12. //float g = o->getGain();
  13. //gainDial->value( g );
  14. //freq->value( cutoff ); // update dial
  15. //writePort(CUTOFF_FREQ, cutoff);
  16. //writePort(CUTOFF_GAIN, g);
  17. }
  18. void DuckaUI::cb_graph(Avtk::SidechainGain* o, void* v) {
  19. ((DuckaUI*)(o->parent()->user_data()))->cb_graph_i(o,v);
  20. }
  21. void DuckaUI::cb_threshold_i(Avtk::Dial* o, void*) {
  22. float tmp = o->value();
  23. graph->threshold( tmp );
  24. setHostParameter( 0, tmp );
  25. }
  26. void DuckaUI::cb_threshold(Avtk::Dial* o, void* v) {
  27. ((DuckaUI*)(o->parent()->user_data()))->cb_threshold_i(o,v);
  28. }
  29. void DuckaUI::cb_drop_i(Avtk::Dial* o, void*) {
  30. float tmp = o->value();
  31. graph->reduce( tmp );
  32. setHostParameter( 1, tmp );
  33. }
  34. void DuckaUI::cb_drop(Avtk::Dial* o, void* v) {
  35. ((DuckaUI*)(o->parent()->user_data()))->cb_drop_i(o,v);
  36. }
  37. void DuckaUI::cb_time_i(Avtk::Dial* o, void*) {
  38. float tmp = o->value();
  39. graph->release( tmp );
  40. setHostParameter( 2, tmp );
  41. }
  42. void DuckaUI::cb_time(Avtk::Dial* o, void* v) {
  43. ((DuckaUI*)(o->parent()->user_data()))->cb_time_i(o,v);
  44. }
  45. /**
  46. if the type of filter changes, this function will highlight the right button
  47. */
  48. void DuckaUI::update_button(int button) {
  49. }
  50. DuckaUI::DuckaUI(UI* const uic) : ui(uic) {
  51. { Fl_Double_Window* o = window = new Fl_Double_Window(160, 220);
  52. window->user_data((void*)(this));
  53. { headerImage = new Avtk::Image(0, 0, 160, 29, "header.png");
  54. headerImage->box(FL_NO_BOX);
  55. headerImage->color(FL_BACKGROUND_COLOR);
  56. headerImage->selection_color(FL_BACKGROUND_COLOR);
  57. headerImage->labeltype(FL_NORMAL_LABEL);
  58. headerImage->labelfont(0);
  59. headerImage->labelsize(14);
  60. headerImage->labelcolor((Fl_Color)20);
  61. headerImage->callback((Fl_Callback*)cb_headerImage);
  62. headerImage->align(Fl_Align(FL_ALIGN_CENTER));
  63. headerImage->when(FL_WHEN_RELEASE_ALWAYS);
  64. headerImage->setPixbuf(header.pixel_data,4);
  65. } // Avtk::Image* headerImage
  66. { graph = new Avtk::SidechainGain(5, 36, 150, 126, "graph");
  67. graph->box(FL_UP_BOX);
  68. graph->color((Fl_Color)179);
  69. graph->selection_color(FL_INACTIVE_COLOR);
  70. graph->labeltype(FL_NO_LABEL);
  71. graph->labelfont(0);
  72. graph->labelsize(14);
  73. graph->labelcolor(FL_FOREGROUND_COLOR);
  74. graph->callback((Fl_Callback*)cb_graph);
  75. graph->align(Fl_Align(FL_ALIGN_BOTTOM));
  76. graph->when(FL_WHEN_CHANGED);
  77. } // Avtk::SidechainGain* graph
  78. { threshold = new Avtk::Dial(10, 169, 37, 37, "Thres");
  79. threshold->box(FL_NO_BOX);
  80. threshold->color((Fl_Color)90);
  81. threshold->selection_color(FL_INACTIVE_COLOR);
  82. threshold->labeltype(FL_NORMAL_LABEL);
  83. threshold->labelfont(0);
  84. threshold->labelsize(10);
  85. threshold->labelcolor(FL_FOREGROUND_COLOR);
  86. threshold->callback((Fl_Callback*)cb_threshold);
  87. threshold->align(Fl_Align(FL_ALIGN_BOTTOM));
  88. threshold->when(FL_WHEN_CHANGED);
  89. } // Avtk::Dial* threshold
  90. { drop = new Avtk::Dial(62, 169, 37, 37, "Drop");
  91. drop->box(FL_NO_BOX);
  92. drop->color((Fl_Color)90);
  93. drop->selection_color(FL_INACTIVE_COLOR);
  94. drop->labeltype(FL_NORMAL_LABEL);
  95. drop->labelfont(0);
  96. drop->labelsize(10);
  97. drop->labelcolor(FL_FOREGROUND_COLOR);
  98. drop->callback((Fl_Callback*)cb_drop);
  99. drop->align(Fl_Align(FL_ALIGN_BOTTOM));
  100. drop->when(FL_WHEN_CHANGED);
  101. } // Avtk::Dial* drop
  102. { time = new Avtk::Dial(113, 168, 37, 37, "Time");
  103. time->box(FL_NO_BOX);
  104. time->color((Fl_Color)90);
  105. time->selection_color(FL_INACTIVE_COLOR);
  106. time->labeltype(FL_NORMAL_LABEL);
  107. time->labelfont(0);
  108. time->labelsize(10);
  109. time->labelcolor(FL_FOREGROUND_COLOR);
  110. time->callback((Fl_Callback*)cb_time);
  111. time->align(Fl_Align(FL_ALIGN_BOTTOM));
  112. time->when(FL_WHEN_CHANGED);
  113. } // Avtk::Dial* time
  114. window->color( fl_rgb_color( 17,17,17) );
  115. close_cb( o, 0 );
  116. window->end();
  117. } // Fl_Double_Window* window
  118. }
  119. int DuckaUI::getWidth() {
  120. return window->w();
  121. }
  122. int DuckaUI::getHeight() {
  123. return window->h();
  124. }
  125. void DuckaUI::setHostParameter(uint32_t index, float value) {
  126. //cout << "port " << port << " value " << value << endl;
  127. ui->d_setParameterValue(index, value);
  128. }
  129. void DuckaUI::close_cb(Fl_Widget* o, void*) {
  130. if ((Fl::event() == FL_KEYDOWN || Fl::event() == FL_SHORTCUT) && Fl::event_key() == FL_Escape)
  131. {
  132. return; // ignore ESC
  133. }
  134. else
  135. {
  136. o->hide();
  137. }
  138. }
  139. END_NAMESPACE_DISTRHO