1
0

ExportVideoMenu.cpp 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. #include "ExportVideoMenu.h"
  2. #include "ui_ExportVideoMenu.h"
  3. #include <QIntValidator>
  4. #include <QDoubleValidator>
  5. #include <QFileDialog>
  6. ExportVideoMenu::ExportVideoMenu(QWidget *parent) :
  7. QWidget{ parent },
  8. ui{ new Ui::ExportVideoMenu }
  9. {
  10. ui->setupUi(this);
  11. this->adjustSize();
  12. ui->maxIterTxt->setValidator(new QIntValidator(1, 1000000000, this));
  13. ui->widthTxt->setValidator(new QIntValidator(1, 10000000, this));
  14. ui->heightTxt->setValidator(new QIntValidator(1, 10000000, this));
  15. ui->bitrate->setValidator(new QIntValidator(1, 10000000, this));
  16. ui->fps->setValidator(new QIntValidator(1, 8000, this));
  17. ui->zoomSpeed->setValidator(new QDoubleValidator(0.0, 100.0, -1, this));
  18. /*
  19. evd.startX->setText(QString::fromStdString(evi.start.x.str()));
  20. evd.startY->setText(QString::fromStdString(evi.start.y.str()));
  21. evd.startW->setText(QString::fromStdString(evi.start.width.str()));
  22. evd.startH->setText(QString::fromStdString(evi.start.height.str()));
  23. evd.endX->setText(QString::fromStdString(evi.end.x.str()));
  24. evd.endY->setText(QString::fromStdString(evi.end.y.str()));
  25. evd.endW->setText(QString::fromStdString(evi.end.width.str()));
  26. evd.endH->setText(QString::fromStdString(evi.end.height.str()));
  27. */
  28. const auto presets = {
  29. "ultrafast",
  30. "superfast",
  31. "veryfast",
  32. "faster",
  33. "fast",
  34. "medium",
  35. "slow",
  36. "slower",
  37. "veryslow",
  38. };
  39. for (auto& preset : presets) {
  40. ui->encodingPresetBox->addItem(preset);
  41. }
  42. ui->encodingPresetBox->setCurrentText("medium");
  43. setStartViewport(mnd::MandelViewport::standardView());
  44. }
  45. ExportVideoMenu::~ExportVideoMenu()
  46. {
  47. delete ui;
  48. }
  49. ExportVideoInfo ExportVideoMenu::getInfo(void) const
  50. {
  51. ExportVideoInfo evi;
  52. /*if (ui->pathTxt->text() == "") {
  53. QMessageBox* msgBox = new QMessageBox;
  54. msgBox->setText("Please specify a path.");
  55. msgBox->exec();
  56. emit reject();
  57. }*/
  58. evi.path = ui->pathTxt->text().toStdString();
  59. evi.mi.bWidth = ui->widthTxt->text().toInt();
  60. evi.mi.bHeight = ui->heightTxt->text().toInt();
  61. evi.mi.maxIter = ui->maxIterTxt->text().toInt();
  62. evi.bitrate = ui->bitrate->text().toInt();
  63. evi.preset = ui->encodingPresetBox->currentText().toStdString();
  64. evi.fps = ui->fps->text().toInt();
  65. evi.zoomSpeed = QLocale::system().toDouble(ui->zoomSpeed->text());
  66. evi.start = mnd::MandelViewport {
  67. mnd::Real(ui->startX->text().toStdString().c_str()),
  68. mnd::Real(ui->startY->text().toStdString().c_str()),
  69. mnd::Real(ui->startW->text().toStdString().c_str()),
  70. mnd::Real(ui->startH->text().toStdString().c_str())
  71. };
  72. evi.end = mnd::MandelViewport {
  73. mnd::Real(ui->endX->text().toStdString().c_str()),
  74. mnd::Real(ui->endY->text().toStdString().c_str()),
  75. mnd::Real(ui->endW->text().toStdString().c_str()),
  76. mnd::Real(ui->endH->text().toStdString().c_str())
  77. };
  78. evi.start.adjustAspectRatio(evi.mi.bWidth, evi.mi.bHeight);
  79. evi.end.adjustAspectRatio(evi.mi.bWidth, evi.mi.bHeight);
  80. return evi;
  81. }
  82. void ExportVideoMenu::setStartViewport(const mnd::MandelViewport& mv)
  83. {
  84. ui->startX->setText(QString::fromStdString(mnd::toString(mv.x)));
  85. ui->startY->setText(QString::fromStdString(mnd::toString(mv.y)));
  86. ui->startW->setText(QString::fromStdString(mnd::toString(mv.width)));
  87. ui->startH->setText(QString::fromStdString(mnd::toString(mv.height)));
  88. }
  89. void ExportVideoMenu::setEndViewport(const mnd::MandelViewport& mv)
  90. {
  91. ui->endX->setText(QString::fromStdString(mnd::toString(mv.x)));
  92. ui->endY->setText(QString::fromStdString(mnd::toString(mv.y)));
  93. ui->endW->setText(QString::fromStdString(mnd::toString(mv.width)));
  94. ui->endH->setText(QString::fromStdString(mnd::toString(mv.height)));
  95. }
  96. void ExportVideoMenu::on_pathBtn_clicked()
  97. {
  98. QString saveAs = QFileDialog::getSaveFileName(this,
  99. tr("Save exported image"), "",
  100. tr("AVI video (*.avi);;MP4 video (*.mp4);;All Files (*)"));
  101. ui->pathTxt->setText(saveAs);
  102. }