dora_ssr/dora/
im_gui.rs

1/* Copyright (c) 2016-2025 Li Jin <dragon-fly@qq.com>
2
3Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
5The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6
7THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
8
9extern "C" {
10	fn imgui_load_font_ttf_async(ttf_font_file: i64, font_size: f32, glyph_ranges: i64, func0: i32, stack0: i64);
11	fn imgui_is_font_loaded() -> i32;
12	fn imgui_show_stats();
13	fn imgui_show_console();
14	fn imgui__begin_opts(name: i64, windows_flags: i32) -> i32;
15	fn imgui__end();
16	fn imgui__begin_child_opts(str_id: i64, size: i64, child_flags: i32, window_flags: i32) -> i32;
17	fn imgui__begin_child_with_id_opts(id: i32, size: i64, child_flags: i32, window_flags: i32) -> i32;
18	fn imgui__end_child();
19	fn imgui__set_next_window_pos_center_opts(set_cond: i32);
20	fn imgui__set_next_window_size_opts(size: i64, set_cond: i32);
21	fn imgui__set_next_window_collapsed_opts(collapsed: i32, set_cond: i32);
22	fn imgui__set_window_pos_opts(name: i64, pos: i64, set_cond: i32);
23	fn imgui__set_window_size_opts(name: i64, size: i64, set_cond: i32);
24	fn imgui__set_window_collapsed_opts(name: i64, collapsed: i32, set_cond: i32);
25	fn imgui__set_color_edit_options(color_edit_flags: i32);
26	fn imgui__input_text_opts(label: i64, buffer: i64, input_text_flags: i32) -> i32;
27	fn imgui__input_text_multiline_opts(label: i64, buffer: i64, size: i64, input_text_flags: i32) -> i32;
28	fn imgui__tree_node_ex_opts(label: i64, tree_node_flags: i32) -> i32;
29	fn imgui__tree_node_ex_with_id_opts(str_id: i64, text: i64, tree_node_flags: i32) -> i32;
30	fn imgui__set_next_item_open_opts(is_open: i32, set_cond: i32);
31	fn imgui__collapsing_header_opts(label: i64, tree_node_flags: i32) -> i32;
32	fn imgui__selectable_opts(label: i64, selectable_flags: i32) -> i32;
33	fn imgui__begin_popup_modal_opts(name: i64, windows_flags: i32) -> i32;
34	fn imgui__begin_popup_modal_ret_opts(name: i64, stack: i64, windows_flags: i32) -> i32;
35	fn imgui__begin_popup_context_item_opts(name: i64, popup_flags: i32) -> i32;
36	fn imgui__begin_popup_context_window_opts(name: i64, popup_flags: i32) -> i32;
37	fn imgui__begin_popup_context_void_opts(name: i64, popup_flags: i32) -> i32;
38	fn imgui__push_style_color(name: i32, color: i32);
39	fn imgui__push_style_float(name: i32, val: f32);
40	fn imgui__push_style_vec2(name: i32, val: i64);
41	fn imgui_text(text: i64);
42	fn imgui_text_colored(color: i32, text: i64);
43	fn imgui_text_disabled(text: i64);
44	fn imgui_text_wrapped(text: i64);
45	fn imgui_label_text(label: i64, text: i64);
46	fn imgui_bullet_text(text: i64);
47	fn imgui__tree_node(str_id: i64, text: i64) -> i32;
48	fn imgui_set_tooltip(text: i64);
49	fn imgui_image_opts(clip_str: i64, size: i64, tint_col: i32, border_col: i32);
50	fn imgui_image_button_opts(str_id: i64, clip_str: i64, size: i64, bg_col: i32, tint_col: i32) -> i32;
51	fn imgui__color_button_opts(desc_id: i64, col: i32, color_edit_flags: i32, size: i64) -> i32;
52	fn imgui_columns(count: i32);
53	fn imgui_columns_opts(count: i32, border: i32, str_id: i64);
54	fn imgui__begin_table_opts(str_id: i64, column: i32, outer_size: i64, inner_width: f32, table_flags: i32) -> i32;
55	fn imgui__table_next_row_opts(min_row_height: f32, table_row_flag: i32);
56	fn imgui__table_setup_column_opts(label: i64, init_width_or_weight: f32, user_id: i32, table_column_flags: i32);
57	fn imgui_set_style_bool(name: i64, val: i32);
58	fn imgui_set_style_float(name: i64, val: f32);
59	fn imgui_set_style_vec2(name: i64, val: i64);
60	fn imgui_set_style_color(name: i64, color: i32);
61	fn imgui__begin_ret_opts(name: i64, stack: i64, windows_flags: i32) -> i32;
62	fn imgui__collapsing_header_ret_opts(label: i64, stack: i64, tree_node_flags: i32) -> i32;
63	fn imgui__selectable_ret_opts(label: i64, stack: i64, size: i64, selectable_flags: i32) -> i32;
64	fn imgui__combo_ret_opts(label: i64, stack: i64, items: i64, height_in_items: i32) -> i32;
65	fn imgui__drag_float_ret_opts(label: i64, stack: i64, v_speed: f32, v_min: f32, v_max: f32, display_format: i64, slider_flags: i32) -> i32;
66	fn imgui__drag_float2_ret_opts(label: i64, stack: i64, v_speed: f32, v_min: f32, v_max: f32, display_format: i64, slider_flags: i32) -> i32;
67	fn imgui__drag_int_ret_opts(label: i64, stack: i64, v_speed: f32, v_min: i32, v_max: i32, display_format: i64, slider_flags: i32) -> i32;
68	fn imgui__drag_int2_ret_opts(label: i64, stack: i64, v_speed: f32, v_min: i32, v_max: i32, display_format: i64, slider_flags: i32) -> i32;
69	fn imgui__input_float_ret_opts(label: i64, stack: i64, step: f32, step_fast: f32, display_format: i64, input_text_flags: i32) -> i32;
70	fn imgui__input_float2_ret_opts(label: i64, stack: i64, display_format: i64, input_text_flags: i32) -> i32;
71	fn imgui__input_int_ret_opts(label: i64, stack: i64, step: i32, step_fast: i32, input_text_flags: i32) -> i32;
72	fn imgui__input_int2_ret_opts(label: i64, stack: i64, input_text_flags: i32) -> i32;
73	fn imgui__slider_float_ret_opts(label: i64, stack: i64, v_min: f32, v_max: f32, display_format: i64, slider_flags: i32) -> i32;
74	fn imgui__slider_float2_ret_opts(label: i64, stack: i64, v_min: f32, v_max: f32, display_format: i64, slider_flags: i32) -> i32;
75	fn imgui__slider_int_ret_opts(label: i64, stack: i64, v_min: i32, v_max: i32, format: i64, slider_flags: i32) -> i32;
76	fn imgui__slider_int2_ret_opts(label: i64, stack: i64, v_min: i32, v_max: i32, display_format: i64, slider_flags: i32) -> i32;
77	fn imgui__drag_float_range2_ret_opts(label: i64, stack: i64, v_speed: f32, v_min: f32, v_max: f32, format: i64, format_max: i64, slider_flags: i32) -> i32;
78	fn imgui__drag_int_range2_ret_opts(label: i64, stack: i64, v_speed: f32, v_min: i32, v_max: i32, format: i64, format_max: i64, slider_flags: i32) -> i32;
79	fn imgui__v_slider_float_ret_opts(label: i64, size: i64, stack: i64, v_min: f32, v_max: f32, format: i64, slider_flags: i32) -> i32;
80	fn imgui__v_slider_int_ret_opts(label: i64, size: i64, stack: i64, v_min: i32, v_max: i32, format: i64, slider_flags: i32) -> i32;
81	fn imgui__color_edit3_ret_opts(label: i64, stack: i64, color_edit_flags: i32) -> i32;
82	fn imgui__color_edit4_ret_opts(label: i64, stack: i64, color_edit_flags: i32) -> i32;
83	fn imgui_scroll_when_dragging_on_void();
84	fn imgui__set_next_window_pos_opts(pos: i64, set_cond: i32, pivot: i64);
85	fn imgui_set_next_window_bg_alpha(alpha: f32);
86	fn imgui_show_demo_window();
87	fn imgui_get_content_region_avail() -> i64;
88	fn imgui_get_window_pos() -> i64;
89	fn imgui_get_window_size() -> i64;
90	fn imgui_get_window_width() -> f32;
91	fn imgui_get_window_height() -> f32;
92	fn imgui_is_window_collapsed() -> i32;
93	fn imgui_set_window_font_scale(scale: f32);
94	fn imgui_set_next_window_size_constraints(size_min: i64, size_max: i64);
95	fn imgui_set_next_window_content_size(size: i64);
96	fn imgui_set_next_window_focus();
97	fn imgui_get_scroll_x() -> f32;
98	fn imgui_get_scroll_y() -> f32;
99	fn imgui_get_scroll_max_x() -> f32;
100	fn imgui_get_scroll_max_y() -> f32;
101	fn imgui_set_scroll_x(scroll_x: f32);
102	fn imgui_set_scroll_y(scroll_y: f32);
103	fn imgui_set_scroll_here_y(center_y_ratio: f32);
104	fn imgui_set_scroll_from_pos_y(pos_y: f32, center_y_ratio: f32);
105	fn imgui_set_keyboard_focus_here(offset: i32);
106	fn imgui__pop_style_color(count: i32);
107	fn imgui__pop_style_var(count: i32);
108	fn imgui_set_next_item_width(item_width: f32);
109	fn imgui__push_item_width(item_width: f32);
110	fn imgui__pop_item_width();
111	fn imgui_calc_item_width() -> f32;
112	fn imgui__push_text_wrap_pos(wrap_pos_x: f32);
113	fn imgui__pop_text_wrap_pos();
114	fn imgui__push_item_flag(flag: i32, enabled: i32);
115	fn imgui__pop_item_flag();
116	fn imgui_separator();
117	fn imgui_same_line(pos_x: f32, spacing_w: f32);
118	fn imgui_new_line();
119	fn imgui_spacing();
120	fn imgui_dummy(size: i64);
121	fn imgui_indent(indent_w: f32);
122	fn imgui_unindent(indent_w: f32);
123	fn imgui__begin_group();
124	fn imgui__end_group();
125	fn imgui_get_cursor_pos() -> i64;
126	fn imgui_get_cursor_pos_x() -> f32;
127	fn imgui_get_cursor_pos_y() -> f32;
128	fn imgui_set_cursor_pos(local_pos: i64);
129	fn imgui_set_cursor_pos_x(x: f32);
130	fn imgui_set_cursor_pos_y(y: f32);
131	fn imgui_get_cursor_start_pos() -> i64;
132	fn imgui_get_cursor_screen_pos() -> i64;
133	fn imgui_set_cursor_screen_pos(pos: i64);
134	fn imgui_align_text_to_frame_padding();
135	fn imgui_get_text_line_height() -> f32;
136	fn imgui_get_text_line_height_with_spacing() -> f32;
137	fn imgui_next_column();
138	fn imgui_get_column_index() -> i32;
139	fn imgui_get_column_offset(column_index: i32) -> f32;
140	fn imgui_set_column_offset(column_index: i32, offset_x: f32);
141	fn imgui_get_column_width(column_index: i32) -> f32;
142	fn imgui_get_columns_count() -> i32;
143	fn imgui__end_table();
144	fn imgui_table_next_column() -> i32;
145	fn imgui_table_set_column_index(column_n: i32) -> i32;
146	fn imgui_table_setup_scroll_freeze(cols: i32, rows: i32);
147	fn imgui_table_headers_row();
148	fn imgui_bullet_item();
149	fn imgui_text_link(label: i64) -> i32;
150	fn imgui_text_link_open_url(label: i64, url: i64);
151	fn imgui_set_window_focus(name: i64);
152	fn imgui_separator_text(text: i64);
153	fn imgui_table_header(label: i64);
154	fn imgui__push_id(str_id: i64);
155	fn imgui__pop_id();
156	fn imgui_get_id(str_id: i64) -> i32;
157	fn imgui_button(label: i64, size: i64) -> i32;
158	fn imgui_small_button(label: i64) -> i32;
159	fn imgui_invisible_button(str_id: i64, size: i64) -> i32;
160	fn imgui__checkbox_ret(label: i64, stack: i64) -> i32;
161	fn imgui__radio_button_ret(label: i64, stack: i64, v_button: i32) -> i32;
162	fn imgui_plot_lines(label: i64, values: i64);
163	fn imgui_plot_lines_opts(label: i64, values: i64, values_offset: i32, overlay_text: i64, scale_min: f32, scale_max: f32, graph_size: i64);
164	fn imgui_plot_histogram(label: i64, values: i64);
165	fn imgui_plot_histogram_opts(label: i64, values: i64, values_offset: i32, overlay_text: i64, scale_min: f32, scale_max: f32, graph_size: i64);
166	fn imgui_progress_bar(fraction: f32);
167	fn imgui_progress_bar_opts(fraction: f32, size_arg: i64, overlay: i64);
168	fn imgui__list_box_ret_opts(label: i64, stack: i64, items: i64, height_in_items: i32) -> i32;
169	fn imgui__slider_angle_ret(label: i64, stack: i64, v_degrees_min: f32, v_degrees_max: f32) -> i32;
170	fn imgui__tree_push(str_id: i64);
171	fn imgui__tree_pop();
172	fn imgui_value(prefix: i64, b: i32);
173	fn imgui_menu_item(label: i64, shortcut: i64, selected: i32, enabled: i32) -> i32;
174	fn imgui_open_popup(str_id: i64);
175	fn imgui__begin_popup(str_id: i64) -> i32;
176	fn imgui__end_popup();
177	fn imgui_get_tree_node_to_label_spacing() -> f32;
178	fn imgui__begin_list_box(label: i64, size: i64) -> i32;
179	fn imgui__end_list_box();
180	fn imgui__begin_disabled();
181	fn imgui__end_disabled();
182	fn imgui__begin_tooltip() -> i32;
183	fn imgui__end_tooltip();
184	fn imgui__begin_main_menu_bar() -> i32;
185	fn imgui__end_main_menu_bar();
186	fn imgui__begin_menu_bar() -> i32;
187	fn imgui__end_menu_bar();
188	fn imgui__begin_menu(label: i64, enabled: i32) -> i32;
189	fn imgui__end_menu();
190	fn imgui_close_current_popup();
191	fn imgui__push_clip_rect(clip_rect_min: i64, clip_rect_max: i64, intersect_with_current_clip_rect: i32);
192	fn imgui__pop_clip_rect();
193	fn imgui_is_item_hovered() -> i32;
194	fn imgui_is_item_active() -> i32;
195	fn imgui_is_item_clicked(mouse_button: i32) -> i32;
196	fn imgui_is_item_visible() -> i32;
197	fn imgui_is_any_item_hovered() -> i32;
198	fn imgui_is_any_item_active() -> i32;
199	fn imgui_get_item_rect_min() -> i64;
200	fn imgui_get_item_rect_max() -> i64;
201	fn imgui_get_item_rect_size() -> i64;
202	fn imgui_set_next_item_allow_overlap();
203	fn imgui_is_window_hovered() -> i32;
204	fn imgui_is_window_focused() -> i32;
205	fn imgui_is_rect_visible(size: i64) -> i32;
206	fn imgui_is_mouse_down(button: i32) -> i32;
207	fn imgui_is_mouse_clicked(button: i32, repeat: i32) -> i32;
208	fn imgui_is_mouse_double_clicked(button: i32) -> i32;
209	fn imgui_is_mouse_released(button: i32) -> i32;
210	fn imgui_is_mouse_hovering_rect(r_min: i64, r_max: i64, clip: i32) -> i32;
211	fn imgui_is_mouse_dragging(button: i32, lock_threshold: f32) -> i32;
212	fn imgui_get_mouse_pos() -> i64;
213	fn imgui_get_mouse_pos_on_opening_current_popup() -> i64;
214	fn imgui_get_mouse_drag_delta(button: i32, lock_threshold: f32) -> i64;
215	fn imgui_reset_mouse_drag_delta(button: i32);
216}
217use crate::dora::IObject;
218pub struct ImGui { }
219impl ImGui {
220	pub fn load_font_ttf_async(ttf_font_file: &str, font_size: f32, glyph_ranges: &str, mut handler: Box<dyn FnMut(bool)>) {
221		let mut stack0 = crate::dora::CallStack::new();
222		let stack_raw0 = stack0.raw();
223		let func_id0 = crate::dora::push_function(Box::new(move || {
224			handler(stack0.pop_bool().unwrap())
225		}));
226		unsafe { imgui_load_font_ttf_async(crate::dora::from_string(ttf_font_file), font_size, crate::dora::from_string(glyph_ranges), func_id0, stack_raw0); }
227	}
228	pub fn is_font_loaded() -> bool {
229		unsafe { return imgui_is_font_loaded() != 0; }
230	}
231	pub fn show_stats() {
232		unsafe { imgui_show_stats(); }
233	}
234	pub fn show_console() {
235		unsafe { imgui_show_console(); }
236	}
237	pub(crate) fn _begin_opts(name: &str, windows_flags: i32) -> bool {
238		unsafe { return imgui__begin_opts(crate::dora::from_string(name), windows_flags) != 0; }
239	}
240	pub(crate) fn _end() {
241		unsafe { imgui__end(); }
242	}
243	pub(crate) fn _begin_child_opts(str_id: &str, size: &crate::dora::Vec2, child_flags: i32, window_flags: i32) -> bool {
244		unsafe { return imgui__begin_child_opts(crate::dora::from_string(str_id), size.into_i64(), child_flags, window_flags) != 0; }
245	}
246	pub(crate) fn _begin_child_with_id_opts(id: i32, size: &crate::dora::Vec2, child_flags: i32, window_flags: i32) -> bool {
247		unsafe { return imgui__begin_child_with_id_opts(id, size.into_i64(), child_flags, window_flags) != 0; }
248	}
249	pub(crate) fn _end_child() {
250		unsafe { imgui__end_child(); }
251	}
252	pub(crate) fn _set_next_window_pos_center_opts(set_cond: i32) {
253		unsafe { imgui__set_next_window_pos_center_opts(set_cond); }
254	}
255	pub(crate) fn _set_next_window_size_opts(size: &crate::dora::Vec2, set_cond: i32) {
256		unsafe { imgui__set_next_window_size_opts(size.into_i64(), set_cond); }
257	}
258	pub(crate) fn _set_next_window_collapsed_opts(collapsed: bool, set_cond: i32) {
259		unsafe { imgui__set_next_window_collapsed_opts(if collapsed { 1 } else { 0 }, set_cond); }
260	}
261	pub(crate) fn _set_window_pos_opts(name: &str, pos: &crate::dora::Vec2, set_cond: i32) {
262		unsafe { imgui__set_window_pos_opts(crate::dora::from_string(name), pos.into_i64(), set_cond); }
263	}
264	pub(crate) fn _set_window_size_opts(name: &str, size: &crate::dora::Vec2, set_cond: i32) {
265		unsafe { imgui__set_window_size_opts(crate::dora::from_string(name), size.into_i64(), set_cond); }
266	}
267	pub(crate) fn _set_window_collapsed_opts(name: &str, collapsed: bool, set_cond: i32) {
268		unsafe { imgui__set_window_collapsed_opts(crate::dora::from_string(name), if collapsed { 1 } else { 0 }, set_cond); }
269	}
270	pub(crate) fn _set_color_edit_options(color_edit_flags: i32) {
271		unsafe { imgui__set_color_edit_options(color_edit_flags); }
272	}
273	pub(crate) fn _input_text_opts(label: &str, buffer: &crate::dora::Buffer, input_text_flags: i32) -> bool {
274		unsafe { return imgui__input_text_opts(crate::dora::from_string(label), buffer.raw(), input_text_flags) != 0; }
275	}
276	pub(crate) fn _input_text_multiline_opts(label: &str, buffer: &crate::dora::Buffer, size: &crate::dora::Vec2, input_text_flags: i32) -> bool {
277		unsafe { return imgui__input_text_multiline_opts(crate::dora::from_string(label), buffer.raw(), size.into_i64(), input_text_flags) != 0; }
278	}
279	pub(crate) fn _tree_node_ex_opts(label: &str, tree_node_flags: i32) -> bool {
280		unsafe { return imgui__tree_node_ex_opts(crate::dora::from_string(label), tree_node_flags) != 0; }
281	}
282	pub(crate) fn _tree_node_ex_with_id_opts(str_id: &str, text: &str, tree_node_flags: i32) -> bool {
283		unsafe { return imgui__tree_node_ex_with_id_opts(crate::dora::from_string(str_id), crate::dora::from_string(text), tree_node_flags) != 0; }
284	}
285	pub(crate) fn _set_next_item_open_opts(is_open: bool, set_cond: i32) {
286		unsafe { imgui__set_next_item_open_opts(if is_open { 1 } else { 0 }, set_cond); }
287	}
288	pub(crate) fn _collapsing_header_opts(label: &str, tree_node_flags: i32) -> bool {
289		unsafe { return imgui__collapsing_header_opts(crate::dora::from_string(label), tree_node_flags) != 0; }
290	}
291	pub(crate) fn _selectable_opts(label: &str, selectable_flags: i32) -> bool {
292		unsafe { return imgui__selectable_opts(crate::dora::from_string(label), selectable_flags) != 0; }
293	}
294	pub(crate) fn _begin_popup_modal_opts(name: &str, windows_flags: i32) -> bool {
295		unsafe { return imgui__begin_popup_modal_opts(crate::dora::from_string(name), windows_flags) != 0; }
296	}
297	pub(crate) fn _begin_popup_modal_ret_opts(name: &str, stack: &crate::dora::CallStack, windows_flags: i32) -> bool {
298		unsafe { return imgui__begin_popup_modal_ret_opts(crate::dora::from_string(name), stack.raw(), windows_flags) != 0; }
299	}
300	pub(crate) fn _begin_popup_context_item_opts(name: &str, popup_flags: i32) -> bool {
301		unsafe { return imgui__begin_popup_context_item_opts(crate::dora::from_string(name), popup_flags) != 0; }
302	}
303	pub(crate) fn _begin_popup_context_window_opts(name: &str, popup_flags: i32) -> bool {
304		unsafe { return imgui__begin_popup_context_window_opts(crate::dora::from_string(name), popup_flags) != 0; }
305	}
306	pub(crate) fn _begin_popup_context_void_opts(name: &str, popup_flags: i32) -> bool {
307		unsafe { return imgui__begin_popup_context_void_opts(crate::dora::from_string(name), popup_flags) != 0; }
308	}
309	pub(crate) fn _push_style_color(name: i32, color: &crate::dora::Color) {
310		unsafe { imgui__push_style_color(name, color.to_argb() as i32); }
311	}
312	pub(crate) fn _push_style_float(name: i32, val: f32) {
313		unsafe { imgui__push_style_float(name, val); }
314	}
315	pub(crate) fn _push_style_vec2(name: i32, val: &crate::dora::Vec2) {
316		unsafe { imgui__push_style_vec2(name, val.into_i64()); }
317	}
318	pub fn text(text: &str) {
319		unsafe { imgui_text(crate::dora::from_string(text)); }
320	}
321	pub fn text_colored(color: &crate::dora::Color, text: &str) {
322		unsafe { imgui_text_colored(color.to_argb() as i32, crate::dora::from_string(text)); }
323	}
324	pub fn text_disabled(text: &str) {
325		unsafe { imgui_text_disabled(crate::dora::from_string(text)); }
326	}
327	pub fn text_wrapped(text: &str) {
328		unsafe { imgui_text_wrapped(crate::dora::from_string(text)); }
329	}
330	pub fn label_text(label: &str, text: &str) {
331		unsafe { imgui_label_text(crate::dora::from_string(label), crate::dora::from_string(text)); }
332	}
333	pub fn bullet_text(text: &str) {
334		unsafe { imgui_bullet_text(crate::dora::from_string(text)); }
335	}
336	pub(crate) fn _tree_node(str_id: &str, text: &str) -> bool {
337		unsafe { return imgui__tree_node(crate::dora::from_string(str_id), crate::dora::from_string(text)) != 0; }
338	}
339	pub fn set_tooltip(text: &str) {
340		unsafe { imgui_set_tooltip(crate::dora::from_string(text)); }
341	}
342	pub fn image_opts(clip_str: &str, size: &crate::dora::Vec2, tint_col: &crate::dora::Color, border_col: &crate::dora::Color) {
343		unsafe { imgui_image_opts(crate::dora::from_string(clip_str), size.into_i64(), tint_col.to_argb() as i32, border_col.to_argb() as i32); }
344	}
345	pub fn image_button_opts(str_id: &str, clip_str: &str, size: &crate::dora::Vec2, bg_col: &crate::dora::Color, tint_col: &crate::dora::Color) -> bool {
346		unsafe { return imgui_image_button_opts(crate::dora::from_string(str_id), crate::dora::from_string(clip_str), size.into_i64(), bg_col.to_argb() as i32, tint_col.to_argb() as i32) != 0; }
347	}
348	pub(crate) fn _color_button_opts(desc_id: &str, col: &crate::dora::Color, color_edit_flags: i32, size: &crate::dora::Vec2) -> bool {
349		unsafe { return imgui__color_button_opts(crate::dora::from_string(desc_id), col.to_argb() as i32, color_edit_flags, size.into_i64()) != 0; }
350	}
351	pub fn columns(count: i32) {
352		unsafe { imgui_columns(count); }
353	}
354	pub fn columns_opts(count: i32, border: bool, str_id: &str) {
355		unsafe { imgui_columns_opts(count, if border { 1 } else { 0 }, crate::dora::from_string(str_id)); }
356	}
357	pub(crate) fn _begin_table_opts(str_id: &str, column: i32, outer_size: &crate::dora::Vec2, inner_width: f32, table_flags: i32) -> bool {
358		unsafe { return imgui__begin_table_opts(crate::dora::from_string(str_id), column, outer_size.into_i64(), inner_width, table_flags) != 0; }
359	}
360	pub(crate) fn _table_next_row_opts(min_row_height: f32, table_row_flag: i32) {
361		unsafe { imgui__table_next_row_opts(min_row_height, table_row_flag); }
362	}
363	pub(crate) fn _table_setup_column_opts(label: &str, init_width_or_weight: f32, user_id: i32, table_column_flags: i32) {
364		unsafe { imgui__table_setup_column_opts(crate::dora::from_string(label), init_width_or_weight, user_id, table_column_flags); }
365	}
366	pub fn set_style_bool(name: &str, val: bool) {
367		unsafe { imgui_set_style_bool(crate::dora::from_string(name), if val { 1 } else { 0 }); }
368	}
369	pub fn set_style_float(name: &str, val: f32) {
370		unsafe { imgui_set_style_float(crate::dora::from_string(name), val); }
371	}
372	pub fn set_style_vec2(name: &str, val: &crate::dora::Vec2) {
373		unsafe { imgui_set_style_vec2(crate::dora::from_string(name), val.into_i64()); }
374	}
375	pub fn set_style_color(name: &str, color: &crate::dora::Color) {
376		unsafe { imgui_set_style_color(crate::dora::from_string(name), color.to_argb() as i32); }
377	}
378	pub(crate) fn _begin_ret_opts(name: &str, stack: &crate::dora::CallStack, windows_flags: i32) -> bool {
379		unsafe { return imgui__begin_ret_opts(crate::dora::from_string(name), stack.raw(), windows_flags) != 0; }
380	}
381	pub(crate) fn _collapsing_header_ret_opts(label: &str, stack: &crate::dora::CallStack, tree_node_flags: i32) -> bool {
382		unsafe { return imgui__collapsing_header_ret_opts(crate::dora::from_string(label), stack.raw(), tree_node_flags) != 0; }
383	}
384	pub(crate) fn _selectable_ret_opts(label: &str, stack: &crate::dora::CallStack, size: &crate::dora::Vec2, selectable_flags: i32) -> bool {
385		unsafe { return imgui__selectable_ret_opts(crate::dora::from_string(label), stack.raw(), size.into_i64(), selectable_flags) != 0; }
386	}
387	pub(crate) fn _combo_ret_opts(label: &str, stack: &crate::dora::CallStack, items: &Vec<&str>, height_in_items: i32) -> bool {
388		unsafe { return imgui__combo_ret_opts(crate::dora::from_string(label), stack.raw(), crate::dora::Vector::from_str(items), height_in_items) != 0; }
389	}
390	pub(crate) fn _drag_float_ret_opts(label: &str, stack: &crate::dora::CallStack, v_speed: f32, v_min: f32, v_max: f32, display_format: &str, slider_flags: i32) -> bool {
391		unsafe { return imgui__drag_float_ret_opts(crate::dora::from_string(label), stack.raw(), v_speed, v_min, v_max, crate::dora::from_string(display_format), slider_flags) != 0; }
392	}
393	pub(crate) fn _drag_float2_ret_opts(label: &str, stack: &crate::dora::CallStack, v_speed: f32, v_min: f32, v_max: f32, display_format: &str, slider_flags: i32) -> bool {
394		unsafe { return imgui__drag_float2_ret_opts(crate::dora::from_string(label), stack.raw(), v_speed, v_min, v_max, crate::dora::from_string(display_format), slider_flags) != 0; }
395	}
396	pub(crate) fn _drag_int_ret_opts(label: &str, stack: &crate::dora::CallStack, v_speed: f32, v_min: i32, v_max: i32, display_format: &str, slider_flags: i32) -> bool {
397		unsafe { return imgui__drag_int_ret_opts(crate::dora::from_string(label), stack.raw(), v_speed, v_min, v_max, crate::dora::from_string(display_format), slider_flags) != 0; }
398	}
399	pub(crate) fn _drag_int2_ret_opts(label: &str, stack: &crate::dora::CallStack, v_speed: f32, v_min: i32, v_max: i32, display_format: &str, slider_flags: i32) -> bool {
400		unsafe { return imgui__drag_int2_ret_opts(crate::dora::from_string(label), stack.raw(), v_speed, v_min, v_max, crate::dora::from_string(display_format), slider_flags) != 0; }
401	}
402	pub(crate) fn _input_float_ret_opts(label: &str, stack: &crate::dora::CallStack, step: f32, step_fast: f32, display_format: &str, input_text_flags: i32) -> bool {
403		unsafe { return imgui__input_float_ret_opts(crate::dora::from_string(label), stack.raw(), step, step_fast, crate::dora::from_string(display_format), input_text_flags) != 0; }
404	}
405	pub(crate) fn _input_float2_ret_opts(label: &str, stack: &crate::dora::CallStack, display_format: &str, input_text_flags: i32) -> bool {
406		unsafe { return imgui__input_float2_ret_opts(crate::dora::from_string(label), stack.raw(), crate::dora::from_string(display_format), input_text_flags) != 0; }
407	}
408	pub(crate) fn _input_int_ret_opts(label: &str, stack: &crate::dora::CallStack, step: i32, step_fast: i32, input_text_flags: i32) -> bool {
409		unsafe { return imgui__input_int_ret_opts(crate::dora::from_string(label), stack.raw(), step, step_fast, input_text_flags) != 0; }
410	}
411	pub(crate) fn _input_int2_ret_opts(label: &str, stack: &crate::dora::CallStack, input_text_flags: i32) -> bool {
412		unsafe { return imgui__input_int2_ret_opts(crate::dora::from_string(label), stack.raw(), input_text_flags) != 0; }
413	}
414	pub(crate) fn _slider_float_ret_opts(label: &str, stack: &crate::dora::CallStack, v_min: f32, v_max: f32, display_format: &str, slider_flags: i32) -> bool {
415		unsafe { return imgui__slider_float_ret_opts(crate::dora::from_string(label), stack.raw(), v_min, v_max, crate::dora::from_string(display_format), slider_flags) != 0; }
416	}
417	pub(crate) fn _slider_float2_ret_opts(label: &str, stack: &crate::dora::CallStack, v_min: f32, v_max: f32, display_format: &str, slider_flags: i32) -> bool {
418		unsafe { return imgui__slider_float2_ret_opts(crate::dora::from_string(label), stack.raw(), v_min, v_max, crate::dora::from_string(display_format), slider_flags) != 0; }
419	}
420	pub(crate) fn _slider_int_ret_opts(label: &str, stack: &crate::dora::CallStack, v_min: i32, v_max: i32, format: &str, slider_flags: i32) -> bool {
421		unsafe { return imgui__slider_int_ret_opts(crate::dora::from_string(label), stack.raw(), v_min, v_max, crate::dora::from_string(format), slider_flags) != 0; }
422	}
423	pub(crate) fn _slider_int2_ret_opts(label: &str, stack: &crate::dora::CallStack, v_min: i32, v_max: i32, display_format: &str, slider_flags: i32) -> bool {
424		unsafe { return imgui__slider_int2_ret_opts(crate::dora::from_string(label), stack.raw(), v_min, v_max, crate::dora::from_string(display_format), slider_flags) != 0; }
425	}
426	pub(crate) fn _drag_float_range2_ret_opts(label: &str, stack: &crate::dora::CallStack, v_speed: f32, v_min: f32, v_max: f32, format: &str, format_max: &str, slider_flags: i32) -> bool {
427		unsafe { return imgui__drag_float_range2_ret_opts(crate::dora::from_string(label), stack.raw(), v_speed, v_min, v_max, crate::dora::from_string(format), crate::dora::from_string(format_max), slider_flags) != 0; }
428	}
429	pub(crate) fn _drag_int_range2_ret_opts(label: &str, stack: &crate::dora::CallStack, v_speed: f32, v_min: i32, v_max: i32, format: &str, format_max: &str, slider_flags: i32) -> bool {
430		unsafe { return imgui__drag_int_range2_ret_opts(crate::dora::from_string(label), stack.raw(), v_speed, v_min, v_max, crate::dora::from_string(format), crate::dora::from_string(format_max), slider_flags) != 0; }
431	}
432	pub(crate) fn _v_slider_float_ret_opts(label: &str, size: &crate::dora::Vec2, stack: &crate::dora::CallStack, v_min: f32, v_max: f32, format: &str, slider_flags: i32) -> bool {
433		unsafe { return imgui__v_slider_float_ret_opts(crate::dora::from_string(label), size.into_i64(), stack.raw(), v_min, v_max, crate::dora::from_string(format), slider_flags) != 0; }
434	}
435	pub(crate) fn _v_slider_int_ret_opts(label: &str, size: &crate::dora::Vec2, stack: &crate::dora::CallStack, v_min: i32, v_max: i32, format: &str, slider_flags: i32) -> bool {
436		unsafe { return imgui__v_slider_int_ret_opts(crate::dora::from_string(label), size.into_i64(), stack.raw(), v_min, v_max, crate::dora::from_string(format), slider_flags) != 0; }
437	}
438	pub(crate) fn _color_edit3_ret_opts(label: &str, stack: &crate::dora::CallStack, color_edit_flags: i32) -> bool {
439		unsafe { return imgui__color_edit3_ret_opts(crate::dora::from_string(label), stack.raw(), color_edit_flags) != 0; }
440	}
441	pub(crate) fn _color_edit4_ret_opts(label: &str, stack: &crate::dora::CallStack, color_edit_flags: i32) -> bool {
442		unsafe { return imgui__color_edit4_ret_opts(crate::dora::from_string(label), stack.raw(), color_edit_flags) != 0; }
443	}
444	pub fn scroll_when_dragging_on_void() {
445		unsafe { imgui_scroll_when_dragging_on_void(); }
446	}
447	pub(crate) fn _set_next_window_pos_opts(pos: &crate::dora::Vec2, set_cond: i32, pivot: &crate::dora::Vec2) {
448		unsafe { imgui__set_next_window_pos_opts(pos.into_i64(), set_cond, pivot.into_i64()); }
449	}
450	pub fn set_next_window_bg_alpha(alpha: f32) {
451		unsafe { imgui_set_next_window_bg_alpha(alpha); }
452	}
453	pub fn show_demo_window() {
454		unsafe { imgui_show_demo_window(); }
455	}
456	pub fn get_content_region_avail() -> crate::dora::Vec2 {
457		unsafe { return crate::dora::Vec2::from(imgui_get_content_region_avail()); }
458	}
459	pub fn get_window_pos() -> crate::dora::Vec2 {
460		unsafe { return crate::dora::Vec2::from(imgui_get_window_pos()); }
461	}
462	pub fn get_window_size() -> crate::dora::Vec2 {
463		unsafe { return crate::dora::Vec2::from(imgui_get_window_size()); }
464	}
465	pub fn get_window_width() -> f32 {
466		unsafe { return imgui_get_window_width(); }
467	}
468	pub fn get_window_height() -> f32 {
469		unsafe { return imgui_get_window_height(); }
470	}
471	pub fn is_window_collapsed() -> bool {
472		unsafe { return imgui_is_window_collapsed() != 0; }
473	}
474	pub fn set_window_font_scale(scale: f32) {
475		unsafe { imgui_set_window_font_scale(scale); }
476	}
477	pub fn set_next_window_size_constraints(size_min: &crate::dora::Vec2, size_max: &crate::dora::Vec2) {
478		unsafe { imgui_set_next_window_size_constraints(size_min.into_i64(), size_max.into_i64()); }
479	}
480	pub fn set_next_window_content_size(size: &crate::dora::Vec2) {
481		unsafe { imgui_set_next_window_content_size(size.into_i64()); }
482	}
483	pub fn set_next_window_focus() {
484		unsafe { imgui_set_next_window_focus(); }
485	}
486	pub fn get_scroll_x() -> f32 {
487		unsafe { return imgui_get_scroll_x(); }
488	}
489	pub fn get_scroll_y() -> f32 {
490		unsafe { return imgui_get_scroll_y(); }
491	}
492	pub fn get_scroll_max_x() -> f32 {
493		unsafe { return imgui_get_scroll_max_x(); }
494	}
495	pub fn get_scroll_max_y() -> f32 {
496		unsafe { return imgui_get_scroll_max_y(); }
497	}
498	pub fn set_scroll_x(scroll_x: f32) {
499		unsafe { imgui_set_scroll_x(scroll_x); }
500	}
501	pub fn set_scroll_y(scroll_y: f32) {
502		unsafe { imgui_set_scroll_y(scroll_y); }
503	}
504	pub fn set_scroll_here_y(center_y_ratio: f32) {
505		unsafe { imgui_set_scroll_here_y(center_y_ratio); }
506	}
507	pub fn set_scroll_from_pos_y(pos_y: f32, center_y_ratio: f32) {
508		unsafe { imgui_set_scroll_from_pos_y(pos_y, center_y_ratio); }
509	}
510	pub fn set_keyboard_focus_here(offset: i32) {
511		unsafe { imgui_set_keyboard_focus_here(offset); }
512	}
513	pub(crate) fn _pop_style_color(count: i32) {
514		unsafe { imgui__pop_style_color(count); }
515	}
516	pub(crate) fn _pop_style_var(count: i32) {
517		unsafe { imgui__pop_style_var(count); }
518	}
519	pub fn set_next_item_width(item_width: f32) {
520		unsafe { imgui_set_next_item_width(item_width); }
521	}
522	pub(crate) fn _push_item_width(item_width: f32) {
523		unsafe { imgui__push_item_width(item_width); }
524	}
525	pub(crate) fn _pop_item_width() {
526		unsafe { imgui__pop_item_width(); }
527	}
528	pub fn calc_item_width() -> f32 {
529		unsafe { return imgui_calc_item_width(); }
530	}
531	pub(crate) fn _push_text_wrap_pos(wrap_pos_x: f32) {
532		unsafe { imgui__push_text_wrap_pos(wrap_pos_x); }
533	}
534	pub(crate) fn _pop_text_wrap_pos() {
535		unsafe { imgui__pop_text_wrap_pos(); }
536	}
537	pub(crate) fn _push_item_flag(flag: i32, enabled: bool) {
538		unsafe { imgui__push_item_flag(flag, if enabled { 1 } else { 0 }); }
539	}
540	pub(crate) fn _pop_item_flag() {
541		unsafe { imgui__pop_item_flag(); }
542	}
543	pub fn separator() {
544		unsafe { imgui_separator(); }
545	}
546	pub fn same_line(pos_x: f32, spacing_w: f32) {
547		unsafe { imgui_same_line(pos_x, spacing_w); }
548	}
549	pub fn new_line() {
550		unsafe { imgui_new_line(); }
551	}
552	pub fn spacing() {
553		unsafe { imgui_spacing(); }
554	}
555	pub fn dummy(size: &crate::dora::Vec2) {
556		unsafe { imgui_dummy(size.into_i64()); }
557	}
558	pub fn indent(indent_w: f32) {
559		unsafe { imgui_indent(indent_w); }
560	}
561	pub fn unindent(indent_w: f32) {
562		unsafe { imgui_unindent(indent_w); }
563	}
564	pub(crate) fn _begin_group() {
565		unsafe { imgui__begin_group(); }
566	}
567	pub(crate) fn _end_group() {
568		unsafe { imgui__end_group(); }
569	}
570	pub fn get_cursor_pos() -> crate::dora::Vec2 {
571		unsafe { return crate::dora::Vec2::from(imgui_get_cursor_pos()); }
572	}
573	pub fn get_cursor_pos_x() -> f32 {
574		unsafe { return imgui_get_cursor_pos_x(); }
575	}
576	pub fn get_cursor_pos_y() -> f32 {
577		unsafe { return imgui_get_cursor_pos_y(); }
578	}
579	pub fn set_cursor_pos(local_pos: &crate::dora::Vec2) {
580		unsafe { imgui_set_cursor_pos(local_pos.into_i64()); }
581	}
582	pub fn set_cursor_pos_x(x: f32) {
583		unsafe { imgui_set_cursor_pos_x(x); }
584	}
585	pub fn set_cursor_pos_y(y: f32) {
586		unsafe { imgui_set_cursor_pos_y(y); }
587	}
588	pub fn get_cursor_start_pos() -> crate::dora::Vec2 {
589		unsafe { return crate::dora::Vec2::from(imgui_get_cursor_start_pos()); }
590	}
591	pub fn get_cursor_screen_pos() -> crate::dora::Vec2 {
592		unsafe { return crate::dora::Vec2::from(imgui_get_cursor_screen_pos()); }
593	}
594	pub fn set_cursor_screen_pos(pos: &crate::dora::Vec2) {
595		unsafe { imgui_set_cursor_screen_pos(pos.into_i64()); }
596	}
597	pub fn align_text_to_frame_padding() {
598		unsafe { imgui_align_text_to_frame_padding(); }
599	}
600	pub fn get_text_line_height() -> f32 {
601		unsafe { return imgui_get_text_line_height(); }
602	}
603	pub fn get_text_line_height_with_spacing() -> f32 {
604		unsafe { return imgui_get_text_line_height_with_spacing(); }
605	}
606	pub fn next_column() {
607		unsafe { imgui_next_column(); }
608	}
609	pub fn get_column_index() -> i32 {
610		unsafe { return imgui_get_column_index(); }
611	}
612	pub fn get_column_offset(column_index: i32) -> f32 {
613		unsafe { return imgui_get_column_offset(column_index); }
614	}
615	pub fn set_column_offset(column_index: i32, offset_x: f32) {
616		unsafe { imgui_set_column_offset(column_index, offset_x); }
617	}
618	pub fn get_column_width(column_index: i32) -> f32 {
619		unsafe { return imgui_get_column_width(column_index); }
620	}
621	pub fn get_columns_count() -> i32 {
622		unsafe { return imgui_get_columns_count(); }
623	}
624	pub(crate) fn _end_table() {
625		unsafe { imgui__end_table(); }
626	}
627	pub fn table_next_column() -> bool {
628		unsafe { return imgui_table_next_column() != 0; }
629	}
630	pub fn table_set_column_index(column_n: i32) -> bool {
631		unsafe { return imgui_table_set_column_index(column_n) != 0; }
632	}
633	pub fn table_setup_scroll_freeze(cols: i32, rows: i32) {
634		unsafe { imgui_table_setup_scroll_freeze(cols, rows); }
635	}
636	pub fn table_headers_row() {
637		unsafe { imgui_table_headers_row(); }
638	}
639	pub fn bullet_item() {
640		unsafe { imgui_bullet_item(); }
641	}
642	pub fn text_link(label: &str) -> bool {
643		unsafe { return imgui_text_link(crate::dora::from_string(label)) != 0; }
644	}
645	pub fn text_link_open_url(label: &str, url: &str) {
646		unsafe { imgui_text_link_open_url(crate::dora::from_string(label), crate::dora::from_string(url)); }
647	}
648	pub fn set_window_focus(name: &str) {
649		unsafe { imgui_set_window_focus(crate::dora::from_string(name)); }
650	}
651	pub fn separator_text(text: &str) {
652		unsafe { imgui_separator_text(crate::dora::from_string(text)); }
653	}
654	pub fn table_header(label: &str) {
655		unsafe { imgui_table_header(crate::dora::from_string(label)); }
656	}
657	pub(crate) fn _push_id(str_id: &str) {
658		unsafe { imgui__push_id(crate::dora::from_string(str_id)); }
659	}
660	pub(crate) fn _pop_id() {
661		unsafe { imgui__pop_id(); }
662	}
663	pub fn get_id(str_id: &str) -> i32 {
664		unsafe { return imgui_get_id(crate::dora::from_string(str_id)); }
665	}
666	pub fn button(label: &str, size: &crate::dora::Vec2) -> bool {
667		unsafe { return imgui_button(crate::dora::from_string(label), size.into_i64()) != 0; }
668	}
669	pub fn small_button(label: &str) -> bool {
670		unsafe { return imgui_small_button(crate::dora::from_string(label)) != 0; }
671	}
672	pub fn invisible_button(str_id: &str, size: &crate::dora::Vec2) -> bool {
673		unsafe { return imgui_invisible_button(crate::dora::from_string(str_id), size.into_i64()) != 0; }
674	}
675	pub(crate) fn _checkbox_ret(label: &str, stack: &crate::dora::CallStack) -> bool {
676		unsafe { return imgui__checkbox_ret(crate::dora::from_string(label), stack.raw()) != 0; }
677	}
678	pub(crate) fn _radio_button_ret(label: &str, stack: &crate::dora::CallStack, v_button: i32) -> bool {
679		unsafe { return imgui__radio_button_ret(crate::dora::from_string(label), stack.raw(), v_button) != 0; }
680	}
681	pub fn plot_lines(label: &str, values: &Vec<f32>) {
682		unsafe { imgui_plot_lines(crate::dora::from_string(label), crate::dora::Vector::from_num(values)); }
683	}
684	pub fn plot_lines_opts(label: &str, values: &Vec<f32>, values_offset: i32, overlay_text: &str, scale_min: f32, scale_max: f32, graph_size: &crate::dora::Vec2) {
685		unsafe { imgui_plot_lines_opts(crate::dora::from_string(label), crate::dora::Vector::from_num(values), values_offset, crate::dora::from_string(overlay_text), scale_min, scale_max, graph_size.into_i64()); }
686	}
687	pub fn plot_histogram(label: &str, values: &Vec<f32>) {
688		unsafe { imgui_plot_histogram(crate::dora::from_string(label), crate::dora::Vector::from_num(values)); }
689	}
690	pub fn plot_histogram_opts(label: &str, values: &Vec<f32>, values_offset: i32, overlay_text: &str, scale_min: f32, scale_max: f32, graph_size: &crate::dora::Vec2) {
691		unsafe { imgui_plot_histogram_opts(crate::dora::from_string(label), crate::dora::Vector::from_num(values), values_offset, crate::dora::from_string(overlay_text), scale_min, scale_max, graph_size.into_i64()); }
692	}
693	pub fn progress_bar(fraction: f32) {
694		unsafe { imgui_progress_bar(fraction); }
695	}
696	pub fn progress_bar_opts(fraction: f32, size_arg: &crate::dora::Vec2, overlay: &str) {
697		unsafe { imgui_progress_bar_opts(fraction, size_arg.into_i64(), crate::dora::from_string(overlay)); }
698	}
699	pub(crate) fn _list_box_ret_opts(label: &str, stack: &crate::dora::CallStack, items: &Vec<&str>, height_in_items: i32) -> bool {
700		unsafe { return imgui__list_box_ret_opts(crate::dora::from_string(label), stack.raw(), crate::dora::Vector::from_str(items), height_in_items) != 0; }
701	}
702	pub(crate) fn _slider_angle_ret(label: &str, stack: &crate::dora::CallStack, v_degrees_min: f32, v_degrees_max: f32) -> bool {
703		unsafe { return imgui__slider_angle_ret(crate::dora::from_string(label), stack.raw(), v_degrees_min, v_degrees_max) != 0; }
704	}
705	pub(crate) fn _tree_push(str_id: &str) {
706		unsafe { imgui__tree_push(crate::dora::from_string(str_id)); }
707	}
708	pub(crate) fn _tree_pop() {
709		unsafe { imgui__tree_pop(); }
710	}
711	pub fn value(prefix: &str, b: bool) {
712		unsafe { imgui_value(crate::dora::from_string(prefix), if b { 1 } else { 0 }); }
713	}
714	pub fn menu_item(label: &str, shortcut: &str, selected: bool, enabled: bool) -> bool {
715		unsafe { return imgui_menu_item(crate::dora::from_string(label), crate::dora::from_string(shortcut), if selected { 1 } else { 0 }, if enabled { 1 } else { 0 }) != 0; }
716	}
717	pub fn open_popup(str_id: &str) {
718		unsafe { imgui_open_popup(crate::dora::from_string(str_id)); }
719	}
720	pub(crate) fn _begin_popup(str_id: &str) -> bool {
721		unsafe { return imgui__begin_popup(crate::dora::from_string(str_id)) != 0; }
722	}
723	pub(crate) fn _end_popup() {
724		unsafe { imgui__end_popup(); }
725	}
726	pub fn get_tree_node_to_label_spacing() -> f32 {
727		unsafe { return imgui_get_tree_node_to_label_spacing(); }
728	}
729	pub(crate) fn _begin_list_box(label: &str, size: &crate::dora::Vec2) -> bool {
730		unsafe { return imgui__begin_list_box(crate::dora::from_string(label), size.into_i64()) != 0; }
731	}
732	pub(crate) fn _end_list_box() {
733		unsafe { imgui__end_list_box(); }
734	}
735	pub(crate) fn _begin_disabled() {
736		unsafe { imgui__begin_disabled(); }
737	}
738	pub(crate) fn _end_disabled() {
739		unsafe { imgui__end_disabled(); }
740	}
741	pub(crate) fn _begin_tooltip() -> bool {
742		unsafe { return imgui__begin_tooltip() != 0; }
743	}
744	pub(crate) fn _end_tooltip() {
745		unsafe { imgui__end_tooltip(); }
746	}
747	pub(crate) fn _begin_main_menu_bar() -> bool {
748		unsafe { return imgui__begin_main_menu_bar() != 0; }
749	}
750	pub(crate) fn _end_main_menu_bar() {
751		unsafe { imgui__end_main_menu_bar(); }
752	}
753	pub(crate) fn _begin_menu_bar() -> bool {
754		unsafe { return imgui__begin_menu_bar() != 0; }
755	}
756	pub(crate) fn _end_menu_bar() {
757		unsafe { imgui__end_menu_bar(); }
758	}
759	pub(crate) fn _begin_menu(label: &str, enabled: bool) -> bool {
760		unsafe { return imgui__begin_menu(crate::dora::from_string(label), if enabled { 1 } else { 0 }) != 0; }
761	}
762	pub(crate) fn _end_menu() {
763		unsafe { imgui__end_menu(); }
764	}
765	pub fn close_current_popup() {
766		unsafe { imgui_close_current_popup(); }
767	}
768	pub(crate) fn _push_clip_rect(clip_rect_min: &crate::dora::Vec2, clip_rect_max: &crate::dora::Vec2, intersect_with_current_clip_rect: bool) {
769		unsafe { imgui__push_clip_rect(clip_rect_min.into_i64(), clip_rect_max.into_i64(), if intersect_with_current_clip_rect { 1 } else { 0 }); }
770	}
771	pub(crate) fn _pop_clip_rect() {
772		unsafe { imgui__pop_clip_rect(); }
773	}
774	pub fn is_item_hovered() -> bool {
775		unsafe { return imgui_is_item_hovered() != 0; }
776	}
777	pub fn is_item_active() -> bool {
778		unsafe { return imgui_is_item_active() != 0; }
779	}
780	pub fn is_item_clicked(mouse_button: i32) -> bool {
781		unsafe { return imgui_is_item_clicked(mouse_button) != 0; }
782	}
783	pub fn is_item_visible() -> bool {
784		unsafe { return imgui_is_item_visible() != 0; }
785	}
786	pub fn is_any_item_hovered() -> bool {
787		unsafe { return imgui_is_any_item_hovered() != 0; }
788	}
789	pub fn is_any_item_active() -> bool {
790		unsafe { return imgui_is_any_item_active() != 0; }
791	}
792	pub fn get_item_rect_min() -> crate::dora::Vec2 {
793		unsafe { return crate::dora::Vec2::from(imgui_get_item_rect_min()); }
794	}
795	pub fn get_item_rect_max() -> crate::dora::Vec2 {
796		unsafe { return crate::dora::Vec2::from(imgui_get_item_rect_max()); }
797	}
798	pub fn get_item_rect_size() -> crate::dora::Vec2 {
799		unsafe { return crate::dora::Vec2::from(imgui_get_item_rect_size()); }
800	}
801	pub fn set_next_item_allow_overlap() {
802		unsafe { imgui_set_next_item_allow_overlap(); }
803	}
804	pub fn is_window_hovered() -> bool {
805		unsafe { return imgui_is_window_hovered() != 0; }
806	}
807	pub fn is_window_focused() -> bool {
808		unsafe { return imgui_is_window_focused() != 0; }
809	}
810	pub fn is_rect_visible(size: &crate::dora::Vec2) -> bool {
811		unsafe { return imgui_is_rect_visible(size.into_i64()) != 0; }
812	}
813	pub fn is_mouse_down(button: i32) -> bool {
814		unsafe { return imgui_is_mouse_down(button) != 0; }
815	}
816	pub fn is_mouse_clicked(button: i32, repeat: bool) -> bool {
817		unsafe { return imgui_is_mouse_clicked(button, if repeat { 1 } else { 0 }) != 0; }
818	}
819	pub fn is_mouse_double_clicked(button: i32) -> bool {
820		unsafe { return imgui_is_mouse_double_clicked(button) != 0; }
821	}
822	pub fn is_mouse_released(button: i32) -> bool {
823		unsafe { return imgui_is_mouse_released(button) != 0; }
824	}
825	pub fn is_mouse_hovering_rect(r_min: &crate::dora::Vec2, r_max: &crate::dora::Vec2, clip: bool) -> bool {
826		unsafe { return imgui_is_mouse_hovering_rect(r_min.into_i64(), r_max.into_i64(), if clip { 1 } else { 0 }) != 0; }
827	}
828	pub fn is_mouse_dragging(button: i32, lock_threshold: f32) -> bool {
829		unsafe { return imgui_is_mouse_dragging(button, lock_threshold) != 0; }
830	}
831	pub fn get_mouse_pos() -> crate::dora::Vec2 {
832		unsafe { return crate::dora::Vec2::from(imgui_get_mouse_pos()); }
833	}
834	pub fn get_mouse_pos_on_opening_current_popup() -> crate::dora::Vec2 {
835		unsafe { return crate::dora::Vec2::from(imgui_get_mouse_pos_on_opening_current_popup()); }
836	}
837	pub fn get_mouse_drag_delta(button: i32, lock_threshold: f32) -> crate::dora::Vec2 {
838		unsafe { return crate::dora::Vec2::from(imgui_get_mouse_drag_delta(button, lock_threshold)); }
839	}
840	pub fn reset_mouse_drag_delta(button: i32) {
841		unsafe { imgui_reset_mouse_drag_delta(button); }
842	}
843}