qt-display.hpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #pragma once
  2. #include <QWidget>
  3. #include <obs.hpp>
  4. #define GREY_COLOR_BACKGROUND 0xFF4C4C4C
  5. class OBSQTDisplay : public QWidget {
  6. Q_OBJECT
  7. Q_PROPERTY(QColor displayBackgroundColor MEMBER backgroundColor READ GetDisplayBackgroundColor WRITE
  8. SetDisplayBackgroundColor)
  9. OBSDisplay display;
  10. bool destroying = false;
  11. virtual void paintEvent(QPaintEvent *event) override;
  12. virtual void moveEvent(QMoveEvent *event) override;
  13. virtual void resizeEvent(QResizeEvent *event) override;
  14. virtual bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result) override;
  15. signals:
  16. void DisplayCreated(OBSQTDisplay *window);
  17. void DisplayResized();
  18. public:
  19. OBSQTDisplay(QWidget *parent = nullptr, Qt::WindowFlags flags = Qt::WindowFlags());
  20. ~OBSQTDisplay() { display = nullptr; }
  21. virtual QPaintEngine *paintEngine() const override;
  22. inline obs_display_t *GetDisplay() const { return display; }
  23. uint32_t backgroundColor = GREY_COLOR_BACKGROUND;
  24. QColor GetDisplayBackgroundColor() const;
  25. void SetDisplayBackgroundColor(const QColor &color);
  26. void UpdateDisplayBackgroundColor();
  27. void CreateDisplay();
  28. void DestroyDisplay()
  29. {
  30. display = nullptr;
  31. destroying = true;
  32. };
  33. void OnMove();
  34. void OnDisplayChange();
  35. };