88 lines
2.0 KiB
C
88 lines
2.0 KiB
C
|
#pragma once
|
||
|
|
||
|
#include <QWidget>
|
||
|
//#include <QLabel>
|
||
|
#include <QGraphicsOpacityEffect>
|
||
|
#include <QAnimationGroup>
|
||
|
#include <QOpenGLWidget>
|
||
|
#include <QOpenGLFunctions>
|
||
|
#include <QOpenGLShaderProgram>
|
||
|
#include <QOpenGLVertexArrayObject>
|
||
|
#include <QOpenGLTexture>
|
||
|
#include <QOpenGLBuffer>
|
||
|
#include <QTimer>
|
||
|
|
||
|
#include "CmdReceiver.h"
|
||
|
#include "ReverseDecodThread.h"
|
||
|
#include "VlcMediaPlayer.h"
|
||
|
#include "Config.h"
|
||
|
|
||
|
class ScreenWidget : public QOpenGLWidget, protected QOpenGLFunctions, public CmdReceiver {
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
explicit ScreenWidget(QWidget* widget = nullptr);
|
||
|
~ScreenWidget() override;
|
||
|
|
||
|
void OnMessage(const QString& cmd) override;
|
||
|
void OnTimeout();
|
||
|
|
||
|
void OnAlphaChanged(float alpha) {
|
||
|
m_alpha = alpha;
|
||
|
}
|
||
|
|
||
|
protected:
|
||
|
void keyPressEvent(QKeyEvent* event) override;
|
||
|
void keyReleaseEvent(QKeyEvent* event) override;
|
||
|
void mouseReleaseEvent(QMouseEvent* event) override;
|
||
|
// void paintEvent(QPaintEvent* event) override;
|
||
|
|
||
|
protected:
|
||
|
void initializeGL() override;
|
||
|
void paintGL() override;
|
||
|
void resizeGL(int w, int h) override;
|
||
|
|
||
|
void Save();
|
||
|
|
||
|
void PlayCricle(const Scope& scop);
|
||
|
void Play(const Scope& scop);
|
||
|
void slotSetOneFrame(QImage image);
|
||
|
|
||
|
private:
|
||
|
void InitMask();
|
||
|
|
||
|
private:
|
||
|
bool m_ctrlPress{ false };
|
||
|
|
||
|
int32_t m_town{ -1 };
|
||
|
int32_t m_place{ -1 };
|
||
|
|
||
|
QPixmap m_bg;
|
||
|
int m_x = 0;
|
||
|
int m_y = 0;
|
||
|
float m_sx = 1.0f;
|
||
|
float m_sy = 1.0f;
|
||
|
int m_r = 1;
|
||
|
|
||
|
VlcMediaPlayer vlcMediaPlayer_;
|
||
|
|
||
|
//QTimer m_timer;
|
||
|
QOpenGLVertexArrayObject* m_vao{ nullptr };
|
||
|
QOpenGLShader* m_vshader{ nullptr };
|
||
|
QOpenGLShader* m_fshader{ nullptr };
|
||
|
QOpenGLShaderProgram* m_program{ nullptr };
|
||
|
QOpenGLTexture* m_background{ nullptr };
|
||
|
QOpenGLTexture* m_movie{ nullptr };
|
||
|
QRect m_moveRect;
|
||
|
float m_alpha{ 1.0f };
|
||
|
|
||
|
QVector<QImage> m_textureData;
|
||
|
int m_cricleFrameCount{ 0 };
|
||
|
int m_cricleFrame{ INT_MAX };
|
||
|
|
||
|
Scope m_scope;
|
||
|
|
||
|
QImage m_maskImage;
|
||
|
QRect m_drawRect;
|
||
|
QTime m_lastTime;
|
||
|
};
|