MostlyHarmless 0.0.1
Loading...
Searching...
No Matches
mostlyharmless_PluginBase.h
Go to the documentation of this file.
1//
2// Created by Syl Morrison on 20/10/2024.
3//
4
5#ifndef MOSTLYHARMLESS_MOSTLYHARMLESS_PLUGINBASE_H
6#define MOSTLYHARMLESS_MOSTLYHARMLESS_PLUGINBASE_H
14#include <clap/helpers/plugin.hh>
15
23 std::unique_ptr<IPluginEntry> createPluginEntry() noexcept;
24} // namespace mostly_harmless::core
25
34 class PluginBase final : public clap::helpers::Plugin<clap::helpers::MisbehaviourHandler::Ignore, clap::helpers::CheckingLevel::Maximal> {
35 public:
40 explicit PluginBase(const clap_host* host);
41
42 private:
43 bool activate(double sampleRate, std::uint32_t minFrameCount, std::uint32_t maxFrameCount) noexcept override;
44 clap_process_status process(const clap_process* processContext) noexcept override;
45 void paramsFlush(const clap_input_events* in, const clap_output_events* out) noexcept override;
46 void handleGuiEvents(const clap_output_events_t* outputQueue) noexcept;
47 void handleEvent(const clap_event_header_t* event) noexcept;
48
49 [[nodiscard]] bool implementsParams() const noexcept override;
50 [[nodiscard]] bool isValidParamId(clap_id paramId) const noexcept override;
51 [[nodiscard]] std::uint32_t paramsCount() const noexcept override;
52 [[nodiscard]] bool paramsInfo(std::uint32_t paramIndex, clap_param_info* info) const noexcept override;
53 [[nodiscard]] bool paramsValue(clap_id id, double* value) noexcept override;
54
55 [[nodiscard]] bool implementsAudioPorts() const noexcept override;
56 [[nodiscard]] std::uint32_t audioPortsCount(bool isInput) const noexcept override;
57 [[nodiscard]] bool audioPortsInfo(std::uint32_t index, bool isInput, clap_audio_port_info* info) const noexcept override;
58 [[nodiscard]] bool implementsNotePorts() const noexcept override;
59 [[nodiscard]] std::uint32_t notePortsCount(bool isInput) const noexcept override;
60 [[nodiscard]] bool notePortsInfo(std::uint32_t index, bool isInput, clap_note_port_info* info) const noexcept override;
61
62 [[nodiscard]] bool implementsState() const noexcept override;
63 [[nodiscard]] bool stateSave(const clap_ostream* stream) noexcept override;
64 [[nodiscard]] bool stateLoad(const clap_istream* stream) noexcept override;
65
66 [[nodiscard]] bool implementsGui() const noexcept override;
67 [[nodiscard]] bool guiIsApiSupported(const char* api, bool isFloating) noexcept override;
68 [[nodiscard]] bool guiCreate(const char* api, bool isFloating) noexcept override;
69 [[nodiscard]] bool guiShow() noexcept override;
70 [[nodiscard]] bool guiHide() noexcept override;
71 void guiDestroy() noexcept override;
72 [[nodiscard]] bool guiSetParent(const clap_window* window) noexcept override;
73 [[nodiscard]] bool guiSetScale(double scale) noexcept override;
74 [[nodiscard]] bool guiCanResize() const noexcept override;
75 [[nodiscard]] bool guiAdjustSize(std::uint32_t* width, std::uint32_t* height) noexcept override;
76 [[nodiscard]] bool guiSetSize(std::uint32_t width, std::uint32_t height) noexcept override;
77 [[nodiscard]] bool guiGetSize(std::uint32_t* width, std::uint32_t* height) noexcept override;
78
79 utils::HostInfo m_hostInfo;
80 std::optional<TransportState> m_lastTransportState{};
81 utils::Timer m_guiDispatchThread;
82 std::unique_ptr<core::IPluginEntry> m_pluginEntry{ nullptr };
83 std::unique_ptr<core::ISharedState> m_state{ nullptr };
84 std::unique_ptr<core::IEngine> m_engine{ nullptr };
85 std::unique_ptr<core::IEditor> m_editor{ nullptr };
86 };
87} // namespace mostly_harmless::internal
88#endif // MOSTLYHARMLESS_MOSTLYHARMLESS_PLUGINBASE_H
PluginBase(const clap_host *host)
Definition mostlyharmless_Timer.h:10
Contains core functionality of the framework.
Definition mostlyharmless_PluginBase.h:16
std::unique_ptr< IPluginEntry > createPluginEntry() noexcept
Framework-Developer-Only documentation, for specific mechanisms within the framework.
Definition mostlyharmless_PluginBase.h:26
Contains general purpose utility classes & functions.
Definition mostlyharmless_TaskThread.h:12
The top-level namespace, contains all things plugin-related.
Definition mostlyharmless_BusConfig.h:3
Contains info from the host about the current transport state.
Definition mostlyharmless_TransportState.h:54