// generated by Fast Light User Interface Designer (fluid) version 1.0107

#include "scrub_browser.h"
#include <FL/fl_draw.H>
#include <FL/Fl_Tooltip.H>

void UserInterface::cb_scrub_view_i(ScrubView*, void*) {
  filename_output->value(scrub_view->current_file());
clip_scrub_slider->value(scrub_view->position_in_clip());
}
void UserInterface::cb_scrub_view(ScrubView* o, void* v) {
  ((UserInterface*)(o->parent()->user_data()))->cb_scrub_view_i(o,v);
}

void UserInterface::cb_gamma_slider_i(Fl_Slider* o, void*) {
  gamma_value->value( o->value() );
scrub_view->m_fBrowser.gamma( o->value() );
scrub_view->redraw();
}
void UserInterface::cb_gamma_slider(Fl_Slider* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->user_data()))->cb_gamma_slider_i(o,v);
}

void UserInterface::cb_saturation_slider_i(Fl_Slider* o, void*) {
  saturation_value->value( o->value() );
scrub_view->m_fBrowser.saturation( o->value() );
scrub_view->redraw();
}
void UserInterface::cb_saturation_slider(Fl_Slider* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->user_data()))->cb_saturation_slider_i(o,v);
}

void UserInterface::cb_brightness_slider_i(Fl_Slider* o, void*) {
  brightness_value->value( o->value() );
scrub_view->m_fBrowser.brightness( o->value() );
scrub_view->redraw();
}
void UserInterface::cb_brightness_slider(Fl_Slider* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->user_data()))->cb_brightness_slider_i(o,v);
}

void UserInterface::cb_gamma_value_i(Fl_Value_Input* o, void*) {
  gamma_slider->value( o->value() );
scrub_view->m_fBrowser.gamma( o->value() );
scrub_view->redraw();
}
void UserInterface::cb_gamma_value(Fl_Value_Input* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->user_data()))->cb_gamma_value_i(o,v);
}

void UserInterface::cb_saturation_value_i(Fl_Value_Input* o, void*) {
  saturation_slider->value( o->value() );
scrub_view->m_fBrowser.saturation( o->value() );
scrub_view->redraw();
}
void UserInterface::cb_saturation_value(Fl_Value_Input* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->user_data()))->cb_saturation_value_i(o,v);
}

void UserInterface::cb_brightness_value_i(Fl_Value_Input* o, void*) {
  brightness_slider->value( o->value() );
scrub_view->m_fBrowser.brightness( o->value() );
scrub_view->redraw();
}
void UserInterface::cb_brightness_value(Fl_Value_Input* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->user_data()))->cb_brightness_value_i(o,v);
}

void UserInterface::cb_Scan_i(Fl_Button*, void*) {
  scrub_view->clear();
scrub_view->addFolder( file_browser->path() );
scrub_slider->bounds( 0.0, (double)( scrub_view->getLength() ) );
}
void UserInterface::cb_Scan(Fl_Button* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->user_data()))->cb_Scan_i(o,v);
}

void UserInterface::cb_file_browser_i(nle::FileBrowser* o, void*) {
  nle::FileBrowser* fb = (nle::FileBrowser*)o;
fb->load_rel();
}
void UserInterface::cb_file_browser(nle::FileBrowser* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->user_data()))->cb_file_browser_i(o,v);
}

void UserInterface::cb_scrub_slider_i(Fl_Slider* o, void*) {
  scrub_view->seek_position( (int64_t)o->value() );
scrub_view->redraw();
}
void UserInterface::cb_scrub_slider(Fl_Slider* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_scrub_slider_i(o,v);
}

void UserInterface::cb_clip_scrub_slider_i(Fl_Slider* o, void*) {
  scrub_view->scrub_clip_position( o->value() );
scrub_view->redraw();
}
void UserInterface::cb_clip_scrub_slider(Fl_Slider* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->parent()->parent()->parent()->user_data()))->cb_clip_scrub_slider_i(o,v);
}

void UserInterface::cb__i(Fl_Button*, void*) {
  scrub_view->play();
}
void UserInterface::cb_(Fl_Button* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->parent()->parent()->user_data()))->cb__i(o,v);
}

void UserInterface::cb_square_i(Fl_Button*, void*) {
  scrub_view->stop();
}
void UserInterface::cb_square(Fl_Button* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->parent()->parent()->user_data()))->cb_square_i(o,v);
}

void UserInterface::cb_color_lift_i(ColorWheel*, void*) {
  scrub_view->lift( color_lift->m_fcolor[0], color_lift->m_fcolor[1], color_lift->m_fcolor[2] );
scrub_view->redraw();
}
void UserInterface::cb_color_lift(ColorWheel* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->parent()->user_data()))->cb_color_lift_i(o,v);
}

