180 lines
5.4 KiB
C++
180 lines
5.4 KiB
C++
#include "widget_imgproc_sidebar.h"
|
|
#include "ui_widget_imgproc_sidebar.h"
|
|
#include <QPalette>
|
|
#include <QPainter>
|
|
#include "app_cfg.h"
|
|
|
|
Widget_Imgproc_SideBar::Widget_Imgproc_SideBar(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::Widget_Imgproc_SideBar)
|
|
, m_curImage(NULL)
|
|
{
|
|
ui->setupUi(this);
|
|
updateUiStatus();
|
|
|
|
connect(ui->slider_brightness, SIGNAL(valueChanged(int)), ui->spin_brightness, SLOT(setValue(int)));
|
|
connect(ui->slider_contrast, SIGNAL(valueChanged(int)), ui->spin_contrast, SLOT(setValue(int)));
|
|
}
|
|
|
|
Widget_Imgproc_SideBar::~Widget_Imgproc_SideBar()
|
|
{
|
|
if (m_curImage != nullptr)
|
|
{
|
|
HGBase_DestroyImage(m_curImage);
|
|
}
|
|
delete ui;
|
|
}
|
|
|
|
int Widget_Imgproc_SideBar::getWidth()
|
|
{
|
|
return this->width();
|
|
}
|
|
|
|
int Widget_Imgproc_SideBar::getHeight()
|
|
{
|
|
return this->height();
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::getCurrentImg(HGImage image)
|
|
{
|
|
HGImageInfo imgInfo;
|
|
HGBase_GetImageInfo(image, &imgInfo);
|
|
HGBase_CloneImage(image, imgInfo.type, HGBASE_IMGORIGIN_TOP, &m_curImage);
|
|
if (NULL == m_curImage)
|
|
{
|
|
HGBase_DestroyImage(m_curImage);
|
|
return;
|
|
}
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::setBrightness(int brightness)
|
|
{
|
|
ui->spin_brightness->setValue(brightness);
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::setContrast(int contrast)
|
|
{
|
|
ui->spin_contrast->setValue(contrast);
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::setGamma(double gamma)
|
|
{
|
|
ui->dspin_gamma->setValue(gamma);
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::paintEvent(QPaintEvent *e)
|
|
{
|
|
(void)e;
|
|
QPainter p(this);
|
|
p.fillRect(0, 0, this->width(), this->height(), qRgb(240, 240, 240));
|
|
p.setPen(QColor("gray"));
|
|
p.drawRect(0, 0, width() -1, height() -1);
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::updateUiStatus()
|
|
{
|
|
ui->checkBox_apply->setChecked(getCfgValue("sideBar", "applyImg", true));
|
|
ui->checkBox_enhanceText->setChecked(getCfgValue("sideBar", "enhanceText", false));
|
|
ui->spin_brightness->setValue(getCfgValue("sideBar", "brightness", 0));
|
|
ui->spin_contrast->setValue(getCfgValue("sideBar", "contrast", 0));
|
|
|
|
QString strGamma = getCfgValue("sideBar", "gamma", QString("1.0"));
|
|
double gamma = atof(strGamma.toStdString().c_str());
|
|
ui->dspin_gamma->setValue(gamma);
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::on_spin_brightness_valueChanged(int arg1)
|
|
{
|
|
ui->slider_brightness->setValue(arg1);
|
|
if(ui->checkBox_apply->isChecked())
|
|
emit applyToImage(m_curImage, arg1, ui->spin_contrast->value(), ui->dspin_gamma->value());
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::on_spin_contrast_valueChanged(int arg1)
|
|
{
|
|
ui->slider_contrast->setValue(arg1);
|
|
if(ui->checkBox_apply->isChecked())
|
|
emit applyToImage(m_curImage, ui->spin_brightness->value(), arg1, ui->dspin_gamma->value());
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::on_dspin_gamma_valueChanged(double arg1)
|
|
{
|
|
ui->slider_gamma->setValue(static_cast<int>(arg1 * 100));
|
|
if(ui->checkBox_apply->isChecked())
|
|
emit applyToImage(m_curImage, ui->spin_brightness->value(), ui->spin_contrast->value(), arg1);
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::on_slider_gamma_valueChanged(int value)
|
|
{
|
|
ui->dspin_gamma->setValue(static_cast<double>(value / 100.0));
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::on_checkBox_apply_toggled(bool checked)
|
|
{
|
|
if(checked)
|
|
emit applyToImage(m_curImage, ui->spin_brightness->value(), ui->spin_contrast->value(), ui->dspin_gamma->value());
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::on_pbtn_restoreDefault_clicked()
|
|
{
|
|
ui->spin_brightness->setValue(0);
|
|
ui->spin_contrast->setValue(0);
|
|
ui->dspin_gamma->setValue(1.0);
|
|
ui->checkBox_apply->setChecked(true);
|
|
ui->checkBox_enhanceText->setChecked(false);
|
|
if(ui->checkBox_apply->isChecked())
|
|
emit applyToImage(m_curImage, ui->spin_brightness->value(), ui->spin_contrast->value(), ui->dspin_gamma->value());
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::on_pbtn_ok_clicked()
|
|
{
|
|
saveCfgValue("sideBar", "applyImg", ui->checkBox_apply->isChecked());
|
|
saveCfgValue("sideBar", "enhanceText", ui->checkBox_enhanceText->isChecked());
|
|
|
|
saveCfgValue("sideBar", "brightness", ui->spin_brightness->value());
|
|
saveCfgValue("sideBar", "contrast", ui->spin_contrast->value());
|
|
char gamma[32];
|
|
sprintf(gamma, "%f", ui->dspin_gamma->value());
|
|
saveCfgValue("sideBar", "gamma", QString(gamma));
|
|
|
|
if (ui->checkBox_enhanceText->isChecked())
|
|
{
|
|
HGUInt xDpi = 0;
|
|
HGUInt yDpi = 0;
|
|
HGBase_GetImageDpi(m_curImage, &xDpi, &yDpi);
|
|
|
|
HGImageInfo imgInfo;
|
|
HGBase_GetImageInfo(m_curImage, &imgInfo);
|
|
HGUInt width = imgInfo.width;
|
|
HGUInt height = imgInfo.height;
|
|
|
|
HGImage destImage = nullptr;
|
|
HGBase_CreateImage(width, height, imgInfo.type, HGBASE_IMGORIGIN_TOP, &destImage);
|
|
if (NULL == destImage)
|
|
{
|
|
HGBase_DestroyImage(destImage);
|
|
return;
|
|
}
|
|
|
|
HGImgProc_ImageBinarization(m_curImage, destImage, HGIMGPROC_THRESHTYPE_BINARY, 40, 51, 41);
|
|
if (nullptr != destImage)
|
|
{
|
|
HGBase_SetImageDpi(destImage, xDpi, yDpi);
|
|
emit applyToImage(destImage, ui->spin_brightness->value(), ui->spin_contrast->value(), ui->dspin_gamma->value());
|
|
HGBase_DestroyImage(destImage);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
emit applyToImage(m_curImage, ui->spin_brightness->value(), ui->spin_contrast->value(), ui->dspin_gamma->value());
|
|
}
|
|
|
|
emit finish();
|
|
}
|
|
|
|
void Widget_Imgproc_SideBar::on_pbtn_cancel_clicked()
|
|
{
|
|
updateUiStatus();
|
|
emit finish();
|
|
}
|