code_app/app/scanner2/widget_imgproc_sidebar.cpp

122 lines
3.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_applyToImage(true)
, m_curImage(NULL)
{
ui->setupUi(this);
ui->pbtn_ok->setEnabled(false);
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;
}
void Widget_Imgproc_SideBar::setImage(HGImage image)
{
HGBase_DestroyImage(m_curImage);
m_curImage = nullptr;
HGBase_CloneImage(image, 0, 0, &m_curImage);
on_pbtn_restoreDefault_clicked();
}
void Widget_Imgproc_SideBar::enableUI(bool enable)
{
ui->pbtn_ok->setEnabled(enable);
}
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::on_spin_brightness_valueChanged(int arg1)
{
ui->slider_brightness->setValue(arg1);
if (m_applyToImage)
{
emit applyToImage(m_curImage, ui->spin_brightness->value(), ui->spin_contrast->value(),
ui->dspin_gamma->value(), ui->checkBox_enhanceText->isChecked());
}
}
void Widget_Imgproc_SideBar::on_spin_contrast_valueChanged(int arg1)
{
ui->slider_contrast->setValue(arg1);
if (m_applyToImage)
{
emit applyToImage(m_curImage, ui->spin_brightness->value(), ui->spin_contrast->value(),
ui->dspin_gamma->value(), ui->checkBox_enhanceText->isChecked());
}
}
void Widget_Imgproc_SideBar::on_dspin_gamma_valueChanged(double arg1)
{
ui->slider_gamma->setValue(static_cast<int>(arg1 * 100));
if (m_applyToImage)
{
emit applyToImage(m_curImage, ui->spin_brightness->value(), ui->spin_contrast->value(),
ui->dspin_gamma->value(), ui->checkBox_enhanceText->isChecked());
}
}
void Widget_Imgproc_SideBar::on_slider_gamma_valueChanged(int value)
{
ui->dspin_gamma->setValue(static_cast<double>(value / 100.0));
if (m_applyToImage)
{
emit applyToImage(m_curImage, ui->spin_brightness->value(), ui->spin_contrast->value(),
ui->dspin_gamma->value(), ui->checkBox_enhanceText->isChecked());
}
}
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_enhanceText->setChecked(false);
}
void Widget_Imgproc_SideBar::on_pbtn_ok_clicked()
{
m_applyToImage = false;
on_pbtn_restoreDefault_clicked();
m_applyToImage = true;
emit finish(true);
}
void Widget_Imgproc_SideBar::on_pbtn_cancel_clicked()
{
on_pbtn_restoreDefault_clicked();
emit finish(false);
}
void Widget_Imgproc_SideBar::on_checkBox_enhanceText_toggled(bool checked)
{
if (m_applyToImage)
{
emit applyToImage(m_curImage, ui->spin_brightness->value(), ui->spin_contrast->value(),
ui->dspin_gamma->value(), ui->checkBox_enhanceText->isChecked());
}
}