mirror of
https://github.com/lostjared/Acid.Cam.v2.Qt.git
synced 2025-12-14 10:50:01 +01:00
added custom cycle mode
This commit is contained in:
@@ -425,13 +425,17 @@ void AC_MainWindow::createMenu() {
|
|||||||
repeat_v->setCheckable(true);
|
repeat_v->setCheckable(true);
|
||||||
repeat_v->setChecked(false);
|
repeat_v->setChecked(false);
|
||||||
|
|
||||||
|
cycle_custom = new QAction(tr("Cycle Custom"), this);
|
||||||
|
cycle_custom->setCheckable(true);
|
||||||
|
cycle_custom->setChecked(false);
|
||||||
|
|
||||||
fade_on = new QAction(tr("Fade"), this);
|
fade_on = new QAction(tr("Fade"), this);
|
||||||
fade_on->setCheckable(true);
|
fade_on->setCheckable(true);
|
||||||
fade_on->setChecked(true);
|
fade_on->setChecked(true);
|
||||||
options->addAction(fade_on);
|
options->addAction(fade_on);
|
||||||
options->addAction(repeat_v);
|
options->addAction(repeat_v);
|
||||||
|
options->addAction(cycle_custom);
|
||||||
|
connect(cycle_custom, SIGNAL(triggered()), this, SLOT(setCustomCycle_Menu()));
|
||||||
connect(fade_on, SIGNAL(triggered()), this, SLOT(setFade()));
|
connect(fade_on, SIGNAL(triggered()), this, SLOT(setFade()));
|
||||||
connect(repeat_v, SIGNAL(triggered()), this, SLOT(repeat_vid()));
|
connect(repeat_v, SIGNAL(triggered()), this, SLOT(repeat_vid()));
|
||||||
connect(clear_image, SIGNAL(triggered()), this, SLOT(clear_img()));
|
connect(clear_image, SIGNAL(triggered()), this, SLOT(clear_img()));
|
||||||
@@ -1685,3 +1689,8 @@ void AC_MainWindow::setRandomFilterValue() {
|
|||||||
int filter_index = ac::filter_map[filter_name];
|
int filter_index = ac::filter_map[filter_name];
|
||||||
filters->setCurrentIndex(filter_index);
|
filters->setCurrentIndex(filter_index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AC_MainWindow::setCustomCycle_Menu() {
|
||||||
|
bool chk = cycle_custom->isChecked();
|
||||||
|
playback->setCustomCycle(chk);
|
||||||
|
}
|
||||||
|
|||||||
@@ -60,6 +60,7 @@ public:
|
|||||||
QAction *show_options_window;
|
QAction *show_options_window;
|
||||||
QAction *show_control_window;
|
QAction *show_control_window;
|
||||||
QAction *select_random_filter;
|
QAction *select_random_filter;
|
||||||
|
QAction *cycle_custom;
|
||||||
double speed_actions[7];
|
double speed_actions[7];
|
||||||
QRadioButton *filter_single, *filter_custom;
|
QRadioButton *filter_single, *filter_custom;
|
||||||
void updateList();
|
void updateList();
|
||||||
@@ -128,6 +129,7 @@ public slots:
|
|||||||
void showImageWindow();
|
void showImageWindow();
|
||||||
void showPrefWindow();
|
void showPrefWindow();
|
||||||
void setRandomFilterValue();
|
void setRandomFilterValue();
|
||||||
|
void setCustomCycle_Menu();
|
||||||
private:
|
private:
|
||||||
void createControls();
|
void createControls();
|
||||||
void createMenu();
|
void createMenu();
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
|
|
||||||
OptionsWindow::OptionsWindow(QWidget *parent) : QDialog(parent) {
|
OptionsWindow::OptionsWindow(QWidget *parent) : QDialog(parent) {
|
||||||
setFixedSize(170, 150);
|
setFixedSize(170, 180);
|
||||||
createControls();
|
createControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -19,9 +19,17 @@ void OptionsWindow::createControls() {
|
|||||||
label_z->setGeometry(10, 70, 100, 25);
|
label_z->setGeometry(10, 70, 100, 25);
|
||||||
op_max_frames = new QLineEdit("1500", this);
|
op_max_frames = new QLineEdit("1500", this);
|
||||||
op_max_frames->setGeometry(110,70, 50, 25);
|
op_max_frames->setGeometry(110,70, 50, 25);
|
||||||
|
|
||||||
|
QLabel *label_q = new QLabel(tr("Delay: "), this);
|
||||||
|
label_q->setGeometry(10, 100, 100, 25);
|
||||||
|
|
||||||
|
fps_delay = new QLineEdit("60", this);
|
||||||
|
fps_delay->setGeometry(110, 100, 50, 25);
|
||||||
|
|
||||||
op_setpref = new QPushButton(tr("Set"), this);
|
op_setpref = new QPushButton(tr("Set"), this);
|
||||||
op_setpref->setGeometry(10, 110, 100, 25);
|
op_setpref->setGeometry(10, 140, 100, 25);
|
||||||
connect(op_setpref, SIGNAL(clicked()), this, SLOT(setValues()));
|
connect(op_setpref, SIGNAL(clicked()), this, SLOT(setValues()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OptionsWindow::setValues() {
|
void OptionsWindow::setValues() {
|
||||||
@@ -41,10 +49,15 @@ void OptionsWindow::setValues() {
|
|||||||
QMessageBox::information(this, tr("Error Requires Max"), tr("Required Max Frames must be greater than 300"));
|
QMessageBox::information(this, tr("Error Requires Max"), tr("Required Max Frames must be greater than 300"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int delay_value = atoi(fps_delay->text().toStdString().c_str());
|
||||||
|
if(delay_value > 0)
|
||||||
|
playback->setCustomCycleDelay(delay_value);
|
||||||
|
|
||||||
ac::setMaxAllocated(max_frames);
|
ac::setMaxAllocated(max_frames);
|
||||||
QString text;
|
QString text;
|
||||||
QTextStream stream(&text);
|
QTextStream stream(&text);
|
||||||
stream << tr("Thread Count set to: ") << thread_count << tr(" and Intensity set to: ") << intensity << tr("\nMaximum Stored Frames: ") << max_frames << tr("\n");
|
stream << tr("Thread Count set to: ") << thread_count << tr(" and Intensity set to: ") << intensity << tr("\nMaximum Stored Frames: ") << max_frames << tr("\n") << tr("Delay: ") << delay_value << "\n";;
|
||||||
QMessageBox::information(this, tr("Pref Value Set"), text);
|
QMessageBox::information(this, tr("Pref Value Set"), text);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ private:
|
|||||||
QPushButton *op_setpref;
|
QPushButton *op_setpref;
|
||||||
Playback *playback;
|
Playback *playback;
|
||||||
QLineEdit *op_max_frames;
|
QLineEdit *op_max_frames;
|
||||||
|
QLineEdit *fps_delay;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -22,6 +22,18 @@ Playback::Playback(QObject *parent) : QThread(parent) {
|
|||||||
cycle_on = 0;
|
cycle_on = 0;
|
||||||
cycle_index = 0;
|
cycle_index = 0;
|
||||||
frame_num = 0;
|
frame_num = 0;
|
||||||
|
_custom_cycle = false;
|
||||||
|
_custom_cycle_index = 0;
|
||||||
|
fps_delay = 60;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Playback::setCustomCycle(bool b) {
|
||||||
|
_custom_cycle = b;
|
||||||
|
_custom_cycle_index = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Playback::setCustomCycleDelay(int delay) {
|
||||||
|
fps_delay = delay;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Playback::Play() {
|
void Playback::Play() {
|
||||||
@@ -333,13 +345,29 @@ void Playback::run() {
|
|||||||
} else if(cur.size()>0) {
|
} else if(cur.size()>0) {
|
||||||
mutex.lock();
|
mutex.lock();
|
||||||
ac::in_custom = true;
|
ac::in_custom = true;
|
||||||
|
if(_custom_cycle == false) {
|
||||||
for(unsigned int i = 0; i < cur.size(); ++i) {
|
for(unsigned int i = 0; i < cur.size(); ++i) {
|
||||||
if(i == cur.size()-1)
|
if(i == cur.size()-1)
|
||||||
ac::in_custom = false;
|
ac::in_custom = false;
|
||||||
drawFilter(frame, cur[i]);
|
drawFilter(frame, cur[i]);
|
||||||
msleep(duration/2);
|
msleep(duration/2);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
if(_custom_cycle_index > static_cast<int>(cur.size()))
|
||||||
|
_custom_cycle_index = 0;
|
||||||
|
|
||||||
|
drawFilter(frame, cur[_custom_cycle_index]);
|
||||||
|
msleep(duration/2);
|
||||||
|
}
|
||||||
drawEffects(frame);
|
drawEffects(frame);
|
||||||
|
static int delay_counter = 0;
|
||||||
|
++delay_counter;
|
||||||
|
if(delay_counter > (fps_delay * static_cast<int>(ac::fps))) {
|
||||||
|
delay_counter = 0;
|
||||||
|
++_custom_cycle_index;
|
||||||
|
if(_custom_cycle_index > static_cast<int>(cur.size()))
|
||||||
|
_custom_cycle_index = 0;
|
||||||
|
}
|
||||||
mutex.unlock();
|
mutex.unlock();
|
||||||
} else {
|
} else {
|
||||||
msleep(duration);
|
msleep(duration);
|
||||||
|
|||||||
@@ -44,6 +44,9 @@ private:
|
|||||||
int cycle_on;
|
int cycle_on;
|
||||||
int cycle_index;
|
int cycle_index;
|
||||||
int frame_num;
|
int frame_num;
|
||||||
|
bool _custom_cycle;
|
||||||
|
int _custom_cycle_index;
|
||||||
|
int fps_delay;
|
||||||
public:
|
public:
|
||||||
Playback(QObject *parent = 0);
|
Playback(QObject *parent = 0);
|
||||||
~Playback();
|
~Playback();
|
||||||
@@ -80,6 +83,8 @@ public:
|
|||||||
void setCycle(int type, int frame_skip, std::vector<std::string> &val);
|
void setCycle(int type, int frame_skip, std::vector<std::string> &val);
|
||||||
void setCycle(int type);
|
void setCycle(int type);
|
||||||
void setPref(int thread_count, int intense);
|
void setPref(int thread_count, int intense);
|
||||||
|
void setCustomCycle(bool b);
|
||||||
|
void setCustomCycleDelay(int delay);
|
||||||
signals:
|
signals:
|
||||||
void procImage(const QImage image);
|
void procImage(const QImage image);
|
||||||
void stopRecording();
|
void stopRecording();
|
||||||
|
|||||||
Reference in New Issue
Block a user