#include "widget_imgproc_sidebar.h" #include "ui_widget_imgproc_sidebar.h" #include #include #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(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(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(); }