WindowDevice.hpp
1 #pragma once
2 #include <Gfx/GfxDevice.hpp>
3 
4 namespace Gfx
5 {
6 
8 {
9  int width{};
10  int height{};
11  double rate{};
12  bool viewportSize{};
13  bool vsync{};
14 };
15 
17 {
18  SCORE_CONCRETE("5a181207-7d40-4ad8-814e-879fcdf8cc31")
19  QString prettyName() const noexcept override;
20  QString category() const noexcept override;
21 
22  Device::DeviceInterface* makeDevice(
23  const Device::DeviceSettings& settings,
24  const Explorer::DeviceDocumentPlugin& plugin,
25  const score::DocumentContext& ctx) override;
26  const Device::DeviceSettings& defaultSettings() const noexcept override;
27  Device::AddressDialog* makeAddAddressDialog(
28  const Device::DeviceInterface& dev, const score::DocumentContext& ctx,
29  QWidget* parent) override;
30  Device::AddressDialog* makeEditAddressDialog(
32  const score::DocumentContext& ctx, QWidget*) override;
33 
34  Device::ProtocolSettingsWidget* makeSettingsWidget() override;
35 
36  QVariant makeProtocolSpecificSettings(const VisitorVariant& visitor) const override;
37 
38  void serializeProtocolSpecificSettings(
39  const QVariant& data, const VisitorVariant& visitor) const override;
40 
41  bool checkCompatibility(
42  const Device::DeviceSettings& a,
43  const Device::DeviceSettings& b) const noexcept override;
44 };
45 
46 class WindowDevice final : public GfxOutputDevice
47 {
48  W_OBJECT(WindowDevice)
49 public:
50  using GfxOutputDevice::GfxOutputDevice;
51  ~WindowDevice();
52 
53 private:
54  void addAddress(const Device::FullAddressSettings& settings) override;
55  void setupContextMenu(QMenu&) const override;
56  ossia::net::device_base* getDevice() const override { return m_dev.get(); }
57  bool reconnect() override;
58 
59  gfx_protocol_base* m_protocol{};
60  mutable std::unique_ptr<ossia::net::device_base> m_dev;
61 };
62 
64 {
65 public:
66  WindowSettingsWidget(QWidget* parent = nullptr);
67 
68  Device::DeviceSettings getSettings() const override;
69 
70  void setSettings(const Device::DeviceSettings& settings) override;
71 
72 private:
73  QLineEdit* m_deviceNameEdit{};
74  QSpinBox* m_width{};
75  QSpinBox* m_height{};
76  QSpinBox* m_rate{};
77  QCheckBox* m_viewportSize{};
78 };
79 
80 }
Definition: ProtocolSettingsWidget.hpp:41
Definition: DeviceInterface.hpp:66
Definition: ProtocolFactoryInterface.hpp:44
Definition: ProtocolSettingsWidget.hpp:22
Definition: GfxDevice.hpp:35
Definition: WindowDevice.hpp:47
Definition: WindowDevice.hpp:17
Definition: WindowDevice.hpp:64
Definition: GfxParameter.hpp:41
Binds the rendering pipeline to ossia processes.
Definition: CameraDevice.cpp:28
Definition: AddressSettings.hpp:49
Definition: DeviceSettings.hpp:16
Definition: AddressSettings.hpp:62
Definition: WindowDevice.hpp:8
The VisitorVariant struct.
Definition: VisitorInterface.hpp:26
Definition: DocumentContext.hpp:18