looper/backends/ui/imgui/RendererBackend.h
2024-09-16 15:05:53 -07:00

64 lines
1.7 KiB
C++

#pragma once
#include "imgui/imgui.h"
#include <functional>
#if defined(IMGUI_IMPL_OPENGL_ES2)
#include <SDL_opengles2.h>
#else
#include <SDL_opengl.h>
#endif
#include <SDL.h>
#include <SDL_video.h>
#ifdef __EMSCRIPTEN__
#include "emscripten_mainloop_stub.h"
#include <emscripten.h>
#include <emscripten/html5.h>
#endif
#include <string>
#include "theme.h"
static const char* NAME = "Looper";
class RendererBackend {
void BackendDeinit();
void LoopFunction();
void BackendInit();
bool started = false;
//SDL_GLContext gl_context;
bool resize_needed = true;
void on_resize();
bool update_scale = false;
public:
std::optional<bool> touchScreenModeOverride;
std::optional<double> scaleOverride;
bool isTouchScreenMode();
static void resize_static();
double scale = 1.0;
SDL_Window *window;
SDL_Renderer *rend;
int window_width = 475;
int window_height = 354;
bool done = false;
Theme *theme;
bool vsync = false;
std::string lang;
std::string userdir;
int framerate = 60;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
ImFont *title;
const char *prefPath;
ImVec4 accent_color = ImVec4(0.75, 1.0, 1.0, 1.0);
int Run();
void SetWindowTitle(const char *title);
virtual void Init();
virtual void GuiFunction();
virtual void Deinit();
virtual void Drop(std::string file);
void OnScale(float scale);
void UpdateScale();
void QueueUpdateScale();
void AddFonts();
void SetWindowSize(int w, int h);
void GetWindowsize(int *w, int *h);
RendererBackend();
virtual ~RendererBackend();
friend void main_loop();
friend void backend_init(void *userdata);
};