137 std::vector<std::string> flag_tokens;
139 std::istringstream tokenStream(flags);
140 while (std::getline(tokenStream, token,
'|')) {
141 flag_tokens.push_back(token);
146 static std::map<std::string, ImGuiWindowFlags> flagMap = {
147 {
"None", ImGuiWindowFlags_None},
148 {
"NoTitleBar", ImGuiWindowFlags_NoTitleBar},
149 {
"NoResize", ImGuiWindowFlags_NoResize},
150 {
"NoMove", ImGuiWindowFlags_NoMove},
151 {
"NoScrollbar", ImGuiWindowFlags_NoScrollbar},
152 {
"NoScrollWithMouse", ImGuiWindowFlags_NoScrollWithMouse},
153 {
"NoCollapse", ImGuiWindowFlags_NoCollapse},
154 {
"AlwaysAutoResize", ImGuiWindowFlags_AlwaysAutoResize},
155 {
"NoSavedSettings", ImGuiWindowFlags_NoSavedSettings},
156 {
"NoInputs", ImGuiWindowFlags_NoInputs},
157 {
"MenuBar", ImGuiWindowFlags_MenuBar},
158 {
"HorizontalScrollbar", ImGuiWindowFlags_HorizontalScrollbar},
159 {
"NoFocusOnAppearing", ImGuiWindowFlags_NoFocusOnAppearing},
160 {
"NoBringToFrontOnFocus", ImGuiWindowFlags_NoBringToFrontOnFocus},
161 {
"AlwaysVerticalScrollbar", ImGuiWindowFlags_AlwaysVerticalScrollbar},
162 {
"AlwaysHorizontalScrollbar",
163 ImGuiWindowFlags_AlwaysHorizontalScrollbar},
164 {
"AlwaysUseWindowPadding", ImGuiWindowFlags_AlwaysUseWindowPadding},
165 {
"NoNavInputs", ImGuiWindowFlags_NoNavInputs},
166 {
"NoNavFocus", ImGuiWindowFlags_NoNavFocus},
167 {
"UnsavedDocument", ImGuiWindowFlags_UnsavedDocument},
168 {
"NoNav", ImGuiWindowFlags_NoNav},
169 {
"NoDecoration", ImGuiWindowFlags_NoDecoration},
170 {
"NoInputs", ImGuiWindowFlags_NoInputs},
171 {
"NoFocusOnAppearing", ImGuiWindowFlags_NoFocusOnAppearing},
172 {
"NoBringToFrontOnFocus", ImGuiWindowFlags_NoBringToFrontOnFocus},
173 {
"AlwaysAutoResize", ImGuiWindowFlags_AlwaysAutoResize},
174 {
"NoSavedSettings", ImGuiWindowFlags_NoSavedSettings},
175 {
"NoMouseInputs", ImGuiWindowFlags_NoMouseInputs},
176 {
"NoMouseInputs", ImGuiWindowFlags_NoMouseInputs},
177 {
"NoTitleBar", ImGuiWindowFlags_NoTitleBar},
178 {
"NoResize", ImGuiWindowFlags_NoResize},
179 {
"NoMove", ImGuiWindowFlags_NoMove},
180 {
"NoScrollbar", ImGuiWindowFlags_NoScrollbar},
181 {
"NoScrollWithMouse", ImGuiWindowFlags_NoScrollWithMouse},
182 {
"NoCollapse", ImGuiWindowFlags_NoCollapse},
183 {
"AlwaysVerticalScrollbar", ImGuiWindowFlags_AlwaysVerticalScrollbar},
184 {
"AlwaysHorizontalScrollbar",
185 ImGuiWindowFlags_AlwaysHorizontalScrollbar}};
186 ImGuiWindowFlags windowFlags = ImGuiWindowFlags_None;
187 for (
const auto& flag : flag_tokens) {
188 if (flagMap.find(flag) != flagMap.end()) {
189 windowFlags |= flagMap[flag];
192 attributes.
flags = std::make_unique<ImGuiWindowFlags>(windowFlags);
197 static std::map<std::string, ImGuiTreeNodeFlags> flagMap = {
198 {
"None", ImGuiTreeNodeFlags_None},
199 {
"Selected", ImGuiTreeNodeFlags_Selected},
200 {
"Framed", ImGuiTreeNodeFlags_Framed},
201 {
"AllowItemOverlap", ImGuiTreeNodeFlags_AllowItemOverlap},
202 {
"NoTreePushOnOpen", ImGuiTreeNodeFlags_NoTreePushOnOpen},
203 {
"NoAutoOpenOnLog", ImGuiTreeNodeFlags_NoAutoOpenOnLog},
204 {
"DefaultOpen", ImGuiTreeNodeFlags_DefaultOpen},
205 {
"OpenOnDoubleClick", ImGuiTreeNodeFlags_OpenOnDoubleClick},
206 {
"OpenOnArrow", ImGuiTreeNodeFlags_OpenOnArrow},
207 {
"Leaf", ImGuiTreeNodeFlags_Leaf},
208 {
"Bullet", ImGuiTreeNodeFlags_Bullet},
209 {
"FramePadding", ImGuiTreeNodeFlags_FramePadding},
210 {
"NavLeftJumpsBackHere", ImGuiTreeNodeFlags_NavLeftJumpsBackHere},
211 {
"CollapsingHeader", ImGuiTreeNodeFlags_CollapsingHeader}};
212 ImGuiTreeNodeFlags treeFlags = ImGuiTreeNodeFlags_None;
213 for (
const auto& flag : flag_tokens) {
214 if (flagMap.find(flag) != flagMap.end()) {
215 treeFlags |= flagMap[flag];
218 attributes.
flags = std::make_unique<ImGuiTreeNodeFlags>(treeFlags);
223 static std::map<std::string, ImGuiTableFlags> flagMap = {
224 {
"None", ImGuiTableFlags_None},
225 {
"Resizable", ImGuiTableFlags_Resizable},
226 {
"Reorderable", ImGuiTableFlags_Reorderable},
227 {
"Hideable", ImGuiTableFlags_Hideable},
228 {
"Sortable", ImGuiTableFlags_Sortable},
229 {
"NoSavedSettings", ImGuiTableFlags_NoSavedSettings},
230 {
"ContextMenuInBody", ImGuiTableFlags_ContextMenuInBody},
231 {
"RowBg", ImGuiTableFlags_RowBg},
232 {
"BordersInnerH", ImGuiTableFlags_BordersInnerH},
233 {
"BordersOuterH", ImGuiTableFlags_BordersOuterH},
234 {
"BordersInnerV", ImGuiTableFlags_BordersInnerV},
235 {
"BordersOuterV", ImGuiTableFlags_BordersOuterV},
236 {
"BordersH", ImGuiTableFlags_BordersH},
237 {
"BordersV", ImGuiTableFlags_BordersV},
238 {
"Borders", ImGuiTableFlags_Borders},
239 {
"NoBordersInBody", ImGuiTableFlags_NoBordersInBody},
240 {
"NoBordersInBodyUntilResize",
241 ImGuiTableFlags_NoBordersInBodyUntilResize},
242 {
"SizingFixedFit", ImGuiTableFlags_SizingFixedFit},
243 {
"SizingFixedSame", ImGuiTableFlags_SizingFixedSame},
244 {
"SizingStretchProp", ImGuiTableFlags_SizingStretchProp},
245 {
"SizingStretchSame", ImGuiTableFlags_SizingStretchSame},
246 {
"NoHostExtendX", ImGuiTableFlags_NoHostExtendX},
247 {
"NoHostExtendY", ImGuiTableFlags_NoHostExtendY},
248 {
"NoKeepColumnsVisible", ImGuiTableFlags_NoKeepColumnsVisible},
249 {
"PreciseWidths", ImGuiTableFlags_PreciseWidths},
250 {
"NoClip", ImGuiTableFlags_NoClip},
251 {
"PadOuterX", ImGuiTableFlags_PadOuterX},
252 {
"NoPadOuterX", ImGuiTableFlags_NoPadOuterX},
253 {
"NoPadInnerX", ImGuiTableFlags_NoPadInnerX},
254 {
"ScrollX", ImGuiTableFlags_ScrollX},
255 {
"ScrollY", ImGuiTableFlags_ScrollY},
256 {
"SortMulti", ImGuiTableFlags_SortMulti},
257 {
"SortTristate", ImGuiTableFlags_SortTristate}};
258 ImGuiTableFlags tableFlags = ImGuiTableFlags_None;
259 for (
const auto& flag : flag_tokens) {
260 if (flagMap.find(flag) != flagMap.end()) {
261 tableFlags |= flagMap[flag];
265 attributes.
flags = std::make_unique<ImGuiTableFlags>(tableFlags);
268 static std::map<std::string, ImGuiTableColumnFlags> flagMap = {
269 {
"None", ImGuiTableColumnFlags_None},
270 {
"DefaultHide", ImGuiTableColumnFlags_DefaultHide},
271 {
"DefaultSort", ImGuiTableColumnFlags_DefaultSort},
272 {
"WidthStretch", ImGuiTableColumnFlags_WidthStretch},
273 {
"WidthFixed", ImGuiTableColumnFlags_WidthFixed},
274 {
"NoResize", ImGuiTableColumnFlags_NoResize},
275 {
"NoReorder", ImGuiTableColumnFlags_NoReorder},
276 {
"NoHide", ImGuiTableColumnFlags_NoHide},
277 {
"NoClip", ImGuiTableColumnFlags_NoClip},
278 {
"NoSort", ImGuiTableColumnFlags_NoSort},
279 {
"NoSortAscending", ImGuiTableColumnFlags_NoSortAscending},
280 {
"NoSortDescending", ImGuiTableColumnFlags_NoSortDescending},
281 {
"NoHeaderWidth", ImGuiTableColumnFlags_NoHeaderWidth},
282 {
"PreferSortAscending", ImGuiTableColumnFlags_PreferSortAscending},
283 {
"PreferSortDescending", ImGuiTableColumnFlags_PreferSortDescending},
284 {
"IndentEnable", ImGuiTableColumnFlags_IndentEnable},
285 {
"IndentDisable", ImGuiTableColumnFlags_IndentDisable},
286 {
"IsEnabled", ImGuiTableColumnFlags_IsEnabled},
287 {
"IsVisible", ImGuiTableColumnFlags_IsVisible},
288 {
"IsSorted", ImGuiTableColumnFlags_IsSorted},
289 {
"IsHovered", ImGuiTableColumnFlags_IsHovered}};
290 ImGuiTableColumnFlags columnFlags = ImGuiTableColumnFlags_None;
291 for (
const auto& flag : flag_tokens) {
292 if (flagMap.find(flag) != flagMap.end()) {
293 columnFlags |= flagMap[flag];
297 attributes.
flags = std::make_unique<ImGuiTableColumnFlags>(columnFlags);