Loading...
Searching...
No Matches
WindowDevice.hpp
1#pragma once
2#include <Gfx/GfxDevice.hpp>
3#include <Gfx/Window/WindowSettings.hpp>
4
5#include <QGraphicsRectItem>
6#include <QGraphicsScene>
7#include <QGraphicsView>
8#include <QRectF>
9
10class QComboBox;
11class QCheckBox;
12class QDoubleSpinBox;
13class QGraphicsEllipseItem;
14class QGraphicsLineItem;
15class QGraphicsPolygonItem;
16class QLabel;
17class QStackedWidget;
18class QSpinBox;
19class QGraphicsView;
20
21namespace score::gfx
22{
23class Window;
24class ScreenNode;
25}
26namespace Gfx
27{
28class OutputMappingCanvas;
29class OutputPreviewWindows;
30
32{
33 SCORE_CONCRETE("5a181207-7d40-4ad8-814e-879fcdf8cc31")
34 QString prettyName() const noexcept override;
35 QString category() const noexcept override;
36 QUrl manual() const noexcept override;
37
38 Device::DeviceInterface* makeDevice(
39 const Device::DeviceSettings& settings,
40 const Explorer::DeviceDocumentPlugin& plugin,
41 const score::DocumentContext& ctx) override;
42 const Device::DeviceSettings& defaultSettings() const noexcept override;
43 Device::AddressDialog* makeAddAddressDialog(
45 QWidget* parent) override;
46 Device::AddressDialog* makeEditAddressDialog(
48 const score::DocumentContext& ctx, QWidget*) override;
49
50 Device::ProtocolSettingsWidget* makeSettingsWidget() override;
51
52 QVariant makeProtocolSpecificSettings(const VisitorVariant& visitor) const override;
53
54 void serializeProtocolSpecificSettings(
55 const QVariant& data, const VisitorVariant& visitor) const override;
56
57 bool checkCompatibility(
59 const Device::DeviceSettings& b) const noexcept override;
60};
61
62class SCORE_PLUGIN_GFX_EXPORT WindowDevice final : public GfxOutputDevice
63{
64 W_OBJECT(WindowDevice)
65public:
66 using GfxOutputDevice::GfxOutputDevice;
68
69 score::gfx::Window* window() const noexcept;
70 score::gfx::ScreenNode* screenNode() const noexcept;
71 W_SLOT(window)
72
73 void addAddress(const Device::FullAddressSettings& settings) override;
74 void setupContextMenu(QMenu&) const override;
75 ossia::net::device_base* getDevice() const override { return m_dev.get(); }
76 void disconnect() override;
77 bool reconnect() override;
78
82 void grabTo(const QString& path) const;
83 W_SLOT(grabTo)
84
85
88 void renderFrames(int frames) const;
89 W_SLOT(renderFrames)
90
91
94 void setStepRate(double fps) const;
95 W_SLOT(setStepRate)
96
97
100 void grabFrame(int frames, const QString& path) const;
101 W_SLOT(grabFrame)
102
103private:
104 gfx_protocol_base* m_protocol{};
105 mutable std::unique_ptr<ossia::net::device_base> m_dev;
106};
107
109{
110 WindowMode mode{WindowMode::Single};
111 SwapchainFlag flag{};
112 SwapchainFormat format{};
113 std::vector<OutputMapping> outputs;
114 int inputWidth{1920};
115 int inputHeight{1080};
116};
117
118}
Definition ProtocolSettingsWidget.hpp:53
Definition DeviceInterface.hpp:107
Definition ProtocolFactoryInterface.hpp:52
Definition ProtocolSettingsWidget.hpp:29
Definition GfxDevice.hpp:36
Definition WindowDevice.hpp:63
Definition WindowDevice.hpp:32
Definition GfxParameter.hpp:54
A platform window in which the content is going to be rendered.
Definition plugins/score-plugin-gfx/Gfx/Graph/Window.hpp:25
Binds the rendering pipeline to ossia processes.
Definition AssetTable.cpp:7
@ Window
A separate top-level window.
Graphics rendering pipeline for ossia score.
Definition Filter/PreviewWidget.hpp:11
Definition AddressSettings.hpp:49
Definition DeviceSettings.hpp:20
Definition AddressSettings.hpp:62
Definition WindowDevice.hpp:109
The VisitorVariant struct.
Definition VisitorInterface.hpp:26
Definition DocumentContext.hpp:18
This node is used for rendering to a score::gfx::Window.
Definition ScreenNode.hpp:14