diff --git a/src/main_window.cpp b/src/main_window.cpp index cd4006d..c914a21 100644 --- a/src/main_window.cpp +++ b/src/main_window.cpp @@ -54,8 +54,8 @@ AC_MainWindow::AC_MainWindow(QWidget *parent) : QMainWindow(parent) { programMode = MODE_CAMERA; init_plugins(); generate_map(); - setGeometry(100, 100, 800, 600); - setFixedSize(800, 600); + setGeometry(100, 100, 800, 800); + setFixedSize(800, 800); setWindowTitle(tr("Acid Cam v2 - Qt")); createControls(); createMenu(); @@ -122,10 +122,39 @@ void AC_MainWindow::createControls() { connect(btn_moveup, SIGNAL(clicked()), this, SLOT(upClicked())); connect(btn_movedown, SIGNAL(clicked()), this, SLOT(downClicked())); + QLabel *r_label = new QLabel("Red: ", this); + r_label->setGeometry(10, 255, 50, 20); + slide_r = new QSlider(Qt::Horizontal,this); + slide_r->setGeometry(40, 250, 100, 30); + slide_r->setMaximum(255); + slide_r->setMinimum(0); + slide_r->setTickInterval(0); + + QLabel *g_label = new QLabel("Green: ", this); + g_label->setGeometry(150, 255, 50, 20); + slide_g = new QSlider(Qt::Horizontal, this); + slide_g->setGeometry(190, 250, 100, 30); + slide_g->setMaximum(255); + slide_g->setMinimum(0); + slide_g->setTickInterval(0); + + QLabel *b_label = new QLabel("Blue: ", this); + b_label->setGeometry(300, 255, 50, 20); + slide_b = new QSlider(Qt::Horizontal, this); + slide_b->setGeometry(330, 250, 100, 30); + slide_b->setMaximum(255); + slide_b->setMinimum(0); + slide_b->setTickInterval(0); + + connect(slide_r, SIGNAL(valueChanged(int)), this, SLOT(slideChanged(int))); + connect(slide_g, SIGNAL(valueChanged(int)), this, SLOT(slideChanged(int))); + connect(slide_b, SIGNAL(valueChanged(int)), this, SLOT(slideChanged(int))); + log_text = new QTextEdit(this); - log_text->setGeometry(10, 250, 780,310); + log_text->setGeometry(10, 450, 780,310); log_text->setReadOnly(true); + QString text = tr("Acid Cam Filters v"); text += ac::version.c_str(); text += " loaded.\n"; @@ -149,11 +178,10 @@ void AC_MainWindow::createControls() { setWindowIcon(QPixmap(":/images/icon.png")); progress_bar = new QProgressBar(this); - progress_bar->setGeometry(0, 560, 800, 20); + progress_bar->setGeometry(0, 760, 800, 20); progress_bar->setMinimum(0); progress_bar->setMaximum(100); progress_bar->hide(); - } void AC_MainWindow::createMenu() { @@ -233,6 +261,11 @@ void AC_MainWindow::cb_SetIndex(int index) { playback->setOptions(chk_negate->isChecked(), index); } + +void AC_MainWindow::slideChanged(int) { + playback->setRGB(slide_r->sliderPosition(), slide_g->sliderPosition(), slide_b->sliderPosition()); +} + void AC_MainWindow::addClicked() { int row = filters->currentRow(); if(row != -1) { diff --git a/src/main_window.h b/src/main_window.h index 4cd5252..1a613e8 100644 --- a/src/main_window.h +++ b/src/main_window.h @@ -26,6 +26,7 @@ public: QTextEdit *log_text; QCheckBox *chk_negate; QComboBox *combo_rgb; + QSlider *slide_r, *slide_g, *slide_b, *slide_bright, *slide_gamma, *slide_saturation; QProgressBar *progress_bar; QMenu *file_menu, *controls_menu, *help_menu; QAction *file_exit, *file_new_capture, *file_new_video; @@ -51,6 +52,7 @@ public slots: void chk_Clicked(); void cb_SetIndex(int index); void frameInc(); + void slideChanged(int pos); private: void createControls(); void createMenu(); diff --git a/src/playback_thread.cpp b/src/playback_thread.cpp index e82c904..524d1a2 100644 --- a/src/playback_thread.cpp +++ b/src/playback_thread.cpp @@ -100,6 +100,14 @@ void Playback::setOptions(bool n, int c) { mutex.unlock(); } +void Playback::setRGB(int r, int g, int b) { + mutex.lock(); + ac::swapColor_r = r; + ac::swapColor_g = g; + ac::swapColor_b = b; + mutex.unlock(); +} + void Playback::setDisplayed(bool shown) { video_shown = shown; } @@ -128,6 +136,8 @@ void Playback::run() { if(i == cur.size()-1) ac::in_custom = false; + + if(cur[i].first == 0) { ac::draw_func[cur[i].second](frame); } else if(cur[i].first == 1) { diff --git a/src/playback_thread.h b/src/playback_thread.h index 6dc836a..0089a83 100644 --- a/src/playback_thread.h +++ b/src/playback_thread.h @@ -31,9 +31,11 @@ private: bool isPaused, isStep; VideoMode mode; int device_num; + unsigned int red, green, blue; public: Playback(QObject *parent = 0); ~Playback(); + void setRGB(int r, int g, int b); void Play(); void Stop(); void Release();