Skip to content

Commit

Permalink
Merge pull request #1 from Teddy-van-Jerry/dev
Browse files Browse the repository at this point in the history
master update
  • Loading branch information
Teddy-van-Jerry authored Mar 8, 2021
2 parents 3ede0cf + f7f59bc commit 08165c4
Show file tree
Hide file tree
Showing 8 changed files with 277 additions and 10 deletions.
2 changes: 2 additions & 0 deletions Icon_resources.qrc
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
<file>Menu Icon/Redo.svg</file>
<file>Menu Icon/Undo.svg</file>
<file>Menu Icon/Create Images in Range.svg</file>
<file>Menu Icon/DeleteImage.svg</file>
<file>Menu Icon/Check Images.svg</file>
</qresource>
<qresource prefix="/">
<file>Menu Icon/Next.svg</file>
Expand Down
1 change: 1 addition & 0 deletions Menu Icon/Check Images.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
48 changes: 43 additions & 5 deletions create_image_info.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,19 @@ void Create_Image_Info::set_info(QString Name, QString Format, int Total, int St
total = Total;
index = Start;
start = Start;
usingQList = false;
}

void Create_Image_Info::set_info_(QString Name, QString Format, QList<int> list)
{
// qDebug() << "Set Info Successfully" << Total << Start;
name = Name;
format = Format;
total = list.size();
start = 0;
index = 0;
list_ = list;
usingQList = true;
}

void Create_Image_Info::updateTime()
Expand All @@ -43,7 +56,14 @@ void Create_Image_Info::updateTime()
{
time_left = time_left.addMSecs(-50);
}
ui->label_now->setText(tr("Now: ") + name + QString::number(index) + "." + format);
if(usingQList)
{
ui->label_now->setText(tr("Now: ") + name + QString::number(list_[index]) + "." + format);
}
else
{
ui->label_now->setText(tr("Now: ") + name + QString::number(index) + "." + format);
}
ui->label_progress->setText(tr("Progress: ") + QString::number(index - start) + " / " + QString::number(total));
ui->label_timeUsed->setText(tr("Time Used: ") + time_now.toString("hh:mm:ss"));
ui->label_leftTime->setText(tr("Estimated left time: ") + time_left.toString("hh:mm:ss"));
Expand All @@ -54,10 +74,21 @@ void Create_Image_Info::updateInfo()
qDebug() << "updateInfo";
index++;
int size_of_image = 1024;
QFile already_created_image(name + QString::number(index) + "." + format);
if(already_created_image.exists())
if(usingQList)
{
QFile already_created_image(name + QString::number(list_[index]) + "." + format);
if(already_created_image.exists())
{
size_of_image = already_created_image.size();
}
}
else
{
size_of_image = already_created_image.size();
QFile already_created_image(name + QString::number(index) + "." + format);
if(already_created_image.exists())
{
size_of_image = already_created_image.size();
}
}
double time_for_one = 3600 * time_one.hour() + 60 * time_one.minute() + time_one.second() + time_one.msec() / 1000.0;
double speed = (time_for_one < 0.05)
Expand All @@ -68,7 +99,14 @@ void Create_Image_Info::updateInfo()
time_left.setHMS(0, 0, 0, 0);
time_left = time_left.addMSecs(1000 * estimated_left_time);
//time_left.setHMS((int)estimated_left_time / 3600, (int)estimated_left_time / 60 % 60, (int) estimated_left_time % 60);
ui->label_now->setText(tr("Now: ") + name + QString::number(index) + "." + format);
if(usingQList)
{
ui->label_now->setText(tr("Now: ") + name + QString::number(list_[index]) + "." + format);
}
else
{
ui->label_now->setText(tr("Now: ") + name + QString::number(index) + "." + format);
}
ui->label_speed->setText(tr("Speed: ") + QString::number(speed, 'g', 4) + " kb/s");
ui->label_progress->setText(tr("Progress: ") + QString::number(index - start) + " / " + QString::number(total));
ui->label_timeUsed->setText(tr("Time Used: ") + time_now.toString("hh:mm:ss"));
Expand Down
6 changes: 6 additions & 0 deletions create_image_info.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ class Create_Image_Info : public QDialog
public slots:
void set_info(QString name, QString format, int total, int start = 0);

