Archived
1
Fork 0

Non-mac platforms can finally load the proper imgui font

This commit is contained in:
redstrate 2021-02-05 20:05:10 -05:00
parent 6b12689e5a
commit 73fa35b674
3 changed files with 9 additions and 9 deletions

View file

@ -3,6 +3,7 @@
#include <string_view>
#include "pass.hpp"
#include "file.hpp"
class GFXBuffer;
class GFXCommandBuffer;
@ -22,6 +23,8 @@ private:
void load_font(const std::string_view filename);
void create_font_texture();
void update_buffers(const ImDrawData& draw_data);
std::unique_ptr<file::File> font_file;
GFXPipeline* pipeline = nullptr;
GFXTexture* font_texture = nullptr;

View file

@ -3,7 +3,6 @@
#include <imgui.h>
#include "engine.hpp"
#include "file.hpp"
#include "gfx.hpp"
#include "gfx_commandbuffer.hpp"
#include "log.hpp"
@ -16,9 +15,7 @@ void ImGuiPass::initialize() {
io.BackendFlags |= ImGuiBackendFlags_RendererHasVtxOffset;
io.BackendFlags |= ImGuiBackendFlags_RendererHasViewports;
#if !defined(PLATFORM_TVOS) && !defined(PLATFORM_IOS) && !defined(PLATFORM_WINDOWS)
load_font("OpenSans-Regular.ttf");
#endif
create_font_texture();
}
@ -151,20 +148,20 @@ void ImGuiPass::load_font(const std::string_view filename) {
ImGuiIO& io = ImGui::GetIO();
#if !defined(PLATFORM_IOS) || !defined(PLATFORM_TVOS)
if(io.Fonts->Fonts.empty()) {
auto file = file::open(file::app_domain / filename);
if(file != std::nullopt) {
file->read_all();
font_file = std::make_unique<file::File>(std::move(file.value()));
font_file->read_all();
io.Fonts->AddFontFromMemoryTTF(file->cast_data<unsigned char>(), file->size(), 15.0 * platform::get_window_dpi(0));
io.Fonts->AddFontFromMemoryTTF(font_file->cast_data<unsigned char>(), font_file->size(), 15.0 * platform::get_window_dpi(0));
ImGui::GetIO().FontGlobalScale = 1.0 / platform::get_window_dpi(0);
} else {
console::error(System::Renderer, "Failed to load font file for imgui!");
return;
}
}
#endif
}
void ImGuiPass::create_font_texture() {

View file

@ -55,8 +55,8 @@
//---- Avoid multiple STB libraries implementations, or redefine path/filenames to prioritize another version
// By default the embedded implementations are declared static and not available outside of imgui cpp files.
#define IMGUI_STB_TRUETYPE_FILENAME "stb_truetype.h"
#define IMGUI_STB_RECT_PACK_FILENAME "stb_rect_pack.h"
//#define IMGUI_STB_TRUETYPE_FILENAME "stb_truetype.h"
//#define IMGUI_STB_RECT_PACK_FILENAME "stb_rect_pack.h"
//#define IMGUI_DISABLE_STB_TRUETYPE_IMPLEMENTATION
//#define IMGUI_DISABLE_STB_RECT_PACK_IMPLEMENTATION