7#include <unordered_map>
11#include "factories/BaseFactory.h"
12#include "ui/audio/SequenceSynth.h"
21 virtual ~SequenceDriver() =
default;
22 virtual bool Render(
const ParseResultData& item,
int option, RenderedAudio& out) = 0;
24 virtual std::vector<std::string> Options(
const ParseResultData& item) {
return {}; }
26 virtual int DefaultOption(
const ParseResultData& item) {
return 0; }
29inline std::unordered_map<std::string, std::shared_ptr<SequenceDriver>>& SequenceDrivers() {
30 static std::unordered_map<std::string, std::shared_ptr<SequenceDriver>> drivers;
34inline void RegisterSequenceDriver(
const std::string& type, std::shared_ptr<SequenceDriver> driver) {
35 SequenceDrivers()[type] = std::move(driver);
38inline SequenceDriver* GetSequenceDriver(
const std::string& type) {
39 auto& drivers = SequenceDrivers();
40 const auto it = drivers.find(type);
41 return it != drivers.end() ? it->second.get() :
nullptr;
45class SequencePreviewUI :
public BaseFactoryUI {
47 float GetItemHeight(
const ParseResultData& data)
override;
48 void DrawUI(
const ParseResultData& data)
override;