5#include "absl/strings/str_format.h"
9#include "imgui/imgui.h"
10#include "imgui/imgui_internal.h"
69 ImGui::BeginChild(label, ImVec2(0, 0),
true);
70 ImGui::Dummy(ImVec2(padding, padding));
73 ImGui::Dummy(ImVec2(0, padding));
85 ImGuiTableFlags flags,
86 const ImVec2& outer_size,
91 ImGui::PushStyleColor(ImGuiCol_TableHeaderBg,
93 ImGui::PushStyleColor(ImGuiCol_TableBorderStrong,
95 ImGui::PushStyleColor(ImGuiCol_TableBorderLight,
97 ImGui::PushStyleColor(ImGuiCol_TableRowBg,
99 ImGui::PushStyleColor(ImGuiCol_TableRowBgAlt,
103 if (!(flags & ImGuiTableFlags_NoHostExtendY)) {
105 ImGuiStyleVar_CellPadding,
109 return ImGui::BeginTable(str_id, columns, flags, outer_size, inner_width);
115 ImGui::PopStyleColor(5);
117 ImGui::PopStyleVar(1);
124 ImGui::PushStyleColor(ImGuiCol_ChildBg,
126 ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0, 0));
129 ImGui::BeginChild(label, *canvas_size,
true);
131 ImGui::BeginChild(label, ImVec2(0, 0),
true);
137 ImGui::PopStyleVar(1);
138 ImGui::PopStyleColor(1);
144 ImGuiInputTextFlags flags) {
146 return ImGui::InputText(label, buf, buf_size, flags);
151 ImGuiInputTextFlags flags) {
153 return ImGui::InputInt(label, v, step, step_fast, flags);
157 float step_fast,
const char* format,
158 ImGuiInputTextFlags flags) {
160 return ImGui::InputFloat(label, v, step, step_fast, format, flags);
168 ImGui::AlignTextToFramePadding();
169 ImGui::Text(
"%s", label);
173 ImGui::SetNextItemWidth(input_width);
176 snprintf(buf,
sizeof(buf),
"%02X", *data);
178 bool changed = ImGui::InputText(
179 (
"##" + std::string(label)).c_str(), buf,
sizeof(buf),
180 ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_AutoSelectAll);
184 if (sscanf(buf,
"%X", &temp) == 1) {
185 *data =
static_cast<uint8_t
>(temp & 0xFF);
197 ImGui::AlignTextToFramePadding();
198 ImGui::Text(
"%s", label);
202 ImGui::SetNextItemWidth(input_width);
205 snprintf(buf,
sizeof(buf),
"%04X", *data);
207 bool changed = ImGui::InputText(
208 (
"##" + std::string(label)).c_str(), buf,
sizeof(buf),
209 ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_AutoSelectAll);
213 if (sscanf(buf,
"%X", &temp) == 1) {
214 *data =
static_cast<uint16_t
>(temp & 0xFFFF);
225 if (ImGui::BeginTable(label, 2,
226 ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg)) {
228 ImGui::TableSetupColumn(
"Property", ImGuiTableColumnFlags_WidthFixed,
230 ImGui::TableSetupColumn(
"Value", ImGuiTableColumnFlags_WidthStretch);
241 float compact_width =
243 ImGui::SetNextItemWidth(compact_width);
245 return ImGui::InputText(label, buf, buf_size,
246 ImGuiInputTextFlags_AutoSelectAll);
252 ImGui::PushStyleColor(ImGuiCol_ChildBg,
254 ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding,
258 ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollWithMouse);
263 ImGui::PopStyleVar(1);
264 ImGui::PopStyleColor(1);
271 ImGui::SeparatorEx(ImGuiSeparatorFlags_Vertical);
279 ImGui::PushStyleVar(ImGuiStyleVar_FramePadding,
281 bool result = ImGui::Button(label, size);
282 ImGui::PopStyleVar(1);
288 std::function<
void()> widget_callback) {
289 ImGui::TableNextRow();
290 ImGui::TableSetColumnIndex(0);
291 ImGui::AlignTextToFramePadding();
292 ImGui::Text(
"%s", label);
293 ImGui::TableSetColumnIndex(1);
294 ImGui::SetNextItemWidth(-1);
301 ImGui::SeparatorText(label);
302 ImGui::PopStyleColor(1);
306 ImGui::TextDisabled(
"(?)");
307 if (ImGui::BeginItemTooltip()) {
308 ImGui::PushTextWrapPos(ImGui::GetFontSize() * 35.0f);
309 ImGui::TextUnformatted(desc);
310 ImGui::PopTextWrapPos();
static void SectionHeader(const char *label)
static float GetPanelPadding()
static void ToolbarSeparator()
static void BeginToolbar(const char *label)
static float GetCanvasToolbarHeight()
static void EndPaddedPanel()
static void EndTableWithTheming()
static void HelpMarker(const char *desc)
static float GetTableRowHeight()
static const Theme & GetTheme()
static float GetStandardInputWidth()
static void BeginPropertyGrid(const char *label)
static bool AutoSizedInputFloat(const char *label, float *v, float step=0.0f, float step_fast=0.0f, const char *format="%.3f", ImGuiInputTextFlags flags=0)
static bool AutoSizedInputInt(const char *label, int *v, int step=1, int step_fast=100, ImGuiInputTextFlags flags=0)
static bool InputToolbarField(const char *label, char *buf, size_t buf_size)
static void BeginCanvasPanel(const char *label, ImVec2 *canvas_size=nullptr)
static void PropertyRow(const char *label, std::function< void()> widget_callback)
static float GetBaseFontSize()
static float GetButtonPadding()
static float GetToolbarHeight()
static void BeginPaddedPanel(const char *label, float padding=-1.0f)
static bool ToolbarButton(const char *label, const ImVec2 &size=ImVec2(0, 0))
static bool InputHexRow(const char *label, uint8_t *data)
static float GetStandardWidgetHeight()
static float GetStandardSpacing()
static bool BeginTableWithTheming(const char *str_id, int columns, ImGuiTableFlags flags=0, const ImVec2 &outer_size=ImVec2(0, 0), float inner_width=0.0f)
static void EndCanvasPanel()
static bool AutoSizedInputField(const char *label, char *buf, size_t buf_size, ImGuiInputTextFlags flags=0)
static void EndPropertyGrid()
ImVec4 ConvertColorToImVec4(const Color &color)