Program Listing for File render.cpp
↰ Return to documentation for file (include\MainObjects\editorObject\render.cpp
)
#include "editorObject.hpp"
bool
editorObject::render(const UNSANITIZED &trackTitle, litedb &ROOTDB)
{
std::unordered_map<SANITIZED, SANITIZED> titles;
auto td = makeTrackData(trackTitle, titles);
std::vector<musdata> mds;
for (auto &i : E_obj->musicHandle) {
mds.emplace_back();
auto rendered = i.jsonh.render();
mds.back().title = i.musicName;
auto rdout = rendered->out();
mds.back().bpmBinary.assign(rdout.begin(), rdout.end());
auto tempCOMPOSER = i.jsonh[PDJE_JSON_COMPOSER].get<SANITIZED>();
auto tempPATH = i.jsonh[PDJE_JSON_PATH].get<SANITIZED>();
auto tempFIRST_BEAT = i.jsonh[PDJE_JSON_FIRST_BEAT].get<DONT_SANITIZE>();
mds.back().composer = (tempCOMPOSER);
mds.back().musicPath = (tempPATH);
mds.back().firstBeat = (tempFIRST_BEAT);
try {
mds.back().bpm =
std::stod(rendered->Wp->getDatas()[0].getBpm().cStr());
} catch (std::exception &e) {
critlog("failed to convert bpm to double. from editorObject "
"render. ErrException: ");
critlog(e.what());
critlog("music name: ");
critlog(i.musicName);
continue;
}
titles[i.musicName] = "";
}
for (auto &i : titles) {
if (i.second != "") {
auto findFromRoot = musdata();
findFromRoot.title = i.first;
findFromRoot.composer = i.second;
auto mus = ROOTDB << findFromRoot;
if (mus.has_value()) {
if (mus->empty())
continue;
musdata fromRoot = mus->front();
try {
fromRoot.musicPath =
fs::relative(
fs::absolute(ROOTDB.getRoot().parent_path() /
fromRoot.musicPath),
projectRoot)
.string();
} catch (std::exception &e) {
critlog("failed to convert relative path. from "
"editorObject render. ErrException: ");
critlog(e.what());
critlog("music path: ");
critlog(fromRoot.musicPath);
critlog("project root: ");
critlog(projectRoot.generic_string());
return false;
}
mds.push_back(fromRoot);
}
}
}
return projectLocalDB->BuildProject(td, mds);
}