Loading...
Searching...
No Matches
score-plugin-ysfx/YSFX/ProcessModel.hpp
1#pragma once
2#include <Process/Process.hpp>
3
4#include <Control/DefaultEffectItem.hpp>
5#include <Effect/EffectFactory.hpp>
6#include <YSFX/ProcessMetadata.hpp>
7#include <ysfx.h>
8
9#include <score/widgets/PluginWindow.hpp>
10
11#include <score_plugin_ysfx_export.h>
12
13#include <memory>
14#include <verdigris>
15
16namespace YSFX
17{
18class ProcessModel;
19class SCORE_PLUGIN_YSFX_EXPORT ProcessModel final : public Process::ProcessModel
20{
21 SCORE_SERIALIZE_FRIENDS
22 PROCESS_METADATA_IMPL(YSFX::ProcessModel)
23 W_OBJECT(ProcessModel)
24public:
25 bool hasExternalUI() const noexcept;
26
27 explicit ProcessModel(
28 const TimeVal& duration, const QString& data, const Id<Process::ProcessModel>& id,
29 QObject* parent);
30
31 template <typename Impl>
32 explicit ProcessModel(Impl& vis, QObject* parent)
33 : Process::ProcessModel{vis, parent}
34 {
35 vis.writeTo(*this);
36 }
37
38 ~ProcessModel() override;
39
40 void setScript(const QString& path);
41 QString script() const noexcept;
42
43 std::shared_ptr<ysfx_t> fx;
44
45 std::vector<Process::Preset> builtinPresets() const noexcept override;
46
47private:
48 void loadPreset(const Process::Preset&) override;
49 ysfx_bank_t* m_bank{};
50 QString m_script;
51};
52
54{
55public:
56 Window(const ProcessModel& e, const score::DocumentContext& ctx, QWidget* parent);
57 ~Window();
58
59 const ProcessModel& m_model;
60
61 std::shared_ptr<ysfx_t> fx;
62 ysfx_gfx_config_t conf{};
63
64private:
65 QImage m_frame;
66 void resizeEvent(QResizeEvent* event) override;
67 void closeEvent(QCloseEvent* event) override;
68
69 void mousePressEvent(QMouseEvent* event) override;
70 void mouseReleaseEvent(QMouseEvent* event) override;
71 void mouseMoveEvent(QMouseEvent* event) override;
72 void wheelEvent(QWheelEvent* event) override;
73 void keyPressEvent(QKeyEvent* event) override;
74 void keyReleaseEvent(QKeyEvent* event) override;
75 void paintEvent(QPaintEvent* event) override;
76 void refreshTimer();
77};
78
79using LayerFactory
81
82}
Definition EffectFactory.hpp:67
The Process class.
Definition score-lib-process/Process/Process.hpp:61
Definition score-plugin-ysfx/YSFX/ProcessModel.hpp:20
Definition score-plugin-ysfx/YSFX/ProcessModel.hpp:54
The id_base_t class.
Definition Identifier.hpp:57
Definition PluginWindow.hpp:9
Definition Preset.hpp:32
Definition TimeValue.hpp:21
Definition DocumentContext.hpp:18