1 /*
2  * Copyright (c) 2015 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', 'DerelictILUT', 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.imgui;
33 
34 public
35 {
36     import derelict.imgui.types;
37     import derelict.imgui.funcs;
38 }
39 
40 private
41 {
42     import derelict.util.loader;
43 
44     version(darwin)
45         version = MacOSX;
46     version(OSX)
47         version = MacOSX;
48 }
49 
50 private
51 {
52     import derelict.util.loader;
53     import derelict.util.system;
54 
55     static if(Derelict_OS_Windows)
56         enum libNames = "cimgui.dll";
57     else static if (Derelict_OS_Mac)
58         enum libNames = "cimgui.dylib";
59     else static if (Derelict_OS_Linux)
60         enum libNames = "cimgui.so";
61     else
62         static assert(0, "Need to implement imgui libNames for this operating system.");
63 }
64 
65 final class DerelictImguiLoader : SharedLibLoader
66 {
67     protected
68     {
69         override void loadSymbols()
70         {
71             {
72                 //search: (ig\S+)
73                 //replace: bindFunc\(cast\(void**\)&$1, "$1"\);
74 
75                 bindFunc(cast(void**)&igGetIO, "igGetIO");
76                 bindFunc(cast(void**)&igGetStyle, "igGetStyle");
77                 bindFunc(cast(void**)&igGetDrawData, "igGetDrawData");
78                 bindFunc(cast(void**)&igNewFrame, "igNewFrame");
79                 bindFunc(cast(void**)&igRender, "igRender");
80                 bindFunc(cast(void**)&igShutdown, "igShutdown");
81                 bindFunc(cast(void**)&igShowUserGuide, "igShowUserGuide");
82                 bindFunc(cast(void**)&igShowStyleEditor, "igShowStyleEditor");
83                 bindFunc(cast(void**)&igShowTestWindow, "igShowTestWindow");
84                 bindFunc(cast(void**)&igShowMetricsWindow, "igShowMetricsWindow");
85 
86                 // Window
87                 bindFunc(cast(void**)&igBegin, "igBegin");
88                 bindFunc(cast(void**)&igBegin2, "igBegin2");
89                 bindFunc(cast(void**)&igEnd, "igEnd");
90                 bindFunc(cast(void**)&igBeginChild, "igBeginChild");
91                 bindFunc(cast(void**)&igBeginChildEx, "igBeginChildEx");
92                 bindFunc(cast(void**)&igEndChild, "igEndChild");
93                 bindFunc(cast(void**)&igGetContentRegionMax, "igGetContentRegionMax");
94 				bindFunc(cast(void**)&igGetContentRegionAvail, "igGetContentRegionAvail");
95                 bindFunc(cast(void**)&igGetContentRegionAvailWidth, "igGetContentRegionAvailWidth");
96                 bindFunc(cast(void**)&igGetWindowContentRegionMin, "igGetWindowContentRegionMin");
97                 bindFunc(cast(void**)&igGetWindowContentRegionMax, "igGetWindowContentRegionMax");
98                 bindFunc(cast(void**)&igGetWindowContentRegionWidth, "igGetWindowContentRegionWidth");
99                 bindFunc(cast(void**)&igGetWindowDrawList, "igGetWindowDrawList");
100                 bindFunc(cast(void**)&igGetWindowFont, "igGetWindowFont");
101                 bindFunc(cast(void**)&igGetWindowFontSize, "igGetWindowFontSize");
102                 bindFunc(cast(void**)&igSetWindowFontScale, "igSetWindowFontScale");
103                 bindFunc(cast(void**)&igGetWindowPos, "igGetWindowPos");
104                 bindFunc(cast(void**)&igGetWindowSize, "igGetWindowSize");
105                 bindFunc(cast(void**)&igGetWindowWidth, "igGetWindowWidth");
106                 bindFunc(cast(void**)&igGetWindowHeight, "igGetWindowHeight");
107                 bindFunc(cast(void**)&igIsWindowCollapsed, "igIsWindowCollapsed");
108 
109                 bindFunc(cast(void**)&igSetNextWindowPos, "igSetNextWindowPos");
110                 bindFunc(cast(void**)&igSetNextWindowPosCenter, "igSetNextWindowPosCenter");
111                 bindFunc(cast(void**)&igSetNextWindowSize, "igSetNextWindowSize");
112                 bindFunc(cast(void**)&igSetNextWindowCollapsed, "igSetNextWindowCollapsed");
113                 bindFunc(cast(void**)&igSetNextWindowFocus, "igSetNextWindowFocus");
114                 bindFunc(cast(void**)&igSetWindowPos, "igSetWindowPos");
115                 bindFunc(cast(void**)&igSetWindowSize, "igSetWindowSize");
116                 bindFunc(cast(void**)&igSetNextWindowContentSize, "igSetNextWindowContentSize");
117                 bindFunc(cast(void**)&igSetNextWindowContentWidth, "igSetNextWindowContentWidth");
118                 bindFunc(cast(void**)&igSetWindowCollapsed, "igSetWindowCollapsed");
119                 bindFunc(cast(void**)&igSetWindowFocus, "igSetWindowFocus");
120                 bindFunc(cast(void**)&igSetWindowPosByName, "igSetWindowPosByName");
121                 bindFunc(cast(void**)&igSetWindowSize2, "igSetWindowSize2");
122                 bindFunc(cast(void**)&igSetWindowCollapsed2, "igSetWindowCollapsed2");
123                 bindFunc(cast(void**)&igSetWindowFocus2, "igSetWindowFocus2");
124 
125                 bindFunc(cast(void**)&igGetScrollX, "igGetScrollX");
126                 bindFunc(cast(void**)&igGetScrollY, "igGetScrollY");
127                 bindFunc(cast(void**)&igGetScrollMaxX, "igGetScrollMaxX");
128                 bindFunc(cast(void**)&igGetScrollMaxY, "igGetScrollMaxY");
129                 bindFunc(cast(void**)&igSetScrollX, "igSetScrollX");
130                 bindFunc(cast(void**)&igSetScrollY, "igSetScrollY");
131                 bindFunc(cast(void**)&igSetScrollHere, "igSetScrollHere");
132                 bindFunc(cast(void**)&igSetScrollFromPosY, "igSetScrollFromPosY");
133                 bindFunc(cast(void**)&igSetKeyboardFocusHere, "igSetKeyboardFocusHere");
134                 bindFunc(cast(void**)&igSetStateStorage, "igSetStateStorage");
135                 bindFunc(cast(void**)&igGetStateStorage, "igGetStateStorage");
136 
137                 bindFunc(cast(void**)&igPushFont, "igPushFont");
138                 bindFunc(cast(void**)&igPopFont, "igPopFont");
139                 bindFunc(cast(void**)&igPushStyleColor, "igPushStyleColor");
140                 bindFunc(cast(void**)&igPopStyleColor, "igPopStyleColor");
141                 bindFunc(cast(void**)&igPushStyleVar, "igPushStyleVar");
142                 bindFunc(cast(void**)&igPushStyleVarVec, "igPushStyleVarVec");
143                 bindFunc(cast(void**)&igPopStyleVar, "igPopStyleVar");
144 
145                 bindFunc(cast(void**)&igPushItemWidth, "igPushItemWidth");
146                 bindFunc(cast(void**)&igPopItemWidth, "igPopItemWidth");
147                 bindFunc(cast(void**)&igCalcItemWidth, "igCalcItemWidth");
148                 bindFunc(cast(void**)&igPushAllowKeyboardFocus, "igPushAllowKeyboardFocus");
149                 bindFunc(cast(void**)&igPopAllowKeyboardFocus, "igPopAllowKeyboardFocus");
150                 bindFunc(cast(void**)&igPushTextWrapPos, "igPushTextWrapPos");
151                 bindFunc(cast(void**)&igPopTextWrapPos, "igPopTextWrapPos");
152                 bindFunc(cast(void**)&igPushButtonRepeat, "igPushButtonRepeat");
153                 bindFunc(cast(void**)&igPopButtonRepeat, "igPopButtonRepeat");
154 
155                 bindFunc(cast(void**)&igSetTooltip, "igSetTooltip");
156                 bindFunc(cast(void**)&igSetTooltipV, "igSetTooltipV");
157                 bindFunc(cast(void**)&igBeginTooltip, "igBeginTooltip");
158                 bindFunc(cast(void**)&igEndTooltip, "igEndTooltip");
159 
160                 bindFunc(cast(void**)&igOpenPopup, "igOpenPopup");
161                 bindFunc(cast(void**)&igBeginPopup, "igBeginPopup");
162                 bindFunc(cast(void**)&igBeginPopupModal, "igBeginPopupModal");
163                 bindFunc(cast(void**)&igBeginPopupContextItem, "igBeginPopupContextItem");
164                 bindFunc(cast(void**)&igBeginPopupContextWindow, "igBeginPopupContextWindow");
165                 bindFunc(cast(void**)&igBeginPopupContextVoid, "igBeginPopupContextVoid");
166                 bindFunc(cast(void**)&igEndPopup, "igEndPopup");
167                 bindFunc(cast(void**)&igCloseCurrentPopup, "igCloseCurrentPopup");
168 
169                 bindFunc(cast(void**)&igBeginGroup, "igBeginGroup");
170                 bindFunc(cast(void**)&igEndGroup, "igEndGroup");
171                 bindFunc(cast(void**)&igSeparator, "igSeparator");
172                 bindFunc(cast(void**)&igSameLine, "igSameLine");
173                 bindFunc(cast(void**)&igSpacing, "igSpacing");
174                 bindFunc(cast(void**)&igDummy, "igDummy");
175                 bindFunc(cast(void**)&igIndent, "igIndent");
176                 bindFunc(cast(void**)&igUnindent, "igUnindent");
177                 bindFunc(cast(void**)&igColumns, "igColumns");
178                 bindFunc(cast(void**)&igNextColumn, "igNextColumn");
179                 bindFunc(cast(void**)&igGetColumnIndex, "igGetColumnIndex");
180                 bindFunc(cast(void**)&igGetColumnOffset, "igGetColumnOffset");
181                 bindFunc(cast(void**)&igSetColumnOffset, "igSetColumnOffset");
182                 bindFunc(cast(void**)&igGetColumnWidth, "igGetColumnWidth");
183                 bindFunc(cast(void**)&igGetColumnsCount, "igGetColumnsCount");
184                 bindFunc(cast(void**)&igGetCursorPos, "igGetCursorPos");
185                 bindFunc(cast(void**)&igGetCursorPosX, "igGetCursorPosX");
186                 bindFunc(cast(void**)&igGetCursorPosY, "igGetCursorPosY");
187                 bindFunc(cast(void**)&igSetCursorPos, "igSetCursorPos");
188                 bindFunc(cast(void**)&igSetCursorPosX, "igSetCursorPosX");
189                 bindFunc(cast(void**)&igSetCursorPosY, "igSetCursorPosY");
190                 bindFunc(cast(void**)&igGetCursorStartPos, "igGetCursorStartPos");
191                 bindFunc(cast(void**)&igGetCursorScreenPos, "igGetCursorScreenPos");
192                 bindFunc(cast(void**)&igSetCursorScreenPos, "igSetCursorScreenPos");
193                 bindFunc(cast(void**)&igAlignFirstTextHeightToWidgets, "igAlignFirstTextHeightToWidgets");
194                 bindFunc(cast(void**)&igGetTextLineHeight, "igGetTextLineHeight");
195                 bindFunc(cast(void**)&igGetTextLineHeightWithSpacing, "igGetTextLineHeightWithSpacing");
196                 bindFunc(cast(void**)&igGetItemsLineHeightWithSpacing, "igGetItemsLineHeightWithSpacing");
197 
198                 bindFunc(cast(void**)&igPushIdStr, "igPushIdStr");
199                 bindFunc(cast(void**)&igPushIdStrRange, "igPushIdStrRange");
200                 bindFunc(cast(void**)&igPushIdPtr, "igPushIdPtr");
201                 bindFunc(cast(void**)&igPushIdInt, "igPushIdInt");
202                 bindFunc(cast(void**)&igPopId, "igPopId");
203                 bindFunc(cast(void**)&igGetIdStr, "igGetIdStr");
204                 bindFunc(cast(void**)&igGetIdStrRange, "igGetIdStrRange");
205                 bindFunc(cast(void**)&igGetIdPtr, "igGetIdPtr");
206 
207                 bindFunc(cast(void**)&igText, "igText");
208                 bindFunc(cast(void**)&igTextV, "igTextV");
209                 bindFunc(cast(void**)&igTextColored, "igTextColored");
210                 bindFunc(cast(void**)&igTextColoredV, "igTextColoredV");
211                 bindFunc(cast(void**)&igTextDisabled, "igTextDisabled");
212                 bindFunc(cast(void**)&igTextDisabledV, "igTextDisabledV");
213                 bindFunc(cast(void**)&igTextWrapped, "igTextWrapped");
214                 bindFunc(cast(void**)&igTextWrappedV, "igTextWrappedV");
215                 bindFunc(cast(void**)&igTextUnformatted, "igTextUnformatted");
216                 bindFunc(cast(void**)&igLabelText, "igLabelText");
217                 bindFunc(cast(void**)&igLabelTextV, "igLabelTextV");
218                 bindFunc(cast(void**)&igBullet, "igBullet");
219                 bindFunc(cast(void**)&igBulletText, "igBulletText");
220                 bindFunc(cast(void**)&igBulletTextV, "igBulletTextV");
221                 bindFunc(cast(void**)&igButton, "igButton");
222                 bindFunc(cast(void**)&igSmallButton, "igSmallButton");
223                 bindFunc(cast(void**)&igInvisibleButton, "igInvisibleButton");
224                 bindFunc(cast(void**)&igImage, "igImage");
225                 bindFunc(cast(void**)&igImageButton, "igImageButton");
226                 bindFunc(cast(void**)&igCollapsingHeader, "igCollapsingHeader");
227                 bindFunc(cast(void**)&igCheckbox, "igCheckbox");
228                 bindFunc(cast(void**)&igCheckboxFlags, "igCheckboxFlags");
229                 bindFunc(cast(void**)&igRadioButtonBool, "igRadioButtonBool");
230                 bindFunc(cast(void**)&igRadioButton, "igRadioButton");
231                 bindFunc(cast(void**)&igCombo, "igCombo");
232                 bindFunc(cast(void**)&igCombo2, "igCombo2");
233                 bindFunc(cast(void**)&igCombo3, "igCombo3");
234                 bindFunc(cast(void**)&igColorButton, "igColorButton");
235                 bindFunc(cast(void**)&igColorEdit3, "igColorEdit3");
236                 bindFunc(cast(void**)&igColorEdit4, "igColorEdit4");
237                 bindFunc(cast(void**)&igColorEditMode, "igColorEditMode");
238                 bindFunc(cast(void**)&igPlotLines, "igPlotLines");
239                 bindFunc(cast(void**)&igPlotLines2, "igPlotLines2");
240                 bindFunc(cast(void**)&igPlotHistogram, "igPlotHistogram");
241                 bindFunc(cast(void**)&igPlotHistogram2, "igPlotHistogram2");
242 
243                 bindFunc(cast(void**)&igSliderFloat, "igSliderFloat");
244                 bindFunc(cast(void**)&igSliderFloat2, "igSliderFloat2");
245                 bindFunc(cast(void**)&igSliderFloat3, "igSliderFloat3");
246                 bindFunc(cast(void**)&igSliderFloat4, "igSliderFloat4");
247                 bindFunc(cast(void**)&igSliderAngle, "igSliderAngle");
248                 bindFunc(cast(void**)&igSliderInt, "igSliderInt");
249                 bindFunc(cast(void**)&igSliderInt2, "igSliderInt2");
250                 bindFunc(cast(void**)&igSliderInt3, "igSliderInt3");
251                 bindFunc(cast(void**)&igSliderInt4, "igSliderInt4");
252                 bindFunc(cast(void**)&igVSliderFloat, "igVSliderFloat");
253                 bindFunc(cast(void**)&igVSliderInt, "igVSliderInt");
254 
255                 bindFunc(cast(void**)&igDragFloat, "igDragFloat");
256                 bindFunc(cast(void**)&igDragFloat2, "igDragFloat2");
257                 bindFunc(cast(void**)&igDragFloat3, "igDragFloat3");
258                 bindFunc(cast(void**)&igDragFloat4, "igDragFloat4");
259                 bindFunc(cast(void**)&igDragFloatRange2, "igDragFloatRange2");
260                 bindFunc(cast(void**)&igDragInt, "igDragInt");
261                 bindFunc(cast(void**)&igDragInt2, "igDragInt2");
262                 bindFunc(cast(void**)&igDragInt3, "igDragInt3");
263                 bindFunc(cast(void**)&igDragInt4, "igDragInt4");
264                 bindFunc(cast(void**)&igDragIntRange2, "igDragIntRange2");
265 
266                 bindFunc(cast(void**)&igInputText, "igInputText");
267                 bindFunc(cast(void**)&igInputTextMultiline, "igInputTextMultiline");
268                 bindFunc(cast(void**)&igInputFloat, "igInputFloat");
269                 bindFunc(cast(void**)&igInputFloat2, "igInputFloat2");
270                 bindFunc(cast(void**)&igInputFloat3, "igInputFloat3");
271                 bindFunc(cast(void**)&igInputFloat4, "igInputFloat4");
272                 bindFunc(cast(void**)&igInputInt, "igInputInt");
273                 bindFunc(cast(void**)&igInputInt2, "igInputInt2");
274                 bindFunc(cast(void**)&igInputInt3, "igInputInt3");
275                 bindFunc(cast(void**)&igInputInt4, "igInputInt4");
276 
277                 bindFunc(cast(void**)&igTreeNode, "igTreeNode");
278                 bindFunc(cast(void**)&igTreeNodeStr, "igTreeNodeStr");
279                 bindFunc(cast(void**)&igTreeNodePtr, "igTreeNodePtr");
280                 bindFunc(cast(void**)&igTreeNodeStrV, "igTreeNodeStrV");
281                 bindFunc(cast(void**)&igTreeNodePtrV, "igTreeNodePtrV");
282                 bindFunc(cast(void**)&igTreePushStr, "igTreePushStr");
283                 bindFunc(cast(void**)&igTreePushPtr, "igTreePushPtr");
284                 bindFunc(cast(void**)&igTreePop, "igTreePop");
285                 bindFunc(cast(void**)&igSetNextTreeNodeOpened, "igSetNextTreeNodeOpened");
286 
287                 bindFunc(cast(void**)&igSelectable, "igSelectable");
288                 bindFunc(cast(void**)&igSelectableEx, "igSelectableEx");
289                 bindFunc(cast(void**)&igListBox, "igListBox");
290                 bindFunc(cast(void**)&igListBox2, "igListBox2");
291                 bindFunc(cast(void**)&igListBoxHeader, "igListBoxHeader");
292                 bindFunc(cast(void**)&igListBoxHeader2, "igListBoxHeader2");
293                 bindFunc(cast(void**)&igListBoxFooter, "igListBoxFooter");
294 
295                 bindFunc(cast(void**)&igBeginMainMenuBar, "igBeginMainMenuBar");
296                 bindFunc(cast(void**)&igEndMainMenuBar, "igEndMainMenuBar");
297                 bindFunc(cast(void**)&igBeginMenuBar, "igBeginMenuBar");
298                 bindFunc(cast(void**)&igEndMenuBar, "igEndMenuBar");
299                 bindFunc(cast(void**)&igBeginMenu, "igBeginMenu");
300                 bindFunc(cast(void**)&igEndMenu, "igEndMenu");
301                 bindFunc(cast(void**)&igMenuItem, "igMenuItem");
302                 bindFunc(cast(void**)&igMenuItemPtr, "igMenuItemPtr");
303 
304                 bindFunc(cast(void**)&igValueBool, "igValueBool");
305                 bindFunc(cast(void**)&igValueInt, "igValueInt");
306                 bindFunc(cast(void**)&igValueUInt, "igValueUInt");
307                 bindFunc(cast(void**)&igValueFloat, "igValueFloat");
308                 bindFunc(cast(void**)&igColor, "igColor");
309                 bindFunc(cast(void**)&igColor2, "igColor2");
310 
311                 bindFunc(cast(void**)&igLogToTTY, "igLogToTTY");
312                 bindFunc(cast(void**)&igLogToFile, "igLogToFile");
313                 bindFunc(cast(void**)&igLogToClipboard, "igLogToClipboard");
314                 bindFunc(cast(void**)&igLogFinish, "igLogFinish");
315                 bindFunc(cast(void**)&igLogButtons, "igLogButtons");
316                 bindFunc(cast(void**)&igLogText, "igLogText");
317 
318                 bindFunc(cast(void**)&igIsItemHovered, "igIsItemHovered");
319                 bindFunc(cast(void**)&igIsItemHoveredRect, "igIsItemHoveredRect");
320                 bindFunc(cast(void**)&igIsItemActive, "igIsItemActive");
321                 bindFunc(cast(void**)&igIsItemVisible, "igIsItemVisible");
322                 bindFunc(cast(void**)&igIsAnyItemHovered, "igIsAnyItemHovered");
323                 bindFunc(cast(void**)&igIsAnyItemActive, "igIsAnyItemActive");
324                 bindFunc(cast(void**)&igGetItemRectMin, "igGetItemRectMin");
325                 bindFunc(cast(void**)&igGetItemRectMax, "igGetItemRectMax");
326                 bindFunc(cast(void**)&igGetItemRectSize, "igGetItemRectSize");
327                 bindFunc(cast(void**)&igIsWindowHovered, "igIsWindowHovered");
328                 bindFunc(cast(void**)&igIsWindowFocused, "igIsWindowFocused");
329                 bindFunc(cast(void**)&igIsRootWindowFocused, "igIsRootWindowFocused");
330                 bindFunc(cast(void**)&igIsRootWindowOrAnyChildFocused, "igIsRootWindowOrAnyChildFocused");
331                 bindFunc(cast(void**)&igIsRectVisible, "igIsRectVisible");
332                 bindFunc(cast(void**)&igIsKeyDown, "igIsKeyDown");
333                 bindFunc(cast(void**)&igIsKeyPressed, "igIsKeyPressed");
334                 bindFunc(cast(void**)&igIsMouseDown, "igIsMouseDown");
335                 bindFunc(cast(void**)&igIsMouseClicked, "igIsMouseClicked");
336                 bindFunc(cast(void**)&igIsMouseDoubleClicked, "igIsMouseDoubleClicked");
337                 bindFunc(cast(void**)&igIsMouseReleased, "igIsMouseReleased");
338                 bindFunc(cast(void**)&igIsMouseHoveringWindow, "igIsMouseHoveringWindow");
339                 bindFunc(cast(void**)&igIsMouseHoveringAnyWindow, "igIsMouseHoveringAnyWindow");
340                 bindFunc(cast(void**)&igIsMouseHoveringRect, "igIsMouseHoveringRect");
341                 bindFunc(cast(void**)&igIsMouseDragging, "igIsMouseDragging");
342                 bindFunc(cast(void**)&igIsPosHoveringAnyWindow, "igIsPosHoveringAnyWindow");
343                 bindFunc(cast(void**)&igGetMousePos, "igGetMousePos");
344                 bindFunc(cast(void**)&igGetMousePosOnOpeningCurrentPopup, "igGetMousePosOnOpeningCurrentPopup");
345                 bindFunc(cast(void**)&igGetMouseDragDelta, "igGetMouseDragDelta");
346                 bindFunc(cast(void**)&igResetMouseDragDelta, "igResetMouseDragDelta");
347                 bindFunc(cast(void**)&igGetMouseCursor, "igGetMouseCursor");
348                 bindFunc(cast(void**)&igSetMouseCursor, "igSetMouseCursor");
349                 bindFunc(cast(void**)&igCaptureKeyboardFromApp, "igCaptureKeyboardFromApp");
350                 bindFunc(cast(void**)&igCaptureMouseFromApp, "igCaptureMouseFromApp");
351 
352                 bindFunc(cast(void**)&igMemAlloc, "igMemAlloc");
353                 bindFunc(cast(void**)&igMemFree, "igMemFree");
354                 bindFunc(cast(void**)&igGetClipboardText, "igGetClipboardText");
355                 bindFunc(cast(void**)&igSetClipboardText, "igSetClipboardText");
356 
357                 bindFunc(cast(void**)&igGetTime, "igGetTime");
358                 bindFunc(cast(void**)&igGetFrameCount, "igGetFrameCount");
359                 bindFunc(cast(void**)&igGetStyleColName, "igGetStyleColName");
360                 bindFunc(cast(void**)&igCalcItemRectClosestPoint, "igCalcItemRectClosestPoint");
361                 bindFunc(cast(void**)&igCalcTextSize, "igCalcTextSize");
362                 bindFunc(cast(void**)&igCalcListClipping, "igCalcListClipping");
363 
364                 bindFunc(cast(void**)&igBeginChildFrame, "igBeginChildFrame");
365                 bindFunc(cast(void**)&igEndChildFrame, "igEndChildFrame");
366 
367 
368                 bindFunc(cast(void**)&igColorConvertU32ToFloat4, "igColorConvertU32ToFloat4");
369                 bindFunc(cast(void**)&igColorConvertFloat4ToU32, "igColorConvertFloat4ToU32");
370                 bindFunc(cast(void**)&igColorConvertRGBtoHSV, "igColorConvertRGBtoHSV");
371                 bindFunc(cast(void**)&igColorConvertHSVtoRGB, "igColorConvertHSVtoRGB");
372 
373                 bindFunc(cast(void**)&igGetVersion, "igGetVersion");
374                 bindFunc(cast(void**)&igGetInternalState, "igGetInternalState");
375                 bindFunc(cast(void**)&igGetInternalStateSize, "igGetInternalStateSize");
376                 bindFunc(cast(void**)&igSetInternalState, "igSetInternalState");
377             }
378 
379             {
380                 bindFunc(cast(void**)&ImFontAtlas_GetTexDataAsRGBA32, "ImFontAtlas_GetTexDataAsRGBA32");
381                 bindFunc(cast(void**)&ImFontAtlas_GetTexDataAsAlpha8, "ImFontAtlas_GetTexDataAsAlpha8");
382                 bindFunc(cast(void**)&ImFontAtlas_SetTexID, "ImFontAtlas_SetTexID");
383                 bindFunc(cast(void**)&ImFontAtlas_AddFont, "ImFontAtlas_AddFont");
384                 bindFunc(cast(void**)&ImFontAtlas_AddFontDefault, "ImFontAtlas_AddFontDefault");
385                 bindFunc(cast(void**)&ImFontAtlas_AddFontFromFileTTF, "ImFontAtlas_AddFontFromFileTTF");
386                 bindFunc(cast(void**)&ImFontAtlas_AddFontFromMemoryTTF, "ImFontAtlas_AddFontFromMemoryTTF");
387                 bindFunc(cast(void**)&ImFontAtlas_AddFontFromMemoryCompressedTTF, "ImFontAtlas_AddFontFromMemoryCompressedTTF");
388 				bindFunc(cast(void**)&ImFontAtlas_AddFontFromMemoryCompressedBase85TTF, "ImFontAtlas_AddFontFromMemoryCompressedBase85TTF");
389                 bindFunc(cast(void**)&ImFontAtlas_ClearTexData, "ImFontAtlas_ClearTexData");
390                 bindFunc(cast(void**)&ImFontAtlas_Clear, "ImFontAtlas_Clear");
391             }
392 
393             bindFunc(cast(void**)&ImDrawList_GetVertexBufferSize, "ImDrawList_GetVertexBufferSize");
394             bindFunc(cast(void**)&ImDrawList_GetVertexPtr, "ImDrawList_GetVertexPtr");
395             bindFunc(cast(void**)&ImDrawList_GetIndexBufferSize, "ImDrawList_GetIndexBufferSize");
396             bindFunc(cast(void**)&ImDrawList_GetIndexPtr, "ImDrawList_GetIndexPtr");
397             bindFunc(cast(void**)&ImDrawList_GetCmdSize, "ImDrawList_GetCmdSize");
398             bindFunc(cast(void**)&ImDrawList_GetCmdPtr, "ImDrawList_GetCmdPtr");
399 
400 			bindFunc(cast(void**)&ImDrawList_Clear, "ImDrawList_Clear");
401 			bindFunc(cast(void**)&ImDrawList_ClearFreeMemory, "ImDrawList_ClearFreeMemory");
402 			bindFunc(cast(void**)&ImDrawList_PushClipRect, "ImDrawList_PushClipRect");
403 			bindFunc(cast(void**)&ImDrawList_PushClipRectFullScreen, "ImDrawList_PushClipRectFullScreen");
404 			bindFunc(cast(void**)&ImDrawList_PopClipRect, "ImDrawList_PopClipRect");
405 			bindFunc(cast(void**)&ImDrawList_PushTextureID, "ImDrawList_PushTextureID");
406 			bindFunc(cast(void**)&ImDrawList_PopTextureID, "ImDrawList_PopTextureID");
407 			bindFunc(cast(void**)&ImDrawList_AddLine, "ImDrawList_AddLine");
408 			bindFunc(cast(void**)&ImDrawList_AddRect, "ImDrawList_AddRect");
409 			bindFunc(cast(void**)&ImDrawList_AddRectFilled, "ImDrawList_AddRectFilled");
410 			bindFunc(cast(void**)&ImDrawList_AddRectFilledMultiColor, "ImDrawList_AddRectFilledMultiColor");
411 			bindFunc(cast(void**)&ImDrawList_AddTriangleFilled, "ImDrawList_AddTriangleFilled");
412 			bindFunc(cast(void**)&ImDrawList_AddCircle, "ImDrawList_AddCircle");
413 			bindFunc(cast(void**)&ImDrawList_AddCircleFilled, "ImDrawList_AddCircleFilled");
414 			bindFunc(cast(void**)&ImDrawList_AddText, "ImDrawList_AddText");
415 			bindFunc(cast(void**)&ImDrawList_AddTextExt, "ImDrawList_AddTextExt");
416 			bindFunc(cast(void**)&ImDrawList_AddImage, "ImDrawList_AddImage");
417 			bindFunc(cast(void**)&ImDrawList_AddPolyline, "ImDrawList_AddPolyline");
418 			bindFunc(cast(void**)&ImDrawList_AddConvexPolyFilled, "ImDrawList_AddConvexPolyFilled");
419 			bindFunc(cast(void**)&ImDrawList_AddBezierCurve, "ImDrawList_AddBezierCurve");
420 			bindFunc(cast(void**)&ImDrawList_PathClear, "ImDrawList_PathClear");
421 			bindFunc(cast(void**)&ImDrawList_PathLineTo, "ImDrawList_PathLineTo");
422 			bindFunc(cast(void**)&ImDrawList_PathLineToMergeDuplicate, "ImDrawList_PathLineToMergeDuplicate");
423 			bindFunc(cast(void**)&ImDrawList_PathFill, "ImDrawList_PathFill");
424 			bindFunc(cast(void**)&ImDrawList_PathStroke, "ImDrawList_PathStroke");
425 			bindFunc(cast(void**)&ImDrawList_PathArcTo, "ImDrawList_PathArcTo");
426 			bindFunc(cast(void**)&ImDrawList_PathArcToFast, "ImDrawList_PathArcToFast");
427 			bindFunc(cast(void**)&ImDrawList_PathBezierCurveTo, "ImDrawList_PathBezierCurveTo");
428 			bindFunc(cast(void**)&ImDrawList_PathRect, "ImDrawList_PathRect");
429 			bindFunc(cast(void**)&ImDrawList_ChannelsSplit, "ImDrawList_ChannelsSplit");
430 			bindFunc(cast(void**)&ImDrawList_ChannelsMerge, "ImDrawList_ChannelsMerge");
431 			bindFunc(cast(void**)&ImDrawList_ChannelsSetCurrent, "ImDrawList_ChannelsSetCurrent");
432 			bindFunc(cast(void**)&ImDrawList_AddCallback, "ImDrawList_AddCallback");
433 			bindFunc(cast(void**)&ImDrawList_AddDrawCmd, "ImDrawList_AddDrawCmd");
434 			bindFunc(cast(void**)&ImDrawList_PrimReserve, "ImDrawList_PrimReserve");
435 			bindFunc(cast(void**)&ImDrawList_PrimRect, "ImDrawList_PrimRect");
436 			bindFunc(cast(void**)&ImDrawList_PrimRectUV, "ImDrawList_PrimRectUV");
437 			bindFunc(cast(void**)&ImDrawList_PrimVtx, "ImDrawList_PrimVtx");
438 			bindFunc(cast(void**)&ImDrawList_PrimWriteVtx, "ImDrawList_PrimWriteVtx");
439 			bindFunc(cast(void**)&ImDrawList_PrimWriteIdx, "ImDrawList_PrimWriteIdx");
440 			bindFunc(cast(void**)&ImDrawList_UpdateClipRect, "ImDrawList_UpdateClipRect");
441 			bindFunc(cast(void**)&ImDrawList_UpdateTextureID, "ImDrawList_UpdateTextureID");
442 
443             bindFunc(cast(void**)&ImGuiIO_AddInputCharacter, "ImGuiIO_AddInputCharacter");
444             bindFunc(cast(void**)&ImGuiIO_AddInputCharactersUTF8, "ImGuiIO_AddInputCharactersUTF8");
445 
446 
447             bindFunc(cast(void**)&igGetCurrentWindowRead, "igGetCurrentWindowRead");
448 			bindFunc(cast(void**)&igGetCurrentWindow, "igGetCurrentWindow");
449 			bindFunc(cast(void**)&igGetParentWindow, "igGetParentWindow");
450 			bindFunc(cast(void**)&igFocusWindow, "igFocusWindow");
451 			bindFunc(cast(void**)&igSetActiveID, "igSetActiveID");
452 			bindFunc(cast(void**)&igKeepAliveID, "igKeepAliveID");
453 			bindFunc(cast(void**)&igItemSize, "igItemSize");
454 			bindFunc(cast(void**)&igItemSize2, "igItemSize2");
455 			bindFunc(cast(void**)&igItemAdd, "igItemAdd");
456 			bindFunc(cast(void**)&igIsClippedEx, "igIsClippedEx");
457 			bindFunc(cast(void**)&igIsHovered, "igIsHovered");
458 			bindFunc(cast(void**)&igFocusableItemRegister, "igFocusableItemRegister");
459 			bindFunc(cast(void**)&igFocusableItemUnregister, "igFocusableItemUnregister");
460 			bindFunc(cast(void**)&igCalcWrapWidthForPos, "igCalcWrapWidthForPos");
461 			bindFunc(cast(void**)&igRenderText, "igRenderText");
462 			bindFunc(cast(void**)&igRenderTextWrapped, "igRenderTextWrapped");
463 			bindFunc(cast(void**)&igRenderTextClipped, "igRenderTextClipped");
464 			bindFunc(cast(void**)&igRenderFrame, "igRenderFrame");
465 			bindFunc(cast(void**)&igRenderCollapseTriangle, "igRenderCollapseTriangle");
466 			bindFunc(cast(void**)&igRenderCheckMark, "igRenderCheckMark");
467 			bindFunc(cast(void**)&igButtonBehavior, "igButtonBehavior");
468 			bindFunc(cast(void**)&igButtonEx, "igButtonEx");
469 			bindFunc(cast(void**)&igSliderBehavior, "igSliderBehavior");
470 			bindFunc(cast(void**)&igSliderFloatN, "igSliderFloatN");
471 			bindFunc(cast(void**)&igSliderIntN, "igSliderIntN");
472 			bindFunc(cast(void**)&igDragBehavior, "igDragBehavior");
473 			bindFunc(cast(void**)&igDragFloatN, "igDragFloatN");
474 			bindFunc(cast(void**)&igDragIntN, "igDragIntN");
475 			bindFunc(cast(void**)&igInputTextEx, "igInputTextEx");
476 			bindFunc(cast(void**)&igInputFloatN, "igInputFloatN");
477 			bindFunc(cast(void**)&igInputIntN, "igInputIntN");
478 			bindFunc(cast(void**)&igTreeNodeBehaviorIsOpened, "igTreeNodeBehaviorIsOpened");
479 			bindFunc(cast(void**)&igParseFormatPrecision, "igParseFormatPrecision");
480 			bindFunc(cast(void**)&igRoundScalar, "igRoundScalar");
481 			bindFunc(cast(void**)&igGetImGuiState, "igGetImGuiState");
482 			bindFunc(cast(void**)&igGetSkipItems, "igGetSkipItems");
483         }
484     }
485 
486     public
487     {
488         this()
489         {
490             super(libNames);
491         }
492     }
493 }
494 
495 __gshared DerelictImguiLoader DerelictImgui;
496 
497 shared static this()
498 {
499     DerelictImgui = new DerelictImguiLoader();
500 }