mirror of http://192.168.1.51:8099/lmh188/twain3
133 lines
4.6 KiB
C++
133 lines
4.6 KiB
C++
#ifndef WIDGET_H
|
||
#define WIDGET_H
|
||
|
||
#include <QWidget>
|
||
#include <QMouseEvent>
|
||
//#include "colorlinesetdef.h"
|
||
|
||
namespace Ui {
|
||
class Widget;
|
||
}
|
||
//
|
||
//enum COLOR_TPYE
|
||
//{
|
||
// RGB,
|
||
// GRAY,
|
||
// RED,
|
||
// BLUE,
|
||
// GREEN
|
||
//};
|
||
|
||
class Widget : public QWidget
|
||
{
|
||
Q_OBJECT
|
||
|
||
public:
|
||
explicit Widget(QWidget *parent = nullptr);
|
||
~Widget();
|
||
void initAllLstPnt(); //初始化所有颜色曲线
|
||
void setLstPnt_RGB(const QList<QPoint>& plst); //设置生成RGB曲线的关键点(<=4)
|
||
QList<QPoint> getLstPnt_RGB()const; //获取生成RGB曲线的关键点
|
||
void setLstPnt_RED(const QList<QPoint>& plst);
|
||
QList<QPoint> getLstPnt_RED()const;
|
||
void setLstPnt_BLUE(const QList<QPoint>& plst);
|
||
QList<QPoint> getLstPnt_BLUE()const;
|
||
void setLstPnt_GREEN(const QList<QPoint>& plst);
|
||
QList<QPoint> getLstPnt_GREEN()const;
|
||
void setLstPnt_GRAY(const QList<QPoint>& plst);
|
||
QList<QPoint> getLstPnt_GRAY()const;
|
||
|
||
QVector<int> getRgbALLPoint();
|
||
QList<QPoint> getRgbKeyPoint()const;
|
||
void setRgbKeyPoint(const QList<QPoint>& pVec);
|
||
QVector<int> getRedALLPoint();
|
||
QList<QPoint> getRedKeyPoint()const;
|
||
void setRedKeyPoint(const QList<QPoint>& pVec);
|
||
QVector<int> getBlueALLPoint();
|
||
QList<QPoint> getBlueKeyPoint()const;
|
||
void setBlueKeyPoint(const QList<QPoint>& pVec);
|
||
QVector<int> getGreenALLPoint();
|
||
QList<QPoint> getGreenKeyPoint()const;
|
||
void setGreenKeyPoint(const QList<QPoint>& pVec);
|
||
QVector<int> getGrayALLPoint();
|
||
QList<QPoint> getGrayKeyPoint()const;
|
||
void setGrayKeyPoint(const QList<QPoint>& pVec);
|
||
|
||
void setHist_RGB(const QVector<int>& hist);//设置RGB的背景直方图
|
||
QVector<int> getHist_RGB()const;//获取RGB的背景直方图
|
||
void setHist_RED(const QVector<int>& hist);
|
||
QVector<int> getHist_RED()const;
|
||
void setHist_BLUE(const QVector<int>& hist);
|
||
QVector<int> getHist_BLUE()const;
|
||
void setHist_GREEN(const QVector<int>& hist);
|
||
QVector<int> getHist_GREEN()const;
|
||
void setHist_GRAY(const QVector<int>& hist);
|
||
QVector<int> getHist_GRAY()const;
|
||
|
||
void getCurLineLUT(uchar* table, size_t length = 256);//获取当前曲线上的所有点并存入table
|
||
QVector<unsigned char> getCurLinePntVec();//获取当前曲线上的所有点
|
||
void setXCoorVal(const int &xVal);//设置被选中的点的X坐标
|
||
void setYCoorVal(const int &yVal);//设置被选中的点的Y坐标
|
||
void updateCurLinePnt(const int& colType);//根据当前所选颜色(colType)重绘界面
|
||
void initSelectColLine(const int& colType);//初始化当前所选颜色(colType)界面的曲线
|
||
void SetAllLinePnt(QVector<int>& all);//设置自定义曲线的所有点
|
||
|
||
signals:
|
||
void dragPointChecked(bool);//曲线上的点被选中的信号
|
||
void mouseLeaveSig();//鼠标离开控件的信号
|
||
void mouseCoordSig(QPoint pos);//鼠标的坐标信号
|
||
void lineChangeSig();
|
||
|
||
private:
|
||
void initInterface();//初始化界面
|
||
void paintEvent(QPaintEvent *);
|
||
void mousePressEvent(QMouseEvent*);
|
||
void mouseMoveEvent(QMouseEvent*);
|
||
void mouseReleaseEvent(QMouseEvent*);
|
||
void enterEvent(QEvent*);
|
||
void leaveEvent(QEvent*);
|
||
void drawCoordinate(QPainter&);//画直角坐标
|
||
void drawBackgroudColor(QPainter&,QVector<int>&);//画背景直方图
|
||
void drawBackColorBySlc(QPainter&);//画不同的背景直方图
|
||
void drawCoorScale(QPainter&);//画虚线刻度
|
||
void drawLineFromPoint(QList<QPoint> &plst, const int &col);//根据多点求出曲线方程,并画出曲线
|
||
void drawAllPoint(QPainter&);//画出生成曲线的关键点
|
||
void drawCurveByColor(QPainter&);//画不同的颜色曲线
|
||
void drawLineByVector(QPainter&,QVector<int>&);//将数组的所有点连接绘制曲线
|
||
int caculateAllMi(int num,int n);//计算num的n次方的值
|
||
|
||
private:
|
||
Ui::Widget *ui;
|
||
QVector<int> rgbBackColor;
|
||
QVector<int> redBackColor;
|
||
QVector<int> blueBackColor;
|
||
QVector<int> greenBackColor;
|
||
QVector<int> grayBackColor;
|
||
QVector<int> rgbALLPoint;
|
||
QVector<int> redALLPoint;
|
||
QVector<int> blueALLPoint;
|
||
QVector<int> greenALLPoint;
|
||
QVector<int> grayALLPoint;
|
||
QVector<int> allLinePntSet;
|
||
QVector<unsigned char> linePoints;
|
||
|
||
//QList<QPoint> points;
|
||
QList<QPoint> pointLst;
|
||
QList<QPoint> linePoint;
|
||
QList<QPoint> greenLine;
|
||
QList<QPoint> redLine;
|
||
QList<QPoint> blueLine;
|
||
QList<QPoint> rgbLine;
|
||
QList<QPoint> grayLine;
|
||
QColor color;
|
||
|
||
unsigned char allLinePoints[256];
|
||
bool leftMouseMv;
|
||
bool newPoint;
|
||
bool clickLine;
|
||
int dragPoint;
|
||
int selectCol;
|
||
};
|
||
|
||
#endif // WIDGET_H
|