Files
CodeRepository/Apps/App_GeneralDataInjectionApp/Common/GLWidget.h
chenzhen 222dda1e43 1,新增“App_ThermalImageSystem”;
2,新增“Apps”;
3,新增“Common”;
4,新增“FileList”;
5,新增“MediaX”;
6,新增“OpenSource”;
7,新增“Samples”;
8,新增“SoftwareBusinessLines”.
2026-02-14 23:03:23 +08:00

62 lines
1.6 KiB
C++

#ifndef GLWIDGET_H
#define GLWIDGET_H
#include "../Common/GCycleQueue.h"
#include <QOpenGLWidget>
#include <QOpenGLFunctions>
#include <QOpenGLTexture>
#include<QTimer>
typedef unsigned char BYTE, Byte, byte;
enum GLBackgorundImgType
{
Normal, //普通高德背景
// ConnectionNotEstablished, //光纤物理链路不通 (读CAPTURE_PORT_STATUS寄存器)
WrongImgSize, //FPGA收到的图像数据大小与设置的图像大小不一致 (读CAPTURE_PORT_STATUS寄存器)
NoInterEvent, //读中断事件一直为0 中断线程状态 无数据
ChannelFailLink,//通道link失败
ChannelFailEncode, //8B / 10B编码错误
FailLinkAndFailEncode, //通道link失败 + 8B / 10B编码错误
};
class GLWidget : public QOpenGLWidget, protected QOpenGLFunctions
{
Q_OBJECT
public:
explicit GLWidget(QWidget* parent = nullptr);
~GLWidget();
void SetStatusBackImg(GLBackgorundImgType type);
void Init(int iWidth, int iHeight);
bool UpdateImageData(byte* pFrameData);
protected:
void initializeGL() override;
void paintGL() override;
void resizeGL(int width, int height) override;
// void mousePressEvent(QMouseEvent* event) override;
public slots:
void setTextureImage(const QImage& image);
public slots:
void OnTimer_UpdataVideoView();
private:
QOpenGLTexture* texture;
QImage m_varBackImg;
QImage m_varImage;
QTimer m_varTimer;
bool m_bStartNewImg;
bool m_bIsOpenGLInit;
GCycleQueue m_varDataQueue;
int m_iWidth;
int m_iHeight;
};
#endif // GLWidget_H