void set_info_(QString name, QString format, QList<int> list);

void updateInfo();

void close_create_image_info();
Expand Down Expand Up @@ -51,6 +53,10 @@ private slots:
int index;

int start;

bool usingQList = false;

QList<int> list_;
};

#endif // CREATE_IMAGE_INFO_H
182 changes: 182 additions & 0 deletions mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -960,6 +960,7 @@ void MainWindow::on_actionStop_triggered()

qDebug() << "Build Thread quit";
ui->actionCreate_Images->setDisabled(false);
ui->actionCreate_Images_in_Range->setDisabled(false);
ui->actionStop->setDisabled(true);
}

Expand Down Expand Up @@ -2730,6 +2731,81 @@ void MainWindow::on_actionCreate_Images_in_Range_triggered()
to_i = -1;
}

void MainWindow::createImagesInList(const QList<int>& list)
{
ui->actionStop->setDisabled(false);
ui->actionCreate_Images->setDisabled(true);
ui->actionCreate_Images_in_Range->setDisabled(true);
on_actionPreview_Refresh_triggered();
work_thread->start();

qDebug() << ui->timeEdit->time().second() + 60 * ui->timeEdit->time().minute();
int total_image = ui->comboBox_fps->currentText().toInt() * (ui->timeEdit->time().second() + 60 * ui->timeEdit->time().minute());
int current_index = 0;
int X = ui->Image_size_X->value();
int Y = ui->Image_size_Y->value();
QString image_format = "png";
QString path = ui->lineEdit_imagePath->text();
QString name = ui->lineEdit_imagePrefix->text();

create_image_info = new Create_Image_Info();
connect(this, &MainWindow::build_image_info_signal_, create_image_info, &Create_Image_Info::set_info_);
connect(this, &MainWindow::build_image_updateInfo_signal, create_image_info, &Create_Image_Info::updateInfo);
//connect(create_image_info, &Create_Image_Info::close, create_image_info, &Create_Image_Info::close_create_image_info);
create_image_info->show();
emit build_image_info_signal_(path + "\\" + name, image_format, list);
qDebug() << from_i << to_i;

// New version with the normal speed
for(int i = 0; i <= total_image - 1; i++)
{
double T = static_cast<double>(i) / total_image;
while(current_index + 2 < model->rowCount() && T > Tb(current_index + 1, 0))
{
current_index++;
}
if(!list.contains(i)) continue;

double w1 = Tb(current_index, 4);
double w2 = Tb(current_index + 1, 4);
double t1 = Tb(current_index, 0);
double t2 = Tb(current_index + 1, 0);
double x1 = Tb(current_index, 1);
double x2 = Tb(current_index + 1, 1);
double y1 = Tb(current_index, 2);
double y2 = Tb(current_index + 1, 2);
double k = Tb(current_index, 5);
double t = (T - t1) / (t2 - t1);
double x, y;

double angle = Tb(current_index, 3)
+ (Tb(current_index + 1, 3) - Tb(current_index, 3))
* ((1 - k) * t + k * pow(t, 2));
double width = 1 / (t * (1 / w2) + (1 - t) * (1 / w1));

if(fabs(1 - w1 / w2) < 1E-5)
{
x = x1 + t * x2 + (1 - t) * x1;
y = y1 + t * y2 + (1 - t) * y1;
}
else
{
x = x1 + (x2 - x1) / log(w1 / w2) * log((w1 / w2 - 1) * t + 1);
y = y1 + (y2 - y1) / log(w1 / w2) * log((w1 / w2 - 1) * t + 1);
}

// qDebug() << t << current_index << x << y << width << angle;
if(i != *(--list.end()))
{
emit build_signal(x, y, width, width * Y / X, X, Y, angle, T, image_format, path, name + QString::number(i), "Create_Image");
}
else
{
emit build_signal(x, y, width, width * Y / X, X, Y, angle, T, image_format, path, name + QString::number(i), "Create_Image_Last");
}
}
}

