Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions libs/imgui/imgui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19572,6 +19572,8 @@ ImGuiID ImGui::DockSpaceOverViewport(ImGuiID dockspace_id, const ImGuiViewport*
host_window_flags |= ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus;
if (dockspace_flags & ImGuiDockNodeFlags_PassthruCentralNode)
host_window_flags |= ImGuiWindowFlags_NoBackground;
if (dockspace_flags & ImGuiDockNodeFlags_KeepAliveOnly)
host_window_flags |= ImGuiWindowFlags_NoMouseInputs;

// FIXME-OPT: When using ImGuiDockNodeFlags_KeepAliveOnly with DockSpaceOverViewport() we might be able to spare submitting the window,
// since DockSpace() with that flag doesn't need a window. We'd only need to compute the default ID accordingly.
Expand Down
30 changes: 30 additions & 0 deletions src/gui.zig
Original file line number Diff line number Diff line change
Expand Up @@ -206,6 +206,11 @@ pub const FontConfig = extern struct {
};

pub const io = struct {
pub fn addFontDefault(config: ?FontConfig) Font {
return zguiIoAddFontDefault(if (config) |c| &c else null);
}
extern fn zguiIoAddFontDefault(config: ?*const FontConfig) Font;

pub fn addFontFromFile(filename: [:0]const u8, size_pixels: f32) Font {
return zguiIoAddFontFromFile(filename, size_pixels);
}
Expand Down Expand Up @@ -975,9 +980,17 @@ pub const DockSpaceOverViewport = zguiDockSpaceOverViewport;
// DockBuilder (Unstable internal imgui API, subject to change, use at own risk)
//
//--------------------------------------------------------------------------------------------------
const DockNode = anyopaque;
pub fn dockNodeRect(node: *const DockNode, out_rect: *[4]f32) void {
return zguiDockNodeRect(node, out_rect);
}
extern fn zguiDockNodeRect(node: *const DockNode, out_rect: *[4]f32) void;

pub fn dockBuilderDockWindow(window_name: [:0]const u8, node_id: Ident) void {
zguiDockBuilderDockWindow(window_name.ptr, node_id);
}
pub const dockBuilderGetNode = zguiDockBuilderGetNode;
pub const dockBuilderGetCentralNode = zguiDockBuilderGetCentralNode;
pub const dockBuilderAddNode = zguiDockBuilderAddNode;
pub const dockBuilderRemoveNode = zguiDockBuilderRemoveNode;
pub fn dockBuilderSetNodePos(node_id: Ident, pos: [2]f32) void {
Expand All @@ -990,6 +1003,8 @@ pub const dockBuilderSplitNode = zguiDockBuilderSplitNode;
pub const dockBuilderFinish = zguiDockBuilderFinish;

extern fn zguiDockBuilderDockWindow(window_name: [*:0]const u8, node_id: Ident) void;
extern fn zguiDockBuilderGetNode(node_id: Ident) ?*DockNode;
extern fn zguiDockBuilderGetCentralNode(node_id: Ident) ?*DockNode;
extern fn zguiDockBuilderAddNode(node_id: Ident, flags: DockNodeFlags) Ident;
extern fn zguiDockBuilderRemoveNode(node_id: Ident) void;
extern fn zguiDockBuilderSetNodePos(node_id: Ident, pos: *const [2]f32) void;
Expand Down Expand Up @@ -1307,6 +1322,19 @@ pub fn popStyleVar(args: struct {
extern fn zguiPopStyleVar(count: c_int) void;

//--------------------------------------------------------------------------------------------------
pub const ItemFlag = enum(c_int) {
none = 0,
no_tab_stop = 1 << 0,
no_nav = 1 << 1,
no_nav_default_focus = 1 << 2,
button_repeat = 1 << 3,
auto_close_popups = 1 << 4,
allow_duplicate_id = 1 << 5,
};
/// `void pushItemFlag(item_flag: ItemFlag, enabled: bool) void`
pub const pushItemFlag = zguiPushItemFlag;
/// `void popItemFlag() void`
pub const popItemFlag = zguiPopItemFlag;
/// `void pushItemWidth(item_width: f32) void`
pub const pushItemWidth = zguiPushItemWidth;
/// `void popItemWidth() void`
Expand All @@ -1315,6 +1343,8 @@ pub const popItemWidth = zguiPopItemWidth;
pub const setNextItemWidth = zguiSetNextItemWidth;
/// `void setItemDefaultFocus() void`
pub const setItemDefaultFocus = zguiSetItemDefaultFocus;
extern fn zguiPushItemFlag(item_flag: ItemFlag, enabled: bool) void;
extern fn zguiPopItemFlag() void;
extern fn zguiPushItemWidth(item_width: f32) void;
extern fn zguiPopItemWidth() void;
extern fn zguiSetNextItemWidth(item_width: f32) void;
Expand Down
29 changes: 26 additions & 3 deletions src/plot.zig
Original file line number Diff line number Diff line change
Expand Up @@ -604,12 +604,11 @@ fn PlotBarsValuesGen(comptime T: type) type {
};
}
pub fn plotBarsValues(label_id: [:0]const u8, comptime T: type, args: PlotBarsValuesGen(T)) void {
assert(args.xv.len == args.yv.len);
zguiPlot_PlotBars(
zguiPlot_PlotBarsValues(
label_id,
gui.typeToDataTypeEnum(T),
args.v.ptr,
@as(i32, @intCast(args.xv.len)),
@as(i32, @intCast(args.v.len)),
args.bar_size,
args.shift,
args.flags,
Expand Down Expand Up @@ -655,6 +654,30 @@ pub fn dragPoint(id: i32, args: DragPoint) bool {
}
extern fn zguiPlot_DragPoint(id: i32, x: *f64, y: *f64, *const [4]f32, size: f32, flags: DragToolFlags) bool;
//----------------------------------------------------------------------------------------------
pub const Tag = struct {
round: bool = false,
};

pub fn tagX(x: f64, col: [4]f32, args: Tag) void {
zguiPlot_TagX(x, &col, args.round);
}
extern fn zguiPlot_TagX(x: f64, col: *const [4]f32, round: bool) void;

pub fn tagXText(x: f64, col: [4]f32, comptime fmt: []const u8, fmt_args: anytype) void {
zguiPlot_TagXText(x, &col, "%s", gui.formatZ(fmt, fmt_args).ptr);
}
extern fn zguiPlot_TagXText(x: f64, col: *const [4]f32, fmt: [*:0]const u8, ...) void;

pub fn tagY(y: f64, col: [4]f32, args: Tag) void {
zguiPlot_TagY(y, &col, args.round);
}
extern fn zguiPlot_TagY(y: f64, col: *const [4]f32, round: bool) void;

pub fn tagYText(y: f64, col: [4]f32, comptime fmt: []const u8, fmt_args: anytype) void {
zguiPlot_TagYText(y, &col, "%s", gui.formatZ(fmt, fmt_args).ptr);
}
extern fn zguiPlot_TagYText(y: f64, col: *const [4]f32, fmt: [*:0]const u8, ...) void;
//----------------------------------------------------------------------------------------------
// PlotText
const PlotTextFlags = packed struct(u32) {
vertical: bool = false,
Expand Down
32 changes: 31 additions & 1 deletion src/zgui.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -362,7 +362,7 @@ extern "C"
ImGui::SetMouseCursor(cursor);
}

ZGUI_API void zguiSetNextFrameWantCaptureMouse(bool want_capture_mouse)
ZGUI_API void zguiSetNextFrameWantCaptureMouse(bool want_capture_mouse)
{
ImGui::SetNextFrameWantCaptureMouse(want_capture_mouse);
}
Expand Down Expand Up @@ -1314,6 +1314,16 @@ extern "C"
ImGui::PopStyleVar(count);
}

ZGUI_API void zguiPushItemFlag(int item_flag, bool enabled)
{
ImGui::PushItemFlag(item_flag, enabled);
}

ZGUI_API void zguiPopItemFlag()
{
ImGui::PopItemFlag();
}

ZGUI_API void zguiPushItemWidth(float item_width)
{
ImGui::PushItemWidth(item_width);
Expand Down Expand Up @@ -1492,6 +1502,11 @@ extern "C"
return ImGui::GetClipboardText();
}

ZGUI_API ImFont *zguiIoAddFontDefault(const ImFontConfig *config)
{
return ImGui::GetIO().Fonts->AddFontDefault(config);
}

ZGUI_API ImFont *zguiIoAddFontFromFileWithConfig(
const char *filename,
float size_pixels,
Expand Down Expand Up @@ -2784,11 +2799,26 @@ extern "C"
// DockBuilder (Unstable internal imgui API, subject to change, use at own risk)
//
//--------------------------------------------------------------------------------------------------
ZGUI_API void zguiDockNodeRect(const ImGuiDockNode* node, ImRect* out_rect)
{
*out_rect = node->Rect();
}

ZGUI_API void zguiDockBuilderDockWindow(const char *window_name, ImGuiID node_id)
{
ImGui::DockBuilderDockWindow(window_name, node_id);
}

ZGUI_API ImGuiDockNode* zguiDockBuilderGetNode(ImGuiID node_id)
{
return ImGui::DockBuilderGetNode(node_id);
}

ZGUI_API ImGuiDockNode* zguiDockBuilderGetCentralNode(ImGuiID node_id)
{
return ImGui::DockBuilderGetCentralNode(node_id);
}

ZGUI_API ImGuiID zguiDockBuilderAddNode(ImGuiID node_id, ImGuiDockNodeFlags flags)
{
return ImGui::DockBuilderAddNode(node_id, flags);
Expand Down
26 changes: 26 additions & 0 deletions src/zplot.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,32 @@ extern "C"
flags);
}

ZGUI_API void zguiPlot_TagX(double x, float col[4], bool round)
{
ImPlot::TagX(x, (*(const ImVec4 *)&(col[0])), round);
}

ZGUI_API void zguiPlot_TagXText(double x, float col[4], const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
ImPlot::TagXV(x, (*(const ImVec4 *)&(col[0])), fmt, args);
va_end(args);
}

ZGUI_API void zguiPlot_TagY(double y, float col[4], bool round)
{
ImPlot::TagY(y, (*(const ImVec4 *)&(col[0])), round);
}

ZGUI_API void zguiPlot_TagYText(double y, float col[4], const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
ImPlot::TagYV(y, (*(const ImVec4 *)&(col[0])), fmt, args);
va_end(args);
}

ZGUI_API void zguiPlot_PlotText(
const char *text,
double x, double y,
Expand Down
Loading