~ubuntu-branches/ubuntu/vivid/luminance-hdr/vivid-proposed

« back to all changes in this revision

Viewing changes to src/HdrWizard/HdrWizard.cpp

  • Committer: Package Import Robot
  • Author(s): Andreas Metzler
  • Date: 2012-11-03 09:09:25 UTC
  • mfrom: (3.1.1 experimental)
  • Revision ID: package-import@ubuntu.com-20121103090925-6b12x4a4cpqd3u4q
Tags: 2.3.0-2
Upload to unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
 * ----------------------------------------------------------------------
4
4
 * Copyright (C) 2006,2007 Giuseppe Rota
5
5
 *
6
 
 *  This program is free software; you can redistribute it and/or modify
7
 
 *  it under the terms of the GNU General Public License as published by
8
 
 *  the Free Software Foundation; either version 2 of the License, or
9
 
 *  (at your option) any later version.
10
 
 *
11
 
 *  This program is distributed in the hope that it will be useful,
12
 
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 
 *  GNU General Public License for more details.
15
 
 *
16
 
 *  You should have received a copy of the GNU General Public License
17
 
 *  along with this program; if not, write to the Free Software
18
 
 *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
6
 *      This program is free software; you can redistribute it and/or modify
 
7
 *      it under the terms of the GNU General Public License as published by
 
8
 *      the Free Software Foundation; either version 2 of the License, or
 
9
 *      (at your option) any later version.
 
10
 *
 
11
 *      This program is distributed in the hope that it will be useful,
 
12
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 
13
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14
 *      GNU General Public License for more details.
 
15
 *
 
16
 *      You should have received a copy of the GNU General Public License
 
17
 *      along with this program; if not, write to the Free Software
 
18
 *      Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19
19
 * ----------------------------------------------------------------------
20
20
 *
21
21
 * Original Work
45
45
#include "HdrCreation/HdrCreationManager.h"
46
46
 
47
47
HdrWizard::HdrWizard(QWidget *p, QStringList files):
48
 
    QDialog(p),
49
 
    hdrCreationManager(new HdrCreationManager),
50
 
    loadcurvefilename(""),
51
 
    savecurvefilename(""),
52
 
    m_Ui(new Ui::HdrWizard)
 
48
        QDialog(p),
 
49
        hdrCreationManager(new HdrCreationManager),
 
50
        loadcurvefilename(""),
 
51
        savecurvefilename(""),
 
52
        m_Ui(new Ui::HdrWizard)
53
53
{
54
 
    m_Ui->setupUi(this);
 
54
        m_Ui->setupUi(this);
55
55
        setAcceptDrops(true);
56
56
 
57
57
        weights_in_gui[0] = TRIANGULAR;
64
64
        models_in_gui[0] = DEBEVEC;
65
65
        models_in_gui[1] = ROBERTSON;
66
66
 
67
 
    m_Ui->tableWidget->setHorizontalHeaderLabels(QStringList()<< tr("Image Filename") << tr("Exposure"));
68
 
    m_Ui->tableWidget->resizeColumnsToContents();
 
67
        m_Ui->tableWidget->setHorizontalHeaderLabels(QStringList()<< tr("Image Filename") << tr("Exposure"));
 
68
        m_Ui->tableWidget->resizeColumnsToContents();
69
69
        
70
 
    EVgang = new Gang(m_Ui->EVSlider, m_Ui->ImageEVdsb, NULL, NULL, NULL,NULL, -10,10,0);
71
 
 
72
 
    if ( !luminance_options.isShowFirstPageWizard() )
73
 
    {
74
 
        m_Ui->NextFinishButton->setEnabled(false);
75
 
        m_Ui->pagestack->setCurrentIndex(1);
76
 
    }
77
 
 
78
 
    m_Ui->progressBar->hide();
79
 
    m_Ui->textEdit->hide();
80
 
 
81
 
    setupConnections();
82
 
 
83
 
    if (files.size())
84
 
    {
85
 
        m_Ui->pagestack->setCurrentIndex(1);
86
 
 
87
 
        QMetaObject::invokeMethod(this, "loadInputFiles", Qt::QueuedConnection,
88
 
                                  Q_ARG(QStringList, files), Q_ARG(int, files.size()));
89
 
    }
 
70
        EVgang = new Gang(m_Ui->EVSlider, m_Ui->ImageEVdsb, NULL, NULL, NULL,NULL, -10,10,0);
 
71
 
 
72
        if ( !luminance_options.isShowFirstPageWizard() )
 
73
        {
 
74
                m_Ui->NextFinishButton->setEnabled(false);
 
75
                m_Ui->pagestack->setCurrentIndex(1);
 
76
        }
 
77
 
 
78
        m_Ui->progressBar->hide();
 
79
        m_Ui->textEdit->hide();
 
80
 
 
81
        setupConnections();
 
82
 
 
83
        if (files.size())
 
84
        {
 
85
                m_Ui->pagestack->setCurrentIndex(1);
 
86
 
 
87
                QMetaObject::invokeMethod(this, "loadInputFiles", Qt::QueuedConnection,
 
88
                                                                  Q_ARG(QStringList, files), Q_ARG(int, files.size()));
 
89
        }
90
90
}
91
91
 
92
92
HdrWizard::~HdrWizard()
95
95
        qDebug() << "HdrWizard::~HdrWizard()";
96
96
#endif
97
97
        
98
 
    QStringList  fnames = hdrCreationManager->getFileList();
99
 
    int n = fnames.size();
100
 
 
101
 
    for (int i = 0; i < n; i++)
102
 
    {
103
 
        QString fname = hdrCreationManager->getFileList().at(i);
104
 
        QFileInfo qfi(fname);
105
 
        QString thumb_name = QString(luminance_options.getTempDir() + "/"+  qfi.completeBaseName() + ".thumb.jpg");
106
 
        QFile::remove(thumb_name);
107
 
        thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm");
108
 
        QFile::remove(thumb_name);
109
 
    }
110
 
 
111
 
    delete EVgang;
112
 
    delete hdrCreationManager;
 
98
        QStringList  fnames = hdrCreationManager->getFileList();
 
99
        int n = fnames.size();
 
100
 
 
101
        for (int i = 0; i < n; i++)
 
102
        {
 
103
                QString fname = hdrCreationManager->getFileList().at(i);
 
104
                QFileInfo qfi(fname);
 
105
                QString thumb_name = QString(luminance_options.getTempDir() + "/"+      qfi.completeBaseName() + ".thumb.jpg");
 
106
                QFile::remove(thumb_name);
 
107
                thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm");
 
108
                QFile::remove(thumb_name);
 
109
        }
 
110
 
 
111
        delete EVgang;
 
112
        delete hdrCreationManager;
113
113
}
114
114
 
