serialWatch/third/imgui/imgui_helper.h

71 lines
2.1 KiB
C
Raw Normal View History

2024-11-07 13:44:49 +08:00
#include "imgui.h"
#include <functional>
#ifdef _WIN32
#pragma once
#include "imgui_impl_dx11.h"
#include "imgui_impl_win32.h"
#include <d3d11.h>
#include <tchar.h>
extern IMGUI_IMPL_API LRESULT ImGui_ImplWin32_WndProcHandler(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
class ImGuiHelper
{
private:
int window_width, window_height;
wchar_t windowTitle;
ID3D11Device *g_pd3dDevice = nullptr;
ID3D11DeviceContext *g_pd3dDeviceContext = nullptr;
IDXGISwapChain *g_pSwapChain = nullptr;
static UINT g_ResizeWidth, g_ResizeHeight;
ID3D11RenderTargetView *g_pMainRenderTargetView = nullptr;
ImVec4 clear_color = ImVec4(0.45f, 0.55f, 0.60f, 1.00f);
HWND hWnd = nullptr;
WNDCLASSEX wc;
private:
bool CreateDeviceD3d(HWND hWnd);
void CleanupDeviceD3d();
void CreateRenderTarget();
void CleanupRenderTarget();
static LRESULT WINAPI WndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
public:
ImGuiHelper(int width = 1280 , int height = 800,const char* windowTitle = "Window");
~ImGuiHelper();
ImGuiHelper(ImGuiHelper &&helper) = default;
ImGuiHelper(const ImGuiHelper &helper) = default;
ImGuiHelper &operator=(const ImGuiHelper &helper) = default;
ImGuiHelper &operator=(ImGuiHelper &&helper) = default;
void Render(const std::function<void()> &context, bool &isRunning);
};
#elif __linux
#ifndef __ImGuiHelper_H
#define __ImGuiHelper_H
#include <GLFW/glfw3.h>
#include "imgui_impl_glfw.h"
#include "imgui_impl_opengl3.h"
class ImGuiHelper{
private:
static const char* glsl_version;
std::string windowTitle;
GLFWwindow* window = nullptr;
ImGuiIO* io;
int width, height;
public:
ImGuiHelper(int width = 1280, int height = 720, const std::string& windowTitle = "Window");
~ImGuiHelper();
ImGuiHelper(ImGuiHelper &&helper) = default;
ImGuiHelper(const ImGuiHelper& helper) = default;
ImGuiHelper& operator=(ImGuiHelper&& helper) = default;
ImGuiHelper& operator=(const ImGuiHelper& helper) = default;
void Render(const std::function<void()>& context, bool &isRunning);
};
#endif
#endif