CameraDevice.hpp
1 #pragma once
2 #include <Device/Protocol/DeviceInterface.hpp>
3 #include <Device/Protocol/DeviceSettings.hpp>
4 #include <Device/Protocol/ProtocolFactoryInterface.hpp>
5 #include <Device/Protocol/ProtocolSettingsWidget.hpp>
6 
7 #include <Gfx/CameraSettings.hpp>
8 #include <Gfx/GfxInputDevice.hpp>
9 
10 class QComboBox;
11 class QLineEdit;
12 
13 namespace Gfx
14 {
16 {
17  SCORE_CONCRETE("d615690b-f2e2-447b-b70e-a800552db69c")
18  QString prettyName() const noexcept override;
19  QString category() const noexcept override;
20  Device::DeviceEnumerators
21  getEnumerators(const score::DocumentContext& ctx) const override;
22 
23  Device::DeviceInterface* makeDevice(
24  const Device::DeviceSettings& settings,
25  const Explorer::DeviceDocumentPlugin& plugin,
26  const score::DocumentContext& ctx) override;
27  const Device::DeviceSettings& defaultSettings() const noexcept override;
28  Device::AddressDialog* makeAddAddressDialog(
29  const Device::DeviceInterface& dev, const score::DocumentContext& ctx,
30  QWidget* parent) override;
31  Device::AddressDialog* makeEditAddressDialog(
33  const score::DocumentContext& ctx, QWidget*) override;
34 
35  Device::ProtocolSettingsWidget* makeSettingsWidget() override;
36 
37  QVariant makeProtocolSpecificSettings(const VisitorVariant& visitor) const override;
38 
39  void serializeProtocolSpecificSettings(
40  const QVariant& data, const VisitorVariant& visitor) const override;
41 
42  bool checkCompatibility(
43  const Device::DeviceSettings& a,
44  const Device::DeviceSettings& b) const noexcept override;
45 };
46 
47 class CameraDevice final : public GfxInputDevice
48 {
49  W_OBJECT(CameraDevice)
50 public:
51  using GfxInputDevice::GfxInputDevice;
52  ~CameraDevice();
53 
54 private:
55  bool reconnect() override;
56  ossia::net::device_base* getDevice() const override { return m_dev.get(); }
57 
59  mutable std::unique_ptr<Gfx::video_texture_input_device> m_dev;
60 };
61 }
62 
63 SCORE_SERIALIZE_DATASTREAM_DECLARE(, Gfx::CameraSettings);
64 Q_DECLARE_METATYPE(Gfx::CameraSettings)
65 W_REGISTER_ARGTYPE(Gfx::CameraSettings)
Definition: ProtocolSettingsWidget.hpp:41
Definition: DeviceInterface.hpp:66
Definition: ProtocolFactoryInterface.hpp:44
Definition: ProtocolSettingsWidget.hpp:22
Definition: CameraDevice.hpp:48
Definition: CameraDevice.hpp:16
Definition: GfxDevice.hpp:14
Definition: GfxInputDevice.hpp:126
Binds the rendering pipeline to ossia processes.
Definition: CameraDevice.cpp:28
Definition: AddressSettings.hpp:49
Definition: DeviceSettings.hpp:16
Definition: CameraSettings.hpp:8
The VisitorVariant struct.
Definition: VisitorInterface.hpp:26
Definition: DocumentContext.hpp:18