looper/backends/ui/imgui/main.h
Zachary Hall 9899794b81
Some checks failed
Build / build-gentoo (push) Failing after 1m11s
Build / download-system-deps (push) Successful in 3m44s
Build / get-source-code (push) Successful in 13m23s
Build / build-deb (push) Successful in 11m40s
Build / build-appimage (push) Successful in 4m53s
Build / build-android (push) Failing after 3m19s
Build / build-windows (push) Failing after 8m9s
Add cat support
2024-12-21 14:23:00 -08:00

81 lines
2.3 KiB
C++

#pragma once
#include "RendererBackend.h"
#include "config.h"
#include "file_browser.h"
#include "playback.h"
#include "theme.h"
#include <libintl.h>
#include <iostream>
#include <fstream>
#include <json/json.h>
#include <stdio.h>
#include <cmath>
#include <cstdlib>
#include <string>
#include <map>
#include <SDL.h>
#include <SDL_image.h>
#include <filesystem>
#include <SDL_video.h>
#if defined(IMGUI_IMPL_OPENGL_ES2)
#include <SDL_opengles2.h>
#else
#include <SDL_opengl.h>
#endif
#include <license.hpp>
#include "base85.h"
#include "IconFontCppHeaders/IconsForkAwesome.h"
#include "imgui/imgui.h"
#include "imgui/misc/cpp/imgui_stdlib.h"
#include <translation.hpp>
#ifdef __EMSCRIPTEN__
#include "emscripten_mainloop_stub.h"
#endif
#include "../../../backend.hpp"
#include "ui_backend.hpp"
using namespace std::filesystem;
using std::string;
#define IMGUI_FRONTEND
class MainLoop : public RendererBackend {
bool show_demo_window = false;
FileBrowser fileDialog = FileBrowser(false);
std::string userdir;
float position = 0.0;
float length = 0.0;
bool prefs_window = false;
bool theme_editor = false;
bool about_window = false;
bool debug_mode = false;
bool property_editor = false;
bool restart_needed = false;
bool stopped = true;
bool enable_cat = false;
std::string cat_setting = "__default__";
std::vector<UIBackend*> backends;
UIBackend *cur_backend;
friend class ImGuiUIBackend;
std::atomic_bool exit_flag;
std::map<std::string, bool> boolean_properties;
std::map<std::string, double> double_properties;
std::map<std::string, int> int_properties;
std::map<std::string, std::string> string_properties;
std::vector<Property> properties;
std::vector<PlaybackStream> streams;
std::map<std::string, SDL_Texture*> cats;
SDL_Texture *cat = nullptr;
SDL_Texture *LoadCatFromMemory(const void *ptr, size_t len, const char *name);
SDL_Texture *LoadCat(File *file);
SDL_Texture *LoadCat(std::string path);
void AddCat(std::string name, SDL_Texture *tex);
public:
Playback *playback;
vector<std::string> args;
void FileLoaded();
void LoadFile(std::string file);
void Init() override;
void GuiFunction() override;
void Deinit() override;
void Drop(std::string file) override;
MainLoop();
};