#pragma once
#include "../ImGui_Core/imgui.h"

#define ImGuiDevice						ImGui_Device::ImGuiDevice

class ImGui_Device
{

protected:
	float m_fScaleUI = 1.0f;

	ImGui_Device();
	~ImGui_Device() {}

public:
	static ImGui_Device* ImGuiDevice;

	void SetScaleFactor(float scale) { m_fScaleUI = scale; }
	float GetScaleFactor() { return m_fScaleUI; }

	virtual void Init() = NULL;
	virtual void NewFrame() = NULL;
	virtual void Render() = NULL;
	virtual void DrawData(ImDrawData* draw_data) = NULL;
	virtual bool ProcessInputs() = NULL;
	virtual bool CreateDeviceObjects() = NULL;
	virtual bool CreateFontsTexture() = NULL;

	virtual void SetClipboardText(void* user_data, const char* text) {}
	virtual const char* GetClipboardText(void* user_data) {	return NULL; }
	virtual void SetPlatformImeData(ImGuiViewport* viewport, ImGuiPlatformImeData* data) {}
	virtual void UpdateMouseData() {}
	virtual void UpdateMouseCursor() {}
	virtual void UpdateGamepads() {}
};
