mirror of
https://github.com/ghostty-org/ghostty.git
synced 2026-04-17 13:02:42 +00:00
inspector: add style file for style widgets
This commit is contained in:
@@ -2,6 +2,7 @@ const std = @import("std");
|
||||
const cimgui = @import("dcimgui");
|
||||
const terminal = @import("../terminal/main.zig");
|
||||
const inspector = @import("main.zig");
|
||||
const style = @import("style.zig");
|
||||
const units = @import("units.zig");
|
||||
|
||||
/// Window to show screen information.
|
||||
|
||||
125
src/inspector/style.zig
Normal file
125
src/inspector/style.zig
Normal file
@@ -0,0 +1,125 @@
|
||||
const std = @import("std");
|
||||
const cimgui = @import("dcimgui");
|
||||
const terminal = @import("../terminal/main.zig");
|
||||
const widgets = @import("widgets.zig");
|
||||
|
||||
/// Render a style as a table.
|
||||
pub fn table(
|
||||
st: terminal.Style,
|
||||
palette: ?*const terminal.color.Palette,
|
||||
) void {
|
||||
{
|
||||
_ = cimgui.c.ImGui_BeginTable(
|
||||
"style",
|
||||
2,
|
||||
cimgui.c.ImGuiTableFlags_None,
|
||||
);
|
||||
defer cimgui.c.ImGui_EndTable();
|
||||
{
|
||||
cimgui.c.ImGui_TableNextRow();
|
||||
_ = cimgui.c.ImGui_TableSetColumnIndex(0);
|
||||
cimgui.c.ImGui_Text("Foreground");
|
||||
cimgui.c.ImGui_SameLine();
|
||||
widgets.helpMarker("The foreground (text) color");
|
||||
_ = cimgui.c.ImGui_TableSetColumnIndex(1);
|
||||
color(st.fg_color, palette);
|
||||
}
|
||||
|
||||
{
|
||||
cimgui.c.ImGui_TableNextRow();
|
||||
_ = cimgui.c.ImGui_TableSetColumnIndex(0);
|
||||
cimgui.c.ImGui_Text("Background");
|
||||
cimgui.c.ImGui_SameLine();
|
||||
widgets.helpMarker("The background (cell) color");
|
||||
_ = cimgui.c.ImGui_TableSetColumnIndex(1);
|
||||
color(st.bg_color, palette);
|
||||
}
|
||||
|
||||
{
|
||||
cimgui.c.ImGui_TableNextRow();
|
||||
_ = cimgui.c.ImGui_TableSetColumnIndex(0);
|
||||
cimgui.c.ImGui_Text("Underline");
|
||||
cimgui.c.ImGui_SameLine();
|
||||
widgets.helpMarker("The underline color, if underlines are enabled.");
|
||||
_ = cimgui.c.ImGui_TableSetColumnIndex(1);
|
||||
color(st.underline_color, palette);
|
||||
}
|
||||
|
||||
const style_flags = .{
|
||||
.{ "bold", "Text will be rendered with bold weight." },
|
||||
.{ "italic", "Text will be rendered in italic style." },
|
||||
.{ "faint", "Text will be rendered with reduced intensity." },
|
||||
.{ "blink", "Text will blink." },
|
||||
.{ "inverse", "Foreground and background colors are swapped." },
|
||||
.{ "invisible", "Text will be invisible (hidden)." },
|
||||
.{ "strikethrough", "Text will have a line through it." },
|
||||
};
|
||||
inline for (style_flags) |entry| entry: {
|
||||
const style = entry[0];
|
||||
const help = entry[1];
|
||||
if (!@field(st.flags, style)) break :entry;
|
||||
|
||||
cimgui.c.ImGui_TableNextRow();
|
||||
{
|
||||
_ = cimgui.c.ImGui_TableSetColumnIndex(0);
|
||||
cimgui.c.ImGui_Text(style.ptr);
|
||||
cimgui.c.ImGui_SameLine();
|
||||
widgets.helpMarker(help);
|
||||
}
|
||||
{
|
||||
_ = cimgui.c.ImGui_TableSetColumnIndex(1);
|
||||
cimgui.c.ImGui_Text("true");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Render a style color.
|
||||
pub fn color(
|
||||
id: [:0]const u8,
|
||||
c: terminal.Style.Color,
|
||||
palette: ?*const terminal.color.Palette,
|
||||
) void {
|
||||
cimgui.c.ImGui_PushID(id);
|
||||
defer cimgui.c.ImGui_PopID();
|
||||
|
||||
switch (c) {
|
||||
.none => cimgui.c.ImGui_Text("default"),
|
||||
|
||||
.palette => |idx| {
|
||||
cimgui.c.ImGui_Text("Palette %d", idx);
|
||||
if (palette) |p| {
|
||||
const rgb = p[idx];
|
||||
var data: [3]f32 = .{
|
||||
@as(f32, @floatFromInt(rgb.r)) / 255,
|
||||
@as(f32, @floatFromInt(rgb.g)) / 255,
|
||||
@as(f32, @floatFromInt(rgb.b)) / 255,
|
||||
};
|
||||
_ = cimgui.c.ImGui_ColorEdit3(
|
||||
"color_fg",
|
||||
&data,
|
||||
cimgui.c.ImGuiColorEditFlags_DisplayHex |
|
||||
cimgui.c.ImGuiColorEditFlags_NoPicker |
|
||||
cimgui.c.ImGuiColorEditFlags_NoLabel,
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
.rgb => |rgb| {
|
||||
var data: [3]f32 = .{
|
||||
@as(f32, @floatFromInt(rgb.r)) / 255,
|
||||
@as(f32, @floatFromInt(rgb.g)) / 255,
|
||||
@as(f32, @floatFromInt(rgb.b)) / 255,
|
||||
};
|
||||
_ = cimgui.c.ImGui_ColorEdit3(
|
||||
"color_fg",
|
||||
&data,
|
||||
cimgui.c.ImGuiColorEditFlags_DisplayHex |
|
||||
cimgui.c.ImGuiColorEditFlags_NoPicker |
|
||||
cimgui.c.ImGuiColorEditFlags_NoLabel,
|
||||
);
|
||||
},
|
||||
}
|
||||
|
||||
cimgui.c.ImGui_TextDisabled("(Any styles not shown are not currently set)");
|
||||
}
|
||||
Reference in New Issue
Block a user