#include "dialog_imgproc_adjust.h" #include "ui_dialog_imgproc_adjust.h" #include "imgproc/HGImgProc.h" #include "app_cfg.h" #include Dialog_ImgProc_Adjust::Dialog_ImgProc_Adjust(HGImage img, QWidget *parent) : QDialog(parent), ui(new Ui::Dialog_ImgProc_Adjust) { ui->setupUi(this); setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint); m_base_widget = new Widget_Imgproc_Base(this); reinterpret_cast(this->layout())->insertWidget(2, m_base_widget); connect(m_base_widget, SIGNAL(brightness_change(int)), this, SLOT(on_brightness_change(int))); connect(m_base_widget, SIGNAL(contrast_change(int)), this, SLOT(on_contrast_change(int))); connect(m_base_widget, SIGNAL(gamma_change(double)), this, SLOT(on_gamma_change(double))); ui->view_before->addImage(img); ui->view_after->addImage(img); m_brightness = getCfgValue("adjust", "brightness", 0); m_base_widget->setBrightness(m_brightness); m_contrast = getCfgValue("adjust", "contrast", 0); m_base_widget->setContrast(m_contrast); QString gamma = getCfgValue("adjust", "gamma", QString("1.0")); m_gamma = atof(gamma.toStdString().c_str()); m_base_widget->setGamma(m_gamma); ui->cbtn_preview->setChecked(getCfgValue("adjust", "preview", false)); ui->cbtn_applyImg->setChecked(getCfgValue("adjust", "applyImg", false)); ui->gbox_before->setVisible(ui->cbtn_preview->isChecked()); ui->gbox_after->setVisible(ui->cbtn_preview->isChecked()); ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("ok")); ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("cancel")); ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setText(tr("restore default")); } Dialog_ImgProc_Adjust::~Dialog_ImgProc_Adjust() { delete ui; } HGImage Dialog_ImgProc_Adjust::getBeforeImage() { HGImage img = nullptr; ui->view_before->getImage(&img); return img; } HGImage Dialog_ImgProc_Adjust::getAfterImage() { HGImage img = nullptr; ui->view_after->getImage(&img); return img; } void Dialog_ImgProc_Adjust::on_brightness_change(int value) { m_brightness = value; process(); } void Dialog_ImgProc_Adjust::on_contrast_change(int value) { m_contrast = value; process(); } void Dialog_ImgProc_Adjust::on_gamma_change(double value) { m_gamma = value; process(); } void Dialog_ImgProc_Adjust::on_cbtn_preview_toggled(bool checked) { reinterpret_cast(this->layout())->setStretch(1, checked ? 1 : 0); ui->gbox_before->setVisible(checked); ui->gbox_after->setVisible(checked); } void Dialog_ImgProc_Adjust::on_cbtn_applyImg_toggled(bool checked) { HGImage img = nullptr; if (checked) ui->view_after->getImage(&img); else ui->view_before->getImage(&img); assert(nullptr != img); emit applyToImage(img); } void Dialog_ImgProc_Adjust::on_buttonBox_clicked(QAbstractButton *button) { if (ui->buttonBox->standardButton(button) == QDialogButtonBox::RestoreDefaults) { m_base_widget->setDefault(); m_brightness = 0; m_contrast = 0; m_gamma = 1.0; process(); } } void Dialog_ImgProc_Adjust::process() { HGImage img = nullptr; ui->view_before->getImage(&img); assert(nullptr != img); HGImageInfo imgInfo; HGBase_GetImageInfo(img, &imgInfo); HGImage destImg = nullptr; HGBase_CreateImage(imgInfo.width, imgInfo.height, imgInfo.type, imgInfo.origin, &destImg); if (nullptr != destImg) { HGImgProc_ImageAdjustColors(img, destImg, m_brightness, m_contrast, (HGFloat)m_gamma); ui->view_after->addImage(destImg); HGBase_DestroyImage(destImg); if (ui->cbtn_applyImg->isChecked()) { HGImage emitImg = nullptr; ui->view_after->getImage(&emitImg); assert(nullptr != emitImg); emit applyToImage(emitImg); } } } void Dialog_ImgProc_Adjust::on_buttonBox_accepted() { saveCfgValue("adjust", "preview", ui->cbtn_preview->isChecked()); saveCfgValue("adjust", "applyImg", ui->cbtn_applyImg->isChecked()); saveCfgValue("adjust", "brightness", m_brightness); saveCfgValue("adjust", "contrast", m_contrast); char gamma[32]; sprintf(gamma, "%f", m_gamma); saveCfgValue("adjust", "gamma", QString(gamma)); }