diff --git a/pkg/cimgui/build.zig b/pkg/cimgui/build.zig index 6d624e479..cf48cbe22 100644 --- a/pkg/cimgui/build.zig +++ b/pkg/cimgui/build.zig @@ -8,6 +8,11 @@ pub fn build(b: *std.Build) !void { _ = b.addModule("cimgui", .{ .source_file = .{ .path = "main.zig" } }); const imgui = b.dependency("imgui", .{}); + const freetype = b.dependency("freetype", .{ + .target = target, + .optimize = optimize, + .@"enable-libpng" = true, + }); const lib = b.addStaticLibrary(.{ .name = "cimgui", .target = target, @@ -15,6 +20,7 @@ pub fn build(b: *std.Build) !void { }); lib.linkLibC(); lib.linkLibCpp(); + lib.linkLibrary(freetype.artifact("freetype")); if (target.isWindows()) { lib.linkSystemLibrary("imm32"); } @@ -24,6 +30,7 @@ pub fn build(b: *std.Build) !void { var flags = std.ArrayList([]const u8).init(b.allocator); defer flags.deinit(); try flags.appendSlice(&.{ + "-DCIMGUI_FREETYPE=1", "-DIMGUI_DISABLE_OBSOLETE_FUNCTIONS=1", }); if (target.isWindows()) { @@ -42,6 +49,7 @@ pub fn build(b: *std.Build) !void { lib.addCSourceFile(.{ .file = imgui.path("imgui_demo.cpp"), .flags = flags.items }); lib.addCSourceFile(.{ .file = imgui.path("imgui_widgets.cpp"), .flags = flags.items }); lib.addCSourceFile(.{ .file = imgui.path("imgui_tables.cpp"), .flags = flags.items }); + lib.addCSourceFile(.{ .file = imgui.path("misc/freetype/imgui_freetype.cpp"), .flags = flags.items }); lib.addCSourceFile(.{ .file = imgui.path("backends/imgui_impl_opengl3.cpp"), diff --git a/pkg/cimgui/build.zig.zon b/pkg/cimgui/build.zig.zon index d29374536..63eb624b8 100644 --- a/pkg/cimgui/build.zig.zon +++ b/pkg/cimgui/build.zig.zon @@ -11,5 +11,6 @@ }, .apple_sdk = .{ .path = "../apple-sdk" }, + .freetype = .{ .path = "../freetype" }, }, } diff --git a/pkg/cimgui/vendor/cimgui.cpp b/pkg/cimgui/vendor/cimgui.cpp index 2f359cdf8..bed5e30d7 100644 --- a/pkg/cimgui/vendor/cimgui.cpp +++ b/pkg/cimgui/vendor/cimgui.cpp @@ -1,7 +1,9 @@ //This file is automatically generated by generator.lua from https://github.com/cimgui/cimgui //based on imgui.h file version "1.89.9" 18990 from Dear ImGui https://github.com/ocornut/imgui //with imgui_internal.h api +//with imgui_freetype.h api //docking branch +#define IMGUI_ENABLE_FREETYPE #ifdef IMGUI_ENABLE_FREETYPE #ifndef CIMGUI_FREETYPE #error "IMGUI_FREETYPE should be defined for Freetype linking" @@ -19,6 +21,7 @@ #include "cimgui.h" + CIMGUI_API ImVec2* ImVec2_ImVec2_Nil(void) { return IM_NEW(ImVec2)(); @@ -5397,10 +5400,6 @@ CIMGUI_API bool igIsKeyPressedMap(ImGuiKey key,bool repeat) { return ImGui::IsKeyPressedMap(key,repeat); } -CIMGUI_API const ImFontBuilderIO* igImFontAtlasGetBuilderForStbTruetype() -{ - return ImFontAtlasGetBuilderForStbTruetype(); -} CIMGUI_API void igImFontAtlasBuildInit(ImFontAtlas* atlas) { return ImFontAtlasBuildInit(atlas); @@ -5433,6 +5432,14 @@ CIMGUI_API void igImFontAtlasBuildMultiplyRectAlpha8(const unsigned char table[2 { return ImFontAtlasBuildMultiplyRectAlpha8(table,pixels,x,y,w,h,stride); } +CIMGUI_API const ImFontBuilderIO* ImGuiFreeType_GetBuilderForFreeType() +{ + return ImGuiFreeType::GetBuilderForFreeType(); +} +CIMGUI_API void ImGuiFreeType_SetAllocatorFunctions(void*(*alloc_func)(size_t sz,void* user_data),void(*free_func)(void* ptr,void* user_data),void* user_data) +{ + return ImGuiFreeType::SetAllocatorFunctions(alloc_func,free_func,user_data); +} diff --git a/pkg/cimgui/vendor/cimgui.h b/pkg/cimgui/vendor/cimgui.h index b78ab3427..395e338f3 100644 --- a/pkg/cimgui/vendor/cimgui.h +++ b/pkg/cimgui/vendor/cimgui.h @@ -1,6 +1,7 @@ //This file is automatically generated by generator.lua from https://github.com/cimgui/cimgui //based on imgui.h file version "1.89.9" 18990 from Dear ImGui https://github.com/ocornut/imgui //with imgui_internal.h api +//with imgui_freetype.h api //docking branch #ifndef CIMGUI_INCLUDED #define CIMGUI_INCLUDED @@ -3121,6 +3122,20 @@ struct ImFontBuilderIO { bool (*FontBuilder_Build)(ImFontAtlas* atlas); }; +struct ImFontAtlas; +struct ImFontBuilderIO; +typedef enum { + ImGuiFreeTypeBuilderFlags_NoHinting = 1 << 0, + ImGuiFreeTypeBuilderFlags_NoAutoHint = 1 << 1, + ImGuiFreeTypeBuilderFlags_ForceAutoHint = 1 << 2, + ImGuiFreeTypeBuilderFlags_LightHinting = 1 << 3, + ImGuiFreeTypeBuilderFlags_MonoHinting = 1 << 4, + ImGuiFreeTypeBuilderFlags_Bold = 1 << 5, + ImGuiFreeTypeBuilderFlags_Oblique = 1 << 6, + ImGuiFreeTypeBuilderFlags_Monochrome = 1 << 7, + ImGuiFreeTypeBuilderFlags_LoadColor = 1 << 8, + ImGuiFreeTypeBuilderFlags_Bitmap = 1 << 9 +}ImGuiFreeTypeBuilderFlags; #define IMGUI_HAS_DOCK 1 #else @@ -4526,7 +4541,6 @@ CIMGUI_API void igDebugNodeViewport(ImGuiViewportP* viewport); CIMGUI_API void igDebugRenderKeyboardPreview(ImDrawList* draw_list); CIMGUI_API void igDebugRenderViewportThumbnail(ImDrawList* draw_list,ImGuiViewportP* viewport,const ImRect bb); CIMGUI_API bool igIsKeyPressedMap(ImGuiKey key,bool repeat); -CIMGUI_API const ImFontBuilderIO* igImFontAtlasGetBuilderForStbTruetype(void); CIMGUI_API void igImFontAtlasBuildInit(ImFontAtlas* atlas); CIMGUI_API void igImFontAtlasBuildSetupFont(ImFontAtlas* atlas,ImFont* font,ImFontConfig* font_config,float ascent,float descent); CIMGUI_API void igImFontAtlasBuildPackCustomRects(ImFontAtlas* atlas,void* stbrp_context_opaque); @@ -4535,6 +4549,8 @@ CIMGUI_API void igImFontAtlasBuildRender8bppRectFromString(ImFontAtlas* atlas,in CIMGUI_API void igImFontAtlasBuildRender32bppRectFromString(ImFontAtlas* atlas,int x,int y,int w,int h,const char* in_str,char in_marker_char,unsigned int in_marker_pixel_value); CIMGUI_API void igImFontAtlasBuildMultiplyCalcLookupTable(unsigned char out_table[256],float in_multiply_factor); CIMGUI_API void igImFontAtlasBuildMultiplyRectAlpha8(const unsigned char table[256],unsigned char* pixels,int x,int y,int w,int h,int stride); +CIMGUI_API const ImFontBuilderIO* ImGuiFreeType_GetBuilderForFreeType(void); +CIMGUI_API void ImGuiFreeType_SetAllocatorFunctions(void*(*alloc_func)(size_t sz,void* user_data),void(*free_func)(void* ptr,void* user_data),void* user_data); /////////////////////////hand written functions @@ -4558,3 +4574,4 @@ CIMGUI_API void ImVector_ImWchar_UnInit(ImVector_ImWchar* p); +