From fca87575fd934d661ee80e5b045ae3ab474385a5 Mon Sep 17 00:00:00 2001 From: dbr Date: Thu, 10 Jun 2021 23:50:44 +1000 Subject: [PATCH] Add freetype feature Uses the upstream "imgui_freetype" to "Build font atlases using FreeType instead of stb_truetype (which is the default font rasterizer)" Closes #359 --- imgui-sys/Cargo.toml | 2 ++ imgui-sys/build.rs | 14 ++++++++++++++ imgui-sys/include_all_imgui.cpp | 4 ++++ imgui/Cargo.toml | 1 + 4 files changed, 21 insertions(+) diff --git a/imgui-sys/Cargo.toml b/imgui-sys/Cargo.toml index 29a68bb..f439900 100644 --- a/imgui-sys/Cargo.toml +++ b/imgui-sys/Cargo.toml @@ -18,7 +18,9 @@ chlorine = "1.0.7" [build-dependencies] cc = "1.0" +pkg-config = { version="0.3", optional=true } [features] default = [] wasm = [] +freetype = ["pkg-config"] diff --git a/imgui-sys/build.rs b/imgui-sys/build.rs index 25a11dc..c7e4311 100644 --- a/imgui-sys/build.rs +++ b/imgui-sys/build.rs @@ -48,6 +48,20 @@ fn main() -> io::Result<()> { build.define(key, *value); } + // Freetype font rasterizer feature + if std::env::var_os("CARGO_FEATURE_FREETYPE").is_some() { + let freetype = pkg_config::Config::new().find("freetype2").unwrap(); + for include in freetype.include_paths.iter() { + build.include(include); + } + build.define("IMGUI_ENABLE_FREETYPE", None); + println!("cargo:DEFINE_{}={}", "IMGUI_ENABLE_FREETYPE", ""); + + // imgui_freetype.cpp needs access to imgui.h + build.include( + manifest_dir.join("third-party/imgui/")); + } + let compiler = build.get_compiler(); // Avoid the if-supported flag functions for easy cases, as they're // kinda costly. diff --git a/imgui-sys/include_all_imgui.cpp b/imgui-sys/include_all_imgui.cpp index 2ba5922..fbda88d 100644 --- a/imgui-sys/include_all_imgui.cpp +++ b/imgui-sys/include_all_imgui.cpp @@ -9,4 +9,8 @@ #include "./third-party/imgui/imgui_tables.cpp" #include "./third-party/cimgui.cpp" +#ifdef IMGUI_ENABLE_FREETYPE +#include "./third-party/imgui/misc/freetype/imgui_freetype.cpp" +#endif + diff --git a/imgui/Cargo.toml b/imgui/Cargo.toml index 8fa6215..0034699 100644 --- a/imgui/Cargo.toml +++ b/imgui/Cargo.toml @@ -19,6 +19,7 @@ parking_lot = "0.11" [features] wasm = ["imgui-sys/wasm"] +freetype = ["imgui-sys/freetype"] [dev-dependencies] memoffset = "0.6"