OBSProjector.hpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #pragma once
  2. #include "OBSQTDisplay.hpp"
  3. class Multiview;
  4. enum class ProjectorType {
  5. Source,
  6. Scene,
  7. Preview,
  8. StudioProgram,
  9. Multiview,
  10. };
  11. class OBSProjector : public OBSQTDisplay {
  12. Q_OBJECT
  13. private:
  14. OBSWeakSourceAutoRelease weakSource;
  15. std::vector<OBSSignal> sigs;
  16. static void OBSRenderMultiview(void *data, uint32_t cx, uint32_t cy);
  17. static void OBSRender(void *data, uint32_t cx, uint32_t cy);
  18. static void OBSSourceRenamed(void *data, calldata_t *params);
  19. static void OBSSourceDestroyed(void *data, calldata_t *params);
  20. void mousePressEvent(QMouseEvent *event) override;
  21. void mouseDoubleClickEvent(QMouseEvent *event) override;
  22. void closeEvent(QCloseEvent *event) override;
  23. bool isAlwaysOnTop;
  24. bool isAlwaysOnTopOverridden = false;
  25. int savedMonitor = -1;
  26. ProjectorType type = ProjectorType::Source;
  27. Multiview *multiview = nullptr;
  28. bool ready = false;
  29. void UpdateMultiview();
  30. void UpdateProjectorTitle(QString name);
  31. QRect prevGeometry;
  32. void SetMonitor(int monitor);
  33. QScreen *screen = nullptr;
  34. private slots:
  35. void EscapeTriggered();
  36. void OpenFullScreenProjector();
  37. void ResizeToContent();
  38. void OpenWindowedProjector();
  39. void AlwaysOnTopToggled(bool alwaysOnTop);
  40. void ScreenRemoved(QScreen *screen_);
  41. void RenameProjector(QString oldName, QString newName);
  42. public:
  43. OBSProjector(QWidget *widget, obs_source_t *source_, int monitor, ProjectorType type_);
  44. ~OBSProjector();
  45. OBSSource GetSource();
  46. ProjectorType GetProjectorType();
  47. int GetMonitor();
  48. static void UpdateMultiviewProjectors();
  49. void SetHideCursor();
  50. bool IsAlwaysOnTop() const;
  51. bool IsAlwaysOnTopOverridden() const;
  52. void SetIsAlwaysOnTop(bool isAlwaysOnTop, bool isOverridden);
  53. };