Loading...
Searching...
No Matches
ScoreLayer.hpp
1#pragma once
2#include <Process/ProcessFactory.hpp>
3
4#include <Crousti/Metadatas.hpp>
5#include <Effect/EffectLayer.hpp>
6
7namespace oscr
8{
9template <has_ossia_layer T>
11{
12public:
13 virtual ~ScoreLayerFactory() = default;
14
15private:
16 std::optional<double> recommendedHeight() const noexcept override
17 {
18 if constexpr(requires { T::recommended_height(); })
19 {
20 return T::recommended_height();
21 }
22 return LayerFactory::recommendedHeight();
23 }
24
25 UuidKey<Process::ProcessModel> concreteKey() const noexcept override
26 {
28 }
29
30 bool matches(const UuidKey<Process::ProcessModel>& p) const override
31 {
33 }
34
35 Process::LayerView* makeLayerView(
36 const Process::ProcessModel& proc, const Process::Context& context,
37 QGraphicsItem* parent) const final override
38 {
39 return new typename T::Layer{proc, context, parent};
40 }
41
42 Process::LayerPresenter* makeLayerPresenter(
44 const Process::Context& context, QObject* parent) const final override
45 {
46 auto view = static_cast<typename T::Layer*>(v);
47 if constexpr(requires { sizeof(typename T::Presenter); }) {
48 return new T::Presenter{lm, view, context, parent};
49 } else {
50 return new Process::EffectLayerPresenter{lm, view, context, parent};
51 }
52 }
53
54 score::ResizeableItem* makeItem(
55 const Process::ProcessModel& proc, const Process::Context& ctx,
56 QGraphicsItem* parent) const final override
57 {
58 return nullptr;
59 }
60};
61}
Definition EffectLayer.hpp:32
Definition score-lib-process/Process/ProcessFactory.hpp:59
Definition LayerPresenter.hpp:34
Definition LayerView.hpp:21
The Process class.
Definition score-lib-process/Process/Process.hpp:61
Definition UuidKey.hpp:344
Definition ScoreLayer.hpp:11
Definition RectItem.hpp:12
Definition Factories.hpp:19
Static metadata implementation.
Definition lib/score/tools/Metadata.hpp:36
Definition ProcessContext.hpp:12
Definition ObjectMatches.hpp:6