Loading...
Searching...
No Matches
DefaultEffectItem.hpp
1#pragma once
2#include <Process/Dataflow/PortVisibility.hpp>
3
4#include <ossia/detail/small_vector.hpp>
5#include <score/graphics/RectItem.hpp>
6#include <score/model/Identifier.hpp>
7
8#include <score_lib_process_export.h>
9
10#include <vector>
11namespace score
12{
13class GraphicsLayout;
14}
15namespace Dataflow
16{
17class PortItem;
18}
19namespace Process
20{
21class ProcessModel;
22class PortFactoryList;
23struct Context;
24class ControlInlet;
25class ControlOutlet;
26class Inlet;
27class Outlet;
28class Port;
29struct ControlLayout;
30struct LayoutBuilderBase;
31
32class SCORE_LIB_PROCESS_EXPORT DefaultEffectItem final : public score::EmptyRectItem
33{
34public:
36 bool onlyShowUndisplayedPorts, const Process::ProcessModel& effect,
37 const Process::Context& doc, QGraphicsItem* root);
39
40 void
41 setupInlet(Process::ControlInlet& inlet, const Process::PortFactoryList& portFactory);
42 void setupOutlet(
43 Process::ControlOutlet& inlet, const Process::PortFactoryList& portFactory);
44
45private:
46 template <typename T>
47 void setupPort(T& port, const Process::PortFactoryList& portFactory);
48
49 void reset();
50 void recreate();
51 void recreate_onlyInlets();
52 void recreate_onlyOutlets();
53 void recreate_both();
54 void updateRect();
55 void relayout();
56
57 struct PortsToDisplay
58 {
61 std::vector<Process::Inlet*> inlets;
62 std::vector<Process::Outlet*> outlets;
64 int leadingInlets{};
65 };
66
69 PortsToDisplay computeDisplayedPorts() const;
70
72 void updateDisplayedPorts();
73
74 void onPortWiringChanged();
75
77 template <typename Port_T>
78 Process::ControlLayout makeItem(Process::LayoutBuilderBase& b, Port_T& port);
79
80 void createPager();
81 void setPage(int page);
82
83 score::GraphicsLayout* m_layout{};
84 ossia::small_vector<score::GraphicsLayout*, 4> m_allLayouts;
85 const Process::ProcessModel& m_effect;
86 const Process::Context& m_ctx;
87
90 std::vector<Process::Inlet*> m_shownInlets;
91 std::vector<Process::Outlet*> m_shownOutlets;
92 int m_leadingInlets{};
93
94 score::EmptyRectItem* m_pager{};
95 Process::ControlPage m_controlPage;
96 int m_page{};
97
98 bool m_onlyUndisplayed{};
99 bool m_needRecreate{};
100 bool m_wiringCheckPending{};
101};
102}
Definition Port.hpp:218
Definition Port.hpp:452
Definition DefaultEffectItem.hpp:33
Definition PortFactory.hpp:82
The Process class.
Definition score-lib-process/Process/Process.hpp:75
Definition RectItem.hpp:78
Definition GraphicsLayout.hpp:8
Base classes and tools to implement processes and layers.
Definition JSONVisitor.hpp:1115
Base toolkit upon which the software is built.
Definition Application.cpp:117
Definition ProcessContext.hpp:12
Definition PortFactory.hpp:21
Which slice of a node's controls is currently displayed.
Definition PortVisibility.hpp:32
Definition plugins/score-lib-process/Control/Layout.hpp:16