Program Listing for File PDJE_interface.hpp

Return to documentation for file (include/interface/PDJE_interface.hpp)

#pragma once

#include "audioPlayer.hpp"
#include "dbRoot.hpp"
#include "NoteTranslator.hpp"
#include "editorObject.hpp"

enum PLAY_MODE{
    FULL_PRE_RENDER,
    HYBRID_RENDER,
    FULL_MANUAL_RENDER
};
class PDJE{
private:
    std::optional<litedb> DBROOT;
public:
    PDJE(const std::string& rootPath);
    ~PDJE() = default;

    std::optional<audioPlayer> player;
    std::optional<editorObject> editor;
    bool
    InitPlayer(
        PLAY_MODE mode,
        trackdata& td,
        const unsigned int FrameBufferSize);


    bool
    InitEditor(
        const std::string &auth_name,
        const std::string &auth_email,
        const std::string& projectRoot
    );
    bool
    GetNoteObjects(
        trackdata& td,
        OBJ_SETTER_CALLBACK& ObjectSetCallback
    );
    MUS_VEC
    SearchMusic(
        const std::string& Title,
        const std::string& composer,
        const double bpm = -1);
    TRACK_VEC SearchTrack(const std::string& Title);
    audioPlayer* GetPlayerObject();


};
class ARGSETTER_WRAPPER{
private:
    FXControlPannel* fxp;
public:
    ARGSETTER_WRAPPER(FXControlPannel* pointer): fxp(pointer){};
    ~ARGSETTER_WRAPPER() = default;
    std::vector<std::string> GetFXArgKeys(FXList fx);
    void
    SetFXArg(
        FXList fx,
        const std::string& key,
        double arg);

};