1 /*
2  * Copyright (c) 2017 Derelict Developers
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are
7  * met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  *   notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  *   notice, this list of conditions and the following disclaimer in the
14  *   documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the names 'Derelict', 'DerelictImgui', nor the names of its contributors
17  *   may be used to endorse or promote products derived from this software
18  *   without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  */
32 module derelict.imgui.funcs;
33 
34 private
35 {
36     import derelict.util.system;
37     import derelict.imgui.types;
38     import core.stdc.stdarg:va_list;
39 }
40 
41 extern(C) @nogc nothrow
42 {
43     alias da_igGetIO                        = ImGuiIO* function();
44     alias da_igGetStyle                     = ImGuiStyle* function();
45     alias da_igGetDrawData                  = ImDrawData* function();
46     alias da_igNewFrame                     = void function();
47     alias da_igRender                       = void function();
48     alias da_igShutdown                     = void function();
49     alias da_igShowDemoWindow               = void function(bool* p_open = null);
50     alias da_igShowMetricsWindow            = void function(bool* p_open = null);
51     alias da_igShowStyleEditor              = void function(ImGuiStyle* ref_ = null);
52     alias da_igShowStyleSelector            = bool function(const char* label = null);
53     alias da_igShowFontSelector             = void function(const char* label = null);
54     alias da_igShowUserGuide                = void function();
55 
56     // Window
57     alias da_igBegin                        = bool function(const char* name, bool* p_opened = null, ImGuiWindowFlags flags = 0);
58     alias da_igEnd                          = void function();
59     alias da_igBeginChild                   = bool function(const char* str_id, const ImVec2 size = ImVec2(0, 0), bool border = false, ImGuiWindowFlags extra_flags = 0);
60     alias da_igBeginChildEx                 = bool function(ImGuiID id, const ImVec2 size = ImVec2(0, 0), bool border = false, ImGuiWindowFlags extra_flags = 0);
61     alias da_igEndChild                     = void function();
62     alias da_igGetContentRegionMax          = void function(ImVec2* outParam);
63     alias da_igGetContentRegionAvail        = void function(ImVec2* outParam);
64     alias da_igGetContentRegionAvailWidth   = float function();
65     alias da_igGetWindowContentRegionMin    = void function(ImVec2* outParam);
66     alias da_igGetWindowContentRegionMax    = void function(ImVec2* outParam);
67     alias da_igGetWindowContentRegionWidth  = float function();
68     alias da_igGetWindowDrawList            = ImDrawList* function();
69     alias da_igGetWindowPos                 = void function(ImVec2* outParam);
70     alias da_igGetWindowSize                = void function(ImVec2* outParam);
71     alias da_igGetWindowWidth               = float function();
72     alias da_igGetWindowHeight              = float function();
73     alias da_igIsWindowCollapsed            = bool function();
74     alias da_igSetWindowFontScale           = void function(float scale);
75 
76     alias da_igSetNextWindowPos             = void function(const ImVec2 pos, ImGuiCond cond = 0, const ImVec2 pivot = ImVec2(0,0));
77     alias da_igSetNextWindowSize            = void function(const ImVec2 size, ImGuiCond cond = 0);
78     alias da_igSetNextWindowSizeConstraints = void function(const ImVec2 size_min, const ImVec2 size_max, ImGuiSizeConstraintCallback custom_callback = null, void* custom_callback_data = null);
79     alias da_igSetNextWindowContentSize     = void function(const ImVec2 size);
80     alias da_igSetNextWindowCollapsed       = void function(bool collapsed, ImGuiCond cond = 0);
81     alias da_igSetNextWindowFocus           = void function();
82     alias da_igSetWindowPos                 = void function(const ImVec2 pos, ImGuiCond cond = 0);
83     alias da_igSetWindowSize                = void function(const ImVec2 size, ImGuiCond cond = 0);
84     alias da_igSetWindowCollapsed           = void function(bool collapsed, ImGuiCond cond = 0);
85     alias da_igSetWindowFocus               = void function();
86     alias da_igSetWindowPosByName           = void function(const char* name, const ImVec2 pos, ImGuiCond cond = 0);
87     alias da_igSetWindowSize2               = void function(const char* name, const ImVec2 size, ImGuiCond cond = 0);
88     alias da_igSetWindowCollapsed2          = void function(const char* name, bool collapsed, ImGuiCond cond = 0);
89     alias da_igSetWindowFocus2              = void function(const char* name);
90 
91     alias da_igGetScrollX                   = float function();
92     alias da_igGetScrollY                   = float function();
93     alias da_igGetScrollMaxX                = float function();
94     alias da_igGetScrollMaxY                = float function();
95     alias da_igSetScrollX                   = void function(float scroll_x);
96     alias da_igSetScrollY                   = void function(float scroll_y);
97     alias da_igSetScrollHere                = void function(float center_y_ratio = 0.5f);
98     alias da_igSetScrollFromPosY            = void function(float pos_y, float center_y_ratio = 0.5f);
99     alias da_igSetKeyboardFocusHere         = void function(int offset = 0);
100     alias da_igSetStateStorage              = void function(ImGuiStorage* tree);
101     alias da_igGetStateStorage              = ImGuiStorage* function();
102 
103     alias da_igPushFont                     = void function(ImFont* font);
104     alias da_igPopFont                      = void function();
105     alias da_igPushStyleColorU32            = void function(ImGuiCol idx, ImU32 col);
106     alias da_igPushStyleColor               = void function(ImGuiCol idx, const ImVec4 col);
107     alias da_igPopStyleColor                = void function(int count = 1);
108     alias da_igPushStyleVar                 = void function(ImGuiStyleVar idx, float val);
109     alias da_igPushStyleVarVec              = void function(ImGuiStyleVar idx, const ImVec2 val);
110     alias da_igPopStyleVar                  = void function(int count = 1);
111     alias da_igGetStyleColorVec4            = void function(ImVec4* pout, ImGuiCol idx);
112     alias da_igGetFont                      = ImFont* function();
113     alias da_igGetFontSize                  = float function();
114     alias da_igGetFontTexUvWhitePixel       = void function(ImVec2* pOut);
115     alias da_igGetColorU32                  = ImU32 function(ImGuiCol idx, float alpha_mul = 1.0f);
116     alias da_igGetColorU32Vec               = ImU32 function(const ImVec4* col);
117     alias da_igGetColorU32U32               = ImU32 function(ImU32 col);
118 
119     alias da_igPushItemWidth                = void function(float item_width);
120     alias da_igPopItemWidth                 = void function();
121     alias da_igCalcItemWidth                = float function();
122     alias da_igPushTextWrapPos              = void function(float wrap_pos_x = 0.0f);
123     alias da_igPopTextWrapPos               = void function();
124     alias da_igPushAllowKeyboardFocus       = void function(bool v);
125     alias da_igPopAllowKeyboardFocus        = void function();
126     alias da_igPushButtonRepeat             = void function(bool repeat);
127     alias da_igPopButtonRepeat              = void function();
128 
129     alias da_igSeparator                    = void function();
130     alias da_igSameLine                     = void function(float pos_x = 0.0f, float spacing_w = -1.0f);
131     alias da_igNewLine                      = void function();
132     alias da_igSpacing                      = void function();
133     alias da_igDummy                        = void function(const ImVec2* size);
134     alias da_igIndent                       = void function(float indent_w = 0.0f);
135     alias da_igUnindent                     = void function(float indent_w = 0.0f);
136     alias da_igBeginGroup                   = void function();
137     alias da_igEndGroup                     = void function();
138     alias da_igGetCursorPos                 = void function(ImVec2* pOut);
139     alias da_igGetCursorPosX                = float function();
140     alias da_igGetCursorPosY                = float function();
141     alias da_igSetCursorPos                 = void function(const ImVec2 locl_pos);
142     alias da_igSetCursorPosX                = void function(float x);
143     alias da_igSetCursorPosY                = void function(float y);
144     alias da_igGetCursorStartPos            = void function(ImVec2* pOut);
145     alias da_igGetCursorScreenPos           = void function(ImVec2* pOut);
146     alias da_igSetCursorScreenPos           = void function(const ImVec2 pos);
147     alias da_igAlignTextToFramePadding      = void function();
148     alias da_igGetTextLineHeight            = float function();
149     alias da_igGetTextLineHeightWithSpacing = float function();
150     alias da_igGetFrameHeightWithSpacing    = float function();
151 
152     alias da_igColumns                      = void function(int count = 1, const char* id = null, bool border = true);
153     alias da_igNextColumn                   = void function();
154     alias da_igGetColumnIndex               = int function();
155     alias da_igGetColumnWidth               = float function(int column_index = -1);
156     alias da_igSetColumnWidth               = void function(int column_index, float width);
157     alias da_igGetColumnOffset              = float function(int column_index = -1);
158     alias da_igSetColumnOffset              = void function(int column_index, float offset_x);
159     alias da_igGetColumnsCount              = int function();
160 
161     alias da_igPushIDStr                    = void function(const char* str_id);
162     alias da_igPushIDStrRange               = void function(const char* str_begin, const char* str_end);
163     alias da_igPushIDPtr                    = void function(const void* ptr_id);
164     alias da_igPushIDInt                    = void function(int int_id);
165     alias da_igPopID                        = void function();
166     alias da_igGetIDStr                     = ImGuiID  function(const char* str_id);
167     alias da_igGetIDStrRange                = ImGuiID  function(const char* str_begin, const char* str_end);
168     alias da_igGetIDPtr                     = ImGuiID  function(const void* ptr_id);
169 
170     alias da_igText                         = void function(const char* fmt, ...);
171     alias da_igTextV                        = void function(const char* fmt, va_list args);
172     alias da_igTextColored                  = void function(const ImVec4 col, const char* fmt, ...);
173     alias da_igTextColoredV                 = void function(const ImVec4 col, const char* fmt, va_list args);
174     alias da_igTextDisabled                 = void function(const char* fmt, ...);
175     alias da_igTextDisabledV                = void function(const char* fmt, va_list args);
176     alias da_igTextWrapped                  = void function(const char* fmt, ...);
177     alias da_igTextWrappedV                 = void function(const char* fmt, va_list args);
178     alias da_igTextUnformatted              = void function(const char* text, const char* text_end = null);
179     alias da_igLabelText                    = void function(const char* label, const char* fmt, ...);
180     alias da_igLabelTextV                   = void function(const char* label, const char* fmt, va_list args);
181     alias da_igBullet                       = void function();
182     alias da_igBulletText                   = void function(const char* fmt, ...);
183     alias da_igBulletTextV                  = void function(const char* fmt, va_list args);
184     alias da_igButton                       = bool function(const char* label, const ImVec2 size = ImVec2(0, 0));
185     alias da_igSmallButton                  = bool function(const char* label);
186     alias da_igInvisibleButton              = bool function(const char* str_id, const ImVec2 size);
187     alias da_igImage                        = void function(ImTextureID user_texture_id, const ImVec2 size, const ImVec2 uv0 = ImVec2(0, 0), const ImVec2 uv1 = ImVec2(1, 1), const ImVec4 tint_col = ImVec4(1, 1, 1, 1), const ImVec4 border_col = ImVec4(0, 0, 0, 0));
188     alias da_igImageButton                  = bool function(ImTextureID user_texture_id, const ImVec2 size, const ImVec2 uv0 = ImVec2(0, 0), const ImVec2 uv1 = ImVec2(1, 1), int frame_padding = -1, const ImVec4 bg_col = ImVec4(0, 0, 0, 0), const ImVec4 tint_col = ImVec4(1, 1, 1, 1));
189     alias da_igCheckbox                     = bool function(const char* label, bool* v);
190     alias da_igCheckboxFlags                = bool function(const char* label, uint* flags, uint flags_value);
191     alias da_igRadioButtonBool              = bool function(const char* label, bool active);
192     alias da_igRadioButton                  = bool function(const char* label, int* v, int v_button);
193     alias da_igCombo                        = bool function(const char* label, int* current_item, const char** items, int items_count, int height_in_items = -1);
194     alias da_igCombo2                       = bool function(const char* label, int* current_item, const char* items_separated_by_zeros, int height_in_items = -1);
195     alias da_igCombo3                       = bool function(const char* label, int* current_item, bool function(void* data, int idx, const(char)** out_text) items_getter, void* data, int items_count, int height_in_items = -1);
196     alias da_igPlotLines                    = void function(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = null, float scale_min = float.max, float scale_max = float.max, ImVec2 graph_size = ImVec2(0, 0), size_t stride = float.sizeof);
197     alias da_igPlotLines2                   = void function(const char* label, float function(void* data, int idx) values_getter, void* data, int values_count, int values_offset = 0, const char* overlay_text = null, float scale_min = float.max, float scale_max = float.max, ImVec2 graph_size = ImVec2(0, 0));
198     alias da_igPlotHistogram                = void function(const char* label, const float* values, int values_count, int values_offset = 0, const char* overlay_text = null, float scale_min = float.max, float scale_max = float.max, ImVec2 graph_size = ImVec2(0, 0), size_t stride = float.sizeof);
199     alias da_igPlotHistogram2               = void function(const char* label, float function(void* data, int idx) values_getter, void* data, int values_count, int values_offset = 0, const char* overlay_text = null, float scale_min = float.max, float scale_max = float.max, ImVec2 graph_size = ImVec2(0, 0));
200     alias da_igProgressBar                  = void function(float fraction, const ImVec2* size_arg /+= ImVec2(-1,0)+/, const(char)* overlay = null);
201 
202     alias da_igDragFloat                    = bool function(const char* label, float* v, float v_speed = 1.0f, float v_min = 0.0f, float v_max = 0.0f, const char* display_format = "%.3f", float power = 1.0f);     // If v_max >= v_max we have no bound
203     alias da_igDragFloat2                   = bool function(const char* label, ref float[2] v, float v_speed = 1.0f, float v_min = 0.0f, float v_max = 0.0f, const char* display_format = "%.3f", float power = 1.0f);
204     alias da_igDragFloat3                   = bool function(const char* label, ref float[3] v, float v_speed = 1.0f, float v_min = 0.0f, float v_max = 0.0f, const char* display_format = "%.3f", float power = 1.0f);
205     alias da_igDragFloat4                   = bool function(const char* label, ref float[4] v, float v_speed = 1.0f, float v_min = 0.0f, float v_max = 0.0f, const char* display_format = "%.3f", float power = 1.0f);
206     alias da_igDragFloatRange2              = bool function(const char* label, float* v_current_min, float* v_current_max, float v_speed = 1.0f, float v_min = 0.0f, float v_max = 0.0f, const char* display_format = "%.3f", const char* display_format_max = null, float power = 1.0f);
207     alias da_igDragInt                      = bool function(const char* label, int* v, float v_speed = 1.0f, int v_min = 0, int v_max = 0, const char* display_format = "%.3f");                                       // If v_max >= v_max we have no bound
208     alias da_igDragInt2                     = bool function(const char* label, ref int[2] v, float v_speed = 1.0f, int v_min = 0, int v_max = 0, const char* display_format = "%.3f");
209     alias da_igDragInt3                     = bool function(const char* label, ref int[3] v, float v_speed = 1.0f, int v_min = 0, int v_max = 0, const char* display_format = "%.3f");
210     alias da_igDragInt4                     = bool function(const char* label, ref int[4] v, float v_speed = 1.0f, int v_min = 0, int v_max = 0, const char* display_format = "%.3f");
211     alias da_igDragIntRange2                = bool function(const char* label, int* v_current_min, int* v_current_max, float v_speed = 1.0f, int v_min = 0, int v_max = 0, const char* display_format = "%.0f", const char* display_format_max = null);
212 
213     alias da_igInputText                    = bool function(const char* label, char* buf, size_t buf_size, ImGuiInputTextFlags flags = 0, ImGuiTextEditCallback callback = null, void* user_data = null);
214     alias da_igInputTextMultiline           = bool function(const char* label, char* buf, size_t buf_size, const ImVec2 size = ImVec2(0,0), ImGuiInputTextFlags flags = 0, ImGuiTextEditCallback callback = null, void* user_data = null);
215     alias da_igInputFloat                   = bool function(const char* label, float* v, float step = 0.0f, float step_fast = 0.0f, int decimal_precision = -1, ImGuiInputTextFlags extra_flags = 0);
216     alias da_igInputFloat2                  = bool function(const char* label, ref float[2] v, int decimal_precision = -1, ImGuiInputTextFlags extra_flags = 0);
217     alias da_igInputFloat3                  = bool function(const char* label, ref float[3] v, int decimal_precision = -1, ImGuiInputTextFlags extra_flags = 0);
218     alias da_igInputFloat4                  = bool function(const char* label, ref float[4] v, int decimal_precision = -1, ImGuiInputTextFlags extra_flags = 0);
219     alias da_igInputInt                     = bool function(const char* label, int* v, int step = 1, int step_fast = 100, ImGuiInputTextFlags extra_flags = 0);
220     alias da_igInputInt2                    = bool function(const char* label, ref int[2] v, ImGuiInputTextFlags extra_flags = 0);
221     alias da_igInputInt3                    = bool function(const char* label, ref int[3] v, ImGuiInputTextFlags extra_flags = 0);
222     alias da_igInputInt4                    = bool function(const char* label, ref int[4] v, ImGuiInputTextFlags extra_flags = 0);
223 
224     alias da_igSliderFloat                  = bool function(const char* label, float* v, float v_min, float v_max, const char* display_format = "%.3f", float power = 1.0f);
225     alias da_igSliderFloat2                 = bool function(const char* label, ref float[2] v, float v_min, float v_max, const char* display_format = "%.3f", float power = 1.0f);
226     alias da_igSliderFloat3                 = bool function(const char* label, ref float[3] v, float v_min, float v_max, const char* display_format = "%.3f", float power = 1.0f);
227     alias da_igSliderFloat4                 = bool function(const char* label, ref float[4] v, float v_min, float v_max, const char* display_format = "%.3f", float power = 1.0f);
228     alias da_igSliderAngle                  = bool function(const char* label, float* v_rad, float v_degrees_min = -360.0f, float v_degrees_max = +360.0f);
229     alias da_igSliderInt                    = bool function(const char* label, int* v, int v_min, int v_max, const char* display_format = "%.0f");
230     alias da_igSliderInt2                   = bool function(const char* label, ref int[2] v, int v_min, int v_max, const char* display_format = "%.0f");
231     alias da_igSliderInt3                   = bool function(const char* label, ref int[3] v, int v_min, int v_max, const char* display_format = "%.0f");
232     alias da_igSliderInt4                   = bool function(const char* label, ref int[4] v, int v_min, int v_max, const char* display_format = "%.0f");
233     alias da_igVSliderFloat                 = bool function(const char* label, const ImVec2 size, float* v, float v_min, float v_max, const char* display_format = "%.3f", float power = 1.0f);
234     alias da_igVSliderInt                   = bool function(const char* label, const ImVec2 size, int* v, int v_min, int v_max, const char* display_format = "%.0f");
235 
236     alias da_igColorEdit3                   = bool function(const char* label, ref float[3] col, ImGuiColorEditFlags flags = 0);
237     alias da_igColorEdit4                   = bool function(const char* label, ref float[4] col, ImGuiColorEditFlags flags = 0);
238     alias da_igColorPicker3                 = bool function(const char* label, ref float[3] col, ImGuiColorEditFlags flags = 0);
239     alias da_igColorPicker4                 = bool function(const char* label, ref float[4] col, ImGuiColorEditFlags flags = 0, const float* ref_col = null);
240     alias da_igColorButton                  = bool function(const char* desc_id, const ImVec4 col, ImGuiColorEditFlags flags = 0, ImVec2 size = ImVec2(0,0));  // display a colored square/button, hover for details, return true when pressed.
241     alias da_igSetColorEditOptions          = void function(ImGuiColorEditFlags flags);
242 
243     alias da_igTreeNode                     = bool function(const char* str_label_id);
244     alias da_igTreeNodeStr                  = bool function(const char* str_id, const char* fmt, ...);
245     alias da_igTreeNodePtr                  = bool function(const void* ptr_id, const char* fmt, ...);
246     alias da_igTreeNodeStrV                 = bool function(const char* str_id, const char* fmt, va_list args);
247     alias da_igTreeNodePtrV                 = bool function(const void* ptr_id, const char* fmt, va_list args);
248     alias da_igTreeNodeEx                   = bool function(const char* label, ImGuiTreeNodeFlags flags);
249     alias da_igTreeNodeExStr                = bool function(const char* str_id, ImGuiTreeNodeFlags flags, const char* fmt, ...);
250     alias da_igTreeNodeExPtr                = bool function(const void* ptr_id, ImGuiTreeNodeFlags flags, const char* fmt, ...);
251     alias da_igTreeNodeExV                  = bool function(const char* str_id, ImGuiTreeNodeFlags flags, const char* fmt, va_list args);
252     alias da_igTreeNodeExVPtr               = bool function(const void* ptr_id, ImGuiTreeNodeFlags flags, const char* fmt, va_list args);
253     alias da_igTreePushStr                  = void function(const char* str_id = null);
254     alias da_igTreePushPtr                  = void function(const void* ptr_id = null);
255     alias da_igTreePop                      = void function();
256     alias da_igTreeAdvanceToLabelPos        = void function();
257     alias da_igGetTreeNodeToLabelSpacing    = float function();
258     alias da_igSetNextTreeNodeOpen          = void function(bool opened, ImGuiCond cond = 0);
259     alias da_igCollapsingHeader             = bool function(const char* label, ImGuiTreeNodeFlags flags = 0);
260     alias da_igCollapsingHeaderEx           = bool function(const char* label, bool* p_open, ImGuiTreeNodeFlags flags = 0);
261 
262     alias da_igSelectable                   = bool function(const char* label, bool selected = false, ImGuiSelectableFlags flags = 0, const ImVec2 size = ImVec2(0, 0));
263     alias da_igSelectableEx                 = bool function(const char* label, bool* p_selected, ImGuiSelectableFlags flags = 0, const ImVec2 size = ImVec2(0, 0));
264     alias da_igListBox                      = bool function(const char* label, int* current_item, const char** items, int items_count, int height_in_items = -1);
265     alias da_igListBox2                     = bool function(const char* label, int* current_item, bool function(void* data, int idx, const char** out_text) items_getter, void* data, int items_count, int height_in_items = -1);
266     alias da_igListBoxHeader                = bool function(const char* label, const ImVec2 size = ImVec2(0, 0));
267     alias da_igListBoxHeader2               = bool function(const char* label, int items_count, int height_in_items = -1);
268     alias da_igListBoxFooter                = void function();
269 
270     alias da_igValueBool                    = void function(const char* prefix, bool b);
271     alias da_igValueInt                     = void function(const char* prefix, int v);
272     alias da_igValueUInt                    = void function(const char* prefix, uint v);
273     alias da_igValueFloat                   = void function(const char* prefix, float v, const char* float_format = null);
274 
275     alias da_igSetTooltip                   = void function(const(char)* fmt, ...);
276     alias da_igSetTooltipV                  = void function(const(char)* fmt, va_list args);
277     alias da_igBeginTooltip                 = void function();
278     alias da_igEndTooltip                   = void function();
279 
280     // Widgets: Menus
281     alias da_igBeginMainMenuBar             = bool function();
282     alias da_igEndMainMenuBar               = void function();
283     alias da_igBeginMenuBar                 = bool function();
284     alias da_igEndMenuBar                   = void function();
285     alias da_igBeginMenu                    = bool function(const(char)* label, bool enabled = true);
286     alias da_igEndMenu                      = void function();
287     alias da_igMenuItem                     = bool function(const(char)* label, const(char)* shortcut = null, bool selected = false, bool enabled = true);
288     alias da_igMenuItemPtr                  = bool function(const(char)* label, const(char)* shortcut, bool* p_selected, bool enabled = true);
289 
290     alias da_igOpenPopup                    = void function(const(char)* str_id);
291     alias da_igBeginPopup                   = bool function(const(char)* str_id);
292     alias da_igBeginPopupModal              = bool function(const(char)* name, bool* p_opened = null, ImGuiWindowFlags extra_flags = 0);
293     alias da_igBeginPopupContextItem        = bool function(const(char)* str_id, int mouse_button = 1);
294     alias da_igBeginPopupContextWindow      = bool function(const(char)* str_id = null, int mouse_button = 1, bool also_over_items = true);
295     alias da_igBeginPopupContextVoid        = bool function(const(char)* str_id = null, int mouse_button = 1);
296     alias da_igEndPopup                     = void function();
297     alias da_igIsPopupOpen                  = bool function(const(char)* str_id);
298     alias da_igCloseCurrentPopup            = void function();
299 
300     alias da_igLogToTTY                     = void function(int max_depth = -1);
301     alias da_igLogToFile                    = void function(int max_depth = -1, const char* filename = null);
302     alias da_igLogToClipboard               = void function(int max_depth = -1);
303     alias da_igLogFinish                    = void function();
304     alias da_igLogButtons                   = void function();
305     alias da_igLogText                      = void function(const char* fmt, ...);
306 
307     alias da_igPushClipRect                 = void function(const ImVec2 clip_rect_min, const ImVec2 clip_rect_max, bool intersect_with_current_clip_rect);
308     alias da_igPopClipRect                  = void function();
309 
310     alias da_igIsItemHovered                = bool function(ImGuiHoveredFlags flags = 0);
311     alias da_igIsItemActive                 = bool function();
312     alias da_igIsItemClicked                = bool function(int mouse_button = 0);
313     alias da_igIsItemVisible                = bool function();
314     alias da_igIsAnyItemHovered             = bool function();
315     alias da_igIsAnyItemActive              = bool function();
316     alias da_igGetItemRectMin               = void function(ImVec2* pOut);
317     alias da_igGetItemRectMax               = void function(ImVec2* pOut);
318     alias da_igGetItemRectSize              = void function(ImVec2* pOut);
319     alias da_igSetItemAllowOverlap          = void function();
320     alias da_igIsWindowFocused              = bool function(ImGuiFocusedFlags flags = 0);
321     alias da_igIsWindowHovered              = bool function(ImGuiHoveredFlags flags = 0);
322     alias da_igIsAnyWindowHovered           = bool function();
323     alias da_igIsRectVisible                = bool function(const ImVec2 item_size);
324     alias da_igIsRectVisible2               = bool function(const ImVec2 rect_min, const ImVec2 rect_max);
325 
326     alias da_igGetTime                      = float function();
327     alias da_igGetFrameCount                = int function();
328     alias da_igGetStyleColorName            = const(char)* function(ImGuiCol idx);
329     alias da_igCalcItemRectClosestPoint     = void function(ImVec2* pOut, const ImVec2 pos, bool on_edge = false, float outward = +0.0f);
330     alias da_igCalcTextSize                 = void function(ImVec2* pOut, const char* text, const char* text_end = null, bool hide_text_after_double_hash = false, float wrap_width = -1.0f);
331     alias da_igCalcListClipping             = void function(int items_count, float items_height, int* out_items_display_start, int* out_items_display_end);
332 
333     alias da_igBeginChildFrame              = bool function(ImGuiID id, const ImVec2 size, ImGuiWindowFlags extra_flags = 0);
334     alias da_igEndChildFrame                = void function();
335 
336     alias da_igColorConvertU32ToFloat4      = void function(ImVec4* pOut, ImU32 in_);
337     alias da_igColorConvertFloat4ToU32      = ImU32 function(const ImVec4 in_);
338     alias da_igColorConvertRGBtoHSV         = void function(float r, float g, float b, float* out_h, float* out_s, float* out_v);
339     alias da_igColorConvertHSVtoRGB         = void function(float h, float s, float v, float* out_r, float* out_g, float* out_b);
340 
341     alias da_igGetKeyIndex                  = int  function(ImGuiKey imgui_key);
342     alias da_igIsKeyDown                    = bool function(int user_key_index);
343     alias da_igIsKeyPressed                 = bool function(int user_key_index, bool repeat = true);
344     alias da_igIsKeyReleased                = bool function(int user_key_index);
345     alias da_igIsMouseDown                  = bool function(int button);
346     alias da_igIsMouseClicked               = bool function(int button, bool repeat = false);
347     alias da_igIsMouseDoubleClicked         = bool function(int button);
348     alias da_igIsMouseReleased              = bool function(int button);
349     alias da_igIsMouseDragging              = bool function(int button = 0, float lock_threshold = -1.0f);
350     alias da_igIsMouseHoveringRect          = bool function(const ImVec2 r_min, const ImVec2 r_max, bool clip = true);
351     alias da_igIsMousePosValid              = bool function(const ImVec2* mouse_pos = null);
352     alias da_igGetMousePos                  = void function(ImVec2* pOut);
353     alias da_igGetMousePosOnOpeningCurrentPopup = void function(ImVec2* pOut);
354     alias da_igGetMouseDragDelta            = void function(ImVec2* pOut, int button = 0, float lock_threshold = -1.0f);
355     alias da_igResetMouseDragDelta          = void function(int button = 0);
356     alias da_igGetMouseCursor               = ImGuiMouseCursor function();
357     alias da_igSetMouseCursor               = void function(ImGuiMouseCursor type);
358     alias da_igCaptureKeyboardFromApp       = void function(bool capture = true);
359     alias da_igCaptureMouseFromApp          = void function(bool capture = true);
360 
361     alias da_igMemAlloc                     = void* function(size_t sz);
362     alias da_igMemFree                      = void function(void* ptr);
363     alias da_igGetClipboardText             = const(char)* function();
364     alias da_igSetClipboardText             = void function(const(char)* text);
365 
366     alias da_igGetVersion                   = const(char)* function();
367     alias da_igCreateContext                = ImGuiContext* function(void* function(size_t) malloc_fn = null, void function(void*) free_fn = null);
368     alias da_igDestroyContext               = void function(ImGuiContext* ctx);
369     alias da_igGetCurrentContext            = ImGuiContext* function();
370     alias da_igSetCurrentContext            = void function(ImGuiContext* ctx);
371 }
372 
373 extern(C) @nogc nothrow
374 {
375     // ImGuiIO
376     alias da_ImGuiIO_AddInputCharacter      = void function(ushort c);
377     alias da_ImGuiIO_AddInputCharactersUTF8 = void function(const(char*) utf8_chars);
378     alias da_ImGuiIO_ClearInputCharacters   = void function();
379 
380     // ImGuiTextFilter
381     alias da_ImGuiTextFilter_Create         = ImGuiTextFilter* function(const char* default_filter = "");
382     alias da_ImGuiTextFilter_Destroy        = void function(ImGuiTextFilter* filter);
383     alias da_ImGuiTextFilter_Clear          = void function(ImGuiTextFilter* filter);
384     alias da_ImGuiTextFilter_Draw           = bool function(ImGuiTextFilter* filter, const char* label = "Filter (inc,-exc)", float width = 0.0f);
385     alias da_ImGuiTextFilter_PassFilter     = bool function(const(ImGuiTextFilter)* filter, const char* text, const char* text_end = null);
386     alias da_ImGuiTextFilter_IsActive       = bool function(const(ImGuiTextFilter)* filter);
387     alias da_ImGuiTextFilter_Build          = void function(ImGuiTextFilter* filter);
388     alias da_ImGuiTextFilter_GetInputBuf    = const(char)* function(ImGuiTextFilter* filter);
389 
390     // ImGuiTextBuffer
391     alias da_ImGuiTextBuffer_Create         = ImGuiTextBuffer* function();
392     alias da_ImGuiTextBuffer_Destroy        = void function(ImGuiTextBuffer* buffer);
393     alias da_ImGuiTextBuffer_index          = char function(ImGuiTextBuffer* buffer, int i);
394     alias da_ImGuiTextBuffer_begin          = const char* function(const(ImGuiTextBuffer)* buffer);
395     alias da_ImGuiTextBuffer_end            = const char* function(const(ImGuiTextBuffer)* buffer);
396     alias da_ImGuiTextBuffer_size           = int function(const(ImGuiTextBuffer)* buffer);
397     alias da_ImGuiTextBuffer_empty          = bool function(ImGuiTextBuffer* buffer);
398     alias da_ImGuiTextBuffer_clear          = void function(ImGuiTextBuffer* buffer);
399     alias da_ImGuiTextBuffer_c_str          = const char* function(const(ImGuiTextBuffer)* buffer);
400     alias da_ImGuiTextBuffer_appendf         = void function(ImGuiTextBuffer* buffer, const(char)* fmt, ...);
401     alias da_ImGuiTextBuffer_appendfv        = void  function(ImGuiTextBuffer* buffer, const(char)* fmt, va_list args);
402 
403     // ImGuiStorage
404     alias da_ImGuiStorage_Create = ImGuiStorage* function();
405     alias da_ImGuiStorage_Destroy = void function(ImGuiStorage* storage);
406     alias da_ImGuiStorage_Clear = void function(ImGuiStorage* storage);
407     alias da_ImGuiStorage_GetInt = int function(ImGuiStorage* storage, ImGuiID key, int default_val);
408     alias da_ImGuiStorage_SetInt = void function(ImGuiStorage* storage, ImGuiID key, int val);
409     alias da_ImGuiStorage_GetBool = bool function(ImGuiStorage* storage, ImGuiID key, bool default_val);
410     alias da_ImGuiStorage_SetBool = void function(ImGuiStorage* storage, ImGuiID key, bool val);
411     alias da_ImGuiStorage_GetFloat = float function(ImGuiStorage* storage, ImGuiID key, float default_val);
412     alias da_ImGuiStorage_SetFloat = void function(ImGuiStorage* storage, ImGuiID key, float val);
413     alias da_ImGuiStorage_GetVoidPtr = void* function(ImGuiStorage* storage, ImGuiID key);
414     alias da_ImGuiStorage_SetVoidPtr = void function(ImGuiStorage* storage, ImGuiID key, void* val);
415     alias da_ImGuiStorage_GetIntRef = int* function(ImGuiStorage* storage, ImGuiID key, int default_val);
416     alias da_ImGuiStorage_GetBoolRef = bool* function(ImGuiStorage* storage, ImGuiID key, bool default_val);
417     alias da_ImGuiStorage_GetFloatRef = float* function(ImGuiStorage* storage, ImGuiID key, float default_val);
418     alias da_ImGuiStorage_GetVoidPtrRef = void** function(ImGuiStorage* storage, ImGuiID key, void* default_val);
419     alias da_ImGuiStorage_SetAllInt = void function(ImGuiStorage* storage, int val);
420 
421     // ImGuiTextEditCallbackData
422     alias da_ImGuiTextEditCallbackData_DeleteChars = void function(ImGuiTextEditCallbackData* data, int pos, int bytes_count);
423     alias da_ImGuiTextEditCallbackData_InsertChars = void function(ImGuiTextEditCallbackData* data, int pos, const char* text, const char* text_end = null);
424     alias da_ImGuiTextEditCallbackData_HasSelection = bool function(ImGuiTextEditCallbackData* data);
425 
426     // ImGuiListClipper
427     alias da_ImGuiListClipper_Begin         = void function(ImGuiListClipper* clipper, int items_count, float items_height = -1.0f);
428     alias da_ImGuiListClipper_End           = void function(ImGuiListClipper* clipper);
429     alias da_ImGuiListClipper_Step          = bool function(ImGuiListClipper* clipper);
430     alias da_ImGuiListClipper_GetDisplayStart = int function(ImGuiListClipper* clipper);
431     alias da_ImGuiListClipper_GetDisplayEnd = int function(ImGuiListClipper* clipper);
432 
433     // ImDrawList
434     alias da_ImDrawList_GetVertexBufferSize = int function(ImDrawList* list);
435     alias da_ImDrawList_GetVertexPtr = ImDrawVert* function(ImDrawList* list, int n);
436     alias da_ImDrawList_GetIndexBufferSize  = int function(ImDrawList* list);
437     alias da_ImDrawList_GetIndexPtr         = ImDrawIdx* function(ImDrawList* list, int n);
438     alias da_ImDrawList_GetCmdSize          = int function(ImDrawList* list);
439     alias da_ImDrawList_GetCmdPtr           = ImDrawCmd* function(ImDrawList* list, int n);
440     alias da_ImDrawList_Clear               = void function(ImDrawList* list);
441     alias da_ImDrawList_ClearFreeMemory     = void function(ImDrawList* list);
442     alias da_ImDrawList_PushClipRect        = void function(ImDrawList* list, ImVec2 clip_rect_min, ImVec2 clip_rect_max, bool intersect_with_current_clip_rect = false);
443     alias da_ImDrawList_PushClipRectFullScreen = void function(ImDrawList* list);
444     alias da_ImDrawList_PopClipRect         = void function(ImDrawList* list);
445     alias da_ImDrawList_PushTextureID       = void function(ImDrawList* list, const ImTextureID texture_id);
446     alias da_ImDrawList_PopTextureID        = void function(ImDrawList* list);
447     alias da_ImDrawList_GetClipRectMin      = void function(ImVec2 *pOut, ImDrawList* list);
448     alias da_ImDrawList_GetClipRectMax      = void function(ImVec2 *pOut, ImDrawList* list);
449     alias da_ImDrawList_AddLine             = void function(ImDrawList* list, const ImVec2 a, const ImVec2 b, ImU32 col, float thickness = 1.0f);
450     alias da_ImDrawList_AddRect             = void function(ImDrawList* list, const ImVec2 a, const ImVec2 b, ImU32 col, float rounding = 0.0f, int rounding_corners_flags = 0x0F, float thickness = 1.0f);
451     alias da_ImDrawList_AddRectFilled       = void function(ImDrawList* list, const ImVec2 a, const ImVec2 b, ImU32 col, float rounding = 0.0f, int rounding_corners_flags = 0x0F);
452     alias da_ImDrawList_AddRectFilledMultiColor = void function(ImDrawList* list, const ImVec2 a, const ImVec2 b, ImU32 col_upr_left, ImU32 col_upr_right, ImU32 col_bot_right, ImU32 col_bot_left);
453     alias da_ImDrawList_AddQuad             = void function(ImDrawList* list, const ImVec2 a, const ImVec2 b, const ImVec2 c, const ImVec2 d, ImU32 col, float thickness = 1.0f);
454     alias da_ImDrawList_AddQuadFilled       = void function(ImDrawList* list, const ImVec2 a, const ImVec2 b, const ImVec2 c, const ImVec2 d, ImU32 col);
455     alias da_ImDrawList_AddTriangle         = void function(ImDrawList* list, const ImVec2 a, const ImVec2 b, const ImVec2 c, ImU32 col, float thickness = 1.0f);
456     alias da_ImDrawList_AddTriangleFilled   = void function(ImDrawList* list, const ImVec2 a, const ImVec2 b, const ImVec2 c, ImU32 col);
457     alias da_ImDrawList_AddCircle           = void function(ImDrawList* list, const ImVec2 centre, float radius, ImU32 col, int num_segments = 12, float thickness = 1.0f);
458     alias da_ImDrawList_AddCircleFilled     = void function(ImDrawList* list, const ImVec2 centre, float radius, ImU32 col, int num_segments = 12);
459     alias da_ImDrawList_AddText             = void function(ImDrawList* list, const ImVec2 pos, ImU32 col, const char* text_begin, const char* text_end = null);
460     alias da_ImDrawList_AddTextExt          = void function(ImDrawList* list, const ImFont* font, float font_size, const ImVec2 pos, ImU32 col, const char* text_begin, const char* text_end = null, float wrap_width = 0.0f, const ImVec4* cpu_fine_clip_rect = null);
461     alias da_ImDrawList_AddImage            = void function(ImDrawList* list, ImTextureID user_texture_id, const ImVec2 a, const ImVec2 b, const ImVec2 uv_a = ImVec2(0,0), const ImVec2 uv_b = ImVec2(1,1), ImU32 col = 0xFFFFFFFF);
462     alias da_ImDrawList_AddImageQuad        = void function(ImDrawList* list, ImTextureID user_texture_id, const ImVec2 a, const ImVec2 b, const ImVec2 c, const ImVec2 d, const ImVec2 uv_a = ImVec2(0,0), const ImVec2 uv_b = ImVec2(1,0), const ImVec2 uv_c = ImVec2(1,1), const ImVec2 uv_d = ImVec2(0,1), ImU32 col = 0xFFFFFFFF);
463     alias da_ImDrawList_AddPolyline         = void function(ImDrawList* list, const ImVec2* points, const int num_points, ImU32 col, bool closed, float thickness);
464     alias da_ImDrawList_AddConvexPolyFilled = void function(ImDrawList* list, const ImVec2* points, const int num_points, ImU32 col, bool anti_aliased);
465     alias da_ImDrawList_AddBezierCurve      = void function(ImDrawList* list, const ImVec2 pos0, const ImVec2 cp0, const ImVec2 cp1, const ImVec2 pos1, ImU32 col, float thickness, int num_segments = 0);
466     alias da_ImDrawList_PathClear           = void function(ImDrawList* list);
467     alias da_ImDrawList_PathLineTo          = void function(ImDrawList* list, const ImVec2 pos);
468     alias da_ImDrawList_PathLineToMergeDuplicate = void function(ImDrawList* list, const ImVec2 pos);
469     alias da_ImDrawList_PathFillConvex      = void function(ImDrawList* list, ImU32 col);
470     alias da_ImDrawList_PathStroke          = void function(ImDrawList* list, ImU32 col, bool closed, float thickness = 1.0f);
471     alias da_ImDrawList_PathArcTo           = void function(ImDrawList* list, const ImVec2 centre, float radius, float a_min, float a_max, int num_segments = 10);
472     alias da_ImDrawList_PathArcToFast       = void function(ImDrawList* list, const ImVec2 centre, float radius, int a_min_of_12, int a_max_of_12);
473     alias da_ImDrawList_PathBezierCurveTo   = void function(ImDrawList* list, const ImVec2 p1, const ImVec2 p2, const ImVec2 p3, int num_segments = 0);
474     alias da_ImDrawList_PathRect            = void function(ImDrawList* list, const ImVec2 rect_min, const ImVec2 rect_max, float rounding = 0.0f, int rounding_corners_flags = 0x0F);
475     alias da_ImDrawList_ChannelsSplit       = void function(ImDrawList* list, int channels_count);
476     alias da_ImDrawList_ChannelsMerge       = void function(ImDrawList* list);
477     alias da_ImDrawList_ChannelsSetCurrent  = void function(ImDrawList* list, int channel_index);
478     alias da_ImDrawList_AddCallback         = void function(ImDrawList* list, ImDrawCallback callback, void* callback_data);
479     alias da_ImDrawList_AddDrawCmd          = void function(ImDrawList* list);
480     alias da_ImDrawList_PrimReserve         = void function(ImDrawList* list, int idx_count, int vtx_count);
481     alias da_ImDrawList_PrimRect            = void function(ImDrawList* list, const ImVec2 a, const ImVec2 b, ImU32 col);
482     alias da_ImDrawList_PrimRectUV          = void function(ImDrawList* list, const ImVec2 a, const ImVec2 b, const ImVec2 uv_a, const ImVec2 uv_b, ImU32 col);
483     alias da_ImDrawList_PrimQuadUV          = void function(ImDrawList* list, const ImVec2 a, const ImVec2 b, const ImVec2 c, const ImVec2 d, const ImVec2 uv_a, const ImVec2 uv_b, const ImVec2 uv_c, const ImVec2 uv_d, ImU32 col);
484     alias da_ImDrawList_PrimVtx             = void function(ImDrawList* list, const ImVec2 pos, const ImVec2 uv, ImU32 col);
485     alias da_ImDrawList_PrimWriteVtx        = void function(ImDrawList* list, const ImVec2 pos, const ImVec2 uv, ImU32 col);
486     alias da_ImDrawList_PrimWriteIdx        = void function(ImDrawList* list, ImDrawIdx idx);
487     alias da_ImDrawList_UpdateClipRect      = void function(ImDrawList* list);
488     alias da_ImDrawList_UpdateTextureID     = void function(ImDrawList* list);
489 
490     // ImDrawData
491     alias da_ImDrawData_DeIndexAllBuffers   = void function(ImDrawData* drawData);
492     alias da_ImDrawData_ScaleClipRects      = void function(ImDrawData* drawData, const ImVec2 sc);
493 
494     // ImFontAtlas
495     alias da_ImFontAtlas_AddFont            = ImFont* function(ImFontAtlas* atlas, const ImFontConfig* font_cfg);
496     alias da_ImFontAtlas_AddFontDefault     = ImFont* function(ImFontAtlas* atlas, const ImFontConfig* font_cfg = null);
497     alias da_ImFontAtlas_AddFontFromFileTTF = ImFont* function(ImFontAtlas* atlas, const char* filename, float size_pixels, const ImFontConfig* font_cfg = null, const(ImWchar)* glyph_ranges = null);
498     alias da_ImFontAtlas_AddFontFromMemoryTTF = ImFont* function(void* font_data, int font_size, float size_pixels, const ImFontConfig* font_cfg = null, const(ImWchar)* glyph_ranges = null);
499     alias da_ImFontAtlas_AddFontFromMemoryCompressedTTF = ImFont* function(const void* compressed_font_data, int compressed_font_size, float size_pixels, const ImFontConfig* font_cfg = null, const(ImWchar)* glyph_ranges = null);
500     alias da_ImFontAtlas_AddFontFromMemoryCompressedBase85TTF = ImFont* function(const char* compressed_font_data_base85, float size_pixels, const ImFontConfig* font_cfg = null, const(ImWchar)* glyph_ranges = null);
501     alias da_ImFontAtlas_ClearTexData       = void function(ImFontAtlas* atlas);
502     alias da_ImFontAtlas_ClearInputData     = void function(ImFontAtlas* atlas);
503     alias da_ImFontAtlas_ClearFonts         = void function(ImFontAtlas* atlas);
504     alias da_ImFontAtlas_Clear              = void function(ImFontAtlas* atlas);
505 
506     alias da_ImFontAtlas_GetTexDataAsAlpha8 = void function(ImFontAtlas* atlas,ubyte** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel = null);
507     alias da_ImFontAtlas_GetTexDataAsRGBA32 = void function(ImFontAtlas* atlas,ubyte** out_pixels,int* out_width,int* out_height,int* out_bytes_per_pixel = null);
508     alias da_ImFontAtlas_SetTexID           = void function(ImFontAtlas* atlas, ImTextureID id);
509 
510     alias da_ImFontAtlas_GetGlyphRangesDefault = const(ImWchar)* function(ImFontAtlas* atlas);
511     alias da_ImFontAtlas_GetGlyphRangesKorean = const(ImWchar)* function(ImFontAtlas* atlas);
512     alias da_ImFontAtlas_GetGlyphRangesJapanese = const(ImWchar)* function(ImFontAtlas* atlas);
513     alias da_ImFontAtlas_GetGlyphRangesChinese = const(ImWchar)* function(ImFontAtlas* atlas);
514     alias da_ImFontAtlas_GetGlyphRangesCyrillic = const(ImWchar)* function(ImFontAtlas* atlas);
515     alias da_ImFontAtlas_GetGlyphRangesThai = const(ImWchar)* function(ImFontAtlas* atlas);
516 
517     alias da_ImFontAtlas_GetTexID           = ImTextureID function(ImFontAtlas* atlas);
518     alias da_ImFontAtlas_GetTexPixelsAlpha8 = ubyte* function(ImFontAtlas* atlas);
519     alias da_ImFontAtlas_GetTexPixelsRGBA32 = uint* function(ImFontAtlas* atlas);
520     alias da_ImFontAtlas_GetTexWidth        = int function(ImFontAtlas* atlas);
521     alias da_ImFontAtlas_GetTexHeight       = int function(ImFontAtlas* atlas);
522     alias da_ImFontAtlas_GetTexDesiredWidth = int function(ImFontAtlas* atlas);
523     alias da_ImFontAtlas_SetTexDesiredWidth = void function(ImFontAtlas* atlas, int TexDesiredWidth_);
524     alias da_ImFontAtlas_GetTexGlyphPadding = int function(ImFontAtlas* atlas);
525     alias da_ImFontAtlas_SetTexGlyphPadding = void function(ImFontAtlas* atlas, int TexGlyphPadding_);
526     alias da_ImFontAtlas_GetTexUvWhitePixel = void function(ImFontAtlas* atlas, ImVec2* pOut);
527 
528     // ImFontAtlas::Fonts;
529     alias da_ImFontAtlas_Fonts_size         = int function(ImFontAtlas* atlas);
530     alias da_ImFontAtlas_Fonts_index        = ImFont* function(ImFontAtlas* atlas, int index);
531 
532     // ImFont
533     alias da_ImFont_GetFontSize             = float function(const ImFont* font);
534     alias da_ImFont_SetFontSize             = void function(ImFont* font, float FontSize_);
535     alias da_ImFont_GetScale                = float function(const ImFont* font);
536     alias da_ImFont_SetScale                = void function(ImFont* font, float Scale_);
537     alias da_ImFont_GetDisplayOffset        = void function(const ImFont* font, ImVec2* pOut);
538     alias da_ImFont_GetFallbackGlyph        = const ImFont_Glyph* function(const ImFont* font);
539     alias da_ImFont_SetFallbackGlyph        = void function(ImFont* font, const ImFont_Glyph* FallbackGlyph_);
540     alias da_ImFont_GetFallbackAdvanceX     = float function(const ImFont* font);
541     alias da_ImFont_GetFallbackChar         = ImWchar function(const ImFont* font);
542     alias da_ImFont_GetConfigDataCount      = short function(const ImFont* font);
543     alias da_ImFont_GetConfigData           = ImFontConfig* function(ImFont* font);
544     alias da_ImFont_GetContainerAtlas       = ImFontAtlas* function(ImFont* font);
545     alias da_ImFont_GetAscent               = float function(const ImFont* font);
546     alias da_ImFont_GetDescent              = float function(const ImFont* font);
547     alias da_ImFont_GetMetricsTotalSurface  = int function(const ImFont* font);
548 
549     alias da_ImFont_ClearOutputData         = void function(const ImFont* font);
550     alias da_ImFont_BuildLookupTable        = void function(ImFont* font);
551     alias da_ImFont_FindGlyph               = const ImFont_Glyph* function(const ImFont* font, ImWchar c);
552     alias da_ImFont_SetFallbackChar         = void function(ImFont* font, ImWchar c);
553     alias da_ImFont_GetCharAdvance          = float function(const ImFont* font, ImWchar c);
554     alias da_ImFont_IsLoaded                = bool function(const ImFont* font);
555     alias da_ImFont_CalcTextSizeA           = void function(const ImFont* font, ImVec2* pOut, float size, float max_width, float wrap_width, const char* text_begin, const char* text_end = null, const char** remaining = null); // utf8
556     alias da_ImFont_CalcWordWrapPositionA   = const char* function(const ImFont* font, float scale, const char* text, const char* text_end, float wrap_width);
557     alias da_ImFont_RenderChar              = void function(const ImFont* font, ImDrawList* draw_list, float size, ImVec2 pos, ImU32 col, ushort c);
558     alias da_ImFont_RenderText              = void function(const ImFont* font, ImDrawList* draw_list, float size, ImVec2 pos, ImU32 col, const ImVec4* clip_rect, const char* text_begin, const char* text_end, float wrap_width = 0.0f, bool cpu_fine_clip = false);
559 
560     // ImFont::Glyphs
561     alias da_ImFont_Glyphs_size             = int function(const ImFont* font);
562     alias da_ImFont_Glyphs_index            = ImFont_Glyph* function(ImFont* font, int index);
563 
564     // ImFont::IndexXAdvance
565     alias da_ImFont_IndexXAdvance_size      = int function(const ImFont* font);
566     alias da_ImFont_IndexXAdvance_index     = float function(const ImFont* font, int index);
567 
568     // ImFont::IndexLookup
569     alias da_ImFont_IndexLookup_size        = int function(const ImFont* font);
570     alias da_ImFont_IndexLookup_index       = ushort function(const ImFont* font, int index);
571 
572 }
573 
574 __gshared
575 {
576     da_igGetIO igGetIO;
577     da_igGetStyle igGetStyle;
578     da_igGetDrawData igGetDrawData;
579     da_igNewFrame igNewFrame;
580     da_igRender igRender;
581     da_igShutdown igShutdown;
582     da_igShowDemoWindow igShowDemoWindow;
583     da_igShowMetricsWindow igShowMetricsWindow;
584     da_igShowStyleEditor igShowStyleEditor;
585     da_igShowStyleSelector igShowStyleSelector;
586     da_igShowFontSelector igShowFontSelector;
587     da_igShowUserGuide igShowUserGuide;
588 
589     // Window
590     da_igBegin igBegin;
591     da_igEnd igEnd;
592     da_igBeginChild igBeginChild;
593     da_igBeginChildEx igBeginChildEx;
594     da_igEndChild igEndChild;
595     da_igGetContentRegionMax igGetContentRegionMax;
596     da_igGetContentRegionAvail igGetContentRegionAvail;
597     da_igGetContentRegionAvailWidth igGetContentRegionAvailWidth;
598     da_igGetWindowContentRegionMin igGetWindowContentRegionMin;
599     da_igGetWindowContentRegionMax igGetWindowContentRegionMax;
600     da_igGetWindowContentRegionWidth igGetWindowContentRegionWidth;
601     da_igGetWindowDrawList igGetWindowDrawList;
602     da_igGetWindowPos igGetWindowPos;
603     da_igGetWindowSize igGetWindowSize;
604     da_igGetWindowWidth igGetWindowWidth;
605     da_igGetWindowHeight igGetWindowHeight;
606     da_igIsWindowCollapsed igIsWindowCollapsed;
607     da_igSetWindowFontScale igSetWindowFontScale;
608 
609     da_igSetNextWindowPos igSetNextWindowPos;
610     da_igSetNextWindowSize igSetNextWindowSize;
611     da_igSetNextWindowSizeConstraints igSetNextWindowSizeConstraints;
612     da_igSetNextWindowContentSize igSetNextWindowContentSize;
613     da_igSetNextWindowCollapsed igSetNextWindowCollapsed;
614     da_igSetNextWindowFocus igSetNextWindowFocus;
615     da_igSetWindowPos igSetWindowPos;
616     da_igSetWindowSize igSetWindowSize;
617     da_igSetWindowCollapsed igSetWindowCollapsed;
618     da_igSetWindowFocus igSetWindowFocus;
619     da_igSetWindowPosByName igSetWindowPosByName;
620     da_igSetWindowSize2 igSetWindowSize2;
621     da_igSetWindowCollapsed2 igSetWindowCollapsed2;
622     da_igSetWindowFocus2 igSetWindowFocus2;
623 
624     da_igGetScrollX igGetScrollX;
625     da_igGetScrollY igGetScrollY;
626     da_igGetScrollMaxX igGetScrollMaxX;
627     da_igGetScrollMaxY igGetScrollMaxY;
628     da_igSetScrollX igSetScrollX;
629     da_igSetScrollY igSetScrollY;
630     da_igSetScrollHere igSetScrollHere;
631     da_igSetScrollFromPosY igSetScrollFromPosY;
632     da_igSetKeyboardFocusHere igSetKeyboardFocusHere;
633     da_igSetStateStorage igSetStateStorage;
634     da_igGetStateStorage igGetStateStorage;
635 
636     da_igPushFont igPushFont;
637     da_igPopFont igPopFont;
638     da_igPushStyleColorU32 igPushStyleColorU32;
639     da_igPushStyleColor igPushStyleColor;
640     da_igPopStyleColor igPopStyleColor;
641     da_igPushStyleVar igPushStyleVar;
642     da_igPushStyleVarVec igPushStyleVarVec;
643     da_igPopStyleVar igPopStyleVar;
644     da_igGetStyleColorVec4 igGetStyleColorVec4;
645     da_igGetFont igGetFont;
646     da_igGetFontSize igGetFontSize;
647     da_igGetFontTexUvWhitePixel igGetFontTexUvWhitePixel;
648     da_igGetColorU32 igGetColorU32;
649     da_igGetColorU32Vec igGetColorU32Vec;
650     da_igGetColorU32U32 igGetColorU32U32;
651 
652     da_igPushItemWidth igPushItemWidth;
653     da_igPopItemWidth igPopItemWidth;
654     da_igCalcItemWidth igCalcItemWidth;
655     da_igPushTextWrapPos igPushTextWrapPos;
656     da_igPopTextWrapPos igPopTextWrapPos;
657     da_igPushAllowKeyboardFocus igPushAllowKeyboardFocus;
658     da_igPopAllowKeyboardFocus igPopAllowKeyboardFocus;
659     da_igPushButtonRepeat igPushButtonRepeat;
660     da_igPopButtonRepeat igPopButtonRepeat;
661 
662     da_igSeparator igSeparator;
663     da_igSameLine igSameLine;
664     da_igNewLine igNewLine;
665     da_igSpacing igSpacing;
666     da_igDummy igDummy;
667     da_igIndent igIndent;
668     da_igUnindent igUnindent;
669     da_igBeginGroup igBeginGroup;
670     da_igEndGroup igEndGroup;
671     da_igGetCursorPos igGetCursorPos;
672     da_igGetCursorPosX igGetCursorPosX;
673     da_igGetCursorPosY igGetCursorPosY;
674     da_igSetCursorPos igSetCursorPos;
675     da_igSetCursorPosX igSetCursorPosX;
676     da_igSetCursorPosY igSetCursorPosY;
677     da_igGetCursorStartPos igGetCursorStartPos;
678     da_igGetCursorScreenPos igGetCursorScreenPos;
679     da_igSetCursorScreenPos igSetCursorScreenPos;
680     da_igAlignTextToFramePadding igAlignTextToFramePadding;
681     da_igGetTextLineHeight igGetTextLineHeight;
682     da_igGetTextLineHeightWithSpacing igGetTextLineHeightWithSpacing;
683     da_igGetFrameHeightWithSpacing igGetFrameHeightWithSpacing;
684 
685     da_igColumns igColumns;
686     da_igNextColumn igNextColumn;
687     da_igGetColumnIndex igGetColumnIndex;
688     da_igGetColumnWidth igGetColumnWidth;
689     da_igSetColumnWidth igSetColumnWidth;
690     da_igGetColumnOffset igGetColumnOffset;
691     da_igSetColumnOffset igSetColumnOffset;
692     da_igGetColumnsCount igGetColumnsCount;
693 
694     da_igPushIDStr igPushIDStr;
695     da_igPushIDStrRange igPushIDStrRange;
696     da_igPushIDPtr igPushIDPtr;
697     da_igPushIDInt igPushIDInt;
698     da_igPopID igPopID;
699     da_igGetIDStr igGetIDStr;
700     da_igGetIDStrRange igGetIDStrRange;
701     da_igGetIDPtr igGetIDPtr;
702 
703     da_igText igText;
704     da_igTextV igTextV;
705     da_igTextColored igTextColored;
706     da_igTextColoredV igTextColoredV;
707     da_igTextDisabled igTextDisabled;
708     da_igTextDisabledV igTextDisabledV;
709     da_igTextWrapped igTextWrapped;
710     da_igTextWrappedV igTextWrappedV;
711     da_igTextUnformatted igTextUnformatted;
712     da_igLabelText igLabelText;
713     da_igLabelTextV igLabelTextV;
714     da_igBullet igBullet;
715     da_igBulletText igBulletText;
716     da_igBulletTextV igBulletTextV;
717     da_igButton igButton;
718     da_igSmallButton igSmallButton;
719     da_igInvisibleButton igInvisibleButton;
720     da_igImage igImage;
721     da_igImageButton igImageButton;
722     da_igCheckbox igCheckbox;
723     da_igCheckboxFlags igCheckboxFlags;
724     da_igRadioButtonBool igRadioButtonBool;
725     da_igRadioButton igRadioButton;
726     da_igCombo igCombo;
727     da_igCombo2 igCombo2;
728     da_igCombo3 igCombo3;
729     da_igPlotLines igPlotLines;
730     da_igPlotLines2 igPlotLines2;
731     da_igPlotHistogram igPlotHistogram;
732     da_igPlotHistogram2 igPlotHistogram2;
733     da_igProgressBar igProgressBar;
734 
735     da_igDragFloat igDragFloat;
736     da_igDragFloat2 igDragFloat2;
737     da_igDragFloat3 igDragFloat3;
738     da_igDragFloat4 igDragFloat4;
739     da_igDragFloatRange2 igDragFloatRange2;
740     da_igDragInt igDragInt;
741     da_igDragInt2 igDragInt2;
742     da_igDragInt3 igDragInt3;
743     da_igDragInt4 igDragInt4;
744     da_igDragIntRange2 igDragIntRange2;
745 
746     da_igInputText igInputText;
747     da_igInputTextMultiline igInputTextMultiline;
748     da_igInputFloat igInputFloat;
749     da_igInputFloat2 igInputFloat2;
750     da_igInputFloat3 igInputFloat3;
751     da_igInputFloat4 igInputFloat4;
752     da_igInputInt igInputInt;
753     da_igInputInt2 igInputInt2;
754     da_igInputInt3 igInputInt3;
755     da_igInputInt4 igInputInt4;
756 
757     da_igSliderFloat igSliderFloat;
758     da_igSliderFloat2 igSliderFloat2;
759     da_igSliderFloat3 igSliderFloat3;
760     da_igSliderFloat4 igSliderFloat4;
761     da_igSliderAngle igSliderAngle;
762     da_igSliderInt igSliderInt;
763     da_igSliderInt2 igSliderInt2;
764     da_igSliderInt3 igSliderInt3;
765     da_igSliderInt4 igSliderInt4;
766     da_igVSliderFloat igVSliderFloat;
767     da_igVSliderInt igVSliderInt;
768 
769     da_igColorEdit3 igColorEdit3;
770     da_igColorEdit4 igColorEdit4;
771     da_igColorPicker3 igColorPicker3;
772     da_igColorPicker4 igColorPicker4;
773     da_igColorButton igColorButton;
774     da_igSetColorEditOptions igSetColorEditOptions;
775 
776     da_igTreeNode igTreeNode;
777     da_igTreeNodeStr igTreeNodeStr;
778     da_igTreeNodePtr igTreeNodePtr;
779     da_igTreeNodeStrV igTreeNodeStrV;
780     da_igTreeNodePtrV igTreeNodePtrV;
781     da_igTreeNodeEx igTreeNodeEx;
782     da_igTreeNodeExStr igTreeNodeExStr;
783     da_igTreeNodeExPtr igTreeNodeExPtr;
784     da_igTreeNodeExV igTreeNodeExV;
785     da_igTreeNodeExVPtr igTreeNodeExVPtr;
786     da_igTreePushStr igTreePushStr;
787     da_igTreePushPtr igTreePushPtr;
788     da_igTreePop igTreePop;
789     da_igTreeAdvanceToLabelPos igTreeAdvanceToLabelPos;
790     da_igGetTreeNodeToLabelSpacing igGetTreeNodeToLabelSpacing;
791     da_igSetNextTreeNodeOpen igSetNextTreeNodeOpen;
792     da_igCollapsingHeader igCollapsingHeader;
793     da_igCollapsingHeaderEx igCollapsingHeaderEx;
794 
795     da_igSelectable igSelectable;
796     da_igSelectableEx igSelectableEx;
797     da_igListBox igListBox;
798     da_igListBox2 igListBox2;
799     da_igListBoxHeader igListBoxHeader;
800     da_igListBoxHeader2 igListBoxHeader2;
801     da_igListBoxFooter igListBoxFooter;
802 
803     da_igValueBool igValueBool;
804     da_igValueInt igValueInt;
805     da_igValueUInt igValueUInt;
806     da_igValueFloat igValueFloat;
807 
808     da_igSetTooltip igSetTooltip;
809     da_igSetTooltipV igSetTooltipV;
810     da_igBeginTooltip igBeginTooltip;
811     da_igEndTooltip igEndTooltip;
812 
813     // Widgets: Menus
814     da_igBeginMainMenuBar  igBeginMainMenuBar;
815     da_igEndMainMenuBar    igEndMainMenuBar;
816     da_igBeginMenuBar      igBeginMenuBar;
817     da_igEndMenuBar        igEndMenuBar;
818     da_igBeginMenu         igBeginMenu;
819     da_igEndMenu           igEndMenu;
820     da_igMenuItem          igMenuItem;
821     da_igMenuItemPtr       igMenuItemPtr;
822 
823     da_igOpenPopup igOpenPopup;
824     da_igBeginPopup igBeginPopup;
825     da_igBeginPopupModal igBeginPopupModal;
826     da_igBeginPopupContextItem igBeginPopupContextItem;
827     da_igBeginPopupContextWindow igBeginPopupContextWindow;
828     da_igBeginPopupContextVoid igBeginPopupContextVoid;
829     da_igEndPopup igEndPopup;
830     da_igIsPopupOpen igIsPopupOpen;
831     da_igCloseCurrentPopup igCloseCurrentPopup;
832 
833     da_igLogToTTY igLogToTTY;
834     da_igLogToFile igLogToFile;
835     da_igLogToClipboard igLogToClipboard;
836     da_igLogFinish igLogFinish;
837     da_igLogButtons igLogButtons;
838     da_igLogText igLogText;
839 
840     da_igPushClipRect igPushClipRect;
841     da_igPopClipRect igPopClipRect;
842 
843     da_igIsItemHovered igIsItemHovered;
844     da_igIsItemActive igIsItemActive;
845     da_igIsItemClicked igIsItemClicked;
846     da_igIsItemVisible igIsItemVisible;
847     da_igIsAnyItemHovered igIsAnyItemHovered;
848     da_igIsAnyItemActive igIsAnyItemActive;
849     da_igGetItemRectMin igGetItemRectMin;
850     da_igGetItemRectMax igGetItemRectMax;
851     da_igGetItemRectSize igGetItemRectSize;
852     da_igSetItemAllowOverlap igSetItemAllowOverlap;
853     da_igIsWindowFocused igIsWindowFocused;
854     da_igIsWindowHovered igIsWindowHovered;
855     da_igIsAnyWindowHovered igIsAnyWindowHovered;
856     da_igIsRectVisible igIsRectVisible;
857     da_igIsRectVisible2 igIsRectVisible2;
858 
859     da_igGetTime igGetTime;
860     da_igGetFrameCount igGetFrameCount;
861     da_igGetStyleColorName igGetStyleColorName;
862     da_igCalcItemRectClosestPoint igCalcItemRectClosestPoint;
863     da_igCalcTextSize igCalcTextSize;
864     da_igCalcListClipping igCalcListClipping;
865 
866     da_igBeginChildFrame igBeginChildFrame;
867     da_igEndChildFrame igEndChildFrame;
868 
869     da_igColorConvertU32ToFloat4 igColorConvertU32ToFloat4;
870     da_igColorConvertFloat4ToU32 igColorConvertFloat4ToU32;
871     da_igColorConvertRGBtoHSV igColorConvertRGBtoHSV;
872     da_igColorConvertHSVtoRGB igColorConvertHSVtoRGB;
873 
874     da_igGetKeyIndex igGetKeyIndex;
875     da_igIsKeyDown igIsKeyDown;
876     da_igIsKeyPressed igIsKeyPressed;
877     da_igIsKeyReleased igIsKeyReleased;
878     da_igIsMouseDown igIsMouseDown;
879     da_igIsMouseClicked igIsMouseClicked;
880     da_igIsMouseDoubleClicked igIsMouseDoubleClicked;
881     da_igIsMouseReleased igIsMouseReleased;
882     da_igIsMouseDragging igIsMouseDragging;
883     da_igIsMouseHoveringRect igIsMouseHoveringRect;
884     da_igIsMousePosValid igIsMousePosValid;
885     da_igGetMousePos igGetMousePos;
886     da_igGetMousePosOnOpeningCurrentPopup igGetMousePosOnOpeningCurrentPopup;
887     da_igGetMouseDragDelta igGetMouseDragDelta;
888     da_igResetMouseDragDelta igResetMouseDragDelta;
889     da_igGetMouseCursor igGetMouseCursor;
890     da_igSetMouseCursor igSetMouseCursor;
891     da_igCaptureKeyboardFromApp igCaptureKeyboardFromApp;
892     da_igCaptureMouseFromApp igCaptureMouseFromApp;
893 
894     da_igMemAlloc igMemAlloc;
895     da_igMemFree igMemFree;
896     da_igGetClipboardText igGetClipboardText;
897     da_igSetClipboardText igSetClipboardText;
898 
899     da_igGetVersion igGetVersion;
900     da_igCreateContext igCreateContext;
901     da_igDestroyContext igDestroyContext;
902     da_igGetCurrentContext igGetCurrentContext;
903     da_igSetCurrentContext igSetCurrentContext;
904 }
905 
906 __gshared
907 {
908     // ImGuiIO
909     da_ImGuiIO_AddInputCharacter ImGuiIO_AddInputCharacter;
910     da_ImGuiIO_AddInputCharactersUTF8 ImGuiIO_AddInputCharactersUTF8;
911     da_ImGuiIO_ClearInputCharacters ImGuiIO_ClearInputCharacters;
912 
913     // ImGuiTextFilter
914     da_ImGuiTextFilter_Create ImGuiTextFilter_Create;
915     da_ImGuiTextFilter_Destroy ImGuiTextFilter_Destroy;
916     da_ImGuiTextFilter_Clear ImGuiTextFilter_Clear;
917     da_ImGuiTextFilter_Draw ImGuiTextFilter_Draw;
918     da_ImGuiTextFilter_PassFilter ImGuiTextFilter_PassFilter;
919     da_ImGuiTextFilter_IsActive ImGuiTextFilter_IsActive;
920     da_ImGuiTextFilter_Build ImGuiTextFilter_Build;
921     da_ImGuiTextFilter_GetInputBuf ImGuiTextFilter_GetInputBuf;
922 
923     // ImGuiTextBuffer
924     da_ImGuiTextBuffer_Create ImGuiTextBuffer_Create;
925     da_ImGuiTextBuffer_Destroy ImGuiTextBuffer_Destroy;
926     da_ImGuiTextBuffer_index ImGuiTextBuffer_index;
927     da_ImGuiTextBuffer_begin ImGuiTextBuffer_begin;
928     da_ImGuiTextBuffer_end ImGuiTextBuffer_end;
929     da_ImGuiTextBuffer_size ImGuiTextBuffer_size;
930     da_ImGuiTextBuffer_empty ImGuiTextBuffer_empty;
931     da_ImGuiTextBuffer_clear ImGuiTextBuffer_clear;
932     da_ImGuiTextBuffer_c_str ImGuiTextBuffer_c_str;
933     da_ImGuiTextBuffer_appendf ImGuiTextBuffer_appendf;
934     da_ImGuiTextBuffer_appendfv ImGuiTextBuffer_appendfv;
935 
936     // ImGuiStorage
937     da_ImGuiStorage_Create ImGuiStorage_Create;
938     da_ImGuiStorage_Destroy ImGuiStorage_Destroy;
939     da_ImGuiStorage_Clear ImGuiStorage_Clear;
940     da_ImGuiStorage_GetInt ImGuiStorage_GetInt;
941     da_ImGuiStorage_SetInt ImGuiStorage_SetInt;
942     da_ImGuiStorage_GetBool ImGuiStorage_GetBool;
943     da_ImGuiStorage_SetBool ImGuiStorage_SetBool;
944     da_ImGuiStorage_GetFloat ImGuiStorage_GetFloat;
945     da_ImGuiStorage_SetFloat ImGuiStorage_SetFloat;
946     da_ImGuiStorage_GetVoidPtr ImGuiStorage_GetVoidPtr;
947     da_ImGuiStorage_SetVoidPtr ImGuiStorage_SetVoidPtr;
948     da_ImGuiStorage_GetIntRef ImGuiStorage_GetIntRef;
949     da_ImGuiStorage_GetBoolRef ImGuiStorage_GetBoolRef;
950     da_ImGuiStorage_GetFloatRef ImGuiStorage_GetFloatRef;
951     da_ImGuiStorage_GetVoidPtrRef ImGuiStorage_GetVoidPtrRef;
952     da_ImGuiStorage_SetAllInt ImGuiStorage_SetAllInt;
953 
954     // ImGuiTextEditCallbackData
955     da_ImGuiTextEditCallbackData_DeleteChars ImGuiTextEditCallbackData_DeleteChars;
956     da_ImGuiTextEditCallbackData_InsertChars ImGuiTextEditCallbackData_InsertChars;
957     da_ImGuiTextEditCallbackData_HasSelection ImGuiTextEditCallbackData_HasSelection;
958 
959     // ImGuiListClipper
960     da_ImGuiListClipper_Begin ImGuiListClipper_Begin;
961     da_ImGuiListClipper_End ImGuiListClipper_End;
962     da_ImGuiListClipper_Step ImGuiListClipper_Step;
963     da_ImGuiListClipper_GetDisplayStart ImGuiListClipper_GetDisplayStart;
964     da_ImGuiListClipper_GetDisplayEnd ImGuiListClipper_GetDisplayEnd;
965 
966     // ImDrawList
967     da_ImDrawList_GetVertexBufferSize ImDrawList_GetVertexBufferSize;
968     da_ImDrawList_GetVertexPtr ImDrawList_GetVertexPtr;
969     da_ImDrawList_GetIndexBufferSize ImDrawList_GetIndexBufferSize;
970     da_ImDrawList_GetIndexPtr ImDrawList_GetIndexPtr;
971     da_ImDrawList_GetCmdSize ImDrawList_GetCmdSize;
972     da_ImDrawList_GetCmdPtr ImDrawList_GetCmdPtr;
973     da_ImDrawList_Clear ImDrawList_Clear;
974     da_ImDrawList_ClearFreeMemory ImDrawList_ClearFreeMemory;
975     da_ImDrawList_PushClipRect ImDrawList_PushClipRect;
976     da_ImDrawList_PushClipRectFullScreen ImDrawList_PushClipRectFullScreen;
977     da_ImDrawList_PopClipRect ImDrawList_PopClipRect;
978     da_ImDrawList_PushTextureID ImDrawList_PushTextureID;
979     da_ImDrawList_PopTextureID ImDrawList_PopTextureID;
980     da_ImDrawList_GetClipRectMin ImDrawList_GetClipRectMin;
981     da_ImDrawList_GetClipRectMax ImDrawList_GetClipRectMax;
982     da_ImDrawList_AddLine ImDrawList_AddLine;
983     da_ImDrawList_AddRect ImDrawList_AddRect;
984     da_ImDrawList_AddRectFilled ImDrawList_AddRectFilled;
985     da_ImDrawList_AddRectFilledMultiColor ImDrawList_AddRectFilledMultiColor;
986     da_ImDrawList_AddQuad ImDrawList_AddQuad;
987     da_ImDrawList_AddQuadFilled ImDrawList_AddQuadFilled;
988     da_ImDrawList_AddTriangle ImDrawList_AddTriangle;
989     da_ImDrawList_AddTriangleFilled ImDrawList_AddTriangleFilled;
990     da_ImDrawList_AddCircle ImDrawList_AddCircle;
991     da_ImDrawList_AddCircleFilled ImDrawList_AddCircleFilled;
992     da_ImDrawList_AddText ImDrawList_AddText;
993     da_ImDrawList_AddTextExt ImDrawList_AddTextExt;
994     da_ImDrawList_AddImage ImDrawList_AddImage;
995     da_ImDrawList_AddImageQuad ImDrawList_AddImageQuad;
996     da_ImDrawList_AddPolyline ImDrawList_AddPolyline;
997     da_ImDrawList_AddConvexPolyFilled ImDrawList_AddConvexPolyFilled;
998     da_ImDrawList_AddBezierCurve ImDrawList_AddBezierCurve;
999     da_ImDrawList_PathClear ImDrawList_PathClear;
1000     da_ImDrawList_PathLineTo ImDrawList_PathLineTo;
1001     da_ImDrawList_PathLineToMergeDuplicate ImDrawList_PathLineToMergeDuplicate;
1002     da_ImDrawList_PathFillConvex ImDrawList_PathFillConvex;
1003     da_ImDrawList_PathStroke ImDrawList_PathStroke;
1004     da_ImDrawList_PathArcTo ImDrawList_PathArcTo;
1005     da_ImDrawList_PathArcToFast ImDrawList_PathArcToFast;
1006     da_ImDrawList_PathBezierCurveTo ImDrawList_PathBezierCurveTo;
1007     da_ImDrawList_PathRect ImDrawList_PathRect;
1008     da_ImDrawList_ChannelsSplit ImDrawList_ChannelsSplit;
1009     da_ImDrawList_ChannelsMerge ImDrawList_ChannelsMerge;
1010     da_ImDrawList_ChannelsSetCurrent ImDrawList_ChannelsSetCurrent;
1011     da_ImDrawList_AddCallback ImDrawList_AddCallback;
1012     da_ImDrawList_AddDrawCmd ImDrawList_AddDrawCmd;
1013     da_ImDrawList_PrimReserve ImDrawList_PrimReserve;
1014     da_ImDrawList_PrimRect ImDrawList_PrimRect;
1015     da_ImDrawList_PrimRectUV ImDrawList_PrimRectUV;
1016     da_ImDrawList_PrimQuadUV ImDrawList_PrimQuadUV;
1017     da_ImDrawList_PrimVtx ImDrawList_PrimVtx;
1018     da_ImDrawList_PrimWriteVtx ImDrawList_PrimWriteVtx;
1019     da_ImDrawList_PrimWriteIdx ImDrawList_PrimWriteIdx;
1020     da_ImDrawList_UpdateClipRect ImDrawList_UpdateClipRect;
1021     da_ImDrawList_UpdateTextureID ImDrawList_UpdateTextureID;
1022 
1023     // ImDrawData
1024     da_ImDrawData_DeIndexAllBuffers ImDrawData_DeIndexAllBuffers;
1025     da_ImDrawData_ScaleClipRects ImDrawData_ScaleClipRects;
1026 
1027     // ImFontAtlas
1028     da_ImFontAtlas_AddFont                  ImFontAtlas_AddFont;
1029     da_ImFontAtlas_AddFontDefault           ImFontAtlas_AddFontDefault;
1030     da_ImFontAtlas_AddFontFromFileTTF       ImFontAtlas_AddFontFromFileTTF;
1031     da_ImFontAtlas_AddFontFromMemoryTTF     ImFontAtlas_AddFontFromMemoryTTF;
1032     da_ImFontAtlas_AddFontFromMemoryCompressedTTF ImFontAtlas_AddFontFromMemoryCompressedTTF;
1033     da_ImFontAtlas_AddFontFromMemoryCompressedBase85TTF ImFontAtlas_AddFontFromMemoryCompressedBase85TTF;
1034     da_ImFontAtlas_ClearTexData             ImFontAtlas_ClearTexData;
1035     da_ImFontAtlas_ClearInputData           ImFontAtlas_ClearInputData;
1036     da_ImFontAtlas_ClearFonts               ImFontAtlas_ClearFonts;
1037     da_ImFontAtlas_Clear                    ImFontAtlas_Clear;
1038 
1039     da_ImFontAtlas_GetTexDataAsAlpha8       ImFontAtlas_GetTexDataAsAlpha8;
1040     da_ImFontAtlas_GetTexDataAsRGBA32       ImFontAtlas_GetTexDataAsRGBA32;
1041     da_ImFontAtlas_SetTexID                 ImFontAtlas_SetTexID;
1042 
1043     da_ImFontAtlas_GetGlyphRangesDefault    ImFontAtlas_GetGlyphRangesDefault;
1044     da_ImFontAtlas_GetGlyphRangesKorean     ImFontAtlas_GetGlyphRangesKorean;
1045     da_ImFontAtlas_GetGlyphRangesJapanese   ImFontAtlas_GetGlyphRangesJapanese;
1046     da_ImFontAtlas_GetGlyphRangesChinese    ImFontAtlas_GetGlyphRangesChinese;
1047     da_ImFontAtlas_GetGlyphRangesCyrillic   ImFontAtlas_GetGlyphRangesCyrillic;
1048     da_ImFontAtlas_GetGlyphRangesThai       ImFontAtlas_GetGlyphRangesThai;
1049 
1050     da_ImFontAtlas_GetTexID                 ImFontAtlas_GetTexID;
1051     da_ImFontAtlas_GetTexPixelsAlpha8       ImFontAtlas_GetTexPixelsAlpha8;
1052     da_ImFontAtlas_GetTexPixelsRGBA32       ImFontAtlas_GetTexPixelsRGBA32;
1053     da_ImFontAtlas_GetTexWidth              ImFontAtlas_GetTexWidth;
1054     da_ImFontAtlas_GetTexHeight             ImFontAtlas_GetTexHeight;
1055     da_ImFontAtlas_GetTexDesiredWidth       ImFontAtlas_GetTexDesiredWidth;
1056     da_ImFontAtlas_SetTexDesiredWidth       ImFontAtlas_SetTexDesiredWidth;
1057     da_ImFontAtlas_GetTexGlyphPadding       ImFontAtlas_GetTexGlyphPadding;
1058     da_ImFontAtlas_SetTexGlyphPadding       ImFontAtlas_SetTexGlyphPadding;
1059     da_ImFontAtlas_GetTexUvWhitePixel       ImFontAtlas_GetTexUvWhitePixel;
1060 
1061     // ImFontAtlas::Fonts;
1062     da_ImFontAtlas_Fonts_size               ImFontAtlas_Fonts_size;
1063     da_ImFontAtlas_Fonts_index              ImFontAtlas_Fonts_index;
1064 
1065     // ImFont
1066     da_ImFont_GetFontSize                   ImFont_GetFontSize;
1067     da_ImFont_SetFontSize                   ImFont_SetFontSize;
1068     da_ImFont_GetScale                      ImFont_GetScale;
1069     da_ImFont_SetScale                      ImFont_SetScale;
1070     da_ImFont_GetDisplayOffset              ImFont_GetDisplayOffset;
1071     da_ImFont_GetFallbackGlyph              ImFont_GetFallbackGlyph;
1072     da_ImFont_SetFallbackGlyph              ImFont_SetFallbackGlyph;
1073     da_ImFont_GetFallbackAdvanceX           ImFont_GetFallbackAdvanceX;
1074     da_ImFont_GetFallbackChar               ImFont_GetFallbackChar;
1075     da_ImFont_GetConfigDataCount            ImFont_GetConfigDataCount;
1076     da_ImFont_GetConfigData                 ImFont_GetConfigData;
1077     da_ImFont_GetContainerAtlas             ImFont_GetContainerAtlas;
1078     da_ImFont_GetAscent                     ImFont_GetAscent;
1079     da_ImFont_GetDescent                    ImFont_GetDescent;
1080     da_ImFont_GetMetricsTotalSurface        ImFont_GetMetricsTotalSurface;
1081 
1082     da_ImFont_ClearOutputData               ImFont_ClearOutputData;
1083     da_ImFont_BuildLookupTable              ImFont_BuildLookupTable;
1084     da_ImFont_FindGlyph                     ImFont_FindGlyph;
1085     da_ImFont_SetFallbackChar               ImFont_SetFallbackChar;
1086     da_ImFont_GetCharAdvance                ImFont_GetCharAdvance;
1087     da_ImFont_IsLoaded                      ImFont_IsLoaded;
1088     da_ImFont_CalcTextSizeA                 ImFont_CalcTextSizeA;
1089     da_ImFont_CalcWordWrapPositionA         ImFont_CalcWordWrapPositionA;
1090     da_ImFont_RenderChar                    ImFont_RenderChar;
1091     da_ImFont_RenderText                    ImFont_RenderText;
1092 
1093     // ImFont::Glyph
1094     da_ImFont_Glyphs_size                   ImFont_Glyphs_size;
1095     da_ImFont_Glyphs_index                  ImFont_Glyphs_index;
1096 
1097     // ImFont::IndexXAdvance
1098     da_ImFont_IndexXAdvance_size            ImFont_IndexXAdvance_size;
1099     da_ImFont_IndexXAdvance_index           ImFont_IndexXAdvance_index;
1100 
1101     // ImFont::IndexLookup
1102     da_ImFont_IndexLookup_size              ImFont_IndexLookup_size;
1103     da_ImFont_IndexLookup_index             ImFont_IndexLookup_index;
1104 
1105 }
1106 
1107 // obsolete types for the compatibility
1108 alias igPushIdStr = igPushIDStr;
1109 alias igPushIdStrRange = igPushIDStrRange;
1110 alias igPushIdPtr = igPushIDPtr;
1111 alias igPushIdInt = igPushIDInt;
1112 alias igPopId = igPopID;
1113 alias igGetIdStr = igGetIDStr;
1114 alias igGetIdStrRange = igGetIDStrRange;
1115 alias igGetIdPtr = igGetIDPtr;