void MainWindow::on_actionVersion_3_triggered()
{
QDesktopServices::openUrl(QUrl("https://www.bilibili.com/video/BV17K4y1J7XM"));
Expand All @@ -2739,3 +2815,109 @@ void MainWindow::on_actionGitHub_Repository_triggered()
{
QDesktopServices::openUrl(QUrl("https://github.com/Teddy-van-Jerry/Fractal_Designer"));
}

void MainWindow::on_actionCheck_Images_triggered()
{
int total_image = ui->comboBox_fps->currentText().toInt() * (ui->timeEdit->time().second() + 60 * ui->timeEdit->time().minute());
QList<int> Missed_Images;
for(int i = 0; i != total_image; i++)
{
if(!QFile(ui->lineEdit_imagePath->text() + "/" + ui->lineEdit_imagePrefix->text() + QString::number(i) + ".png").exists())
{
Missed_Images.push_back(i);
}
}
QString content;
if(Missed_Images.size() == 0)
{
content = "No missing inages!";
QMessageBox::information(this, "Check Finished", content, QMessageBox::Ok);
}
else if(Missed_Images.size() < 10)
{
content = "Missing images with the number:\n";
content.append(QString::number(Missed_Images[0]));
for(int i = 1; i != Missed_Images.size(); i++)
{
content.append(tr(", ") + QString::number(Missed_Images[i]));
}
content.append(".\nDo you want to recreate them?");
if(QMessageBox::information(this, "Check Finished", content, QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
{
if(!ui->actionCreate_Images_in_Range->isEnabled()) return;
if(User_Name.isEmpty())
{
QMessageBox::warning(this, "Can not create images", "You have not logged in.");
return;
}

if(!save_or_not)
{
QMessageBox::warning(this, "Can not create images", "You have not saved the project.");
return;
}

if((!Version_Higher_Than_4 && (Project_Template == "" || Project_Template == "Undefined")) || (Version_Higher_Than_4 && Open_Location == ""))
{
QMessageBox::warning(this, "Can not create images", "You have not chosen a template.");
return;
}

if(Version_Higher_Than_4 && !isRouteValid)
{
QMessageBox::warning(this, "Can not create images", "The Route Settings are invalid.");
return;
}
createImagesInList(Missed_Images);
}
}
else
{
content = "Missing images with the number:\n";
content.append(QString::number(Missed_Images[0]));
for(int i = 1; i != 10; i++)
{
content.append(tr(", ") + QString::number(Missed_Images[i]));
}
content.append(", ..., " + QString::number(*(--Missed_Images.end())) + ".\nDo you want to recreate them?");
if(QMessageBox::information(this, "Check Finished", content, QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
{
if(!ui->actionCreate_Images_in_Range->isEnabled()) return;
if(User_Name.isEmpty())
{
QMessageBox::warning(this, "Can not create images", "You have not logged in.");
return;
}

if(!save_or_not)
{
QMessageBox::warning(this, "Can not create images", "You have not saved the project.");
return;
}

if((!Version_Higher_Than_4 && (Project_Template == "" || Project_Template == "Undefined")) || (Version_Higher_Than_4 && Open_Location == ""))
{
QMessageBox::warning(this, "Can not create images", "You have not chosen a template.");
return;
}

if(Version_Higher_Than_4 && !isRouteValid)
{
QMessageBox::warning(this, "Can not create images", "The Route Settings are invalid.");
return;
}
createImagesInList(Missed_Images);
}
}
}

void MainWindow::deleteImage(int i)
{
QFile image_file(ui->lineEdit_videoPath->text() + "/" + ui->lineEdit_imagePrefix->text() + QString::number(i) + ".png");
image_file.remove();
}

void MainWindow::on_actionDelete_Images_triggered()
{

}
12 changes: 12 additions & 0 deletions mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,12 @@ class MainWindow : public QMainWindow

void NewFeatures();

void createImagesInList(const QList<int>& list);

void createImagesInRange(int From_I, int To_I);

void deleteImage(int);

private slots:

void getUserName(QString);
Expand Down Expand Up @@ -356,6 +362,10 @@ private slots:

void on_actionGitHub_Repository_triggered();

void on_actionCheck_Images_triggered();

void on_actionDelete_Images_triggered();

signals:

void Search_clicked(QString);
Expand All @@ -372,6 +382,8 @@ private slots:

void build_image_info_signal(QString name, QString format, int total, int start);

void build_image_info_signal_(QString name, QString format, QList<int> list);

void build_image_updateInfo_signal();

void shareVersion(bool);
Expand Down
Loading

0 comments on commit 08165c4

Please sign in to comment.