2023-07-04 07:57:28 +00:00
|
|
|
#include "setpicclrtool.h"
|
2023-04-20 09:49:48 +00:00
|
|
|
#include "ui_setpicclrtool.h"
|
|
|
|
#include "widget.h"
|
|
|
|
#include <QDebug>
|
|
|
|
#include <QVariant>
|
|
|
|
|
2023-08-07 08:50:45 +00:00
|
|
|
setPicClrTool::setPicClrTool(int colorMode, QWidget *parent)
|
|
|
|
: QDialog(parent)
|
|
|
|
, ui(new Ui::setPicClrTool)
|
|
|
|
, m_colorMode(colorMode)
|
2023-04-20 09:49:48 +00:00
|
|
|
{
|
|
|
|
ui->setupUi(this);
|
2023-05-05 09:19:06 +00:00
|
|
|
setWindowFlags(Qt::Dialog | Qt::WindowCloseButtonHint);
|
2023-04-20 09:49:48 +00:00
|
|
|
setMouseTracking(true);
|
|
|
|
ui->inputEdt->setEnabled(false);
|
|
|
|
ui->outputEdt->setEnabled(false);
|
|
|
|
ui->inputEdt->setValidator(new QIntValidator(0, 255, this));
|
|
|
|
ui->outputEdt->setValidator(new QIntValidator(0, 255, this));
|
|
|
|
ui->widget->setFocus(Qt::MouseFocusReason);
|
|
|
|
connect(ui->widget,SIGNAL(mouseCoordSig(QPoint)),this,SLOT(mouseCoordSlot(QPoint)));
|
|
|
|
connect(ui->widget,SIGNAL(dragPointChecked(bool)),this,SLOT(lineEditEnable(bool)));
|
|
|
|
connect(ui->widget,SIGNAL(lineChangeSig()),this,SLOT(lineChangeSlot()));
|
2023-08-07 08:50:45 +00:00
|
|
|
|
|
|
|
QVariant v(6);
|
|
|
|
if(colorMode == 0)
|
|
|
|
{
|
|
|
|
ui->colorSetCmb->setItemData(1,v,Qt::UserRole - 1);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
ui->comboBox->setItemData(2,v,Qt::UserRole - 1);
|
|
|
|
ui->colorSetCmb->setItemData(0,v,Qt::UserRole - 1);
|
|
|
|
ui->colorSetCmb->setItemData(2,v,Qt::UserRole - 1);
|
|
|
|
ui->colorSetCmb->setItemData(3,v,Qt::UserRole - 1);
|
|
|
|
ui->colorSetCmb->setItemData(4,v,Qt::UserRole - 1);
|
|
|
|
ui->colorSetCmb->setCurrentIndex(1);
|
|
|
|
}
|
2023-04-20 09:49:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
setPicClrTool::~setPicClrTool()
|
|
|
|
{
|
|
|
|
delete ui;
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::getGrayTable(uchar *table, size_t length)
|
|
|
|
{
|
2023-08-07 08:25:37 +00:00
|
|
|
if (length != 256)
|
|
|
|
throw "length is not 256.";
|
|
|
|
|
2023-04-20 09:49:48 +00:00
|
|
|
QVector<int> gray = getGrayALLPoint();
|
2023-08-07 08:25:37 +00:00
|
|
|
for (size_t i = 0; i < 256; i++)
|
|
|
|
table[i] = static_cast<uchar>(gray[i]);
|
2023-04-20 09:49:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::getRGBTable(uchar *table, size_t length)
|
|
|
|
{
|
2023-08-07 08:25:37 +00:00
|
|
|
if (length != 1024)
|
|
|
|
throw "length is not 1024.";
|
2023-04-20 09:49:48 +00:00
|
|
|
|
|
|
|
QVector<int> rgb = getRgbALLPoint();
|
|
|
|
QVector<int> red = getRedALLPoint();
|
|
|
|
QVector<int> green = getGreenALLPoint();
|
|
|
|
QVector<int> blue = getBlueALLPoint();
|
|
|
|
|
|
|
|
|
|
|
|
for (size_t i = 0; i < 256; i++)
|
|
|
|
{
|
2023-08-07 08:25:37 +00:00
|
|
|
table[i] = static_cast<uchar>(rgb[i]);
|
|
|
|
table[256 + i] = static_cast<uchar>(red[i]);
|
|
|
|
table[256 * 2 + i] = static_cast<uchar>(green[i]);
|
|
|
|
table[256 * 3 + i] = static_cast<uchar>(blue[i]);
|
2023-04-20 09:49:48 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
QVector<QList<QPoint> > setPicClrTool::getRGBKeyTable()
|
|
|
|
{
|
|
|
|
QVector<QList<QPoint>> plv;
|
|
|
|
plv.append(getRgbKeyPoint());
|
|
|
|
plv.append(getRedKeyPoint());
|
|
|
|
plv.append(getGreenKeyPoint());
|
|
|
|
plv.append(getBlueKeyPoint());
|
|
|
|
return plv;
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::setRGBKeyTable(QVector<QList<QPoint> > &plv)
|
|
|
|
{
|
|
|
|
setRgbKeyPoint(plv[0]);
|
|
|
|
setRedKeyPoint(plv[1]);
|
|
|
|
setGreenKeyPoint(plv[2]);
|
|
|
|
setBlueKeyPoint(plv[3]);
|
|
|
|
}
|
|
|
|
|
|
|
|
QList<QPoint> setPicClrTool::getGrayKeyTable()
|
|
|
|
{
|
|
|
|
return getGrayKeyPoint();
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::setGrayKeyTable(QList<QPoint> &plv)
|
|
|
|
{
|
|
|
|
setGrayKeyPoint(plv);
|
|
|
|
}
|
|
|
|
|
2023-07-10 06:40:46 +00:00
|
|
|
QVector<int> setPicClrTool::getRgbAndColorType()
|
|
|
|
{
|
|
|
|
QVector<int> info;
|
|
|
|
info.clear();
|
|
|
|
info.push_back(ui->comboBox->currentIndex());
|
|
|
|
info.push_back(ui->colorSetCmb->currentIndex());
|
|
|
|
return info;
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::setRgbAndColorType(int rgbTypeIndex, int colorTypeIndex)
|
|
|
|
{
|
2023-08-07 08:50:45 +00:00
|
|
|
if (0 == m_colorMode)
|
|
|
|
{
|
2023-08-17 06:12:56 +00:00
|
|
|
if (rgbTypeIndex >= 0 && rgbTypeIndex <= 4)
|
|
|
|
ui->comboBox->setCurrentIndex(rgbTypeIndex);
|
|
|
|
if (0 == colorTypeIndex || (colorTypeIndex >= 2 && colorTypeIndex <= 4))
|
2023-08-07 08:50:45 +00:00
|
|
|
ui->colorSetCmb->setCurrentIndex(colorTypeIndex);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2023-08-17 06:12:56 +00:00
|
|
|
if ((rgbTypeIndex >= 0 && rgbTypeIndex <= 1) || (rgbTypeIndex >= 3 && rgbTypeIndex <= 4))
|
2023-08-07 08:50:45 +00:00
|
|
|
ui->comboBox->setCurrentIndex(rgbTypeIndex);
|
|
|
|
}
|
2023-07-10 06:40:46 +00:00
|
|
|
}
|
|
|
|
|
2023-04-20 09:49:48 +00:00
|
|
|
QVector<int> setPicClrTool::getRgbALLPoint()
|
|
|
|
{
|
|
|
|
return ui->widget->getRgbALLPoint();
|
|
|
|
}
|
|
|
|
|
|
|
|
QList<QPoint> setPicClrTool::getRgbKeyPoint() const
|
|
|
|
{
|
|
|
|
qDebug() << "setRgb" << ui->widget->getRgbKeyPoint();
|
|
|
|
return ui->widget->getRgbKeyPoint();
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::setRgbKeyPoint(const QList<QPoint> &pVec)
|
|
|
|
{
|
|
|
|
qDebug() << "setRgb" << pVec;
|
|
|
|
ui->widget->setRgbKeyPoint(pVec);
|
|
|
|
}
|
|
|
|
|
|
|
|
QList<QPoint> setPicClrTool::getRedKeyPoint() const
|
|
|
|
{
|
|
|
|
return ui->widget->getRedKeyPoint();
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::setRedKeyPoint(const QList<QPoint> &pVec)
|
|
|
|
{
|
|
|
|
ui->widget->setRedKeyPoint(pVec);
|
|
|
|
}
|
|
|
|
|
|
|
|
QList<QPoint> setPicClrTool::getBlueKeyPoint() const
|
|
|
|
{
|
|
|
|
return ui->widget->getBlueKeyPoint();
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::setBlueKeyPoint(const QList<QPoint> &pVec)
|
|
|
|
{
|
|
|
|
ui->widget->setBlueKeyPoint(pVec);
|
|
|
|
}
|
|
|
|
|
|
|
|
QList<QPoint> setPicClrTool::getGreenKeyPoint() const
|
|
|
|
{
|
|
|
|
return ui->widget->getGreenKeyPoint();
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::setGreenKeyPoint(const QList<QPoint> &pVec)
|
|
|
|
{
|
|
|
|
ui->widget->setGreenKeyPoint(pVec);
|
|
|
|
}
|
|
|
|
|
|
|
|
QList<QPoint> setPicClrTool::getGrayKeyPoint() const
|
|
|
|
{
|
|
|
|
return ui->widget->getGrayKeyPoint();
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::setGrayKeyPoint(const QList<QPoint> &pVec)
|
|
|
|
{
|
|
|
|
ui->widget->setGrayKeyPoint(pVec);
|
|
|
|
}
|
|
|
|
|
|
|
|
QVector<int> setPicClrTool::getRedALLPoint()
|
|
|
|
{
|
|
|
|
return ui->widget->getRedALLPoint();
|
|
|
|
}
|
|
|
|
|
|
|
|
QVector<int> setPicClrTool::getBlueALLPoint()
|
|
|
|
{
|
|
|
|
return ui->widget->getBlueALLPoint();
|
|
|
|
}
|
|
|
|
|
|
|
|
QVector<int> setPicClrTool::getGreenALLPoint()
|
|
|
|
{
|
|
|
|
return ui->widget->getGreenALLPoint();
|
|
|
|
}
|
|
|
|
|
|
|
|
QVector<int> setPicClrTool::getGrayALLPoint()
|
|
|
|
{
|
|
|
|
return ui->widget->getGrayALLPoint();
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::mouseCoordSlot(QPoint pos)
|
|
|
|
{
|
|
|
|
ui->inputEdt->setText(QString::number(pos.x()));
|
|
|
|
ui->outputEdt->setText(QString::number(pos.y()));
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::lineEditEnable(bool a)
|
|
|
|
{
|
|
|
|
ui->inputEdt->setEnabled(a);
|
|
|
|
ui->outputEdt->setEnabled(a);
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::lineChangeSlot()
|
|
|
|
{
|
|
|
|
ui->comboBox->setCurrentIndex(0);
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::on_colorSetCmb_currentIndexChanged(int index)
|
|
|
|
{
|
2023-07-04 07:57:28 +00:00
|
|
|
ui->widget->updateCurLinePnt(index);
|
|
|
|
//(void)index;
|
2023-04-20 09:49:48 +00:00
|
|
|
/* switch(index){
|
|
|
|
case RED:
|
|
|
|
ui->widget->updateCurLinePnt(RED);
|
|
|
|
break;
|
|
|
|
case GREEN:
|
|
|
|
ui->widget->updateCurLinePnt(GREEN);
|
|
|
|
break;
|
|
|
|
case BLUE:
|
|
|
|
ui->widget->updateCurLinePnt(BLUE);
|
|
|
|
break;
|
|
|
|
case RGB:
|
|
|
|
ui->widget->updateCurLinePnt(RGB);
|
|
|
|
break;
|
|
|
|
case GRAY:
|
|
|
|
ui->widget->updateCurLinePnt(GRAY);
|
|
|
|
break;
|
|
|
|
}*/
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::on_comboBox_currentIndexChanged(int index)
|
|
|
|
{
|
|
|
|
if(index == 0){
|
|
|
|
ui->widget->initAllLstPnt();
|
|
|
|
ui->widget->updateCurLinePnt(ui->colorSetCmb->currentIndex());
|
|
|
|
return ;
|
|
|
|
}
|
|
|
|
ui->widget->initAllLstPnt();
|
|
|
|
if(index == 1){
|
|
|
|
rgbLine.clear();
|
|
|
|
rgbLine.append(QPoint(0,255));
|
|
|
|
rgbLine.append(QPoint(255,0));
|
|
|
|
ui->widget->setLstPnt_RGB(rgbLine);
|
|
|
|
}else if(index == 2){
|
|
|
|
redLine.clear();
|
|
|
|
redLine.append(QPoint(33,255));
|
|
|
|
redLine.append(QPoint(185,0));
|
|
|
|
redLine.append(QPoint(119,127));
|
|
|
|
greenLine.clear();
|
|
|
|
greenLine.append(QPoint(28,255));
|
|
|
|
greenLine.append(QPoint(132,0));
|
|
|
|
greenLine.append(QPoint(77,127));
|
|
|
|
blueLine.clear();
|
|
|
|
blueLine.append(QPoint(25,255));
|
|
|
|
blueLine.append(QPoint(108,0));
|
|
|
|
blueLine.append(QPoint(60,127));
|
|
|
|
ui->widget->setLstPnt_RED(redLine);
|
|
|
|
ui->widget->setLstPnt_GREEN(greenLine);
|
|
|
|
ui->widget->setLstPnt_BLUE(blueLine);
|
|
|
|
}else if(index == 4){
|
|
|
|
rgbLine.clear();
|
|
|
|
rgbLine.append(QPoint(0,0));
|
|
|
|
rgbLine.append(QPoint(255,255));
|
|
|
|
rgbLine.append(QPoint(103,125));
|
|
|
|
ui->widget->setLstPnt_RGB(rgbLine);
|
|
|
|
}else if(index == 3){
|
|
|
|
rgbLine.clear();
|
|
|
|
rgbLine.append(QPoint(0,0));
|
|
|
|
rgbLine.append(QPoint(255,255));
|
|
|
|
rgbLine.append(QPoint(130,101));
|
|
|
|
ui->widget->setLstPnt_RGB(rgbLine);
|
|
|
|
}
|
|
|
|
ui->widget->updateCurLinePnt(ui->colorSetCmb->currentIndex());
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::on_inputEdt_textChanged(const QString &arg1)
|
|
|
|
{
|
|
|
|
ui->widget->setXCoorVal(arg1.toInt());
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::on_outputEdt_textChanged(const QString &arg1)
|
|
|
|
{
|
|
|
|
ui->widget->setYCoorVal(arg1.toInt());
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::on_pushButton_clicked()
|
|
|
|
{
|
|
|
|
ui->widget->initSelectColLine(ui->colorSetCmb->currentIndex());
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::on_buttonBox_accepted()
|
|
|
|
{
|
|
|
|
//close();
|
|
|
|
accept();
|
|
|
|
}
|
|
|
|
|
|
|
|
void setPicClrTool::on_buttonBox_rejected()
|
|
|
|
{
|
|
|
|
ui->widget->initAllLstPnt();
|
|
|
|
//close();
|
|
|
|
reject();
|
|
|
|
}
|