1
0

OBSProjector.hpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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. private slots:
  34. void EscapeTriggered();
  35. void OpenFullScreenProjector();
  36. void ResizeToContent();
  37. void OpenWindowedProjector();
  38. void AlwaysOnTopToggled(bool alwaysOnTop);
  39. void ScreenRemoved(QScreen *screen);
  40. void RenameProjector(QString oldName, QString newName);
  41. public:
  42. OBSProjector(QWidget *widget, obs_source_t *source_, int monitor, ProjectorType type_);
  43. ~OBSProjector();
  44. OBSSource GetSource();
  45. ProjectorType GetProjectorType();
  46. int GetMonitor();
  47. static void UpdateMultiviewProjectors();
  48. void SetHideCursor();
  49. bool IsAlwaysOnTop() const;
  50. bool IsAlwaysOnTopOverridden() const;
  51. void SetIsAlwaysOnTop(bool isAlwaysOnTop, bool isOverridden);
  52. };