Compare commits
2 Commits
df33bab8e4
...
d9ce47d504
Author | SHA1 | Date |
---|---|---|
Rekai Nyangadzayi Musuka | d9ce47d504 | |
Rekai Nyangadzayi Musuka | e009f01d38 |
63
README.md
63
README.md
|
@ -1,4 +1,4 @@
|
||||||
# zgui v1.89.6 - dear imgui bindings
|
# zgui v0.1.0 - dear imgui bindings
|
||||||
|
|
||||||
Easy to use, hand-crafted API with default arguments, named parameters and Zig style text formatting. [Here](https://github.com/michal-z/zig-gamedev/tree/main/samples/minimal_zgpu_zgui) is a simple sample application, and [here](https://github.com/michal-z/zig-gamedev/tree/main/samples/gui_test_wgpu) is a full one.
|
Easy to use, hand-crafted API with default arguments, named parameters and Zig style text formatting. [Here](https://github.com/michal-z/zig-gamedev/tree/main/samples/minimal_zgpu_zgui) is a simple sample application, and [here](https://github.com/michal-z/zig-gamedev/tree/main/samples/gui_test_wgpu) is a full one.
|
||||||
|
|
||||||
|
@ -11,64 +11,41 @@ Easy to use, hand-crafted API with default arguments, named parameters and Zig s
|
||||||
|
|
||||||
## Getting started
|
## Getting started
|
||||||
|
|
||||||
Copy `zgui` folder to a `libs` subdirectory of the root of your project and add the following to your `build.zig.zon` .dependencies:
|
Copy `zgui` to a subdirectory in your project and add the following to your `build.zig.zon` .dependencies:
|
||||||
```zig
|
```zig
|
||||||
.zgui = .{ .path = "libs/zgui" },
|
.zgui = .{ .path = "libs/zgui" },
|
||||||
```
|
```
|
||||||
|
|
||||||
To get glfw/wgpu rendering backend working also copy `zgpu`, `zglfw`, `zpool` and `system-sdk` folders and add the depenency paths (see [zgpu](https://github.com/zig-gamedev/zig-gamedev/tree/main/libs/zgpu) for the details). Alternatively, you can provide your own rendering backend by specifying `.no_backend` in the package options.
|
To get glfw/wgpu rendering backend working also copy `zglfw`, `system-sdk`, `zgpu` and `zpool` folders and add the depenency paths (see [zgpu](https://github.com/zig-gamedev/zig-gamedev/tree/main/libs/zgpu) for the details).
|
||||||
|
|
||||||
Then in your `build.zig` add:
|
Then in your `build.zig` add:
|
||||||
```zig
|
```zig
|
||||||
const zgui = @import("zgui");
|
|
||||||
|
|
||||||
// Needed for glfw/wgpu rendering backend
|
|
||||||
const zglfw = @import("zglfw");
|
|
||||||
const zgpu = @import("zgpu");
|
|
||||||
const zpool = @import("zpool");
|
|
||||||
|
|
||||||
pub fn build(b: *std.Build) void {
|
pub fn build(b: *std.Build) void {
|
||||||
...
|
const exe = b.addExecutable(.{ ... });
|
||||||
const optimize = b.standardOptimizeOption(.{});
|
|
||||||
const target = b.standardTargetOptions(.{});
|
|
||||||
|
|
||||||
const zgui_pkg = zgui.package(b, target, optimize, .{
|
const zgui = b.dependency("zgui", .{
|
||||||
.options = .{ .backend = .glfw_wgpu },
|
.shared = false,
|
||||||
|
.with_implot = true,
|
||||||
});
|
});
|
||||||
|
exe.root_module.addImport("zgui", zgui.module("root"));
|
||||||
zgui_pkg.link(exe);
|
exe.linkLibrary(zgui.artifact("imgui"));
|
||||||
|
|
||||||
// Needed for glfw/wgpu rendering backend
|
{ // Needed for glfw/wgpu rendering backend
|
||||||
const zglfw_pkg = zglfw.package(b, target, optimize, .{});
|
const zglfw = b.dependency("zglfw", .{});
|
||||||
const zpool_pkg = zpool.package(b, target, optimize, .{});
|
exe.root_module.addImport("zglfw", zglfw.module("root"));
|
||||||
const zgpu_pkg = zgpu.package(b, target, optimize, .{
|
exe.linkLibrary(zglfw.artifact("glfw"));
|
||||||
.deps = .{ .zpool = zpool_pkg.zpool, .zglfw = zglfw_pkg.zglfw },
|
|
||||||
});
|
|
||||||
|
|
||||||
zglfw_pkg.link(exe);
|
const zpool = b.dependency("zpool", .{});
|
||||||
zgpu_pkg.link(exe);
|
exe.root_module.addImport("zpool", zglfw.module("root"));
|
||||||
|
|
||||||
|
const zgpu = b.dependency("zgpu", .{});
|
||||||
|
exe.root_module.addImport("zgpu", zglfw.module("root"));
|
||||||
|
exe.linkLibrary(zglfw.artifact("wgpu"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
You may also include zgui without bundled imgui or implot:
|
|
||||||
|
|
||||||
```zig
|
|
||||||
// In build.zig
|
|
||||||
|
|
||||||
const pkg = zgui.package(b, exe.target, .ReleaseSafe, .{
|
|
||||||
.options = .{
|
|
||||||
.backend = .no_backend,
|
|
||||||
.with_imgui = false,
|
|
||||||
.with_implot = false,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
const lib = pkg.zgui_c_cpp;
|
|
||||||
lib.defineCMacro("IMGUI_USER_CONFIG",
|
|
||||||
\\"../imconfig_custom.h"
|
|
||||||
);
|
|
||||||
lib.addIncludePath("lib/imgui");
|
|
||||||
```
|
|
||||||
|
|
||||||
Now in your code you may import and use `zgui`:
|
Now in your code you may import and use `zgui`:
|
||||||
|
|
||||||
```zig
|
```zig
|
||||||
|
|
237
build.zig
237
build.zig
|
@ -4,67 +4,52 @@ pub const Backend = enum {
|
||||||
no_backend,
|
no_backend,
|
||||||
glfw_wgpu,
|
glfw_wgpu,
|
||||||
glfw_opengl3,
|
glfw_opengl3,
|
||||||
|
glfw_dx12,
|
||||||
win32_dx12,
|
win32_dx12,
|
||||||
sdl2_opengl3,
|
sdl2_opengl3,
|
||||||
};
|
};
|
||||||
|
|
||||||
const default_options = struct {
|
pub fn build(b: *std.Build) void {
|
||||||
const shared = false;
|
const optimize = b.standardOptimizeOption(.{});
|
||||||
const with_imgui = true;
|
const target = b.standardTargetOptions(.{});
|
||||||
const with_implot = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
pub const Options = struct {
|
const options = .{
|
||||||
backend: Backend,
|
.backend = b.option(Backend, "backend", "Backend to build (default: no_backend)") orelse .no_backend,
|
||||||
shared: bool = default_options.shared,
|
.shared = b.option(
|
||||||
/// use bundled imgui source
|
bool,
|
||||||
with_imgui: bool = default_options.with_imgui,
|
"shared",
|
||||||
/// use bundled implot source
|
"Bulid as a shared library",
|
||||||
with_implot: bool = default_options.with_implot,
|
) orelse false,
|
||||||
};
|
.with_implot = b.option(
|
||||||
|
bool,
|
||||||
|
"with_implot",
|
||||||
|
"Build with bundled implot source",
|
||||||
|
) orelse true,
|
||||||
|
};
|
||||||
|
|
||||||
pub const Package = struct {
|
const options_step = b.addOptions();
|
||||||
options: Options,
|
inline for (std.meta.fields(@TypeOf(options))) |field| {
|
||||||
zgui: *std.Build.Module,
|
options_step.addOption(field.type, field.name, @field(options, field.name));
|
||||||
zgui_options: *std.Build.Module,
|
|
||||||
zgui_c_cpp: *std.Build.Step.Compile,
|
|
||||||
|
|
||||||
pub fn link(pkg: Package, exe: *std.Build.Step.Compile) void {
|
|
||||||
exe.linkLibrary(pkg.zgui_c_cpp);
|
|
||||||
exe.root_module.addImport("zgui", pkg.zgui);
|
|
||||||
exe.root_module.addImport("zgui_options", pkg.zgui_options);
|
|
||||||
}
|
}
|
||||||
};
|
|
||||||
|
|
||||||
pub fn package(
|
const options_module = options_step.createModule();
|
||||||
b: *std.Build,
|
|
||||||
target: std.Build.ResolvedTarget,
|
|
||||||
optimize: std.builtin.Mode,
|
|
||||||
args: struct {
|
|
||||||
options: Options,
|
|
||||||
},
|
|
||||||
) Package {
|
|
||||||
const step = b.addOptions();
|
|
||||||
step.addOption(Backend, "backend", args.options.backend);
|
|
||||||
step.addOption(bool, "shared", args.options.shared);
|
|
||||||
|
|
||||||
const zgui_options = step.createModule();
|
_ = b.addModule("root", .{
|
||||||
|
.root_source_file = .{ .path = "src/gui.zig" },
|
||||||
const zgui = b.addModule("zgui", .{
|
|
||||||
.root_source_file = .{ .path = thisDir() ++ "/src/gui.zig" },
|
|
||||||
.imports = &.{
|
.imports = &.{
|
||||||
.{ .name = "zgui_options", .module = zgui_options },
|
.{ .name = "zgui_options", .module = options_module },
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const zgui_c_cpp = if (args.options.shared) blk: {
|
const cflags = &.{"-fno-sanitize=undefined"};
|
||||||
|
|
||||||
|
const imgui = if (options.shared) blk: {
|
||||||
const lib = b.addSharedLibrary(.{
|
const lib = b.addSharedLibrary(.{
|
||||||
.name = "zgui",
|
.name = "imgui",
|
||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
});
|
});
|
||||||
|
|
||||||
b.installArtifact(lib);
|
|
||||||
if (target.result.os.tag == .windows) {
|
if (target.result.os.tag == .windows) {
|
||||||
lib.defineCMacro("IMGUI_API", "__declspec(dllexport)");
|
lib.defineCMacro("IMGUI_API", "__declspec(dllexport)");
|
||||||
lib.defineCMacro("IMPLOT_API", "__declspec(dllexport)");
|
lib.defineCMacro("IMPLOT_API", "__declspec(dllexport)");
|
||||||
|
@ -77,157 +62,123 @@ pub fn package(
|
||||||
|
|
||||||
break :blk lib;
|
break :blk lib;
|
||||||
} else b.addStaticLibrary(.{
|
} else b.addStaticLibrary(.{
|
||||||
.name = "zgui",
|
.name = "imgui",
|
||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
});
|
});
|
||||||
|
|
||||||
zgui_c_cpp.addIncludePath(.{ .path = thisDir() ++ "/libs" });
|
b.installArtifact(imgui);
|
||||||
zgui_c_cpp.addIncludePath(.{ .path = thisDir() ++ "/libs/imgui" });
|
|
||||||
|
|
||||||
const abi = target.result.abi;
|
imgui.addIncludePath(.{ .path = "libs" });
|
||||||
zgui_c_cpp.linkLibC();
|
imgui.addIncludePath(.{ .path = "libs/imgui" });
|
||||||
if (abi != .msvc)
|
|
||||||
zgui_c_cpp.linkLibCpp();
|
|
||||||
|
|
||||||
const cflags = &.{"-fno-sanitize=undefined"};
|
imgui.linkLibC();
|
||||||
|
if (target.result.abi != .msvc)
|
||||||
|
imgui.linkLibCpp();
|
||||||
|
|
||||||
zgui_c_cpp.addCSourceFile(.{
|
imgui.addCSourceFile(.{
|
||||||
.file = .{ .path = thisDir() ++ "/src/zgui.cpp" },
|
.file = .{ .path = "src/zgui.cpp" },
|
||||||
.flags = cflags,
|
.flags = cflags,
|
||||||
});
|
});
|
||||||
|
|
||||||
if (args.options.with_imgui) {
|
imgui.addCSourceFiles(.{
|
||||||
zgui_c_cpp.addCSourceFiles(.{
|
.files = &.{
|
||||||
.files = &.{
|
"libs/imgui/imgui.cpp",
|
||||||
thisDir() ++ "/libs/imgui/imgui.cpp",
|
"libs/imgui/imgui_widgets.cpp",
|
||||||
thisDir() ++ "/libs/imgui/imgui_widgets.cpp",
|
"libs/imgui/imgui_tables.cpp",
|
||||||
thisDir() ++ "/libs/imgui/imgui_tables.cpp",
|
"libs/imgui/imgui_draw.cpp",
|
||||||
thisDir() ++ "/libs/imgui/imgui_draw.cpp",
|
"libs/imgui/imgui_demo.cpp",
|
||||||
thisDir() ++ "/libs/imgui/imgui_demo.cpp",
|
},
|
||||||
},
|
.flags = cflags,
|
||||||
.flags = cflags,
|
});
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.options.with_implot) {
|
if (options.with_implot) {
|
||||||
zgui_c_cpp.defineCMacro("ZGUI_IMPLOT", "1");
|
imgui.defineCMacro("ZGUI_IMPLOT", "1");
|
||||||
zgui_c_cpp.addCSourceFiles(.{
|
imgui.addCSourceFiles(.{
|
||||||
.files = &.{
|
.files = &.{
|
||||||
thisDir() ++ "/libs/imgui/implot_demo.cpp",
|
"libs/imgui/implot_demo.cpp",
|
||||||
thisDir() ++ "/libs/imgui/implot.cpp",
|
"libs/imgui/implot.cpp",
|
||||||
thisDir() ++ "/libs/imgui/implot_items.cpp",
|
"libs/imgui/implot_items.cpp",
|
||||||
},
|
},
|
||||||
.flags = cflags,
|
.flags = cflags,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
zgui_c_cpp.defineCMacro("ZGUI_IMPLOT", "0");
|
imgui.defineCMacro("ZGUI_IMPLOT", "0");
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (args.options.backend) {
|
switch (options.backend) {
|
||||||
.glfw_wgpu => {
|
.glfw_wgpu => {
|
||||||
const zglfw = b.dependency("zglfw", .{});
|
const zglfw = b.dependency("zglfw", .{});
|
||||||
const zgpu = b.dependency("zgpu", .{});
|
const zgpu = b.dependency("zgpu", .{});
|
||||||
zgui_c_cpp.addIncludePath(.{ .path = zglfw.path("libs/glfw/include").getPath(b) });
|
imgui.addIncludePath(.{ .path = zglfw.path("libs/glfw/include").getPath(b) });
|
||||||
zgui_c_cpp.addIncludePath(.{ .path = zgpu.path("libs/dawn/include").getPath(b) });
|
imgui.addIncludePath(.{ .path = zgpu.path("libs/dawn/include").getPath(b) });
|
||||||
zgui_c_cpp.addCSourceFiles(.{
|
imgui.addCSourceFiles(.{
|
||||||
.files = &.{
|
.files = &.{
|
||||||
thisDir() ++ "/libs/imgui/backends/imgui_impl_glfw.cpp",
|
"libs/imgui/backends/imgui_impl_glfw.cpp",
|
||||||
thisDir() ++ "/libs/imgui/backends/imgui_impl_wgpu.cpp",
|
"libs/imgui/backends/imgui_impl_wgpu.cpp",
|
||||||
},
|
},
|
||||||
.flags = cflags,
|
.flags = cflags,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
.glfw_opengl3 => {
|
.glfw_opengl3 => {
|
||||||
const zglfw = b.dependency("zglfw", .{});
|
const zglfw = b.dependency("zglfw", .{});
|
||||||
zgui_c_cpp.addIncludePath(.{ .path = zglfw.path("libs/glfw/include").getPath(b) });
|
imgui.addIncludePath(.{ .path = zglfw.path("libs/glfw/include").getPath(b) });
|
||||||
zgui_c_cpp.addCSourceFiles(.{
|
imgui.addCSourceFiles(.{
|
||||||
.files = &.{
|
.files = &.{
|
||||||
thisDir() ++ "/libs/imgui/backends/imgui_impl_glfw.cpp",
|
"libs/imgui/backends/imgui_impl_glfw.cpp",
|
||||||
thisDir() ++ "/libs/imgui/backends/imgui_impl_opengl3.cpp",
|
"libs/imgui/backends/imgui_impl_opengl3.cpp",
|
||||||
},
|
},
|
||||||
.flags = &(cflags.* ++ .{"-DIMGUI_IMPL_OPENGL_LOADER_CUSTOM"}),
|
.flags = &(cflags.* ++ .{"-DIMGUI_IMPL_OPENGL_LOADER_CUSTOM"}),
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
.sdl2_opengl3 => {
|
.glfw_dx12 => {
|
||||||
zgui_c_cpp.addCSourceFiles(.{
|
const zglfw = b.dependency("zglfw", .{});
|
||||||
|
imgui.addIncludePath(.{ .path = zglfw.path("libs/glfw/include").getPath(b) });
|
||||||
|
imgui.addCSourceFiles(.{
|
||||||
.files = &.{
|
.files = &.{
|
||||||
thisDir() ++ "/libs/imgui/backends/imgui_impl_sdl.cpp",
|
"libs/imgui/backends/imgui_impl_glfw.cpp",
|
||||||
thisDir() ++ "/libs/imgui/backends/imgui_impl_opengl3.cpp",
|
"libs/imgui/backends/imgui_impl_dx12.cpp",
|
||||||
thisDir() ++ "/libs/imgui/backends/imgui_impl_opengl3_loader.h",
|
},
|
||||||
|
.flags = cflags,
|
||||||
|
});
|
||||||
|
imgui.linkSystemLibrary("d3dcompiler_47");
|
||||||
|
},
|
||||||
|
.sdl2_opengl3 => {
|
||||||
|
imgui.addCSourceFiles(.{
|
||||||
|
.files = &.{
|
||||||
|
"libs/imgui/backends/imgui_impl_sdl.cpp",
|
||||||
|
"libs/imgui/backends/imgui_impl_opengl3.cpp",
|
||||||
|
"libs/imgui/backends/imgui_impl_opengl3_loader.h",
|
||||||
},
|
},
|
||||||
.flags = cflags,
|
.flags = cflags,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
.win32_dx12 => {
|
.win32_dx12 => {
|
||||||
zgui_c_cpp.addCSourceFiles(.{
|
imgui.addCSourceFiles(.{
|
||||||
.files = &.{
|
.files = &.{
|
||||||
thisDir() ++ "/libs/imgui/backends/imgui_impl_win32.cpp",
|
"libs/imgui/backends/imgui_impl_win32.cpp",
|
||||||
thisDir() ++ "/libs/imgui/backends/imgui_impl_dx12.cpp",
|
"libs/imgui/backends/imgui_impl_dx12.cpp",
|
||||||
},
|
},
|
||||||
.flags = cflags,
|
.flags = cflags,
|
||||||
});
|
});
|
||||||
zgui_c_cpp.linkSystemLibrary("d3dcompiler_47");
|
imgui.linkSystemLibrary("d3dcompiler_47");
|
||||||
zgui_c_cpp.linkSystemLibrary("dwmapi");
|
imgui.linkSystemLibrary("dwmapi");
|
||||||
},
|
},
|
||||||
.no_backend => {},
|
.no_backend => {},
|
||||||
}
|
}
|
||||||
|
|
||||||
return .{
|
|
||||||
.options = args.options,
|
|
||||||
.zgui = zgui,
|
|
||||||
.zgui_options = zgui_options,
|
|
||||||
.zgui_c_cpp = zgui_c_cpp,
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn build(b: *std.Build) void {
|
|
||||||
const optimize = b.standardOptimizeOption(.{});
|
|
||||||
const target = b.standardTargetOptions(.{});
|
|
||||||
|
|
||||||
_ = package(b, target, optimize, .{
|
|
||||||
.options = .{
|
|
||||||
.backend = b.option(Backend, "backend", "Select backend") orelse .no_backend,
|
|
||||||
.shared = b.option(
|
|
||||||
bool,
|
|
||||||
"shared",
|
|
||||||
"Bulid as a shared library",
|
|
||||||
) orelse default_options.shared,
|
|
||||||
.with_imgui = b.option(
|
|
||||||
bool,
|
|
||||||
"with_imgui",
|
|
||||||
"Build with bundled imgui source",
|
|
||||||
) orelse default_options.with_imgui,
|
|
||||||
.with_implot = b.option(
|
|
||||||
bool,
|
|
||||||
"with_implot",
|
|
||||||
"Build with bundled implot source",
|
|
||||||
) orelse default_options.with_implot,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
const test_step = b.step("test", "Run zgui tests");
|
const test_step = b.step("test", "Run zgui tests");
|
||||||
test_step.dependOn(runTests(b, optimize, target));
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn runTests(
|
const tests = b.addTest(.{
|
||||||
b: *std.Build,
|
.name = "zgui-tests",
|
||||||
optimize: std.builtin.OptimizeMode,
|
.root_source_file = .{ .path = "src/gui.zig" },
|
||||||
target: std.Build.ResolvedTarget,
|
|
||||||
) *std.Build.Step {
|
|
||||||
const gui_tests = b.addTest(.{
|
|
||||||
.name = "gui-tests",
|
|
||||||
.root_source_file = .{ .path = thisDir() ++ "/src/gui.zig" },
|
|
||||||
.target = target,
|
.target = target,
|
||||||
.optimize = optimize,
|
.optimize = optimize,
|
||||||
});
|
});
|
||||||
const pkg = package(b, target, optimize, .{
|
b.installArtifact(tests);
|
||||||
.options = .{ .backend = .no_backend },
|
|
||||||
});
|
|
||||||
pkg.link(gui_tests);
|
|
||||||
return &b.addRunArtifact(gui_tests).step;
|
|
||||||
}
|
|
||||||
|
|
||||||
inline fn thisDir() []const u8 {
|
tests.root_module.addImport("zgui_options", options_module);
|
||||||
return comptime std.fs.path.dirname(@src().file) orelse ".";
|
tests.linkLibrary(imgui);
|
||||||
|
|
||||||
|
test_step.dependOn(&b.addRunArtifact(tests).step);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
.{
|
.{
|
||||||
.name = "zgui",
|
.name = "zgui",
|
||||||
.version = "1.89.6",
|
.version = "0.1.0",
|
||||||
.paths = .{
|
.paths = .{
|
||||||
"build.zig",
|
"build.zig",
|
||||||
"build.zig.zon",
|
"build.zig.zon",
|
||||||
|
|
|
@ -189,6 +189,13 @@ static void SafeRelease(WGPUBuffer& res)
|
||||||
wgpuBufferRelease(res);
|
wgpuBufferRelease(res);
|
||||||
res = nullptr;
|
res = nullptr;
|
||||||
}
|
}
|
||||||
|
// FIX(zig-gamedev): https://github.com/ocornut/imgui/commit/9266c0d2d1390e50d2d8070896932c2564594407
|
||||||
|
static void SafeRelease(WGPUPipelineLayout& res)
|
||||||
|
{
|
||||||
|
if (res)
|
||||||
|
wgpuPipelineLayoutRelease(res);
|
||||||
|
res = nullptr;
|
||||||
|
}
|
||||||
static void SafeRelease(WGPURenderPipeline& res)
|
static void SafeRelease(WGPURenderPipeline& res)
|
||||||
{
|
{
|
||||||
if (res)
|
if (res)
|
||||||
|
@ -664,7 +671,15 @@ bool ImGui_ImplWGPU_CreateDeviceObjects()
|
||||||
depth_stencil_state.depthWriteEnabled = false;
|
depth_stencil_state.depthWriteEnabled = false;
|
||||||
depth_stencil_state.depthCompare = WGPUCompareFunction_Always;
|
depth_stencil_state.depthCompare = WGPUCompareFunction_Always;
|
||||||
depth_stencil_state.stencilFront.compare = WGPUCompareFunction_Always;
|
depth_stencil_state.stencilFront.compare = WGPUCompareFunction_Always;
|
||||||
|
// FIX(zig-gamedev): https://github.com/ocornut/imgui/commit/03417cc77d15100b18c486b55db409ee5e9c363e
|
||||||
|
depth_stencil_state.stencilFront.failOp = WGPUStencilOperation_Keep;
|
||||||
|
depth_stencil_state.stencilFront.depthFailOp = WGPUStencilOperation_Keep;
|
||||||
|
depth_stencil_state.stencilFront.passOp = WGPUStencilOperation_Keep;
|
||||||
depth_stencil_state.stencilBack.compare = WGPUCompareFunction_Always;
|
depth_stencil_state.stencilBack.compare = WGPUCompareFunction_Always;
|
||||||
|
// FIX(zig-gamedev): https://github.com/ocornut/imgui/commit/03417cc77d15100b18c486b55db409ee5e9c363e
|
||||||
|
depth_stencil_state.stencilBack.failOp = WGPUStencilOperation_Keep;
|
||||||
|
depth_stencil_state.stencilBack.depthFailOp = WGPUStencilOperation_Keep;
|
||||||
|
depth_stencil_state.stencilBack.passOp = WGPUStencilOperation_Keep;
|
||||||
|
|
||||||
// Configure disabled depth-stencil state
|
// Configure disabled depth-stencil state
|
||||||
graphics_pipeline_desc.depthStencil = (bd->depthStencilFormat == WGPUTextureFormat_Undefined) ? nullptr : &depth_stencil_state;
|
graphics_pipeline_desc.depthStencil = (bd->depthStencilFormat == WGPUTextureFormat_Undefined) ? nullptr : &depth_stencil_state;
|
||||||
|
@ -694,6 +709,8 @@ bool ImGui_ImplWGPU_CreateDeviceObjects()
|
||||||
|
|
||||||
SafeRelease(vertex_shader_desc.module);
|
SafeRelease(vertex_shader_desc.module);
|
||||||
SafeRelease(pixel_shader_desc.module);
|
SafeRelease(pixel_shader_desc.module);
|
||||||
|
// FIX(zig-gamedev): https://github.com/ocornut/imgui/commit/9266c0d2d1390e50d2d8070896932c2564594407
|
||||||
|
SafeRelease(graphics_pipeline_desc.layout);
|
||||||
SafeRelease(bg_layouts[0]);
|
SafeRelease(bg_layouts[0]);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
const gui = @import("gui.zig");
|
||||||
|
|
||||||
|
pub fn init(
|
||||||
|
window: *const anyopaque, // zglfw.Window
|
||||||
|
device: *const anyopaque, // ID3D12Device
|
||||||
|
num_frames_in_flight: u32,
|
||||||
|
rtv_format: c_uint, // DXGI_FORMAT
|
||||||
|
cbv_srv_heap: *const anyopaque, // ID3D12DescriptorHeap
|
||||||
|
font_srv_cpu_desc_handle: D3D12_CPU_DESCRIPTOR_HANDLE,
|
||||||
|
font_srv_gpu_desc_handle: D3D12_GPU_DESCRIPTOR_HANDLE,
|
||||||
|
) void {
|
||||||
|
if (!ImGui_ImplGlfw_InitForOther(window, true)) {
|
||||||
|
@panic("failed to init glfw for imgui");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ImGui_ImplDX12_Init(
|
||||||
|
device,
|
||||||
|
num_frames_in_flight,
|
||||||
|
rtv_format,
|
||||||
|
cbv_srv_heap,
|
||||||
|
font_srv_cpu_desc_handle,
|
||||||
|
font_srv_gpu_desc_handle,
|
||||||
|
)) {
|
||||||
|
@panic("failed to init d3d12 for imgui");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn deinit() void {
|
||||||
|
ImGui_ImplGlfw_Shutdown();
|
||||||
|
ImGui_ImplDX12_Shutdown();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn newFrame(fb_width: u32, fb_height: u32) void {
|
||||||
|
ImGui_ImplGlfw_NewFrame();
|
||||||
|
ImGui_ImplDX12_NewFrame();
|
||||||
|
|
||||||
|
gui.io.setDisplaySize(@as(f32, @floatFromInt(fb_width)), @as(f32, @floatFromInt(fb_height)));
|
||||||
|
gui.io.setDisplayFramebufferScale(1.0, 1.0);
|
||||||
|
|
||||||
|
gui.newFrame();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn draw(
|
||||||
|
graphics_command_list: *const anyopaque, // *ID3D12GraphicsCommandList
|
||||||
|
) void {
|
||||||
|
gui.render();
|
||||||
|
ImGui_ImplDX12_RenderDrawData(gui.getDrawData(), graphics_command_list);
|
||||||
|
}
|
||||||
|
|
||||||
|
pub const D3D12_CPU_DESCRIPTOR_HANDLE = extern struct {
|
||||||
|
ptr: c_ulonglong,
|
||||||
|
};
|
||||||
|
|
||||||
|
pub const D3D12_GPU_DESCRIPTOR_HANDLE = extern struct {
|
||||||
|
ptr: c_ulonglong,
|
||||||
|
};
|
||||||
|
|
||||||
|
extern fn ImGui_ImplGlfw_InitForOther(window: *const anyopaque, install_callbacks: bool) bool;
|
||||||
|
extern fn ImGui_ImplGlfw_NewFrame() void;
|
||||||
|
extern fn ImGui_ImplGlfw_Shutdown() void;
|
||||||
|
extern fn ImGui_ImplDX12_Init(
|
||||||
|
device: *const anyopaque, // ID3D12Device
|
||||||
|
num_frames_in_flight: u32,
|
||||||
|
rtv_format: u32, // DXGI_FORMAT
|
||||||
|
cbv_srv_heap: *const anyopaque, // ID3D12DescriptorHeap
|
||||||
|
font_srv_cpu_desc_handle: D3D12_CPU_DESCRIPTOR_HANDLE,
|
||||||
|
font_srv_gpu_desc_handle: D3D12_GPU_DESCRIPTOR_HANDLE,
|
||||||
|
) bool;
|
||||||
|
extern fn ImGui_ImplDX12_Shutdown() void;
|
||||||
|
extern fn ImGui_ImplDX12_NewFrame() void;
|
||||||
|
extern fn ImGui_ImplDX12_RenderDrawData(
|
||||||
|
draw_data: *const anyopaque, // *ImDrawData
|
||||||
|
graphics_command_list: *const anyopaque, // *ID3D12GraphicsCommandList
|
||||||
|
) void;
|
918
src/gui.zig
918
src/gui.zig
File diff suppressed because it is too large
Load Diff
115
src/zgui.cpp
115
src/zgui.cpp
|
@ -460,6 +460,51 @@ ZGUI_API bool zguiDragScalarN(
|
||||||
return ImGui::DragScalarN(label, data_type, p_data, components, v_speed, p_min, p_max, format, flags);
|
return ImGui::DragScalarN(label, data_type, p_data, components, v_speed, p_min, p_max, format, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ZGUI_API bool zguiBeginDragDropSource(ImGuiDragDropFlags flags = 0) {
|
||||||
|
return ImGui::BeginDragDropSource(flags);
|
||||||
|
}
|
||||||
|
ZGUI_API bool zguiSetDragDropPayload(
|
||||||
|
const char* type,
|
||||||
|
const void* data,
|
||||||
|
size_t sz,
|
||||||
|
ImGuiCond cond = 0
|
||||||
|
) {
|
||||||
|
return ImGui::SetDragDropPayload(type, data, sz, cond);
|
||||||
|
}
|
||||||
|
ZGUI_API void zguiEndDragDropSource() {
|
||||||
|
return ImGui::EndDragDropSource();
|
||||||
|
}
|
||||||
|
ZGUI_API bool zguiBeginDragDropTarget() {
|
||||||
|
return ImGui::BeginDragDropTarget();
|
||||||
|
}
|
||||||
|
ZGUI_API const ImGuiPayload* zguiAcceptDragDropPayload(
|
||||||
|
const char* type,
|
||||||
|
ImGuiDragDropFlags flags = 0
|
||||||
|
) {
|
||||||
|
return ImGui::AcceptDragDropPayload(type);
|
||||||
|
}
|
||||||
|
ZGUI_API void zguiEndDragDropTarget() {
|
||||||
|
return ImGui::EndDragDropTarget();
|
||||||
|
}
|
||||||
|
ZGUI_API const ImGuiPayload* zguiGetDragDropPayload() {
|
||||||
|
return ImGui::GetDragDropPayload();
|
||||||
|
}
|
||||||
|
|
||||||
|
ZGUI_API void zguiImGuiPayload_Clear(ImGuiPayload* payload) { payload->Clear(); }
|
||||||
|
|
||||||
|
ZGUI_API bool zguiImGuiPayload_IsDataType(const ImGuiPayload* payload, const char* type) {
|
||||||
|
return payload->IsDataType(type);
|
||||||
|
}
|
||||||
|
|
||||||
|
ZGUI_API bool zguiImGuiPayload_IsPreview(const ImGuiPayload* payload) {
|
||||||
|
return payload->IsPreview();
|
||||||
|
}
|
||||||
|
|
||||||
|
ZGUI_API bool zguiImGuiPayload_IsDelivery(const ImGuiPayload* payload) {
|
||||||
|
return payload->IsDelivery();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
ZGUI_API bool zguiCombo(
|
ZGUI_API bool zguiCombo(
|
||||||
const char* label,
|
const char* label,
|
||||||
int* current_item,
|
int* current_item,
|
||||||
|
@ -1025,7 +1070,7 @@ ZGUI_API void zguiPushStyleColor4f(ImGuiCol idx, const float col[4]) {
|
||||||
ImGui::PushStyleColor(idx, { col[0], col[1], col[2], col[3] });
|
ImGui::PushStyleColor(idx, { col[0], col[1], col[2], col[3] });
|
||||||
}
|
}
|
||||||
|
|
||||||
ZGUI_API void zguiPushStyleColor1u(ImGuiCol idx, unsigned int col) {
|
ZGUI_API void zguiPushStyleColor1u(ImGuiCol idx, ImU32 col) {
|
||||||
ImGui::PushStyleColor(idx, col);
|
ImGui::PushStyleColor(idx, col);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1257,6 +1302,10 @@ ZGUI_API bool zguiIoGetWantCaptureKeyboard(void) {
|
||||||
return ImGui::GetIO().WantCaptureKeyboard;
|
return ImGui::GetIO().WantCaptureKeyboard;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ZGUI_API bool zguiIoGetWantTextInput(void) {
|
||||||
|
return ImGui::GetIO().WantTextInput;
|
||||||
|
}
|
||||||
|
|
||||||
ZGUI_API void zguiIoSetIniFilename(const char* filename) {
|
ZGUI_API void zguiIoSetIniFilename(const char* filename) {
|
||||||
ImGui::GetIO().IniFilename = filename;
|
ImGui::GetIO().IniFilename = filename;
|
||||||
}
|
}
|
||||||
|
@ -1311,7 +1360,7 @@ ZGUI_API void zguiIoSetKeyEventNativeData(ImGuiKey key, int keycode, int scancod
|
||||||
ImGui::GetIO().SetKeyEventNativeData(key, keycode, scancode);
|
ImGui::GetIO().SetKeyEventNativeData(key, keycode, scancode);
|
||||||
}
|
}
|
||||||
|
|
||||||
ZGUI_API void zguiIoAddCharacterEvent(int c) {
|
ZGUI_API void zguiIoAddCharacterEvent(unsigned int c) {
|
||||||
ImGui::GetIO().AddInputCharacter(c);
|
ImGui::GetIO().AddInputCharacter(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1579,7 +1628,7 @@ ZGUI_API void zguiTableSetColumnEnabled(int column_n, bool v) {
|
||||||
ImGui::TableSetColumnEnabled(column_n, v);
|
ImGui::TableSetColumnEnabled(column_n, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
ZGUI_API void zguiTableSetBgColor(ImGuiTableBgTarget target, unsigned int color, int column_n) {
|
ZGUI_API void zguiTableSetBgColor(ImGuiTableBgTarget target, ImU32 color, int column_n) {
|
||||||
ImGui::TableSetBgColor(target, color, column_n);
|
ImGui::TableSetBgColor(target, color, column_n);
|
||||||
}
|
}
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -1727,7 +1776,7 @@ ZGUI_API void zguiDrawList_AddLine(
|
||||||
ImDrawList* draw_list,
|
ImDrawList* draw_list,
|
||||||
const float p1[2],
|
const float p1[2],
|
||||||
const float p2[2],
|
const float p2[2],
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
float thickness
|
float thickness
|
||||||
) {
|
) {
|
||||||
draw_list->AddLine({ p1[0], p1[1] }, { p2[0], p2[1] }, col, thickness);
|
draw_list->AddLine({ p1[0], p1[1] }, { p2[0], p2[1] }, col, thickness);
|
||||||
|
@ -1737,7 +1786,7 @@ ZGUI_API void zguiDrawList_AddRect(
|
||||||
ImDrawList* draw_list,
|
ImDrawList* draw_list,
|
||||||
const float pmin[2],
|
const float pmin[2],
|
||||||
const float pmax[2],
|
const float pmax[2],
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
float rounding,
|
float rounding,
|
||||||
ImDrawFlags flags,
|
ImDrawFlags flags,
|
||||||
float thickness
|
float thickness
|
||||||
|
@ -1749,7 +1798,7 @@ ZGUI_API void zguiDrawList_AddRectFilled(
|
||||||
ImDrawList* draw_list,
|
ImDrawList* draw_list,
|
||||||
const float pmin[2],
|
const float pmin[2],
|
||||||
const float pmax[2],
|
const float pmax[2],
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
float rounding,
|
float rounding,
|
||||||
ImDrawFlags flags
|
ImDrawFlags flags
|
||||||
) {
|
) {
|
||||||
|
@ -1760,10 +1809,10 @@ ZGUI_API void zguiDrawList_AddRectFilledMultiColor(
|
||||||
ImDrawList* draw_list,
|
ImDrawList* draw_list,
|
||||||
const float pmin[2],
|
const float pmin[2],
|
||||||
const float pmax[2],
|
const float pmax[2],
|
||||||
unsigned int col_upr_left,
|
ImU32 col_upr_left,
|
||||||
unsigned int col_upr_right,
|
ImU32 col_upr_right,
|
||||||
unsigned int col_bot_right,
|
ImU32 col_bot_right,
|
||||||
unsigned int col_bot_left
|
ImU32 col_bot_left
|
||||||
) {
|
) {
|
||||||
draw_list->AddRectFilledMultiColor(
|
draw_list->AddRectFilledMultiColor(
|
||||||
{ pmin[0], pmin[1] },
|
{ pmin[0], pmin[1] },
|
||||||
|
@ -1781,7 +1830,7 @@ ZGUI_API void zguiDrawList_AddQuad(
|
||||||
const float p2[2],
|
const float p2[2],
|
||||||
const float p3[2],
|
const float p3[2],
|
||||||
const float p4[2],
|
const float p4[2],
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
float thickness
|
float thickness
|
||||||
) {
|
) {
|
||||||
draw_list->AddQuad({ p1[0], p1[1] }, { p2[0], p2[1] }, { p3[0], p3[1] }, { p4[0], p4[1] }, col, thickness);
|
draw_list->AddQuad({ p1[0], p1[1] }, { p2[0], p2[1] }, { p3[0], p3[1] }, { p4[0], p4[1] }, col, thickness);
|
||||||
|
@ -1793,7 +1842,7 @@ ZGUI_API void zguiDrawList_AddQuadFilled(
|
||||||
const float p2[2],
|
const float p2[2],
|
||||||
const float p3[2],
|
const float p3[2],
|
||||||
const float p4[2],
|
const float p4[2],
|
||||||
unsigned int col
|
ImU32 col
|
||||||
) {
|
) {
|
||||||
draw_list->AddQuadFilled({ p1[0], p1[1] }, { p2[0], p2[1] }, { p3[0], p3[1] }, { p4[0], p4[1] }, col);
|
draw_list->AddQuadFilled({ p1[0], p1[1] }, { p2[0], p2[1] }, { p3[0], p3[1] }, { p4[0], p4[1] }, col);
|
||||||
}
|
}
|
||||||
|
@ -1803,7 +1852,7 @@ ZGUI_API void zguiDrawList_AddTriangle(
|
||||||
const float p1[2],
|
const float p1[2],
|
||||||
const float p2[2],
|
const float p2[2],
|
||||||
const float p3[2],
|
const float p3[2],
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
float thickness
|
float thickness
|
||||||
) {
|
) {
|
||||||
draw_list->AddTriangle({ p1[0], p1[1] }, { p2[0], p2[1] }, { p3[0], p3[1] }, col, thickness);
|
draw_list->AddTriangle({ p1[0], p1[1] }, { p2[0], p2[1] }, { p3[0], p3[1] }, col, thickness);
|
||||||
|
@ -1814,7 +1863,7 @@ ZGUI_API void zguiDrawList_AddTriangleFilled(
|
||||||
const float p1[2],
|
const float p1[2],
|
||||||
const float p2[2],
|
const float p2[2],
|
||||||
const float p3[2],
|
const float p3[2],
|
||||||
unsigned int col
|
ImU32 col
|
||||||
) {
|
) {
|
||||||
draw_list->AddTriangleFilled({ p1[0], p1[1] }, { p2[0], p2[1] }, { p3[0], p3[1] }, col);
|
draw_list->AddTriangleFilled({ p1[0], p1[1] }, { p2[0], p2[1] }, { p3[0], p3[1] }, col);
|
||||||
}
|
}
|
||||||
|
@ -1823,7 +1872,7 @@ ZGUI_API void zguiDrawList_AddCircle(
|
||||||
ImDrawList* draw_list,
|
ImDrawList* draw_list,
|
||||||
const float center[2],
|
const float center[2],
|
||||||
float radius,
|
float radius,
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
int num_segments,
|
int num_segments,
|
||||||
float thickness
|
float thickness
|
||||||
) {
|
) {
|
||||||
|
@ -1834,7 +1883,7 @@ ZGUI_API void zguiDrawList_AddCircleFilled(
|
||||||
ImDrawList* draw_list,
|
ImDrawList* draw_list,
|
||||||
const float center[2],
|
const float center[2],
|
||||||
float radius,
|
float radius,
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
int num_segments
|
int num_segments
|
||||||
) {
|
) {
|
||||||
draw_list->AddCircleFilled({ center[0], center[1] }, radius, col, num_segments);
|
draw_list->AddCircleFilled({ center[0], center[1] }, radius, col, num_segments);
|
||||||
|
@ -1844,7 +1893,7 @@ ZGUI_API void zguiDrawList_AddNgon(
|
||||||
ImDrawList* draw_list,
|
ImDrawList* draw_list,
|
||||||
const float center[2],
|
const float center[2],
|
||||||
float radius,
|
float radius,
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
int num_segments,
|
int num_segments,
|
||||||
float thickness
|
float thickness
|
||||||
) {
|
) {
|
||||||
|
@ -1855,7 +1904,7 @@ ZGUI_API void zguiDrawList_AddNgonFilled(
|
||||||
ImDrawList* draw_list,
|
ImDrawList* draw_list,
|
||||||
const float center[2],
|
const float center[2],
|
||||||
float radius,
|
float radius,
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
int num_segments
|
int num_segments
|
||||||
) {
|
) {
|
||||||
draw_list->AddNgonFilled({ center[0], center[1] }, radius, col, num_segments);
|
draw_list->AddNgonFilled({ center[0], center[1] }, radius, col, num_segments);
|
||||||
|
@ -1864,7 +1913,7 @@ ZGUI_API void zguiDrawList_AddNgonFilled(
|
||||||
ZGUI_API void zguiDrawList_AddText(
|
ZGUI_API void zguiDrawList_AddText(
|
||||||
ImDrawList* draw_list,
|
ImDrawList* draw_list,
|
||||||
const float pos[2],
|
const float pos[2],
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
const char* text_begin,
|
const char* text_begin,
|
||||||
const char* text_end
|
const char* text_end
|
||||||
) {
|
) {
|
||||||
|
@ -1875,7 +1924,7 @@ ZGUI_API void zguiDrawList_AddPolyline(
|
||||||
ImDrawList* draw_list,
|
ImDrawList* draw_list,
|
||||||
const float points[][2],
|
const float points[][2],
|
||||||
int num_points,
|
int num_points,
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
ImDrawFlags flags,
|
ImDrawFlags flags,
|
||||||
float thickness
|
float thickness
|
||||||
) {
|
) {
|
||||||
|
@ -1886,7 +1935,7 @@ ZGUI_API void zguiDrawList_AddConvexPolyFilled(
|
||||||
ImDrawList* draw_list,
|
ImDrawList* draw_list,
|
||||||
const float points[][2],
|
const float points[][2],
|
||||||
int num_points,
|
int num_points,
|
||||||
unsigned int col
|
ImU32 col
|
||||||
) {
|
) {
|
||||||
draw_list->AddConvexPolyFilled((const ImVec2*)&points[0][0], num_points, col);
|
draw_list->AddConvexPolyFilled((const ImVec2*)&points[0][0], num_points, col);
|
||||||
}
|
}
|
||||||
|
@ -1897,7 +1946,7 @@ ZGUI_API void zguiDrawList_AddBezierCubic(
|
||||||
const float p2[2],
|
const float p2[2],
|
||||||
const float p3[2],
|
const float p3[2],
|
||||||
const float p4[2],
|
const float p4[2],
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
float thickness,
|
float thickness,
|
||||||
int num_segments
|
int num_segments
|
||||||
) {
|
) {
|
||||||
|
@ -1911,7 +1960,7 @@ ZGUI_API void zguiDrawList_AddBezierQuadratic(
|
||||||
const float p1[2],
|
const float p1[2],
|
||||||
const float p2[2],
|
const float p2[2],
|
||||||
const float p3[2],
|
const float p3[2],
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
float thickness,
|
float thickness,
|
||||||
int num_segments
|
int num_segments
|
||||||
) {
|
) {
|
||||||
|
@ -1927,7 +1976,7 @@ ZGUI_API void zguiDrawList_AddImage(
|
||||||
const float pmax[2],
|
const float pmax[2],
|
||||||
const float uvmin[2],
|
const float uvmin[2],
|
||||||
const float uvmax[2],
|
const float uvmax[2],
|
||||||
unsigned int col
|
ImU32 col
|
||||||
) {
|
) {
|
||||||
draw_list->AddImage(
|
draw_list->AddImage(
|
||||||
user_texture_id,
|
user_texture_id,
|
||||||
|
@ -1950,7 +1999,7 @@ ZGUI_API void zguiDrawList_AddImageQuad(
|
||||||
const float uv2[2],
|
const float uv2[2],
|
||||||
const float uv3[2],
|
const float uv3[2],
|
||||||
const float uv4[2],
|
const float uv4[2],
|
||||||
unsigned int col
|
ImU32 col
|
||||||
) {
|
) {
|
||||||
draw_list->AddImageQuad(
|
draw_list->AddImageQuad(
|
||||||
user_texture_id,
|
user_texture_id,
|
||||||
|
@ -1973,7 +2022,7 @@ ZGUI_API void zguiDrawList_AddImageRounded(
|
||||||
const float pmax[2],
|
const float pmax[2],
|
||||||
const float uvmin[2],
|
const float uvmin[2],
|
||||||
const float uvmax[2],
|
const float uvmax[2],
|
||||||
unsigned int col,
|
ImU32 col,
|
||||||
float rounding,
|
float rounding,
|
||||||
ImDrawFlags flags
|
ImDrawFlags flags
|
||||||
) {
|
) {
|
||||||
|
@ -2001,11 +2050,11 @@ ZGUI_API void zguiDrawList_PathLineToMergeDuplicate(ImDrawList* draw_list, const
|
||||||
draw_list->PathLineToMergeDuplicate({ pos[0], pos[1] });
|
draw_list->PathLineToMergeDuplicate({ pos[0], pos[1] });
|
||||||
}
|
}
|
||||||
|
|
||||||
ZGUI_API void zguiDrawList_PathFillConvex(ImDrawList* draw_list, unsigned int col) {
|
ZGUI_API void zguiDrawList_PathFillConvex(ImDrawList* draw_list, ImU32 col) {
|
||||||
draw_list->PathFillConvex(col);
|
draw_list->PathFillConvex(col);
|
||||||
}
|
}
|
||||||
|
|
||||||
ZGUI_API void zguiDrawList_PathStroke(ImDrawList* draw_list, unsigned int col, ImDrawFlags flags, float thickness) {
|
ZGUI_API void zguiDrawList_PathStroke(ImDrawList* draw_list, ImU32 col, ImDrawFlags flags, float thickness) {
|
||||||
draw_list->PathStroke(col, flags, thickness);
|
draw_list->PathStroke(col, flags, thickness);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2071,7 +2120,7 @@ ZGUI_API void zguiDrawList_PrimRect(
|
||||||
ImDrawList* draw_list,
|
ImDrawList* draw_list,
|
||||||
const float a[2],
|
const float a[2],
|
||||||
const float b[2],
|
const float b[2],
|
||||||
unsigned int col
|
ImU32 col
|
||||||
) {
|
) {
|
||||||
draw_list->PrimRect({ a[0], a[1] }, { b[0], b[1] }, col);
|
draw_list->PrimRect({ a[0], a[1] }, { b[0], b[1] }, col);
|
||||||
}
|
}
|
||||||
|
@ -2082,7 +2131,7 @@ ZGUI_API void zguiDrawList_PrimRectUV(
|
||||||
const float b[2],
|
const float b[2],
|
||||||
const float uv_a[2],
|
const float uv_a[2],
|
||||||
const float uv_b[2],
|
const float uv_b[2],
|
||||||
unsigned int col
|
ImU32 col
|
||||||
) {
|
) {
|
||||||
draw_list->PrimRectUV({ a[0], a[1] }, { b[0], b[1] }, { uv_a[0], uv_a[1] }, { uv_b[0], uv_b[1] }, col);
|
draw_list->PrimRectUV({ a[0], a[1] }, { b[0], b[1] }, { uv_a[0], uv_a[1] }, { uv_b[0], uv_b[1] }, col);
|
||||||
}
|
}
|
||||||
|
@ -2097,7 +2146,7 @@ ZGUI_API void zguiDrawList_PrimQuadUV(
|
||||||
const float uv_b[2],
|
const float uv_b[2],
|
||||||
const float uv_c[2],
|
const float uv_c[2],
|
||||||
const float uv_d[2],
|
const float uv_d[2],
|
||||||
unsigned int col
|
ImU32 col
|
||||||
) {
|
) {
|
||||||
draw_list->PrimQuadUV(
|
draw_list->PrimQuadUV(
|
||||||
{ a[0], a[1] }, { b[0], b[1] }, { c[0], c[1] }, { d[0], d[1] },
|
{ a[0], a[1] }, { b[0], b[1] }, { c[0], c[1] }, { d[0], d[1] },
|
||||||
|
@ -2110,7 +2159,7 @@ ZGUI_API void zguiDrawList_PrimWriteVtx(
|
||||||
ImDrawList* draw_list,
|
ImDrawList* draw_list,
|
||||||
const float pos[2],
|
const float pos[2],
|
||||||
const float uv[2],
|
const float uv[2],
|
||||||
unsigned int col
|
ImU32 col
|
||||||
) {
|
) {
|
||||||
draw_list->PrimWriteVtx({ pos[0], pos[1] }, { uv[0], uv[1] }, col);
|
draw_list->PrimWriteVtx({ pos[0], pos[1] }, { uv[0], uv[1] }, col);
|
||||||
}
|
}
|
||||||
|
@ -2189,7 +2238,7 @@ ZGUI_API void zguiPlot_PushStyleColor4f(ImPlotCol idx, const float col[4]) {
|
||||||
ImPlot::PushStyleColor(idx, { col[0], col[1], col[2], col[3] });
|
ImPlot::PushStyleColor(idx, { col[0], col[1], col[2], col[3] });
|
||||||
}
|
}
|
||||||
|
|
||||||
ZGUI_API void zguiPlot_PushStyleColor1u(ImPlotCol idx, unsigned int col) {
|
ZGUI_API void zguiPlot_PushStyleColor1u(ImPlotCol idx, ImU32 col) {
|
||||||
ImPlot::PushStyleColor(idx, col);
|
ImPlot::PushStyleColor(idx, col);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue