This repository has been archived on 2022-05-21. You can view files and clone it, but cannot push or open issues or pull requests.
glyphs-juke/src/MusicElementFactory.h

45 lines
1.1 KiB
C
Raw Normal View History

2021-08-27 04:12:26 +00:00
#pragma once
#include "common.h"
#include "iAllocator.h"
#include "iAudioDevice.h"
#include "iElementFactory.h"
#include "MusicElement.h"
namespace gj {
class MusicElementFactory : public iElementFactory {
public:
MusicElementFactory(MusicElementFactory&&) = delete;
MusicElementFactory(const MusicElementFactory&) = delete;
MusicElementFactory& operator=(MusicElementFactory&&) = delete;
MusicElementFactory& operator=(const MusicElementFactory&) = delete;
MusicElementFactory(iAllocator* alloc, iAudioDevice* audio) :
alloc_(alloc), audio_(audio) {
}
UniqPtr<iElement> Create(Param&& param) override {
if (param.custom.size() != 2) return nullptr;
const std::string path = std::get<std::string>(param.custom[0]);
const double offset = std::get<double>(param.custom[1]);
MusicElement::Param p;
p.audio = audio_;
p.period = param.period;
p.path = path;
p.offset = offset;
p.driver = std::move(param.driver);
2021-08-28 04:41:20 +00:00
return alloc_->MakeUniq<MusicElement>(std::move(p));
2021-08-27 04:12:26 +00:00
}
private:
iAllocator* alloc_;
iAudioDevice* audio_;
};
}