Skip to content

Commit 95b00a8

Browse files
authored
Merge pull request #48 from kcbanner/tag_xy
2 parents 21dcc28 + f7bf34c commit 95b00a8

File tree

5 files changed

+115
-4
lines changed

5 files changed

+115
-4
lines changed

libs/imgui/imgui.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19572,6 +19572,8 @@ ImGuiID ImGui::DockSpaceOverViewport(ImGuiID dockspace_id, const ImGuiViewport*
1957219572
host_window_flags |= ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus;
1957319573
if (dockspace_flags & ImGuiDockNodeFlags_PassthruCentralNode)
1957419574
host_window_flags |= ImGuiWindowFlags_NoBackground;
19575+
if (dockspace_flags & ImGuiDockNodeFlags_KeepAliveOnly)
19576+
host_window_flags |= ImGuiWindowFlags_NoMouseInputs;
1957519577

1957619578
// FIXME-OPT: When using ImGuiDockNodeFlags_KeepAliveOnly with DockSpaceOverViewport() we might be able to spare submitting the window,
1957719579
// since DockSpace() with that flag doesn't need a window. We'd only need to compute the default ID accordingly.

src/gui.zig

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,11 @@ pub const FontConfig = extern struct {
206206
};
207207

208208
pub const io = struct {
209+
pub fn addFontDefault(config: ?FontConfig) Font {
210+
return zguiIoAddFontDefault(if (config) |c| &c else null);
211+
}
212+
extern fn zguiIoAddFontDefault(config: ?*const FontConfig) Font;
213+
209214
pub fn addFontFromFile(filename: [:0]const u8, size_pixels: f32) Font {
210215
return zguiIoAddFontFromFile(filename, size_pixels);
211216
}
@@ -975,9 +980,17 @@ pub const DockSpaceOverViewport = zguiDockSpaceOverViewport;
975980
// DockBuilder (Unstable internal imgui API, subject to change, use at own risk)
976981
//
977982
//--------------------------------------------------------------------------------------------------
983+
const DockNode = anyopaque;
984+
pub fn dockNodeRect(node: *const DockNode, out_rect: *[4]f32) void {
985+
return zguiDockNodeRect(node, out_rect);
986+
}
987+
extern fn zguiDockNodeRect(node: *const DockNode, out_rect: *[4]f32) void;
988+
978989
pub fn dockBuilderDockWindow(window_name: [:0]const u8, node_id: Ident) void {
979990
zguiDockBuilderDockWindow(window_name.ptr, node_id);
980991
}
992+
pub const dockBuilderGetNode = zguiDockBuilderGetNode;
993+
pub const dockBuilderGetCentralNode = zguiDockBuilderGetCentralNode;
981994
pub const dockBuilderAddNode = zguiDockBuilderAddNode;
982995
pub const dockBuilderRemoveNode = zguiDockBuilderRemoveNode;
983996
pub fn dockBuilderSetNodePos(node_id: Ident, pos: [2]f32) void {
@@ -990,6 +1003,8 @@ pub const dockBuilderSplitNode = zguiDockBuilderSplitNode;
9901003
pub const dockBuilderFinish = zguiDockBuilderFinish;
9911004

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

13091324
//--------------------------------------------------------------------------------------------------
1325+
pub const ItemFlag = enum(c_int) {
1326+
none = 0,
1327+
no_tab_stop = 1 << 0,
1328+
no_nav = 1 << 1,
1329+
no_nav_default_focus = 1 << 2,
1330+
button_repeat = 1 << 3,
1331+
auto_close_popups = 1 << 4,
1332+
allow_duplicate_id = 1 << 5,
1333+
};
1334+
/// `void pushItemFlag(item_flag: ItemFlag, enabled: bool) void`
1335+
pub const pushItemFlag = zguiPushItemFlag;
1336+
/// `void popItemFlag() void`
1337+
pub const popItemFlag = zguiPopItemFlag;
13101338
/// `void pushItemWidth(item_width: f32) void`
13111339
pub const pushItemWidth = zguiPushItemWidth;
13121340
/// `void popItemWidth() void`
@@ -1315,6 +1343,8 @@ pub const popItemWidth = zguiPopItemWidth;
13151343
pub const setNextItemWidth = zguiSetNextItemWidth;
13161344
/// `void setItemDefaultFocus() void`
13171345
pub const setItemDefaultFocus = zguiSetItemDefaultFocus;
1346+
extern fn zguiPushItemFlag(item_flag: ItemFlag, enabled: bool) void;
1347+
extern fn zguiPopItemFlag() void;
13181348
extern fn zguiPushItemWidth(item_width: f32) void;
13191349
extern fn zguiPopItemWidth() void;
13201350
extern fn zguiSetNextItemWidth(item_width: f32) void;

src/plot.zig

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -604,12 +604,11 @@ fn PlotBarsValuesGen(comptime T: type) type {
604604
};
605605
}
606606
pub fn plotBarsValues(label_id: [:0]const u8, comptime T: type, args: PlotBarsValuesGen(T)) void {
607-
assert(args.xv.len == args.yv.len);
608-
zguiPlot_PlotBars(
607+
zguiPlot_PlotBarsValues(
609608
label_id,
610609
gui.typeToDataTypeEnum(T),
611610
args.v.ptr,
612-
@as(i32, @intCast(args.xv.len)),
611+
@as(i32, @intCast(args.v.len)),
613612
args.bar_size,
614613
args.shift,
615614
args.flags,
@@ -655,6 +654,30 @@ pub fn dragPoint(id: i32, args: DragPoint) bool {
655654
}
656655
extern fn zguiPlot_DragPoint(id: i32, x: *f64, y: *f64, *const [4]f32, size: f32, flags: DragToolFlags) bool;
657656
//----------------------------------------------------------------------------------------------
657+
pub const Tag = struct {
658+
round: bool = false,
659+
};
660+
661+
pub fn tagX(x: f64, col: [4]f32, args: Tag) void {
662+
zguiPlot_TagX(x, &col, args.round);
663+
}
664+
extern fn zguiPlot_TagX(x: f64, col: *const [4]f32, round: bool) void;
665+
666+
pub fn tagXText(x: f64, col: [4]f32, comptime fmt: []const u8, fmt_args: anytype) void {
667+
zguiPlot_TagXText(x, &col, "%s", gui.formatZ(fmt, fmt_args).ptr);
668+
}
669+
extern fn zguiPlot_TagXText(x: f64, col: *const [4]f32, fmt: [*:0]const u8, ...) void;
670+
671+
pub fn tagY(y: f64, col: [4]f32, args: Tag) void {
672+
zguiPlot_TagY(y, &col, args.round);
673+
}
674+
extern fn zguiPlot_TagY(y: f64, col: *const [4]f32, round: bool) void;
675+
676+
pub fn tagYText(y: f64, col: [4]f32, comptime fmt: []const u8, fmt_args: anytype) void {
677+
zguiPlot_TagYText(y, &col, "%s", gui.formatZ(fmt, fmt_args).ptr);
678+
}
679+
extern fn zguiPlot_TagYText(y: f64, col: *const [4]f32, fmt: [*:0]const u8, ...) void;
680+
//----------------------------------------------------------------------------------------------
658681
// PlotText
659682
const PlotTextFlags = packed struct(u32) {
660683
vertical: bool = false,

src/zgui.cpp

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ extern "C"
362362
ImGui::SetMouseCursor(cursor);
363363
}
364364

365-
ZGUI_API void zguiSetNextFrameWantCaptureMouse(bool want_capture_mouse)
365+
ZGUI_API void zguiSetNextFrameWantCaptureMouse(bool want_capture_mouse)
366366
{
367367
ImGui::SetNextFrameWantCaptureMouse(want_capture_mouse);
368368
}
@@ -1314,6 +1314,16 @@ extern "C"
13141314
ImGui::PopStyleVar(count);
13151315
}
13161316

1317+
ZGUI_API void zguiPushItemFlag(int item_flag, bool enabled)
1318+
{
1319+
ImGui::PushItemFlag(item_flag, enabled);
1320+
}
1321+
1322+
ZGUI_API void zguiPopItemFlag()
1323+
{
1324+
ImGui::PopItemFlag();
1325+
}
1326+
13171327
ZGUI_API void zguiPushItemWidth(float item_width)
13181328
{
13191329
ImGui::PushItemWidth(item_width);
@@ -1492,6 +1502,11 @@ extern "C"
14921502
return ImGui::GetClipboardText();
14931503
}
14941504

1505+
ZGUI_API ImFont *zguiIoAddFontDefault(const ImFontConfig *config)
1506+
{
1507+
return ImGui::GetIO().Fonts->AddFontDefault(config);
1508+
}
1509+
14951510
ZGUI_API ImFont *zguiIoAddFontFromFileWithConfig(
14961511
const char *filename,
14971512
float size_pixels,
@@ -2784,11 +2799,26 @@ extern "C"
27842799
// DockBuilder (Unstable internal imgui API, subject to change, use at own risk)
27852800
//
27862801
//--------------------------------------------------------------------------------------------------
2802+
ZGUI_API void zguiDockNodeRect(const ImGuiDockNode* node, ImRect* out_rect)
2803+
{
2804+
*out_rect = node->Rect();
2805+
}
2806+
27872807
ZGUI_API void zguiDockBuilderDockWindow(const char *window_name, ImGuiID node_id)
27882808
{
27892809
ImGui::DockBuilderDockWindow(window_name, node_id);
27902810
}
27912811

2812+
ZGUI_API ImGuiDockNode* zguiDockBuilderGetNode(ImGuiID node_id)
2813+
{
2814+
return ImGui::DockBuilderGetNode(node_id);
2815+
}
2816+
2817+
ZGUI_API ImGuiDockNode* zguiDockBuilderGetCentralNode(ImGuiID node_id)
2818+
{
2819+
return ImGui::DockBuilderGetCentralNode(node_id);
2820+
}
2821+
27922822
ZGUI_API ImGuiID zguiDockBuilderAddNode(ImGuiID node_id, ImGuiDockNodeFlags flags)
27932823
{
27942824
return ImGui::DockBuilderAddNode(node_id, flags);

src/zplot.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,32 @@ extern "C"
352352
flags);
353353
}
354354

355+
ZGUI_API void zguiPlot_TagX(double x, float col[4], bool round)
356+
{
357+
ImPlot::TagX(x, (*(const ImVec4 *)&(col[0])), round);
358+
}
359+
360+
ZGUI_API void zguiPlot_TagXText(double x, float col[4], const char *fmt, ...)
361+
{
362+
va_list args;
363+
va_start(args, fmt);
364+
ImPlot::TagXV(x, (*(const ImVec4 *)&(col[0])), fmt, args);
365+
va_end(args);
366+
}
367+
368+
ZGUI_API void zguiPlot_TagY(double y, float col[4], bool round)
369+
{
370+
ImPlot::TagY(y, (*(const ImVec4 *)&(col[0])), round);
371+
}
372+
373+
ZGUI_API void zguiPlot_TagYText(double y, float col[4], const char *fmt, ...)
374+
{
375+
va_list args;
376+
va_start(args, fmt);
377+
ImPlot::TagYV(y, (*(const ImVec4 *)&(col[0])), fmt, args);
378+
va_end(args);
379+
}
380+
355381
ZGUI_API void zguiPlot_PlotText(
356382
const char *text,
357383
double x, double y,

0 commit comments

Comments
 (0)