#pragma once #include //#include #include #include #include #include #include #include #include #include #include #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 m_textureData; int m_cricleFrameCount{ 0 }; int m_cricleFrame{ INT_MAX }; Scope m_scope; QImage m_maskImage; QRect m_drawRect; QTime m_lastTime; };