mirror of https://github.com/WerWolv/ImHex.git
Merge pull request #1 from averne/master
Simple configuration parsing for size scaling
This commit is contained in:
commit
983c1b4a90
|
@ -4,5 +4,7 @@ cmake-build-debug/
|
||||||
cmake-build-release/
|
cmake-build-release/
|
||||||
|
|
||||||
build-linux/
|
build-linux/
|
||||||
|
build/
|
||||||
|
|
||||||
*.mgc
|
*.mgc
|
||||||
|
imgui.ini
|
||||||
|
|
|
@ -8,7 +8,11 @@ pkg_search_module(GLFW REQUIRED glfw3)
|
||||||
find_package(OpenGL REQUIRED)
|
find_package(OpenGL REQUIRED)
|
||||||
|
|
||||||
include_directories(include ${GLFW_INCLUDE_DIRS} libs/ImGui/include libs/glad/include)
|
include_directories(include ${GLFW_INCLUDE_DIRS} libs/ImGui/include libs/glad/include)
|
||||||
SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -DIMGUI_IMPL_OPENGL_LOADER_GLAD -static-libstdc++ -static-libgcc -static")
|
SET(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -DIMGUI_IMPL_OPENGL_LOADER_GLAD")
|
||||||
|
|
||||||
|
if (WIN32)
|
||||||
|
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-libstdc++ -static-libgcc -static")
|
||||||
|
endif (WIN32)
|
||||||
|
|
||||||
add_executable(ImHex
|
add_executable(ImHex
|
||||||
source/main.cpp
|
source/main.cpp
|
||||||
|
|
|
@ -24,6 +24,9 @@ namespace hex {
|
||||||
return static_cast<T*>(this->m_views.back());
|
return static_cast<T*>(this->m_views.back());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public:
|
||||||
|
float m_globalScale = 1.0f, m_fontScale = 1.0f;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void frameBegin();
|
void frameBegin();
|
||||||
void frameEnd();
|
void frameEnd();
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#include "imgui.h"
|
#include "imgui.h"
|
||||||
|
#include "imgui_internal.h"
|
||||||
#include "imgui_impl_glfw.h"
|
#include "imgui_impl_glfw.h"
|
||||||
#include "imgui_impl_opengl3.h"
|
#include "imgui_impl_opengl3.h"
|
||||||
|
|
||||||
|
@ -11,6 +12,44 @@
|
||||||
|
|
||||||
namespace hex {
|
namespace hex {
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
void *ImHexSettingsHandler_ReadOpenFn(ImGuiContext *ctx, ImGuiSettingsHandler *, const char *) {
|
||||||
|
return ctx; // Unused, but the return value has to be non-null
|
||||||
|
}
|
||||||
|
|
||||||
|
void ImHexSettingsHandler_ReadLine(ImGuiContext*, ImGuiSettingsHandler *handler, void *, const char* line) {
|
||||||
|
auto *window = reinterpret_cast<Window *>(handler->UserData);
|
||||||
|
|
||||||
|
float scale;
|
||||||
|
if (sscanf(line, "Scale=%f", &scale) == 1) { window->m_globalScale = scale; }
|
||||||
|
else if (sscanf(line, "FontScale=%f", &scale) == 1) { window->m_fontScale = scale; }
|
||||||
|
}
|
||||||
|
|
||||||
|
void ImHexSettingsHandler_ApplyAll(ImGuiContext *ctx, ImGuiSettingsHandler *handler) {
|
||||||
|
auto *window = reinterpret_cast<Window *>(handler->UserData);
|
||||||
|
auto &style = ImGui::GetStyle();
|
||||||
|
auto &io = ImGui::GetIO();
|
||||||
|
|
||||||
|
if (window->m_globalScale != 0.0f)
|
||||||
|
style.ScaleAllSizes(window->m_globalScale);
|
||||||
|
if (window->m_fontScale != 0.0f)
|
||||||
|
io.FontGlobalScale = window->m_fontScale;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ImHexSettingsHandler_WriteAll(ImGuiContext* ctx, ImGuiSettingsHandler *handler, ImGuiTextBuffer *buf) {
|
||||||
|
auto *window = reinterpret_cast<Window *>(handler->UserData);
|
||||||
|
|
||||||
|
buf->reserve(buf->size() + 0x20); // Ballpark reserve
|
||||||
|
|
||||||
|
buf->appendf("[%s][General]\n", handler->TypeName);
|
||||||
|
buf->appendf("Scale=%.1f\n", window->m_globalScale);
|
||||||
|
buf->appendf("FontScale=%.1f\n", window->m_fontScale);
|
||||||
|
buf->append("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Window::Window() {
|
Window::Window() {
|
||||||
this->initGLFW();
|
this->initGLFW();
|
||||||
this->initImGui();
|
this->initImGui();
|
||||||
|
@ -141,10 +180,21 @@ namespace hex {
|
||||||
|
|
||||||
void Window::initImGui() {
|
void Window::initImGui() {
|
||||||
IMGUI_CHECKVERSION();
|
IMGUI_CHECKVERSION();
|
||||||
ImGui::CreateContext();
|
auto *ctx = ImGui::CreateContext();
|
||||||
ImGuiIO& io = ImGui::GetIO(); (void)io;
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
|
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
|
||||||
|
|
||||||
|
// Install custom settings handler
|
||||||
|
ImGuiSettingsHandler handler;
|
||||||
|
handler.TypeName = "ImHex";
|
||||||
|
handler.TypeHash = ImHashStr("ImHex");
|
||||||
|
handler.ReadOpenFn = ImHexSettingsHandler_ReadOpenFn;
|
||||||
|
handler.ReadLineFn = ImHexSettingsHandler_ReadLine;
|
||||||
|
handler.ApplyAllFn = ImHexSettingsHandler_ApplyAll;
|
||||||
|
handler.WriteAllFn = ImHexSettingsHandler_WriteAll;
|
||||||
|
handler.UserData = this;
|
||||||
|
ctx->SettingsHandlers.push_back(handler);
|
||||||
|
|
||||||
ImGui::StyleColorsDark();
|
ImGui::StyleColorsDark();
|
||||||
|
|
||||||
ImGui_ImplGlfw_InitForOpenGL(this->m_window, true);
|
ImGui_ImplGlfw_InitForOpenGL(this->m_window, true);
|
||||||
|
|
Loading…
Reference in New Issue