File indexing completed on 2024-03-24 15:16:53

0001 /*
0002     SPDX-FileCopyrightText: 2015 Jasem Mutlaq <mutlaqja@ikarustech.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "fitsdebayer.h"
0008 
0009 #include "fitsdata.h"
0010 #include "fitsview.h"
0011 #include "fitsviewer.h"
0012 
0013 #include <QPushButton>
0014 
0015 debayerUI::debayerUI(QDialog *parent) : QDialog(parent)
0016 {
0017     setupUi(parent);
0018     setModal(false);
0019 }
0020 
0021 FITSDebayer::FITSDebayer(FITSViewer *parent) : QDialog(parent)
0022 {
0023     ui = new debayerUI(this);
0024 
0025     viewer = parent;
0026 
0027     connect(ui->buttonBox->button(QDialogButtonBox::Apply), &QPushButton::clicked,
0028             this, &FITSDebayer::applyDebayer);
0029 }
0030 
0031 void FITSDebayer::applyDebayer()
0032 {
0033     QSharedPointer<FITSView> view;
0034     if (viewer->getCurrentView(view))
0035     {
0036         auto image_data = view->imageData();
0037 
0038         dc1394bayer_method_t method = static_cast<dc1394bayer_method_t>(ui->methodCombo->currentIndex());
0039         dc1394color_filter_t filter = static_cast<dc1394color_filter_t>(ui->filterCombo->currentIndex() + 512);
0040 
0041         int offsetX = ui->XOffsetSpin->value();
0042         int offsetY = ui->YOffsetSpin->value();
0043 
0044         BayerParams param;
0045         param.method  = method;
0046         param.filter  = filter;
0047         param.offsetX = offsetX;
0048         param.offsetY = offsetY;
0049 
0050         image_data->setBayerParams(&param);
0051 
0052         ui->statusEdit->setText(i18n("Processing..."));
0053 
0054         qApp->processEvents();
0055 
0056         if (image_data->debayer(true))
0057         {
0058             ui->statusEdit->setText(i18n("Complete."));
0059             view->rescale(ZOOM_KEEP_LEVEL);
0060             view->updateFrame();
0061         }
0062         else
0063             ui->statusEdit->setText(i18n("Debayer failed."));
0064     }
0065 }
0066 
0067 void FITSDebayer::setBayerParams(BayerParams *param)
0068 {
0069     ui->methodCombo->setCurrentIndex(param->method);
0070     ui->filterCombo->setCurrentIndex(param->filter - 512);
0071 
0072     ui->XOffsetSpin->setValue(param->offsetX);
0073     ui->YOffsetSpin->setValue(param->offsetY);
0074 }