Program Listing for File PDJE_interface.cpp
↰ Return to documentation for file (include/interface/PDJE_interface.cpp
)
#include "PDJE_interface.hpp"
PDJE::PDJE(const std::string& rootPath)
{
DBROOT.emplace();
DBROOT->openDB(rootPath);
}
TRACK_VEC
PDJE::SearchTrack(const std::string& Title)
{
trackdata td;
td.trackTitle = Title;
auto dbres = DBROOT.value() << td;
if(dbres.has_value()){
return dbres.value();
}
else{
return TRACK_VEC();
}
}
MUS_VEC
PDJE::SearchMusic(
const std::string& Title,
const std::string& composer,
const double bpm)
{
musdata md;
md.title = Title;
md.composer = composer;
md.bpm = bpm;
auto dbres = DBROOT.value() << md;
if(dbres.has_value()){
return dbres.value();
}
else{
return MUS_VEC();
}
}
bool
PDJE::InitPlayer(
PLAY_MODE mode,
trackdata& td,
const unsigned int FrameBufferSize)
{
switch (mode)
{
case PLAY_MODE::FULL_PRE_RENDER:
player.emplace(
DBROOT.value(),
td,
FrameBufferSize,
false
);
break;
case PLAY_MODE::HYBRID_RENDER:
player.emplace(
DBROOT.value(),
td,
FrameBufferSize,
true
);
break;
case PLAY_MODE::FULL_MANUAL_RENDER:
player.emplace(
FrameBufferSize
);
break;
default:
break;
}
if(!player.has_value()){
return false;
}
else{
if(player->STATUS != "OK"){
return false;
}
else{
return true;
}
}
}
bool
PDJE::GetNoteObjects(
trackdata& td,
OBJ_SETTER_CALLBACK& ObjectSetCallback)
{
CapReader<NoteBinaryCapnpData> notereader;
CapReader<MixBinaryCapnpData> mixreader;
notereader.open(td.noteBinary);
mixreader.open(td.mixBinary);
auto noteTrans = new NoteTranslator();
auto mixTrans = new MixTranslator();
if(mixTrans->bpms.has_value()){
noteTrans->Read(
notereader,
mixTrans->bpms.value().bpmVec,
ObjectSetCallback);
}
else{
delete noteTrans;
delete mixTrans;
return false;
}
delete noteTrans;
delete mixTrans;
return true;
}
bool
PDJE::InitEditor(
const std::string &auth_name,
const std::string &auth_email,
const std::string& projectRoot)
{
editor.emplace(auth_name, auth_email);
return editor->Open(projectRoot);
}