Files
gdmp/displaywind.h
2025-09-25 16:56:53 +08:00

76 lines
1.7 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef DISPLAYWIND_H
#define DISPLAYWIND_H
#include <QWidget>
#include <QMutex>
#include "ijkmediaplayer.h"
#include "imagescaler.h"
#include <QKeyEvent>
#include <QBoxLayout>
#include <QMouseEvent>
namespace Ui {
class DisplayWind;
}
class DisplayWind : public QWidget
{
Q_OBJECT
public:
explicit DisplayWind(QWidget *parent = 0);
~DisplayWind();
int Draw(const Frame *frame);
void DeInit();
void StartPlay();
void StopPlay();
signals:
void signalFullScreenChanged();
public slots:
void onToggleFullScreen(bool full);
protected:
// 这里不要重载event事件会导致paintEvent不被触发
void paintEvent(QPaintEvent *) override;
void resizeEvent(QResizeEvent *event) override;
void keyPressEvent(QKeyEvent* event) override;
private:
void enterFullScreen();
void exitFullScreen();
private:
Ui::DisplayWind *ui;
int m_nLastFrameWidth; ///< 记录视频宽高
int m_nLastFrameHeight;
bool is_display_size_change_ = false;
int x_ = 0; // 起始位置
int y_ = 0;
int video_width = 0;
int video_height = 0;
int img_width = 0;
int img_height = 0;
int win_width_ = 0;
int win_height_ = 0;
bool req_resize_ = false;
QImage img;
VideoFrame dst_video_frame_;
QMutex m_mutex;
ImageScaler *img_scaler_ = NULL;
// 全屏
bool bIsFull_ = false;
QWidget* stParentWidget_ = nullptr;
QBoxLayout* stParentLayout_ = nullptr;
int nParentLayoutIndex_ = 0;
QRect stOriginalGeometry_;
int nWinWidthBack_ = 0;
int nWinHeightBack_ = 0;
int play_state_ = 0; // 0 初始化状态; 1 播放状态; 2 停止状态
};
#endif // DISPLAYWIND_H