115
115
void HdrWizard::setupConnections()
116
116
{
117
117
        connect(EVgang, SIGNAL(finished()), this, SLOT(editingEVfinished()));
118
 
    connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
119
 
 
120
 
    connect(m_Ui->NextFinishButton,SIGNAL(clicked()),this,SLOT(NextFinishButtonClicked()));
121
 
    connect(m_Ui->cancelButton,SIGNAL(clicked()),this,SLOT(reject()));
122
 
    connect(m_Ui->pagestack,SIGNAL(currentChanged(int)),this,SLOT(currentPageChangedInto(int)));
123
 
 
124
 
    connect(m_Ui->predefConfigsComboBox,SIGNAL(activated(int)),this,
 
118
        connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
 
119
 
 
120
        connect(m_Ui->NextFinishButton,SIGNAL(clicked()),this,SLOT(NextFinishButtonClicked()));
 
121
        connect(m_Ui->cancelButton,SIGNAL(clicked()),this,SLOT(reject()));
 
122
        connect(m_Ui->pagestack,SIGNAL(currentChanged(int)),this,SLOT(currentPageChangedInto(int)));
 
123
 
 
124
        connect(m_Ui->predefConfigsComboBox,SIGNAL(activated(int)),this,
125
125
        SLOT(predefConfigsComboBoxActivated(int)));
126
 
    connect(m_Ui->antighostRespCurveCombobox,SIGNAL(activated(int)),this,
 
126
        connect(m_Ui->antighostRespCurveCombobox,SIGNAL(activated(int)),this,
127
127
        SLOT(antighostRespCurveComboboxActivated(int)));
128
 
    connect(m_Ui->customConfigCheckBox,SIGNAL(toggled(bool)),this,
 
128
        connect(m_Ui->customConfigCheckBox,SIGNAL(toggled(bool)),this,
129
129
        SLOT(customConfigCheckBoxToggled(bool)));
130
 
    connect(m_Ui->triGaussPlateauComboBox,SIGNAL(activated(int)),this,
 
130
        connect(m_Ui->triGaussPlateauComboBox,SIGNAL(activated(int)),this,
131
131
        SLOT(triGaussPlateauComboBoxActivated(int)));
132
 
    connect(m_Ui->predefRespCurveRadioButton,SIGNAL(toggled(bool)),this,
 
132
        connect(m_Ui->predefRespCurveRadioButton,SIGNAL(toggled(bool)),this,
133
133
        SLOT(predefRespCurveRadioButtonToggled(bool)));
134
 
    connect(m_Ui->gammaLinLogComboBox,SIGNAL(activated(int)),this,
 
134
        connect(m_Ui->gammaLinLogComboBox,SIGNAL(activated(int)),this,
135
135
        SLOT(gammaLinLogComboBoxActivated(int)));
136
 
    connect(m_Ui->loadRespCurveFromFileCheckbox,SIGNAL(toggled(bool)),this,
 
136
        connect(m_Ui->loadRespCurveFromFileCheckbox,SIGNAL(toggled(bool)),this,
137
137
        SLOT(loadRespCurveFromFileCheckboxToggled(bool)));
138
 
    connect(m_Ui->loadRespCurveFileButton,SIGNAL(clicked()),this,
 
138
        connect(m_Ui->loadRespCurveFileButton,SIGNAL(clicked()),this,
139
139
        SLOT(loadRespCurveFileButtonClicked()));
140
 
    connect(m_Ui->saveRespCurveToFileCheckbox,SIGNAL(toggled(bool)),this,
 
140
        connect(m_Ui->saveRespCurveToFileCheckbox,SIGNAL(toggled(bool)),this,
141
141
        SLOT(saveRespCurveToFileCheckboxToggled(bool)));
142
 
    connect(m_Ui->saveRespCurveFileButton,SIGNAL(clicked()),this,
 
142
        connect(m_Ui->saveRespCurveFileButton,SIGNAL(clicked()),this,
143
143
        SLOT(saveRespCurveFileButtonClicked()));
144
 
    connect(m_Ui->modelComboBox,SIGNAL(activated(int)),this,
 
144
        connect(m_Ui->modelComboBox,SIGNAL(activated(int)),this,
145
145
        SLOT(modelComboBoxActivated(int)));
146
 
    connect(m_Ui->RespCurveFileLoadedLineEdit,SIGNAL(textChanged(const QString&)),this,
 
146
        connect(m_Ui->RespCurveFileLoadedLineEdit,SIGNAL(textChanged(const QString&)),this,
147
147
        SLOT(loadRespCurveFilename(const QString&)));
148
 
    connect(m_Ui->loadImagesButton,SIGNAL(clicked()),this,SLOT(loadImagesButtonClicked()));
149
 
    connect(m_Ui->removeImageButton,SIGNAL(clicked()),this,SLOT(removeImageButtonClicked()));
150
 
    connect(m_Ui->clearListButton,SIGNAL(clicked()),this,SLOT(clearListButtonClicked()));
 
148
        connect(m_Ui->loadImagesButton,SIGNAL(clicked()),this,SLOT(loadImagesButtonClicked()));
 
149
        connect(m_Ui->removeImageButton,SIGNAL(clicked()),this,SLOT(removeImageButtonClicked()));
 
150
        connect(m_Ui->clearListButton,SIGNAL(clicked()),this,SLOT(clearListButtonClicked()));
151
151
        connect(hdrCreationManager, SIGNAL(fileLoaded(int,QString,float)), this, SLOT(fileLoaded(int,QString,float)));
152
152
        connect(hdrCreationManager,SIGNAL(finishedLoadingInputFiles(QStringList)),this, SLOT(finishedLoadingInputFiles(QStringList)));
153
153
        connect(hdrCreationManager,SIGNAL(errorWhileLoading(QString)),this, SLOT(errorWhileLoading(QString)));
154
154
        connect(hdrCreationManager,SIGNAL(expotimeValueChanged(float,int)),this, SLOT(updateGraphicalEVvalue(float,int)));
155
 
        connect(hdrCreationManager, SIGNAL(finishedAligning()), this, SLOT(finishedAligning()));
 
155
        connect(hdrCreationManager, SIGNAL(finishedAligning(int)), this, SLOT(finishedAligning(int)));
156
156
        connect(hdrCreationManager, SIGNAL(ais_failed(QProcess::ProcessError)), this, SLOT(ais_failed(QProcess::ProcessError)));
157
157
        connect(hdrCreationManager, SIGNAL(aisDataReady(QByteArray)), this, SLOT(writeAisData(QByteArray)));
158
158
 
161
161
}
162
162
 
163
163
void HdrWizard::loadImagesButtonClicked() {
164
 
    QString filetypes;
165
 
    // when changing these filetypes, also change in DnDOption - for Drag and Drop
166
 
    filetypes += tr("All formats (*.jpeg *.jpg *.tiff *.tif *.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw");
167
 
    filetypes += tr("*.JPEG *.JPG *.TIFF *.TIF *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW);;");
168
 
    filetypes += tr("JPEG (*.jpeg *.jpg *.JPEG *.JPG);;");
169
 
    filetypes += tr("TIFF Images (*.tiff *.tif *.TIFF *.TIF);;");
170
 
    filetypes += tr("RAW Images (*.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw");
171
 
    filetypes += tr("*.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW)");
172
 
 
173
 
    QString RecentDirInputLDRs = luminance_options.getDefaultPathLdrIn();
174
 
 
175
 
    QStringList files = QFileDialog::getOpenFileNames(this, tr("Select the input images"), RecentDirInputLDRs, filetypes );
176
 
 
177
 
    if (!files.isEmpty() ) {
 
164
        QString filetypes;
 
165
        // when changing these filetypes, also change in DnDOption - for Drag and Drop
 
166
        filetypes += tr("All formats (*.jpeg *.jpg *.tiff *.tif *.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw");
 
167
        filetypes += tr("*.JPEG *.JPG *.TIFF *.TIF *.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW);;");
 
168
        filetypes += tr("JPEG (*.jpeg *.jpg *.JPEG *.JPG);;");
 
169
        filetypes += tr("TIFF Images (*.tiff *.tif *.TIFF *.TIF);;");
 
170
        filetypes += tr("RAW Images (*.crw *.cr2 *.nef *.dng *.mrw *.orf *.kdc *.dcr *.arw *.raf *.ptx *.pef *.x3f *.raw *.sr2 *.rw2 *.3fr *.mef *.mos *.erf *.nrw *.srw");
 
171
        filetypes += tr("*.CRW *.CR2 *.NEF *.DNG *.MRW *.ORF *.KDC *.DCR *.ARW *.RAF *.PTX *.PEF *.X3F *.RAW *.SR2 *.RW2 *.3FR *.MEF *.MOS *.ERF *.NRW *.SRW)");
 
172
 
 
173
        QString RecentDirInputLDRs = luminance_options.getDefaultPathLdrIn();
 
174
 
 
175
        QStringList files = QFileDialog::getOpenFileNames(this, tr("Select the input images"), RecentDirInputLDRs, filetypes );
 
176
 
 
177
        if (!files.isEmpty() ) {
178
178
        QFileInfo qfi(files.at(0));
179
 
        // if the new dir, the one just chosen by the user, is different from the one stored in the settings, update the luminance_options.
 
179
                // if the new dir, the one just chosen by the user, is different from the one stored in the settings, update the luminance_options.
180
180
        if (RecentDirInputLDRs != qfi.path()) {
181
181
                // update internal field variable
182
182
                RecentDirInputLDRs = qfi.path();
183
 
                luminance_options.setDefaultPathLdrIn(RecentDirInputLDRs);
 
183
                                luminance_options.setDefaultPathLdrIn(RecentDirInputLDRs);
184
184
        }
185
185
        //loadImagesButton->setEnabled(false);
186
 
    m_Ui->confirmloadlabel->setText("<center><h3><b>"+tr("Loading...")+"</b></h3></center>");
 
186
        m_Ui->confirmloadlabel->setText("<center><h3><b>"+tr("Loading...")+"</b></h3></center>");
187
187
        loadInputFiles(files, files.count());
188
188
        QApplication::setOverrideCursor(QCursor(Qt::BusyCursor));
189
 
    } //if (!files.isEmpty())
 
189
        } //if (!files.isEmpty())
190
190
}
191
191
 
192
192
void HdrWizard::removeImageButtonClicked()
193
193
{
194
 
    disconnect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
195
 
    int index = m_Ui->tableWidget->currentRow();
 
194
        disconnect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
 
195
        int index = m_Ui->tableWidget->currentRow();
196
196
 
197
 
    if (m_Ui->tableWidget->rowCount() == 1)
 
197
        if (m_Ui->tableWidget->rowCount() == 1)
198
198
        {
199
199
                clearListButtonClicked();
200
200
        }
202
202
        {
203
203
                QString fname = hdrCreationManager->getFileList().at(index);
204
204
                QFileInfo qfi(fname);
205
 
                QString thumb_name = QString(luminance_options.getTempDir() + "/"+  qfi.completeBaseName() + ".thumb.jpg");
 
205
                                QString thumb_name = QString(luminance_options.getTempDir() + "/"+      qfi.completeBaseName() + ".thumb.jpg");
206
206
                QFile::remove(thumb_name);
207
 
                thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm");
 
207
                                thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm");
208
208
                QFile::remove(thumb_name);
209
209
 
210
210
                hdrCreationManager->remove(index);
211
 
        m_Ui->tableWidget->removeRow(index);
212
 
        inputHdrFileSelected(m_Ui->tableWidget->currentRow());
 
211
                m_Ui->tableWidget->removeRow(index);
 
212
                inputHdrFileSelected(m_Ui->tableWidget->currentRow());
213
213
        }
214
 
    connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
 
214
        connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
215
215
}
216
216
 
217
217
void HdrWizard::clearListButtonClicked()
218
218
{
219
 
    disconnect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
220
 
    m_Ui->previewLabel->clear();
221
 
    for (int i = m_Ui->tableWidget->rowCount()-1; i >= 0; --i)
222
 
        m_Ui->tableWidget->removeRow(i);
 
219
        disconnect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
 
220
        m_Ui->previewLabel->clear();
 
221
        for (int i = m_Ui->tableWidget->rowCount()-1; i >= 0; --i)
 
222
                m_Ui->tableWidget->removeRow(i);
223
223
 
224
224
        QStringList  fnames = hdrCreationManager->getFileList();
225
225
        int n = fnames.size();
227
227
        for (int i = 0; i < n; i++) {
228
228
                QString fname = hdrCreationManager->getFileList().at(i);
229
229
                QFileInfo qfi(fname);
230
 
                QString thumb_name = QString(luminance_options.getTempDir() + "/"+  qfi.completeBaseName() + ".thumb.jpg");
 
230
                                QString thumb_name = QString(luminance_options.getTempDir() + "/"+      qfi.completeBaseName() + ".thumb.jpg");
231
231
                QFile::remove(thumb_name);
232
 
                thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm");
 
232
                                thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm");
233
233
                QFile::remove(thumb_name);
234
234
        }
235
235
 
236
236
        hdrCreationManager->reset();
237
 
    m_Ui->removeImageButton->setEnabled(false);
238
 
    m_Ui->clearListButton->setEnabled(false);
239
 
    m_Ui->EVgroupBox->setEnabled(false);
240
 
    m_Ui->alignGroupBox->setEnabled(false);
 
237
        m_Ui->removeImageButton->setEnabled(false);
 
238
        m_Ui->clearListButton->setEnabled(false);
 
239
        m_Ui->EVgroupBox->setEnabled(false);
 
240
        m_Ui->alignGroupBox->setEnabled(false);
241
241
        //EVSlider->setValue(0);
242
 
    m_Ui->NextFinishButton->setEnabled(false);
243
 
    m_Ui->progressBar->setValue(0);
244
 
    m_Ui->progressBar->hide();
245
 
    m_Ui->confirmloadlabel->setText("<center><h3><b>"+tr("Start loading a set of images with different exposure")+"</b></h3></center>");
246
 
    connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
 
242
        m_Ui->NextFinishButton->setEnabled(false);
 
243
        m_Ui->progressBar->setValue(0);
 
244
        m_Ui->progressBar->hide();
 
245
        m_Ui->confirmloadlabel->setText("<center><h3><b>"+tr("Start loading a set of images with different exposure")+"</b></h3></center>");
 
246
        connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
247
247
}
248
248
 
249
249
void HdrWizard::dragEnterEvent(QDragEnterEvent *event) {
250
 
    if (m_Ui->loadImagesButton->isEnabled())
 
250
        if (m_Ui->loadImagesButton->isEnabled())
251
251
                event->acceptProposedAction();
252
252
}
253
253
 
262
262
}
263
263
 
264
264
void HdrWizard::loadInputFiles(QStringList files, int count) {
265
 
    int shift = m_Ui->tableWidget->rowCount();
266
 
    m_Ui->tableWidget->setEnabled(false);
267
 
    m_Ui->tableWidget->setRowCount(shift + count);
268
 
    m_Ui->progressBar->setMaximum(count);
269
 
    m_Ui->progressBar->setValue(0);
 
265
        int shift = m_Ui->tableWidget->rowCount();
 
266
        m_Ui->tableWidget->setEnabled(false);
 
267
        m_Ui->tableWidget->setRowCount(shift + count);
 
268
        m_Ui->progressBar->setMaximum(count);
 
269
        m_Ui->progressBar->setValue(0);
270
270
        //connect(hdrCreationManager, SIGNAL(maximumValue(int)), progressBar, SLOT(setMaximum(int)));
271
271
        //connect(hdrCreationManager, SIGNAL(nextstep(int)), progressBar, SLOT(setValue(int)));
272
 
    m_Ui->progressBar->show();
 
272
        m_Ui->progressBar->show();
273
273
        
274
274
        hdrCreationManager->setShift(shift);
275
275
        hdrCreationManager->setFileList(files);
281
281
        updateGraphicalEVvalue(expotime,index);
282
282
        //fill graphical list
283
283
        QFileInfo qfi(fname);
284
 
    m_Ui->tableWidget->setItem(index,0,new QTableWidgetItem(qfi.fileName()));
285
 
    m_Ui->progressBar->setValue(m_Ui->progressBar->value()+1); // increment progressbar
 
284
        m_Ui->tableWidget->setItem(index,0,new QTableWidgetItem(qfi.fileName()));
 
285
        m_Ui->progressBar->setValue(m_Ui->progressBar->value()+1); // increment progressbar
286
286
}
287
287
 
288
288
void HdrWizard::finishedLoadingInputFiles(QStringList filesLackingExif) {
289
289
        if (filesLackingExif.size() == 0) {
290
 
        m_Ui->NextFinishButton->setEnabled(true);
291
 
        m_Ui->confirmloadlabel->setText(tr("<center><font color=\"#008400\"><h3><b>Images Loaded.</b></h3></font></center>"));
 
290
                m_Ui->NextFinishButton->setEnabled(true);
 
291
                m_Ui->confirmloadlabel->setText(tr("<center><font color=\"#008400\"><h3><b>Images Loaded.</b></h3></font></center>"));
292
292
        } else {
293
293
                QString warning_message = (QString(tr("<font color=\"#FF0000\"><h3><b>WARNING:</b></h3></font>\
294
294
                Luminance HDR was not able to find the relevant <i>EXIF</i> tags\nfor the following images:\n <ul>\
300
300
                <hr><b>HINT:</b> Losing EXIF data usually happens when you preprocess your pictures.<br>\
301
301
                You can perform a <b>one-to-one copy of the exif data</b> between two sets of images via the <i><b>\"Tools->Copy Exif Data...\"</b></i> menu item."))).arg(filesLackingExif.join(""));
302
302
                QMessageBox::warning(this,tr("EXIF data not found"),warning_message);
303
 
        m_Ui->confirmloadlabel->setText(QString(tr("<center><h3><b>To proceed you need to manually set the exposure values.<br><font color=\"#FF0000\">%1</font> values still required.</b></h3></center>")).arg(filesLackingExif.size()));
 
303
                m_Ui->confirmloadlabel->setText(QString(tr("<center><h3><b>To proceed you need to manually set the exposure values.<br><font color=\"#FF0000\">%1</font> values still required.</b></h3></center>")).arg(filesLackingExif.size()));
304
304
        }
305
305
        //do not load any more images
306
306
        //loadImagesButton->setEnabled(false);
307
307
        //graphical fix
308
 
    m_Ui->tableWidget->resizeColumnsToContents();
 
308
        m_Ui->tableWidget->resizeColumnsToContents();
309
309
        //enable user EV input
310
 
    m_Ui->EVgroupBox->setEnabled(true);
311
 
    m_Ui->tableWidget->selectRow(0);
312
 
    m_Ui->tableWidget->setEnabled(true);
 
310
        m_Ui->EVgroupBox->setEnabled(true);
 
311
        m_Ui->tableWidget->selectRow(0);
 
312
        m_Ui->tableWidget->setEnabled(true);
313
313
 
314
314
        //FIXME mtb doesn't work with 16bit data yet (and probably ever)
315
 
    if ((m_Ui->tableWidget->rowCount() >= 2) && (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE)) {
316
 
        m_Ui->alignCheckBox->setEnabled(true);
317
 
        m_Ui->alignGroupBox->setEnabled(true);
318
 
        }
319
 
    else if ((m_Ui->tableWidget->rowCount() >= 2) && (hdrCreationManager->inputImageType() == HdrCreationManager::MDR_INPUT_TYPE)) {
320
 
        m_Ui->alignCheckBox->setEnabled(true);
321
 
        m_Ui->alignGroupBox->setEnabled(true);
322
 
        m_Ui->mtb_radioButton->setEnabled(false);
323
 
        }
324
 
    m_Ui->removeImageButton->setEnabled(true);
325
 
    m_Ui->clearListButton->setEnabled(true);
326
 
    m_Ui->progressBar->hide();
 
315
        if ((m_Ui->tableWidget->rowCount() >= 2) && (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE)) {
 
316
                m_Ui->alignCheckBox->setEnabled(true);
 
317
                m_Ui->alignGroupBox->setEnabled(true);
 
318
        }
 
319
        else if ((m_Ui->tableWidget->rowCount() >= 2) && (hdrCreationManager->inputImageType() == HdrCreationManager::MDR_INPUT_TYPE)) {
 
320
                m_Ui->alignCheckBox->setEnabled(true);
 
321
                m_Ui->alignGroupBox->setEnabled(true);
 
322
                m_Ui->mtb_radioButton->setEnabled(false);
 
323
        }
 
324
        m_Ui->removeImageButton->setEnabled(true);
 
325
        m_Ui->clearListButton->setEnabled(true);
 
326
        m_Ui->progressBar->hide();
327
327
        QApplication::restoreOverrideCursor();
328
328
}
329
329
 
330
330
void HdrWizard::errorWhileLoading(QString error) {
331
 
    disconnect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
332
 
    m_Ui->tableWidget->clear();
333
 
    m_Ui->tableWidget->setRowCount(0);
334
 
    m_Ui->tableWidget->setEnabled(true);
335
 
    m_Ui->progressBar->setValue(0);
336
 
    m_Ui->progressBar->hide();
337
 
    m_Ui->previewLabel->clear();
338
 
    m_Ui->removeImageButton->setEnabled(false);
339
 
    m_Ui->clearListButton->setEnabled(false);
340
 
    m_Ui->NextFinishButton->setEnabled(false);
341
 
    m_Ui->EVgroupBox->setEnabled(false);
 
331
        disconnect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
 
332
        m_Ui->tableWidget->clear();
 
333
        m_Ui->tableWidget->setRowCount(0);
 
334
        m_Ui->tableWidget->setEnabled(true);
 
335
        m_Ui->progressBar->setValue(0);
 
336
        m_Ui->progressBar->hide();
 
337
        m_Ui->previewLabel->clear();
 
338
        m_Ui->removeImageButton->setEnabled(false);
 
339
        m_Ui->clearListButton->setEnabled(false);
 
340
        m_Ui->NextFinishButton->setEnabled(false);
 
341
        m_Ui->EVgroupBox->setEnabled(false);
342
342
        QMessageBox::critical(this,tr("Loading Error: "), error);
343
343
        hdrCreationManager->clearlists(true);
344
344
        QApplication::restoreOverrideCursor();
345
 
    m_Ui->confirmloadlabel->setText("<center><h3><b>"+tr("Start loading a set of images with different exposure")+"</b></h3></center>");
346
 
    connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
 
345
        m_Ui->confirmloadlabel->setText("<center><h3><b>"+tr("Start loading a set of images with different exposure")+"</b></h3></center>");
 
346
        connect(m_Ui->tableWidget, SIGNAL(currentCellChanged(int,int,int,int)), this, SLOT(inputHdrFileSelected(int)));
347
347
}
348
348
 
349
349
void HdrWizard::updateGraphicalEVvalue(float expotime, int index_in_table) {
355
355
                ts << right << forcesign << fixed << log2f(expotime) << " EV";
356
356
                QTableWidgetItem *tableitem = new QTableWidgetItem(EVdisplay);
357
357
                tableitem->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
358
 
        m_Ui->tableWidget->setItem(index_in_table,1,tableitem);
 
358
                m_Ui->tableWidget->setItem(index_in_table,1,tableitem);
359
359
        } else {
360
360
                //if image doesn't contain (the required) exif tags
361
361
                QTableWidgetItem *tableitem = new QTableWidgetItem(QString(tr("Unknown")));
362
362
                tableitem->setTextAlignment(Qt::AlignRight | Qt::AlignVCenter);
363
363
                tableitem->setBackground(QBrush(Qt::yellow));
364
364
                tableitem->setForeground(QBrush(Qt::red));
365
 
        m_Ui->tableWidget->setItem(index_in_table,1,tableitem);
 
365
                m_Ui->tableWidget->setItem(index_in_table,1,tableitem);
366
366
        }
367
367
}
368
368
 
369
 
void HdrWizard::finishedAligning() {
 
369
void HdrWizard::finishedAligning(int exitcode) {
370
370
        QApplication::restoreOverrideCursor();
371
 
    m_Ui->NextFinishButton->setEnabled(true);
372
 
    m_Ui->pagestack->setCurrentIndex(2);
373
 
    m_Ui->progressBar->hide();
 
371
        if (exitcode != 0)
 
372
                QMessageBox::warning(this,tr("Error..."),tr("align_image_stack failed to align images."));
 
373
        m_Ui->NextFinishButton->setEnabled(true);
 
374
        m_Ui->pagestack->setCurrentIndex(2);
 
375
        m_Ui->progressBar->hide();
374
376
}
375
377
 
376
378
void HdrWizard::ais_failed(QProcess::ProcessError e) {
388
390
                QMessageBox::warning(this,tr("Error..."),tr("An unknown error occurred while executing the \"<em>align_image_stack</em>\" application..."));
389
391
        break;
390
392
        }
391
 
    m_Ui->progressBar->hide();
392
 
    m_Ui->textEdit->hide();
 
393
        m_Ui->progressBar->hide();
 
394
        m_Ui->textEdit->hide();
393
395
        QApplication::restoreOverrideCursor();
394
 
    m_Ui->alignGroupBox->setEnabled(true);
395
 
    m_Ui->alignCheckBox->setChecked(false);
396
 
    m_Ui->NextFinishButton->setEnabled(true);
397
 
    m_Ui->confirmloadlabel->setText("<center><h3><b>"+tr("Now click on next button")+"</b></h3></center>");
 
396
        m_Ui->alignGroupBox->setEnabled(true);
 
397
        m_Ui->alignCheckBox->setChecked(false);
 
398
        m_Ui->NextFinishButton->setEnabled(true);
 
399
        m_Ui->confirmloadlabel->setText("<center><h3><b>"+tr("Now click on next button")+"</b></h3></center>");
398
400
}
399
401
 
400
402
void HdrWizard::customConfigCheckBoxToggled(bool want_custom) {
401
403
        if (!want_custom) {
402
 
        if (!m_Ui->antighostingCheckBox->isChecked()) {
403
 
            m_Ui->label_RespCurve_Antighost->setDisabled(true);
404
 
            m_Ui->antighostRespCurveCombobox->setDisabled(true);
405
 
            m_Ui->label_Iterations->setDisabled(true);
406
 
            m_Ui->spinBoxIterations->setDisabled(true);
 
404
                if (!m_Ui->antighostingCheckBox->isChecked()) {
 
405
                        m_Ui->label_RespCurve_Antighost->setDisabled(true);
 
406
                        m_Ui->antighostRespCurveCombobox->setDisabled(true);
 
407
                        m_Ui->label_Iterations->setDisabled(true);
 
408
                        m_Ui->spinBoxIterations->setDisabled(true);
407
409
                        //temporary disable anti-ghosting until it's fixed
408
 
            m_Ui->antighostingCheckBox->setDisabled(true);
 
410
                        m_Ui->antighostingCheckBox->setDisabled(true);
409
411
                }
410
412
                else {
411
 
            m_Ui->label_predef_configs->setDisabled(true);
412
 
            m_Ui->predefConfigsComboBox->setDisabled(true);
413
 
            m_Ui->label_weights->setDisabled(true);
414
 
            m_Ui->lineEdit_showWeight->setDisabled(true);
415
 
            m_Ui->label_resp->setDisabled(true);
416
 
            m_Ui->lineEdit_show_resp->setDisabled(true);
417
 
            m_Ui->label_model->setDisabled(true);
418
 
            m_Ui->lineEdit_showmodel->setDisabled(true);
 
413
                        m_Ui->label_predef_configs->setDisabled(true);
 
414
                        m_Ui->predefConfigsComboBox->setDisabled(true);
 
415
                        m_Ui->label_weights->setDisabled(true);
 
416
                        m_Ui->lineEdit_showWeight->setDisabled(true);
 
417
                        m_Ui->label_resp->setDisabled(true);
 
418
                        m_Ui->lineEdit_show_resp->setDisabled(true);
 
419
                        m_Ui->label_model->setDisabled(true);
 
420
                        m_Ui->lineEdit_showmodel->setDisabled(true);
419
421
                }
420
 
        predefConfigsComboBoxActivated(m_Ui->predefConfigsComboBox->currentIndex());
421
 
        m_Ui->NextFinishButton->setText(tr("&Finish"));
 
422
                predefConfigsComboBoxActivated(m_Ui->predefConfigsComboBox->currentIndex());
 
423
                m_Ui->NextFinishButton->setText(tr("&Finish"));
422
424
        } else {
423
 
        m_Ui->NextFinishButton->setText(tr("&Next >"));
 
425
                m_Ui->NextFinishButton->setText(tr("&Next >"));
424
426
        }
425
427
}
426
428
 
427
429
void HdrWizard::predefRespCurveRadioButtonToggled(bool want_predef_resp_curve) {
428
430
        if (want_predef_resp_curve) {
429
431
                //ENABLE load_curve_button and lineedit when "load from file" is checked.
430
 
        if (!m_Ui->loadRespCurveFromFileCheckbox->isChecked()) {
431
 
            m_Ui->loadRespCurveFileButton->setEnabled(false);
432
 
            m_Ui->RespCurveFileLoadedLineEdit->setEnabled(false);
 
432
                if (!m_Ui->loadRespCurveFromFileCheckbox->isChecked()) {
 
433
                        m_Ui->loadRespCurveFileButton->setEnabled(false);
 
434
                        m_Ui->RespCurveFileLoadedLineEdit->setEnabled(false);
433
435
                }
434
 
        loadRespCurveFromFileCheckboxToggled(m_Ui->loadRespCurveFromFileCheckbox->isChecked());
 
436
                loadRespCurveFromFileCheckboxToggled(m_Ui->loadRespCurveFromFileCheckbox->isChecked());
435
437
        } else { //want to recover response curve via robertson02
436
438
                //update hdrCreationManager->chosen_config
437
439
                hdrCreationManager->chosen_config.response_curve = FROM_ROBERTSON;
438
440
                //always enable
439
 
        m_Ui->NextFinishButton->setEnabled(true);
440
 
        saveRespCurveToFileCheckboxToggled(m_Ui->saveRespCurveToFileCheckbox->isChecked());
 
441
                m_Ui->NextFinishButton->setEnabled(true);
 
442
                saveRespCurveToFileCheckboxToggled(m_Ui->saveRespCurveToFileCheckbox->isChecked());
441
443
        }
442
444
}
443
445
 
444
446
void HdrWizard::loadRespCurveFromFileCheckboxToggled( bool checkedfile ) {
445
 
    //if checkbox is checked AND we have a valid filename
446
 
    if (checkedfile && loadcurvefilename != "") {
 
447
        //if checkbox is checked AND we have a valid filename
 
448
        if (checkedfile && loadcurvefilename != "") {
447
449
        //update chosen config
448
450
        hdrCreationManager->chosen_config.response_curve = FROM_FILE;
449
451
        hdrCreationManager->chosen_config.LoadCurveFromFilename = strdup(QFile::encodeName(loadcurvefilename).constData());
450
452
        //and ENABLE nextbutton
451
 
    m_Ui->NextFinishButton->setEnabled(true);
452
 
    }
453
 
    //if checkbox is checked AND no valid filename
454
 
    else  if (checkedfile && loadcurvefilename == "") {
 
453
        m_Ui->NextFinishButton->setEnabled(true);
 
454
        }
 
455
        //if checkbox is checked AND no valid filename
 
456
        else  if (checkedfile && loadcurvefilename == "") {
455
457
        // DISABLE nextbutton until situation is fixed
456
 
    m_Ui->NextFinishButton->setEnabled(false);
457
 
//      qDebug("Load checkbox is checked AND no valid filename");
458
 
    }
459
 
    //checkbox not checked
460
 
    else {
 
458
        m_Ui->NextFinishButton->setEnabled(false);
 
459
//      qDebug("Load checkbox is checked AND no valid filename");
 
460
        }
 
461
        //checkbox not checked
 
462
        else {
461
463
        // update chosen config
462
 
    hdrCreationManager->chosen_config.response_curve = responses_in_gui[m_Ui->gammaLinLogComboBox->currentIndex()];
 
464
        hdrCreationManager->chosen_config.response_curve = responses_in_gui[m_Ui->gammaLinLogComboBox->currentIndex()];
463
465
        hdrCreationManager->chosen_config.LoadCurveFromFilename = "";
464
466
        //and ENABLE nextbutton
465
 
    m_Ui->NextFinishButton->setEnabled(true);
466
 
    }
 
467
        m_Ui->NextFinishButton->setEnabled(true);
 
468
        }
467
469
}
468
470
 
469
471
void HdrWizard::saveRespCurveToFileCheckboxToggled( bool checkedfile ) {
470
472
        //if checkbox is checked AND we have a valid filename
471
473
        if (checkedfile && savecurvefilename != "") {
472
474
                hdrCreationManager->chosen_config.SaveCurveToFilename = strdup(QFile::encodeName(savecurvefilename).constData());
473
 
        m_Ui->NextFinishButton->setEnabled(true);
 
475
                m_Ui->NextFinishButton->setEnabled(true);
474
476
        }
475
477
        //if checkbox is checked AND no valid filename
476
478
        else  if (checkedfile && savecurvefilename == "") {
477
479
                // DISABLE nextbutton until situation is fixed
478
 
        m_Ui->NextFinishButton->setEnabled(false);
 
480
                m_Ui->NextFinishButton->setEnabled(false);
479
481
        }
480
482
        //checkbox not checked
481
483
        else {
482
484
                hdrCreationManager->chosen_config.SaveCurveToFilename = "";
483
485
                //and ENABLE nextbutton
484
 
        m_Ui->NextFinishButton->setEnabled(true);
 
486
                m_Ui->NextFinishButton->setEnabled(true);
485
487
        }
486
488
}
487
489
 
488
490
void HdrWizard::NextFinishButtonClicked() {
489
 
    int currentpage = m_Ui->pagestack->currentIndex();
 
491
        int currentpage = m_Ui->pagestack->currentIndex();
490
492
        switch (currentpage) {
491
493
        case 0:
492
 
        m_Ui->pagestack->setCurrentIndex(1);
493
 
        m_Ui->NextFinishButton->setDisabled(true);
 
494
                m_Ui->pagestack->setCurrentIndex(1);
 
495
                m_Ui->NextFinishButton->setDisabled(true);
494
496
                break;
495
497
        case 1:
496
498
                //now align, if requested
497
 
        if (m_Ui->alignCheckBox->isChecked()) {
 
499
                if (m_Ui->alignCheckBox->isChecked()) {
498
500
                        QApplication::setOverrideCursor(QCursor(Qt::BusyCursor));
499
 
            m_Ui->confirmloadlabel->setText("<center><h3><b>"+tr("Aligning...")+"</b></h3></center>");
500
 
            m_Ui->loadImagesButton->setDisabled(true);
501
 
            m_Ui->removeImageButton->setDisabled(true);
502
 
            m_Ui->clearListButton->setDisabled(true);
503
 
            m_Ui->previewLabel->setDisabled(true);
504
 
            m_Ui->NextFinishButton->setDisabled(true);
505
 
            m_Ui->alignGroupBox->setDisabled(true);
506
 
            m_Ui->EVgroupBox->setDisabled(true);
507
 
            m_Ui->tableWidget->setDisabled(true);
 
501
                        m_Ui->confirmloadlabel->setText("<center><h3><b>"+tr("Aligning...")+"</b></h3></center>");
 
502
                        m_Ui->loadImagesButton->setDisabled(true);
 
503
                        m_Ui->removeImageButton->setDisabled(true);
 
504
                        m_Ui->clearListButton->setDisabled(true);
 
505
                        m_Ui->previewLabel->setDisabled(true);
 
506
                        m_Ui->NextFinishButton->setDisabled(true);
 
507
                        m_Ui->alignGroupBox->setDisabled(true);
 
508
                        m_Ui->EVgroupBox->setDisabled(true);
 
509
                        m_Ui->tableWidget->setDisabled(true);
508
510
                        repaint();
509
 
            m_Ui->progressBar->setMaximum(0);
510
 
            m_Ui->progressBar->setMinimum(0);
511
 
            m_Ui->progressBar->show();
512
 
            if (m_Ui->ais_radioButton->isChecked()) {
513
 
                m_Ui->textEdit->show();
 
511
                        m_Ui->progressBar->setMaximum(0);
 
512
                        m_Ui->progressBar->setMinimum(0);
 
513
                        m_Ui->progressBar->show();
 
514
                        if (m_Ui->ais_radioButton->isChecked()) {
 
515
                                m_Ui->textEdit->show();
514
516
                                hdrCreationManager->align_with_ais();
515
517
                        }
516
518
                        else
517
519
                                hdrCreationManager->align_with_mtb();
518
520
                        return;
519
521
                }
520
 
        m_Ui->pagestack->setCurrentIndex(2);
 
522
                m_Ui->pagestack->setCurrentIndex(2);
521
523
                break;
522
524
        case 2:
523
 
        if(!m_Ui->customConfigCheckBox->isChecked()) {
 
525
                if(!m_Ui->customConfigCheckBox->isChecked()) {
524
526
                        currentpage = 3;
525
527
                } else {
526
 
            m_Ui->pagestack->setCurrentIndex(3);
 
528
                        m_Ui->pagestack->setCurrentIndex(3);
527
529
                        break;
528
530
                }
529
531
        case 3:
530
 
        m_Ui->settings_label->setText("<center><h3><b>"+tr("Processing...")+"</b></h3></center>");
531
 
        m_Ui->customize_label->setText("<center><h3><b>"+tr("Processing...")+"</b></h3></center>");
 
532
                m_Ui->settings_label->setText("<center><h3><b>"+tr("Processing...")+"</b></h3></center>");
 
533
                m_Ui->customize_label->setText("<center><h3><b>"+tr("Processing...")+"</b></h3></center>");
532
534
                repaint();
533
535
                QApplication::setOverrideCursor(QCursor(Qt::BusyCursor));
534
 
        PfsFrameHDR = hdrCreationManager->createHdr(m_Ui->antighostingCheckBox->isChecked(),m_Ui->spinBoxIterations->value());
 
536
                PfsFrameHDR = hdrCreationManager->createHdr(m_Ui->antighostingCheckBox->isChecked(),m_Ui->spinBoxIterations->value());
535
537
                QApplication::restoreOverrideCursor();
536
538
                accept();
537
539
                return;
540
542
 
541
543
void HdrWizard::currentPageChangedInto(int newindex) {
542
544
        //predefined configs page
 
545
        // m_Ui->textEdit->hide();
543
546
        if (newindex == 2) {
544
547
                hdrCreationManager->removeTempFiles();
545
 
        m_Ui->NextFinishButton->setText(tr("&Finish"));
 
548
                m_Ui->NextFinishButton->setText(tr("&Finish"));
546
549
                //when at least 2 LDR inputs perform Manual Alignment
547
550
                int numldrs = hdrCreationManager->getLDRList().size();
548
 
                if (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE && numldrs >= 2) {
 
551
                //if (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE && numldrs >= 2) {
 
552
                if (numldrs >= 2) {
549
553
                        this->setDisabled(true);
550
554
                        //fix for some platforms/Qt versions: makes sure LDR images have alpha channel
551
 
                        hdrCreationManager->makeSureLDRsHaveAlpha();
 
555
                        if (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE)
 
556
                                hdrCreationManager->makeSureLDRsHaveAlpha();
552
557
                        EditingTools *editingtools = new EditingTools(hdrCreationManager);
553
558
                        if (editingtools->exec() == QDialog::Accepted) {
554
559
                                this->setDisabled(false);
560
565
        }
561
566
        else if (newindex == 3) { //custom config
562
567
                predefConfigsComboBoxActivated(1);
563
 
        m_Ui->NextFinishButton->setText(tr("&Finish"));
 
568
                m_Ui->NextFinishButton->setText(tr("&Finish"));
564
569
                return;
565
570
        }
566
571
}
576
581
                        QDir::currentPath(),
577
582
                        tr("Camera response curve (*.m);;All Files (*)") );
578
583
        if (!loadcurvefilename.isEmpty())  {
579
 
        m_Ui->RespCurveFileLoadedLineEdit->setText(loadcurvefilename);
580
 
        loadRespCurveFromFileCheckboxToggled(m_Ui->loadRespCurveFromFileCheckbox->isChecked());
 
584
                m_Ui->RespCurveFileLoadedLineEdit->setText(loadcurvefilename);
 
585
                loadRespCurveFromFileCheckboxToggled(m_Ui->loadRespCurveFromFileCheckbox->isChecked());
581
586
        }
582
587
}
583
588
 
588
593
                        QDir::currentPath(),
589
594
                        tr("Camera response curve (*.m);;All Files (*)") );
590
595
        if (!savecurvefilename.isEmpty())  {
591
 
        m_Ui->CurveFileNameSaveLineEdit->setText(savecurvefilename);
592
 
        saveRespCurveToFileCheckboxToggled(m_Ui->saveRespCurveToFileCheckbox->isChecked());
 
596
                m_Ui->CurveFileNameSaveLineEdit->setText(savecurvefilename);
 
597
                saveRespCurveToFileCheckboxToggled(m_Ui->saveRespCurveToFileCheckbox->isChecked());
593
598
        }
594
599
}
595
600
 
596
601
void HdrWizard::predefConfigsComboBoxActivated( int index_from_gui ) {
597
602
        hdrCreationManager->chosen_config = predef_confs[index_from_gui];
598
 
    m_Ui->lineEdit_showWeight->setText(getQStringFromConfig(1));
599
 
    m_Ui->lineEdit_show_resp->setText(getQStringFromConfig(2));
600
 
    m_Ui->lineEdit_showmodel->setText(getQStringFromConfig(3));
 
603
        m_Ui->lineEdit_showWeight->setText(getQStringFromConfig(1));
 
604
        m_Ui->lineEdit_show_resp->setText(getQStringFromConfig(2));
 
605
        m_Ui->lineEdit_showmodel->setText(getQStringFromConfig(3));
601
606
}
602
607
 
603
608
void HdrWizard::triGaussPlateauComboBoxActivated(int from_gui) {
621
626
 
622
627
QString HdrWizard::getCaptionTEXT()
623
628
{
624
 
    return tr("Weights: ")+getQStringFromConfig(1) + tr(" - Response curve: ") + getQStringFromConfig(2) + tr(" - Model: ") + getQStringFromConfig(3);
 
629
        return tr("Weights: ")+getQStringFromConfig(1) + tr(" - Response curve: ") + getQStringFromConfig(2) + tr(" - Model: ") + getQStringFromConfig(3);
625
630
}
626
631
 
627
632
QString HdrWizard::getQStringFromConfig( int type ) {
628
 
    if (type == 1) { //return String for weights
 
633
        if (type == 1) { //return String for weights
629
634
        switch (hdrCreationManager->chosen_config.weights) {
630
635
        case TRIANGULAR:
631
 
            return tr("Triangular");
 
636
                return tr("Triangular");
632
637
        case PLATEAU:
633
 
            return tr("Plateau");
 
638
                return tr("Plateau");
634
639
        case GAUSSIAN:
635
 
            return tr("Gaussian");
 
640
                return tr("Gaussian");
636
641
        }
637
 
    } else if (type == 2) {   //return String for response curve
 
642
        } else if (type == 2) {   //return String for response curve
638
643
        switch (hdrCreationManager->chosen_config.response_curve) {
639
644
        case LINEAR:
640
 
            return tr("Linear");
 
645
                return tr("Linear");
641
646
        case GAMMA:
642
 
            return tr("Gamma");
 
647
                return tr("Gamma");
643
648
        case LOG10:
644
 
            return tr("Logarithmic");
 
649
                return tr("Logarithmic");
645
650
        case FROM_ROBERTSON:
646
 
            return tr("From Calibration");
 
651
                return tr("From Calibration");
647
652
        case FROM_FILE:
648
 
            return tr("From File");
 
653
                return tr("From File");
649
654
        }
650
 
    } else if (type == 3) {   //return String for model
 
655
        } else if (type == 3) {   //return String for model
651
656
        switch (hdrCreationManager->chosen_config.model) {
652
657
        case DEBEVEC:
653
 
            return tr("Debevec");
 
658
                return tr("Debevec");
654
659
        case ROBERTSON:
655
 
            return tr("Robertson");
 
660
                return tr("Robertson");
656
661
        }
657
 
    } else return "";
 
662
        } else return "";
658
663
return "";
659
664
}
660
665
 
661
666
//triggered by user interaction
662
667
void HdrWizard::editingEVfinished() {
663
668
        //transform from EV value to expotime value
664
 
    hdrCreationManager->setEV(m_Ui->ImageEVdsb->value(), m_Ui->tableWidget->currentRow());
 
669
        hdrCreationManager->setEV(m_Ui->ImageEVdsb->value(), m_Ui->tableWidget->currentRow());
665
670
        if (hdrCreationManager->getFilesLackingExif().size() == 0) {
666
 
        m_Ui->NextFinishButton->setEnabled(true);
 
671
                m_Ui->NextFinishButton->setEnabled(true);
667
672
                //give an offset to the EV values if they are outside of the -10..10 range.
668
673
                hdrCreationManager->checkEVvalues();
669
 
        m_Ui->confirmloadlabel->setText(tr("<center><font color=\"#008400\"><h3><b>All the EV values have been set.<br>Now click on Next button.</b></h3></font></center>"));
 
674
                m_Ui->confirmloadlabel->setText(tr("<center><font color=\"#008400\"><h3><b>All the EV values have been set.<br>Now click on Next button.</b></h3></font></center>"));
670
675
        } else {
671
 
        m_Ui->confirmloadlabel->setText( QString(tr("<center><h3><b>To proceed you need to manually set the exposure values.<br><font color=\"#FF0000\">%1</font> values still required.</b></h3></center>")).arg(hdrCreationManager->getFilesLackingExif().size()) );
 
676
                m_Ui->confirmloadlabel->setText( QString(tr("<center><h3><b>To proceed you need to manually set the exposure values.<br><font color=\"#FF0000\">%1</font> values still required.</b></h3></center>")).arg(hdrCreationManager->getFilesLackingExif().size()) );
672
677
        }
673
678
}
674
679
 
675
680
void HdrWizard::inputHdrFileSelected(int i) {
676
681
        if (hdrCreationManager->isValidEV(i))
677
 
        m_Ui->ImageEVdsb->setValue(hdrCreationManager->getEV(i));
 
682
                m_Ui->ImageEVdsb->setValue(hdrCreationManager->getEV(i));
678
683
        if (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE) {
679
684
                QImage *image = hdrCreationManager->getLDRList().at(i);
680
 
        m_Ui->previewLabel->setPixmap(QPixmap::fromImage(image->scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio)));
 
685
                m_Ui->previewLabel->setPixmap(QPixmap::fromImage(image->scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio)));
681
686
        }
682
687
        else { // load preview from thumbnail previously created on disk
683
688
                QString fname = hdrCreationManager->getFileList().at(i);
684
689
                QFileInfo qfi(fname);
685
 
                QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.jpg");
 
690
                QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.jpg");
686
691
 
687
 
        if (QFile::exists(thumb_name))
688
 
        {
 
692
                if (QFile::exists(thumb_name))
 
693
                {
689
694
                        QImage thumb_image(thumb_name);
690
 
            m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio)));
 
695
                        m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio)));
691
696
                }
692
 
        else
693
 
        {
694
 
            QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm");
 
697
                else
 
698
                {
 
699
                        QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm");
695
700
                        if ( QFile::exists(thumb_name))  {
696
701
                                QImage thumb_image(thumb_name);
697
 
                m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio)));
 
702
                                m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio)));
698
703
                        }
699
704
                }
700
705
        }
701
 
    m_Ui->ImageEVdsb->setFocus();
 
706
        m_Ui->ImageEVdsb->setFocus();
702
707
}
703
708
 
704
709
void HdrWizard::resizeEvent ( QResizeEvent * )
705
710
{
706
711
        //qDebug() << "void HdrWizard::resizeEvent ( QResizeEvent * )";
707
712
        //make sure we ask for a thumbnail only when we need it
708
 
    if ((m_Ui->pagestack->currentIndex() == 0) && (m_Ui->tableWidget->currentRow() != -1) && (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE)) {
709
 
        QImage *image = hdrCreationManager->getLDRList().at(m_Ui->tableWidget->currentRow());
710
 
        m_Ui->previewLabel->setPixmap(QPixmap::fromImage(image->scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio)));
 
713
        if ((m_Ui->pagestack->currentIndex() == 0) && (m_Ui->tableWidget->currentRow() != -1) && (hdrCreationManager->inputImageType() == HdrCreationManager::LDR_INPUT_TYPE)) {
 
714
                QImage *image = hdrCreationManager->getLDRList().at(m_Ui->tableWidget->currentRow());
 
715
                m_Ui->previewLabel->setPixmap(QPixmap::fromImage(image->scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio)));
711
716
        }
712
 
    else if ((m_Ui->pagestack->currentIndex() == 0) && (m_Ui->tableWidget->currentRow() != -1) && (hdrCreationManager->inputImageType() != HdrCreationManager::LDR_INPUT_TYPE))
713
 
    { // load preview from thumbnail previously created on disk
714
 
        QString fname = hdrCreationManager->getFileList().at(m_Ui->tableWidget->currentRow());
 
717
        else if ((m_Ui->pagestack->currentIndex() == 0) && (m_Ui->tableWidget->currentRow() != -1) && (hdrCreationManager->inputImageType() != HdrCreationManager::LDR_INPUT_TYPE))
 
718
        { // load preview from thumbnail previously created on disk
 
719
                QString fname = hdrCreationManager->getFileList().at(m_Ui->tableWidget->currentRow());
715
720
                QFileInfo qfi(fname);
716
 
                QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.jpg");
 
721
                                QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.jpg");
717
722
 
718
723
                if ( QFile::exists(thumb_name))  {
719
724
                        QImage thumb_image(thumb_name);
720
 
            m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio)));
 
725
                        m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio)));
721
726
                }
722
 
        else
723
 
        {
724
 
            QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm");
 
727
                else
 
728
                {
 
729
                        QString thumb_name = QString(luminance_options.getTempDir() + "/" + qfi.completeBaseName() + ".thumb.ppm");
725
730
                        if ( QFile::exists(thumb_name))  {
726
731
                                QImage thumb_image(thumb_name);
727
 
                m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio)));
 
732
                                m_Ui->previewLabel->setPixmap(QPixmap::fromImage(thumb_image.scaled(m_Ui->previewLabel->size(), Qt::KeepAspectRatio)));
728
733
                        }
729
734
                }
730
735
        }
738
743
 
739
744
void HdrWizard::keyPressEvent(QKeyEvent *event) {
740
745
        if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {
741
 
        m_Ui->tableWidget->selectRow((m_Ui->tableWidget->currentRow() == m_Ui->tableWidget->rowCount()-1) ? 0 : m_Ui->tableWidget->currentRow()+1);
 
746
                m_Ui->tableWidget->selectRow((m_Ui->tableWidget->currentRow() == m_Ui->tableWidget->rowCount()-1) ? 0 : m_Ui->tableWidget->currentRow()+1);
742
747
        } else if (event->key() == Qt::Key_Escape) {
743
748
                emit reject();
744
749
        }
747
752
void HdrWizard::writeAisData(QByteArray data)
748
753
{
749
754
        qDebug() << data;
750
 
    m_Ui->textEdit->append(data);
 
755
        m_Ui->textEdit->append(data);
751
756
}
752
757