void UserInterface::cb_color_gain_i(ColorWheel*, void*) {
  scrub_view->gain( color_gain->m_fcolor[0], color_gain->m_fcolor[1], color_gain->m_fcolor[2] );
scrub_view->redraw();
}
void UserInterface::cb_color_gain(ColorWheel* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->parent()->user_data()))->cb_color_gain_i(o,v);
}

void UserInterface::cb_color_gamma_i(ColorWheel*, void*) {
  scrub_view->gamma( color_gamma->m_fcolor[0], color_gamma->m_fcolor[1], color_gamma->m_fcolor[2] );
scrub_view->redraw();
}
void UserInterface::cb_color_gamma(ColorWheel* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->parent()->user_data()))->cb_color_gamma_i(o,v);
}

void UserInterface::cb_Bypass_i(Fl_Check_Button* o, void*) {
  scrub_view->m_fBrowser.m_bypass = o->value();
scrub_view->m_dirty = true;
scrub_view->redraw();
}
void UserInterface::cb_Bypass(Fl_Check_Button* o, void* v) {
  ((UserInterface*)(o->parent()->parent()->parent()->user_data()))->cb_Bypass_i(o,v);
}

UserInterface::UserInterface() {
  Fl_Double_Window* w;
  { Fl_Double_Window* o = window = new Fl_Double_Window(805, 480, "Footage Browser");
    w = o;
    o->user_data((void*)(this));
    { ScrubView* o = scrub_view = new ScrubView(0, 0, 805, 285);
      o->box(FL_DOWN_BOX);
      o->color(FL_FOREGROUND_COLOR);
      o->selection_color(FL_BACKGROUND_COLOR);
      o->labeltype(FL_NORMAL_LABEL);
      o->labelfont(0);
      o->labelsize(14);
      o->labelcolor(FL_FOREGROUND_COLOR);
      o->callback((Fl_Callback*)cb_scrub_view);
      o->align(FL_ALIGN_CENTER);
      o->when(FL_WHEN_RELEASE);
      Fl_Group::current()->resizable(o);
    }
    { Fl_Output* o = filename_output = new Fl_Output(150, 285, 505, 30);
      o->textfont(1);
      o->textsize(18);
    }
    { Fl_Group* o = new Fl_Group(655, 285, 150, 195);
      { Fl_Slider* o = gamma_slider = new Fl_Slider(685, 305, 110, 25, "Gamma");
        o->type(5);
        o->labelfont(1);
        o->minimum(-1);
        o->callback((Fl_Callback*)cb_gamma_slider);
        o->align(FL_ALIGN_TOP);
      }
      { Fl_Slider* o = saturation_slider = new Fl_Slider(685, 355, 110, 25, "Saturation");
        o->type(5);
        o->labelfont(1);
        o->minimum(-1);
        o->callback((Fl_Callback*)cb_saturation_slider);
        o->align(FL_ALIGN_TOP);
      }
      { Fl_Slider* o = brightness_slider = new Fl_Slider(685, 405, 110, 25, "Brightness");
        o->type(5);
        o->labelfont(1);
        o->minimum(-1);
        o->callback((Fl_Callback*)cb_brightness_slider);
        o->align(FL_ALIGN_TOP);
      }
      { Fl_Value_Input* o = gamma_value = new Fl_Value_Input(660, 305, 25, 25);
        o->labelsize(12);
        o->minimum(-1);
        o->step(0.001);
        o->textsize(12);
        o->callback((Fl_Callback*)cb_gamma_value);
      }
      { Fl_Value_Input* o = saturation_value = new Fl_Value_Input(660, 355, 25, 25);
        o->labelsize(12);
        o->minimum(-1);
        o->step(0.001);
        o->textsize(12);
        o->callback((Fl_Callback*)cb_saturation_value);
      }
      { Fl_Value_Input* o = brightness_value = new Fl_Value_Input(660, 405, 25, 25);
        o->labelsize(12);
        o->minimum(-1);
        o->step(0.001);
        o->textsize(12);
        o->callback((Fl_Callback*)cb_brightness_value);
      }
      o->end();
    }
    { Fl_Group* o = new Fl_Group(0, 285, 150, 195);
      { Fl_Button* o = new Fl_Button(0, 285, 150, 30, "@<->  Scan Directory");
        o->callback((Fl_Callback*)cb_Scan);
      }
      { nle::FileBrowser* o = file_browser = new nle::FileBrowser(0, 315, 150, 165);
        o->box(FL_NO_BOX);
        o->color(FL_BACKGROUND2_COLOR);
        o->selection_color(FL_SELECTION_COLOR);
        o->labeltype(FL_NORMAL_LABEL);
        o->labelfont(0);
        o->labelsize(14);
        o->labelcolor(FL_FOREGROUND_COLOR);
        o->callback((Fl_Callback*)cb_file_browser);
        o->align(FL_ALIGN_BOTTOM);
        o->when(FL_WHEN_RELEASE_ALWAYS);
        Fl_Group::current()->resizable(o);
      }
      o->end();
    }
    { Fl_Tabs* o = new Fl_Tabs(150, 315, 505, 175);
      { Fl_Group* o = new Fl_Group(150, 340, 505, 140, "Controls");
        o->hide();
        { Fl_Group* o = new Fl_Group(150, 430, 505, 50);
          { Fl_Group* o = new Fl_Group(250, 430, 405, 50);
            { Fl_Slider* o = scrub_slider = new Fl_Slider(250, 455, 405, 25);
              o->type(5);
              o->callback((Fl_Callback*)cb_scrub_slider);
            }
            { Fl_Slider* o = clip_scrub_slider = new Fl_Slider(250, 430, 405, 25);
              o->type(5);
              o->callback((Fl_Callback*)cb_clip_scrub_slider);
            }
            o->end();
            Fl_Group::current()->resizable(o);
          }
          { Fl_Button* o = new Fl_Button(200, 430, 50, 50, "@>");
            o->callback((Fl_Callback*)cb_);
          }
          { Fl_Button* o = new Fl_Button(150, 430, 50, 50, "@square");
            o->callback((Fl_Callback*)cb_square);
          }
          o->end();
        }
        o->end();
      }
      { Fl_Group* o = new Fl_Group(150, 340, 505, 150, "Colors");
        { ColorWheel* o = color_lift = new ColorWheel(150, 365, 115, 115);
          o->box(FL_DOWN_BOX);
          o->color(FL_BACKGROUND_COLOR);
          o->selection_color(FL_BACKGROUND_COLOR);
          o->labeltype(FL_NORMAL_LABEL);
          o->labelfont(0);
          o->labelsize(14);
          o->labelcolor(FL_FOREGROUND_COLOR);
          o->callback((Fl_Callback*)cb_color_lift);
          o->align(FL_ALIGN_CENTER);
          o->when(FL_WHEN_RELEASE);
        }
        { Fl_Box* o = new Fl_Box(630, 395, 15, 25);
          Fl_Group::current()->resizable(o);
        }
        { Fl_Box* o = new Fl_Box(151, 341, 114, 24, "Lift");
          o->box(FL_THIN_UP_BOX);
        }
        { ColorWheel* o = color_gain = new ColorWheel(380, 365, 115, 115);
          o->box(FL_DOWN_BOX);
          o->color(FL_BACKGROUND_COLOR);
          o->selection_color(FL_BACKGROUND_COLOR);
          o->labeltype(FL_NORMAL_LABEL);
          o->labelfont(0);
          o->labelsize(14);
          o->labelcolor(FL_FOREGROUND_COLOR);
          o->callback((Fl_Callback*)cb_color_gain);
          o->align(FL_ALIGN_CENTER);
          o->when(FL_WHEN_RELEASE);
        }
        { Fl_Box* o = new Fl_Box(380, 341, 114, 24, "Gain");
          o->box(FL_THIN_UP_BOX);
        }
        { ColorWheel* o = color_gamma = new ColorWheel(265, 365, 115, 115);
          o->box(FL_DOWN_BOX);
          o->color(FL_BACKGROUND_COLOR);
          o->selection_color(FL_BACKGROUND_COLOR);
          o->labeltype(FL_NORMAL_LABEL);
          o->labelfont(0);
          o->labelsize(14);
          o->labelcolor(FL_FOREGROUND_COLOR);
          o->callback((Fl_Callback*)cb_color_gamma);
          o->align(FL_ALIGN_CENTER);
          o->when(FL_WHEN_RELEASE);
        }
        { Fl_Box* o = new Fl_Box(265, 341, 114, 24, "Gamma");
          o->box(FL_THIN_UP_BOX);
        }
        { Fl_Check_Button* o = new Fl_Check_Button(495, 340, 55, 25, "Bypass");
          o->down_box(FL_DOWN_BOX);
          o->callback((Fl_Callback*)cb_Bypass);
        }
        o->end();
      }
      o->end();
    }
    o->end();
  }
  scrub_slider->bounds( 0.0, (double)( scrub_view->getLength() ) );
}

void UserInterface::show() {
  window->show();
file_browser->load("/");
}

bool UserInterface::shown() {
  return window->shown();
}

int main() {
  UserInterface ui;

	Fl_Tooltip::color( fl_rgb_color( 0, 0, 1 ) );
	Fl::background2( 34, 52, 103 );
	Fl::background( 93, 93, 114 );
	Fl::foreground( 255, 255, 255 );
	Fl::set_color( FL_BLACK, 200, 200, 200 );

ui.show();

return Fl::run();
}

