10 #include "ui_renderToFileDialog.h"
16 #include <QDoubleSpinBox>
17 #include <QFileDialog>
18 #include <QImageWriter>
21 #include <QStandardPaths>
25 double s_renderZoom = 1.0;
34 m_ui(new
Ui::RenderToFileDialog) {
38 QList<QByteArray> list = QImageWriter::supportedImageFormats();
39 if (list.size() < 1) {
40 CVLog::Error(
"No supported image format on this platform?!");
46 QString firstExtension(list[0].data());
48 for (
int i = 0; i < list.size(); ++i) {
49 filters.append(QString(
"%1 image (*.%2)\n")
50 .arg(QString(list[i].data()).toUpper())
51 .arg(list[i].data()));
52 if (i == 0 || QString(list[i].data()) ==
"jpg") {
58 settings.beginGroup(
"RenderToFile");
59 selectedFilter = settings.value(
"selectedFilter", firstFilter).toString();
61 settings.value(
"currentPath",
62 QStandardPaths::writableLocation(
63 QStandardPaths::DocumentsLocation))
65 QString selectedExtension =
66 settings.value(
"selectedExtension", firstExtension).toString();
67 QString baseFilename = settings.value(
"baseFilename",
"capture").toString();
70 bool doRenderOverlayItems =
74 m_ui->dontScaleFeaturesCheckBox->setChecked(dontScale);
75 m_ui->renderOverlayItemsCheckBox->setChecked(doRenderOverlayItems);
76 m_ui->filenameLineEdit->setText(
currentPath + QString(
"/") + baseFilename +
77 QString(
".") + selectedExtension);
79 m_ui->zoomDoubleSpinBox->setValue(s_renderZoom);
81 connect(
m_ui->chooseFileButton, SIGNAL(clicked()),
this,
83 connect(
m_ui->zoomDoubleSpinBox, SIGNAL(valueChanged(
double)),
this,
92 QFileInfo fi(
m_ui->filenameLineEdit->text());
94 QString selectedExtension = fi.suffix();
95 QString baseFilename = fi.completeBaseName();
98 settings.beginGroup(
"RenderToFile");
100 settings.setValue(
"selectedExtension", selectedExtension);
102 settings.setValue(
"baseFilename", baseFilename);
109 QString selectedFileName = QFileDialog::getSaveFileName(
110 this, tr(
"Save Image"),
m_ui->filenameLineEdit->text(),
filters,
114 if (selectedFileName.size() < 1)
return;
116 m_ui->filenameLineEdit->setText(selectedFileName);
122 m_ui->dontScaleFeaturesCheckBox->setChecked(
false);
123 m_ui->dontScaleFeaturesCheckBox->setVisible(
false);
124 m_ui->renderOverlayItemsCheckBox->setChecked(
false);
125 m_ui->renderOverlayItemsCheckBox->setVisible(
false);
129 return static_cast<float>(
m_ui->zoomDoubleSpinBox->value());
133 return m_ui->filenameLineEdit->text();
137 return m_ui->dontScaleFeaturesCheckBox->isChecked();
141 return m_ui->renderOverlayItemsCheckBox->isChecked();
147 unsigned w2 =
static_cast<unsigned>(
w * s_renderZoom);
148 unsigned h2 =
static_cast<unsigned>(
h * s_renderZoom);
150 m_ui->finalSizeLabel->setText(QString(
"(%1 x %2)").arg(w2).arg(h2));
static bool Error(const char *format,...)
Display an error dialog with formatted message.
void hideOptions()
Disable and hide the scale and overlay checkboxes.
Ui::RenderToFileDialog * m_ui
bool dontScalePoints() const
On dialog acceptance, returns whether points should be scaled or not.
ccRenderToFileDlg(unsigned baseWidth, unsigned baseHeight, QWidget *parent=0)
Default constructor.
bool renderOverlayItems() const
Whether overlay items should be rendered.
~ccRenderToFileDlg() override
float getZoom() const
On dialog acceptance, returns requested zoom.
QString getFilename() const
On dialog acceptance, returns requested output filename.