1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
// ImGui::BeginTable()的标志
// [BETA API] API可能会略有演变!如果您使用此功能,请在发布时更新到下一个版本!
// - 重要!尺寸政策具有复杂而微妙的副作用,比你想象的要多。
//仔细阅读评论/演示+尝试现场演示以熟悉它们。
// - 默认大小策略是:
// - 如果 ScrollX 已打开,或者主机窗口具有 ImGuiWindowFlags_AlwaysAutoResize,则默认为 ImGuiTableFlags_SizingFixedFit。
// - 如果 ScrollX 关闭,则默认为 ImGuiTableFlags_SizingStretchSame。
// - 当ScrollX关闭时:
// - 表默认为ImGuiTableFlags_SizingStretchSame ->所有列默认为相同重量的ImGuiTableColumnFlags_WidthStretch。
// - 允许列大小策略:拉伸(默认),固定/自动。
// - 固定列通常会获得其要求的宽度(除非表不能全部匹配)。
// - 拉伸列将共享剩余宽度。
// - 混合固定/拉伸列是可能的,但对调整大小行为有各种副作用。
//混合大小策略的典型用途是:任意数量的领先固定列,后跟一两个跟踪拉伸列。
//(这是因为列的可见顺序对它们对手动调整大小的反应有微妙但必要的影响)。
// - 当ScrollX打开时:
// - 表默认为ImGuiTableFlags_SizingFixedFit ->所有列默认为ImGuiTableColumnFlags_WidthFixed
// - 允许列大小策略:主要修复/自动。
// - 固定列可以根据需要放大。如果需要,表格将显示水平滚动条。
// - 使用自动调整大小(不可调整大小)固定列时,查询内容宽度以使用项目对齐,例如SetNextItemWidth(-FLT_MIN)没有意义,会创建一个反馈循环。
// - 如果 ScrollX 处于打开,使用拉伸列通常没有意义,除非您在 BeginTable() 中指定了“inner_width”的值。
// 如果您为“inner_width”指定一个值,那么实际上,滚动空间是已知的,拉伸或混合固定/拉伸列再次变得有意义。
// - 有关详细信息,请阅读imgui_tables.cpp顶部的文档。
enum ImGuiTableFlags_
{
// 特征
ImGuiTableFlags_None = 0,
ImGuiTableFlags_Resizable = 1 << 0, // 启用调整列大小。
ImGuiTableFlags_Reorderable = 1 << 1, // 在标题行中启用重新排序列(需要调用 TableSetupColumn() + TableHeadersRow() 来显示标题)
ImGuiTableFlags_Hideable = 1 << 2, // 在上下文菜单中启用隐藏/禁用列。
ImGuiTableFlags_Sortable = 1 << 3, // 启用排序。调用 TableGetSortSpecs() 以获取排序规范。另请参阅 ImGuiTableFlags_SortMulti 和 ImGuiTableFlags_SortTristate。
ImGuiTableFlags_NoSavedSettings = 1 << 4, // 禁用 .ini 文件中的持久列顺序、宽度和排序设置。
ImGuiTableFlags_ContextMenuInBody = 1 << 5, // 右键单击列 body/contents 将显示表上下文菜单。默认情况下,它在 TableHeadersRow() 中可用。
// 装饰
ImGuiTableFlags_RowBg = 1 << 6, // 使用 ImGuiCol_TableRowBg 或 ImGuiCol_TableRowBgAlt 设置每个 RowBg 颜色(相当于手动在每行上使用 ImGuiTableBgFlags_RowBg0 调用 TableSetBgColor)
ImGuiTableFlags_BordersInnerH = 1 << 7, // 在行之间绘制水平边框。
ImGuiTableFlags_BordersOuterH = 1 << 8, // 在顶部和底部绘制水平边框。
ImGuiTableFlags_BordersInnerV = 1 << 9, // 在列之间绘制垂直边框。
ImGuiTableFlags_BordersOuterV = 1 << 10, // 在左右两侧绘制垂直边框。
ImGuiTableFlags_BordersH = ImGuiTableFlags_BordersInnerH | ImGuiTableFlags_BordersOuterH, // 绘制水平边框。
ImGuiTableFlags_BordersV = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersOuterV, // 绘制垂直边框。
ImGuiTableFlags_BordersInner = ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_BordersInnerH, // 绘制内边框。
ImGuiTableFlags_BordersOuter = ImGuiTableFlags_BordersOuterV | ImGuiTableFlags_BordersOuterH, // 绘制外边框。
ImGuiTableFlags_Borders = ImGuiTableFlags_BordersInner | ImGuiTableFlags_BordersOuter, // 绘制所有边框。
ImGuiTableFlags_NoBordersInBody = 1 << 11, // [ALPHA] 在列 Body 中禁用垂直边框(边框将始终出现在 Headers 中)。 -> 可能会转向风格
ImGuiTableFlags_NoBordersInBodyUntilResize = 1 << 12, // [ALPHA] 禁用列 Body 中的垂直边框,直到悬停以调整大小(边框将始终出现在标题中)。 -> 可能会转向风格
// 大小调整策略(阅读上面的默认值)
ImGuiTableFlags_SizingFixedFit = 1 << 13, // 列默认为 _WidthFixed 或 _WidthAuto(如果可调整大小或不可调整大小),匹配内容宽度。
ImGuiTableFlags_SizingFixedSame = 2 << 13, // 列默认为 _WidthFixed 或 _WidthAuto(如果可调整大小或不可调整大小),匹配所有列的最大内容宽度。隐式启用 ImGuiTableFlags_NoKeepColumnsVisible。
ImGuiTableFlags_SizingStretchProp = 3 << 13, // 列默认为 _WidthStretch,默认权重与每列内容宽度成比例。
ImGuiTableFlags_SizingStretchSame = 4 << 13, // 列默认为 _WidthStretch,默认权重都相等,除非被 TableSetupColumn() 覆盖。
// 调整额外选项的大小
ImGuiTableFlags_NoHostExtendX = 1 << 16, // 使外部宽度自动适应列,覆盖 outer_size.x 值。仅在禁用 ScrollX/ScrollY 且未使用 Stretch 列时可用。
ImGuiTableFlags_NoHostExtendY = 1 << 17, // 使外部高度正好停在 outer_size.y 处(防止自动扩展表超出限制)。仅在禁用 ScrollX/ScrollY 时可用。低于限制的数据将被剪裁且不可见。
ImGuiTableFlags_NoKeepColumnsVisible = 1 << 18, // 当 ScrollX 关闭且表格变得太小时时,禁用保持列始终最低限度可见。如果列可调整大小,则不推荐。
ImGuiTableFlags_PreciseWidths = 1 << 19, // 禁用将剩余宽度分配给拉伸列(在具有 3 列的 100 宽表上分配宽度:没有此标志:33,33,34。使用此标志:33,33,33)。随着列数的增加,调整大小会显得不那么平滑。
// 剪裁
ImGuiTableFlags_NoClip = 1 << 20, // 为每个单独的列禁用剪切矩形(减少绘制命令计数,项目将能够溢出到其他列)。通常与 TableSetupScrollFreeze() 不兼容。
// 填充
ImGuiTableFlags_PadOuterX = 1 << 21, // 如果 BordersOuterV 开启则默认。启用最外边距。如果您有标题,通常是可取的。
ImGuiTableFlags_NoPadOuterX = 1 << 22, //如果 BordersOuterV 关闭,则为默认值。禁用最外面的填充。
ImGuiTableFlags_NoPadInnerX = 1 << 23, // 禁用列之间的内部填充(如果 BordersOuterV 开启,则双内部填充,如果 BordersOuterV 关闭,则单内部填充)。
// 滚动
ImGuiTableFlags_ScrollX = 1 << 24, // 启用水平滚动。需要 BeginTable() 的“outer_size”参数来指定容器大小。更改默认大小调整策略。因为这样会创建一个子窗口,所以目前使用 ScrollX 时一般推荐使用 ScrollY。
ImGuiTableFlags_ScrollY = 1 << 25, // 启用垂直滚动。需要 BeginTable() 的“outer_size”参数来指定容器大小。
// 排序
ImGuiTableFlags_SortMulti = 1 << 26, // 单击标题以对多列进行排序时按住 shift。 TableGetSortSpecs() 可能会返回规范,其中 (SpecsCount > 1)。
ImGuiTableFlags_SortTristate = 1 << 27, // 不允许排序,禁用默认排序。 TableGetSortSpecs() 可能会返回规范,其中 (SpecsCount == 0)。
};
|