Files
2019-03-08 14:12:12 -08:00

168 lines
5.5 KiB
C++
Executable File

/*
* Acid Cam v2 - Qt/OpenCV Edition
* written by Jared Bruni ( http://lostsidedead.com )
* (C) 2017 GPL
*/
#include "new_dialog.h"
#include "main_window.h"
CaptureCamera::CaptureCamera(QWidget *parent) : QDialog(parent) {
setGeometry(100, 100, 290, 120);
setFixedSize(290, 120);
setWindowTitle(tr("Capture from Webcam"));
setWindowIcon(QPixmap(":/images/icon.png"));
createControls();
}
void CaptureCamera::createControls() {
QLabel *res = new QLabel(tr("Resolution: "), this);
res->setGeometry(10, 10, 75, 20);
combo_res = new QComboBox(this);
combo_res->setGeometry(85, 10, 200, 25);
combo_res->addItem("640x480 (SD)");
combo_res->addItem("1280x720 (HD)");
combo_res->addItem("1920x1080 (Full HD)");
QLabel *dev = new QLabel(tr("Device: "), this);
dev->setGeometry(10, 35, 50, 20);
combo_device = new QComboBox(this);
combo_device->setGeometry(85, 35, 200, 25);
for(int i = 0; i < 10; ++i) {
QString s;
QTextStream stream(&s);
stream << i;
combo_device->addItem(*stream.string());
}
btn_select = new QPushButton(tr("Save Directory"), this);
btn_select->setGeometry(10, 65, 100, 20);
output_dir = new QLineEdit("", this);
output_dir->setGeometry(110, 65, 175, 20);
output_dir->setReadOnly(true);
chk_record = new QCheckBox(tr("Record"), this);
chk_record->setGeometry(10, 95, 70, 20);
btn_start = new QPushButton(tr("Start"), this);
btn_start->setGeometry(185, 95, 100, 20);
connect(btn_start, SIGNAL(clicked()), this, SLOT(btn_Start()));
connect(btn_select, SIGNAL(clicked()), this, SLOT(btn_Select()));
video_type = new QComboBox(this);
video_type->setGeometry(80, 90, 90, 25);
video_type->addItem("MOV");
video_type->addItem("AVI");
}
void CaptureCamera::setParent(AC_MainWindow *p) {
win_parent = p;
}
void CaptureCamera::btn_Select() {
QString def_path = "";
#if defined(__linux__)
def_path = "";
#elif defined(__APPLE__)
def_path = "/Users";
#elif defined(_WIN32)
def_path = "C:\\";
#endif
QString dir = QFileDialog::getExistingDirectory(this, tr("Open Directory"),def_path,QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
if(dir != "") {
output_dir->setText(dir);
}
}
void CaptureCamera::btn_Start() {
int vtype;
vtype = video_type->currentIndex();
if(output_dir->text().length() > 0) {
if(win_parent->startCamera(combo_res->currentIndex(), combo_device->currentIndex(), output_dir->text(), chk_record->isChecked(), vtype)) {
hide();
} else {
QMessageBox::information(this, tr("Could not open Capture device"), tr("Make sure you Webcam is pluged in. If you have more than one Webcam use the proper device index."));
}
} else {
QMessageBox::information(this, tr("Error please fill out Save Directory"), tr("Could not create Capture device requires Save Directory"));
}
}
CaptureVideo::CaptureVideo(QWidget *parent) : QDialog(parent) {
setGeometry(100, 100, 330, 100);
setFixedSize(330, 100);
setWindowTitle(tr("Capture from Video"));
setWindowIcon(QPixmap(":/images/icon.png"));
createControls();
}
void CaptureVideo::createControls() {
btn_setedit = new QPushButton(tr("Source File"), this);
btn_setedit->setGeometry(10, 10, 110, 20);
edit_src = new QLineEdit(this);
edit_src->setGeometry(120, 10, 200, 20);
edit_src->setReadOnly(true);
btn_setout = new QPushButton(tr("Set Output"), this);
btn_setout->setGeometry(10, 30, 110, 20);
edit_outdir = new QLineEdit(this);
edit_outdir->setGeometry(120, 30, 200, 20);
edit_outdir->setReadOnly(true);
btn_start = new QPushButton(tr("Start"), this);
btn_start->setGeometry(10, 60, 100, 20);
chk_record = new QCheckBox(tr("Record"), this);
chk_record->setGeometry(110, 60, 80, 20);
video_type = new QComboBox(this);
video_type->setGeometry(180, 55, 120, 25);
video_type->addItem("MOV");
video_type->addItem("AVI");
connect(btn_setedit, SIGNAL(clicked()), this, SLOT(btn_SetSourceFile()));
connect(btn_setout, SIGNAL(clicked()), this, SLOT(btn_SetOutputDir()));
connect(btn_start, SIGNAL(clicked()), this, SLOT(btn_Start()));
}
void CaptureVideo::setParent(AC_MainWindow *p) {
win_parent = p;
}
void CaptureVideo::btn_SetSourceFile() {
QString def_path = "";
QString fileName = QFileDialog::getOpenFileName(this,tr("Open Video"), def_path, tr("Video Files (*.avi *.mov *.mp4 *.mkv)"));
if(fileName != "")
edit_src->setText(fileName);
}
void CaptureVideo::btn_SetOutputDir() {
QString def_path = "";
QString dir = QFileDialog::getExistingDirectory(this, tr("Set Output Directory"),def_path,QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks);
if(dir != "")
edit_outdir->setText(dir);
}
void CaptureVideo::btn_Start() {
if(edit_src->text().length() <= 0) {
QMessageBox::information(this, tr("No Input"), tr("Please Select a Video File"));
return;
}
if(edit_outdir->text().length() <= 0) {
QMessageBox::information(this, tr("No Output"), tr("Please Select Output Directory"));
return;
}
int num;
num = video_type->currentIndex();
if(win_parent->startVideo(edit_src->text(), edit_outdir->text(), chk_record->isChecked(), num)) {
hide();
} else {
QMessageBox::information(this, tr("Could not open file"), tr("Could not open video file, an error has occured"));
}
}