mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-14 15:56:13 +03:00
pkg/cimgui: use freetype for font rendering
This commit is contained in:
@ -8,6 +8,11 @@ pub fn build(b: *std.Build) !void {
|
|||||||
_ = b.addModule("cimgui", .{ .source_file = .{ .path = "main.zig" } });
|
_ = b.addModule("cimgui", .{ .source_file = .{ .path = "main.zig" } });
|
||||||
|
|
||||||
const imgui = b.dependency("imgui", .{});
|
const imgui = b.dependency("imgui", .{});
|
||||||
|
const freetype = b.dependency("freetype", .{
|
||||||
|
.target = target,
|
||||||
|
.optimize = optimize,
|
||||||
|
.@"enable-libpng" = true,
|
||||||
|
});
|
||||||
const lib = b.addStaticLibrary(.{
|
const lib = b.addStaticLibrary(.{
|
||||||
.name = "cimgui",
|
.name = "cimgui",
|
||||||
.target = target,
|
.target = target,
|
||||||
@ -15,6 +20,7 @@ pub fn build(b: *std.Build) !void {
|
|||||||
});
|
});
|
||||||
lib.linkLibC();
|
lib.linkLibC();
|
||||||
lib.linkLibCpp();
|
lib.linkLibCpp();
|
||||||
|
lib.linkLibrary(freetype.artifact("freetype"));
|
||||||
if (target.isWindows()) {
|
if (target.isWindows()) {
|
||||||
lib.linkSystemLibrary("imm32");
|
lib.linkSystemLibrary("imm32");
|
||||||
}
|
}
|
||||||
@ -24,6 +30,7 @@ pub fn build(b: *std.Build) !void {
|
|||||||
var flags = std.ArrayList([]const u8).init(b.allocator);
|
var flags = std.ArrayList([]const u8).init(b.allocator);
|
||||||
defer flags.deinit();
|
defer flags.deinit();
|
||||||
try flags.appendSlice(&.{
|
try flags.appendSlice(&.{
|
||||||
|
"-DCIMGUI_FREETYPE=1",
|
||||||
"-DIMGUI_DISABLE_OBSOLETE_FUNCTIONS=1",
|
"-DIMGUI_DISABLE_OBSOLETE_FUNCTIONS=1",
|
||||||
});
|
});
|
||||||
if (target.isWindows()) {
|
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_demo.cpp"), .flags = flags.items });
|
||||||
lib.addCSourceFile(.{ .file = imgui.path("imgui_widgets.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("imgui_tables.cpp"), .flags = flags.items });
|
||||||
|
lib.addCSourceFile(.{ .file = imgui.path("misc/freetype/imgui_freetype.cpp"), .flags = flags.items });
|
||||||
|
|
||||||
lib.addCSourceFile(.{
|
lib.addCSourceFile(.{
|
||||||
.file = imgui.path("backends/imgui_impl_opengl3.cpp"),
|
.file = imgui.path("backends/imgui_impl_opengl3.cpp"),
|
||||||
|
@ -11,5 +11,6 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
.apple_sdk = .{ .path = "../apple-sdk" },
|
.apple_sdk = .{ .path = "../apple-sdk" },
|
||||||
|
.freetype = .{ .path = "../freetype" },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
15
pkg/cimgui/vendor/cimgui.cpp
vendored
15
pkg/cimgui/vendor/cimgui.cpp
vendored
@ -1,7 +1,9 @@
|
|||||||
//This file is automatically generated by generator.lua from https://github.com/cimgui/cimgui
|
//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
|
//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_internal.h api
|
||||||
|
//with imgui_freetype.h api
|
||||||
//docking branch
|
//docking branch
|
||||||
|
#define IMGUI_ENABLE_FREETYPE
|
||||||
#ifdef IMGUI_ENABLE_FREETYPE
|
#ifdef IMGUI_ENABLE_FREETYPE
|
||||||
#ifndef CIMGUI_FREETYPE
|
#ifndef CIMGUI_FREETYPE
|
||||||
#error "IMGUI_FREETYPE should be defined for Freetype linking"
|
#error "IMGUI_FREETYPE should be defined for Freetype linking"
|
||||||
@ -19,6 +21,7 @@
|
|||||||
#include "cimgui.h"
|
#include "cimgui.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
CIMGUI_API ImVec2* ImVec2_ImVec2_Nil(void)
|
CIMGUI_API ImVec2* ImVec2_ImVec2_Nil(void)
|
||||||
{
|
{
|
||||||
return IM_NEW(ImVec2)();
|
return IM_NEW(ImVec2)();
|
||||||
@ -5397,10 +5400,6 @@ CIMGUI_API bool igIsKeyPressedMap(ImGuiKey key,bool repeat)
|
|||||||
{
|
{
|
||||||
return ImGui::IsKeyPressedMap(key,repeat);
|
return ImGui::IsKeyPressedMap(key,repeat);
|
||||||
}
|
}
|
||||||
CIMGUI_API const ImFontBuilderIO* igImFontAtlasGetBuilderForStbTruetype()
|
|
||||||
{
|
|
||||||
return ImFontAtlasGetBuilderForStbTruetype();
|
|
||||||
}
|
|
||||||
CIMGUI_API void igImFontAtlasBuildInit(ImFontAtlas* atlas)
|
CIMGUI_API void igImFontAtlasBuildInit(ImFontAtlas* atlas)
|
||||||
{
|
{
|
||||||
return ImFontAtlasBuildInit(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);
|
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);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
19
pkg/cimgui/vendor/cimgui.h
vendored
19
pkg/cimgui/vendor/cimgui.h
vendored
@ -1,6 +1,7 @@
|
|||||||
//This file is automatically generated by generator.lua from https://github.com/cimgui/cimgui
|
//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
|
//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_internal.h api
|
||||||
|
//with imgui_freetype.h api
|
||||||
//docking branch
|
//docking branch
|
||||||
#ifndef CIMGUI_INCLUDED
|
#ifndef CIMGUI_INCLUDED
|
||||||
#define CIMGUI_INCLUDED
|
#define CIMGUI_INCLUDED
|
||||||
@ -3121,6 +3122,20 @@ struct ImFontBuilderIO
|
|||||||
{
|
{
|
||||||
bool (*FontBuilder_Build)(ImFontAtlas* atlas);
|
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
|
#define IMGUI_HAS_DOCK 1
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@ -4526,7 +4541,6 @@ CIMGUI_API void igDebugNodeViewport(ImGuiViewportP* viewport);
|
|||||||
CIMGUI_API void igDebugRenderKeyboardPreview(ImDrawList* draw_list);
|
CIMGUI_API void igDebugRenderKeyboardPreview(ImDrawList* draw_list);
|
||||||
CIMGUI_API void igDebugRenderViewportThumbnail(ImDrawList* draw_list,ImGuiViewportP* viewport,const ImRect bb);
|
CIMGUI_API void igDebugRenderViewportThumbnail(ImDrawList* draw_list,ImGuiViewportP* viewport,const ImRect bb);
|
||||||
CIMGUI_API bool igIsKeyPressedMap(ImGuiKey key,bool repeat);
|
CIMGUI_API bool igIsKeyPressedMap(ImGuiKey key,bool repeat);
|
||||||
CIMGUI_API const ImFontBuilderIO* igImFontAtlasGetBuilderForStbTruetype(void);
|
|
||||||
CIMGUI_API void igImFontAtlasBuildInit(ImFontAtlas* atlas);
|
CIMGUI_API void igImFontAtlasBuildInit(ImFontAtlas* atlas);
|
||||||
CIMGUI_API void igImFontAtlasBuildSetupFont(ImFontAtlas* atlas,ImFont* font,ImFontConfig* font_config,float ascent,float descent);
|
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);
|
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 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 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 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
|
/////////////////////////hand written functions
|
||||||
@ -4558,3 +4574,4 @@ CIMGUI_API void ImVector_ImWchar_UnInit(ImVector_ImWchar* p);
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user