#pragma once #include #include #define GREY_COLOR_BACKGROUND 0xFF4C4C4C class OBSQTDisplay : public QWidget { Q_OBJECT Q_PROPERTY(QColor displayBackgroundColor MEMBER backgroundColor READ GetDisplayBackgroundColor WRITE SetDisplayBackgroundColor) OBSDisplay display; virtual void paintEvent(QPaintEvent *event) override; virtual void moveEvent(QMoveEvent *event) override; virtual void resizeEvent(QResizeEvent *event) override; virtual bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result) override; signals: void DisplayCreated(OBSQTDisplay *window); void DisplayResized(); public: OBSQTDisplay(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags()); ~OBSQTDisplay() { display = nullptr; } virtual QPaintEngine *paintEngine() const override; inline obs_display_t *GetDisplay() const { return display; } uint32_t backgroundColor = GREY_COLOR_BACKGROUND; QColor GetDisplayBackgroundColor() const; void SetDisplayBackgroundColor(const QColor &color); void UpdateDisplayBackgroundColor(); void CreateDisplay(bool force = false); void DestroyDisplay() { display = nullptr; }; void OnMove(); void OnDisplayChange(); };