Skip to content

Commit

Permalink
Non-windows: Link fontawesome into executable. (cemu-project#442)
Browse files Browse the repository at this point in the history
  • Loading branch information
goeiecool9999 committed Nov 2, 2022
1 parent c3182ae commit dfa7774
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 7 deletions.
21 changes: 14 additions & 7 deletions src/imgui/imgui_extension.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,10 @@ void ImRotateEnd(float rad, ImVec2 center)
uint8* extractCafeDefaultFont(sint32* size);
sint32 g_font_size = 0;
uint8* g_font_data = nullptr;
#if !BOOST_OS_WINDOWS
extern int const g_fontawesome_size;
extern char const g_fontawesome_data[];
#endif
std::unordered_map<int, ImFont*> g_imgui_fonts;
std::stack<int> g_font_requests;

Expand All @@ -66,6 +70,14 @@ void ImGui_PrecacheFonts()
//cfg.SizePixels = size;
ImFont* font = io.Fonts->AddFontFromMemoryTTF(g_font_data, g_font_size, (float)size, &cfg);

ImFontConfig cfgmerge{};
cfgmerge.FontDataOwnedByAtlas = false;
cfgmerge.MergeMode = true;
cfgmerge.GlyphMinAdvanceX = 20.0f;
//cfgmerge.GlyphOffset = { 2,2 };

static const ImWchar icon_ranges[] = { ICON_MIN_FA, ICON_MAX_FA, 0 };

#if BOOST_OS_WINDOWS
const auto hinstance = GetModuleHandle(nullptr);
const HRSRC res = FindResource(hinstance, MAKEINTRESOURCE(IDR_FONTAWESOME), RT_RCDATA);
Expand All @@ -77,16 +89,11 @@ void ImGui_PrecacheFonts()
void* data = LockResource(mem);
const size_t len = SizeofResource(hinstance, res);

ImFontConfig cfgmerge{};
cfgmerge.FontDataOwnedByAtlas = false;
cfgmerge.MergeMode = true;
cfgmerge.GlyphMinAdvanceX = 20.0f;
//cfgmerge.GlyphOffset = { 2,2 };

static const ImWchar icon_ranges[] = { ICON_MIN_FA, ICON_MAX_FA, 0 };
io.Fonts->AddFontFromMemoryTTF(data, (int)len, (float)size, &cfgmerge, icon_ranges);
}
}
#else
io.Fonts->AddFontFromMemoryTTF((void*)g_fontawesome_data, (int)g_fontawesome_size, (float)size, &cfgmerge, icon_ranges);
#endif

g_imgui_fonts[(int)size] = font;
Expand Down
10 changes: 10 additions & 0 deletions src/resource/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,22 @@ add_library(CemuResource)

set_property(TARGET CemuResource PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

enable_language(ASM)

# icon resources
target_sources(CemuResource PRIVATE
embedded/resources.cpp
embedded/resources.h
)

if(UNIX)
if(NOT APPLE)
target_sources(CemuResource PRIVATE embedded/fontawesome.S)
else()
target_sources(CemuResource PRIVATE embedded/fontawesome_macos.S)
endif()
endif()

target_sources(CemuResource PRIVATE CafeDefaultFont.cpp)

target_include_directories(CemuResource PUBLIC "../")
Expand Down
8 changes: 8 additions & 0 deletions src/resource/embedded/fontawesome.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.section .text
.global g_fontawesome_data, g_fontawesome_size

g_fontawesome_data:
.incbin "fontawesome-webfont.ttf"
g_fontawesome_size:
.int g_fontawesome_size - g_fontawesome_data

8 changes: 8 additions & 0 deletions src/resource/embedded/fontawesome_macos.S
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
.section __DATA, __const
.global _g_fontawesome_data, _g_fontawesome_size

_g_fontawesome_data:
.incbin "fontawesome-webfont.ttf"
_g_fontawesome_size:
.int _g_fontawesome_size - _g_fontawesome_data

0 comments on commit dfa7774

Please sign in to comment.