ExportVideoMenu.cpp 3.8 KB

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