2022-05-03 10:25:52 +00:00
|
|
|
|
#include "dialog_imgproc_adjust.h"
|
|
|
|
|
#include "ui_dialog_imgproc_adjust.h"
|
|
|
|
|
#include "imgproc/HGImgProc.h"
|
|
|
|
|
#include "app_cfg.h"
|
2022-05-24 05:45:07 +00:00
|
|
|
|
#include <assert.h>
|
2022-05-03 10:25:52 +00:00
|
|
|
|
|
|
|
|
|
Dialog_ImgProc_Adjust::Dialog_ImgProc_Adjust(HGImage img, QWidget *parent) :
|
|
|
|
|
QDialog(parent),
|
|
|
|
|
ui(new Ui::Dialog_ImgProc_Adjust)
|
|
|
|
|
{
|
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
|
|
|
|
|
m_base_widget = new Widget_Imgproc_Base(this);
|
|
|
|
|
reinterpret_cast<QVBoxLayout*>(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<QVBoxLayout*>(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));
|
|
|
|
|
}
|