1 /*
2  * Copyright (c) 2016 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', 'DerelictLibui', 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.libui.libui;
33 
34 public
35 {
36     import derelict.libui.types;
37     import derelict.libui.funcs;
38 }
39 
40 private
41 {
42     import derelict.util.loader;
43     import derelict.util.system;
44 
45     static if(Derelict_OS_Windows)
46         enum libNames = "libui.dll";    
47     else static if (Derelict_OS_Mac)
48         enum libNames = "libui.dylib, libui.A.dylib";
49     else static if (Derelict_OS_Linux)
50         enum libNames = "libui.so.0, libui.so";
51     else
52         static assert(0, "Need to implement libui libNames for this operating system.");
53 }
54 
55 class DerelictLibuiLoader : SharedLibLoader
56 {
57 
58     protected
59     {
60         override void loadSymbols()
61         {          
62             bindFunc(cast(void**)&uiInit, "uiInit");
63             bindFunc(cast(void**)&uiUninit, "uiUninit");
64 
65             bindFunc(cast(void**)&uiFreeInitError, "uiFreeInitError");
66             bindFunc(cast(void**)&uiMain, "uiMain");
67             bindFunc(cast(void**)&uiQuit, "uiQuit");
68 
69             bindFunc(cast(void**)&uiQueueMain, "uiQueueMain");
70             bindFunc(cast(void**)&uiOnShouldQuit, "uiOnShouldQuit");
71             bindFunc(cast(void**)&uiFreeText, "uiFreeText");
72 
73             bindFunc(cast(void**)&uiControlDestroy, "uiControlDestroy");
74             bindFunc(cast(void**)&uiControlHandle, "uiControlHandle");
75             bindFunc(cast(void**)&uiControlParent, "uiControlParent");
76             bindFunc(cast(void**)&uiControlSetParent, "uiControlSetParent");
77             bindFunc(cast(void**)&uiControlToplevel, "uiControlToplevel");
78             bindFunc(cast(void**)&uiControlVisible, "uiControlVisible");
79             bindFunc(cast(void**)&uiControlShow, "uiControlShow");
80             bindFunc(cast(void**)&uiControlHide, "uiControlHide");
81             bindFunc(cast(void**)&uiControlEnabled, "uiControlEnabled");
82             bindFunc(cast(void**)&uiControlEnable, "uiControlEnable");
83             bindFunc(cast(void**)&uiControlDisable, "uiControlDisable");
84 
85             bindFunc(cast(void**)&uiAllocControl, "uiAllocControl");
86             bindFunc(cast(void**)&uiFreeControl, "uiFreeControl");
87 
88             bindFunc(cast(void**)&uiControlVerifyDestroy, "uiControlVerifyDestroy");
89             bindFunc(cast(void**)&uiControlVerifySetParent, "uiControlVerifySetParent");
90             bindFunc(cast(void**)&uiControlEnabledToUser, "uiControlEnabledToUser");
91 
92             bindFunc(cast(void**)&uiWindowTitle, "uiWindowTitle");
93             bindFunc(cast(void**)&uiWindowSetTitle, "uiWindowSetTitle");
94             bindFunc(cast(void**)&uiWindowOnClosing, "uiWindowOnClosing");
95             bindFunc(cast(void**)&uiWindowSetChild, "uiWindowSetChild");
96             bindFunc(cast(void**)&uiWindowMargined, "uiWindowMargined");
97             bindFunc(cast(void**)&uiWindowSetMargined, "uiWindowSetMargined");
98             bindFunc(cast(void**)&uiNewWindow, "uiNewWindow");
99 
100             bindFunc(cast(void**)&uiButtonText, "uiButtonText");
101             bindFunc(cast(void**)&uiButtonSetText, "uiButtonSetText");
102             bindFunc(cast(void**)&uiButtonOnClicked, "uiButtonOnClicked");
103             bindFunc(cast(void**)&uiNewButton, "uiNewButton");
104             
105             bindFunc(cast(void**)&uiBoxAppend, "uiBoxAppend");
106             bindFunc(cast(void**)&uiBoxDelete, "uiBoxDelete");
107             bindFunc(cast(void**)&uiBoxPadded, "uiBoxPadded");
108             bindFunc(cast(void**)&uiBoxSetPadded, "uiBoxSetPadded");
109             bindFunc(cast(void**)&uiNewHorizontalBox, "uiNewHorizontalBox");
110             bindFunc(cast(void**)&uiNewVerticalBox, "uiNewVerticalBox");
111             
112             bindFunc(cast(void**)&uiEntryText, "uiEntryText");
113             bindFunc(cast(void**)&uiEntrySetText, "uiEntrySetText");
114             bindFunc(cast(void**)&uiEntryOnChanged, "uiEntryOnChanged");
115             bindFunc(cast(void**)&uiEntryReadOnly, "uiEntryReadOnly");
116             bindFunc(cast(void**)&uiEntrySetReadOnly, "uiEntrySetReadOnly");
117             bindFunc(cast(void**)&uiNewEntry, "uiNewEntry");
118             
119             bindFunc(cast(void**)&uiCheckboxText, "uiCheckboxText");
120             bindFunc(cast(void**)&uiCheckboxSetText, "uiCheckboxSetText");
121             bindFunc(cast(void**)&uiCheckboxOnToggled, "uiCheckboxOnToggled");
122             bindFunc(cast(void**)&uiCheckboxChecked, "uiCheckboxChecked");
123             bindFunc(cast(void**)&uiCheckboxSetChecked, "uiCheckboxSetChecked");
124             bindFunc(cast(void**)&uiNewCheckbox, "uiNewCheckbox");
125             
126             bindFunc(cast(void**)&uiLabelText, "uiLabelText");
127             bindFunc(cast(void**)&uiLabelSetText, "uiLabelSetText");
128             bindFunc(cast(void**)&uiNewLabel, "uiNewLabel");
129             
130             bindFunc(cast(void**)&uiTabAppend, "uiTabAppend");
131             bindFunc(cast(void**)&uiTabInsertAt, "uiTabInsertAt");
132             bindFunc(cast(void**)&uiTabDelete, "uiTabDelete");
133             bindFunc(cast(void**)&uiTabNumPages, "uiTabNumPages");
134             bindFunc(cast(void**)&uiTabMargined, "uiTabMargined");
135             bindFunc(cast(void**)&uiTabSetMargined, "uiTabSetMargined");
136             bindFunc(cast(void**)&uiNewTab, "uiNewTab");
137             
138             bindFunc(cast(void**)&uiGroupTitle, "uiGroupTitle");
139             bindFunc(cast(void**)&uiGroupSetTitle, "uiGroupSetTitle");
140             bindFunc(cast(void**)&uiGroupSetChild, "uiGroupSetChild");
141             bindFunc(cast(void**)&uiGroupMargined, "uiGroupMargined");
142             bindFunc(cast(void**)&uiGroupSetMargined, "uiGroupSetMargined");
143             bindFunc(cast(void**)&uiNewGroup, "uiNewGroup");
144             
145             bindFunc(cast(void**)&uiSpinboxValue, "uiSpinboxValue");
146             bindFunc(cast(void**)&uiSpinboxSetValue, "uiSpinboxSetValue");
147             bindFunc(cast(void**)&uiSpinboxOnChanged, "uiSpinboxOnChanged");
148             bindFunc(cast(void**)&uiNewSpinbox, "uiNewSpinbox");
149             
150             bindFunc(cast(void**)&uiProgressBarSetValue, "uiProgressBarSetValue");
151             bindFunc(cast(void**)&uiNewProgressBar, "uiNewProgressBar");
152             
153             bindFunc(cast(void**)&uiSliderValue, "uiSliderValue");
154             bindFunc(cast(void**)&uiSliderSetValue, "uiSliderSetValue");
155             bindFunc(cast(void**)&uiSliderOnChanged, "uiSliderOnChanged");
156             bindFunc(cast(void**)&uiNewSlider, "uiNewSlider");
157             
158             bindFunc(cast(void**)&uiNewHorizontalSeparator, "uiNewHorizontalSeparator");
159             
160             bindFunc(cast(void**)&uiComboboxAppend, "uiComboboxAppend");
161             bindFunc(cast(void**)&uiComboboxSelected, "uiComboboxSelected");
162             bindFunc(cast(void**)&uiComboboxSetSelected, "uiComboboxSetSelected");
163             bindFunc(cast(void**)&uiComboboxOnSelected, "uiComboboxOnSelected");
164             bindFunc(cast(void**)&uiNewCombobox, "uiNewCombobox");
165             bindFunc(cast(void**)&uiNewEditableCombobox, "uiNewEditableCombobox");
166             
167             bindFunc(cast(void**)&uiRadioButtonsAppend, "uiRadioButtonsAppend");
168             bindFunc(cast(void**)&uiNewRadioButtons, "uiNewRadioButtons");
169             
170             bindFunc(cast(void**)&uiNewDateTimePicker, "uiNewDateTimePicker");
171             bindFunc(cast(void**)&uiNewDatePicker, "uiNewDatePicker");
172             bindFunc(cast(void**)&uiNewTimePicker, "uiNewTimePicker");
173             
174             bindFunc(cast(void**)&uiMultilineEntryText, "uiMultilineEntryText");
175             bindFunc(cast(void**)&uiMultilineEntrySetText, "uiMultilineEntrySetText");
176             bindFunc(cast(void**)&uiMultilineEntryAppend, "uiMultilineEntryAppend");
177             bindFunc(cast(void**)&uiMultilineEntryOnChanged, "uiMultilineEntryOnChanged");
178             bindFunc(cast(void**)&uiMultilineEntryReadOnly, "uiMultilineEntryReadOnly");
179             bindFunc(cast(void**)&uiMultilineEntrySetReadOnly, "uiMultilineEntrySetReadOnly");
180             bindFunc(cast(void**)&uiNewMultilineEntry, "uiNewMultilineEntry");
181 
182             bindFunc(cast(void**)&uiMenuItemEnable, "uiMenuItemEnable");
183             bindFunc(cast(void**)&uiMenuItemDisable, "uiMenuItemDisable");
184             bindFunc(cast(void**)&uiMenuItemOnClicked, "uiMenuItemOnClicked");
185             bindFunc(cast(void**)&uiMenuItemChecked, "uiMenuItemChecked");
186             bindFunc(cast(void**)&uiMenuItemSetChecked, "uiMenuItemSetChecked");
187             
188             bindFunc(cast(void**)&uiMenuAppendItem, "uiMenuAppendItem");
189             bindFunc(cast(void**)&uiMenuAppendCheckItem, "uiMenuAppendCheckItem");
190             bindFunc(cast(void**)&uiMenuAppendQuitItem, "uiMenuAppendQuitItem");
191             bindFunc(cast(void**)&uiMenuAppendPreferencesItem, "uiMenuAppendPreferencesItem");
192             bindFunc(cast(void**)&uiMenuAppendAboutItem, "uiMenuAppendAboutItem");
193             bindFunc(cast(void**)&uiMenuAppendSeparator, "uiMenuAppendSeparator");
194             bindFunc(cast(void**)&uiNewMenu, "uiNewMenu");
195 
196             bindFunc(cast(void**)&uiOpenFile, "uiOpenFile");
197             bindFunc(cast(void**)&uiSaveFile, "uiSaveFile");
198             bindFunc(cast(void**)&uiMsgBox, "uiMsgBox");
199             bindFunc(cast(void**)&uiMsgBoxError, "uiMsgBoxError");
200             
201             bindFunc(cast(void**)&uiAreaSetSize, "uiAreaSetSize");
202             bindFunc(cast(void**)&uiAreaQueueRedrawAll, "uiAreaQueueRedrawAll");
203             bindFunc(cast(void**)&uiAreaScrollTo, "uiAreaScrollTo");
204             bindFunc(cast(void**)&uiNewArea, "uiNewArea");
205             bindFunc(cast(void**)&uiNewScrollingArea, "uiNewScrollingArea");
206             
207             bindFunc(cast(void**)&uiDrawNewPath, "uiDrawNewPath");
208             bindFunc(cast(void**)&uiDrawFreePath, "uiDrawFreePath");
209             
210             bindFunc(cast(void**)&uiDrawPathNewFigure, "uiDrawPathNewFigure");
211             bindFunc(cast(void**)&uiDrawPathNewFigureWithArc, "uiDrawPathNewFigureWithArc");
212             bindFunc(cast(void**)&uiDrawPathLineTo, "uiDrawPathLineTo");
213             bindFunc(cast(void**)&uiDrawPathArcTo, "uiDrawPathArcTo");
214             bindFunc(cast(void**)&uiDrawPathBezierTo, "uiDrawPathBezierTo");
215             bindFunc(cast(void**)&uiDrawPathCloseFigure, "uiDrawPathCloseFigure");
216             bindFunc(cast(void**)&uiDrawPathAddRectangle, "uiDrawPathAddRectangle");
217             bindFunc(cast(void**)&uiDrawPathEnd, "uiDrawPathEnd");
218             
219             bindFunc(cast(void**)&uiDrawStroke, "uiDrawStroke");
220             bindFunc(cast(void**)&uiDrawFill, "uiDrawFill");
221             
222             bindFunc(cast(void**)&uiDrawMatrixSetIdentity, "uiDrawMatrixSetIdentity");
223             bindFunc(cast(void**)&uiDrawMatrixTranslate, "uiDrawMatrixTranslate");
224             bindFunc(cast(void**)&uiDrawMatrixScale, "uiDrawMatrixScale");
225             bindFunc(cast(void**)&uiDrawMatrixRotate, "uiDrawMatrixRotate");
226             bindFunc(cast(void**)&uiDrawMatrixSkew, "uiDrawMatrixSkew");
227             bindFunc(cast(void**)&uiDrawMatrixMultiply, "uiDrawMatrixMultiply");
228             bindFunc(cast(void**)&uiDrawMatrixInvertible, "uiDrawMatrixInvertible");
229             bindFunc(cast(void**)&uiDrawMatrixInvert, "uiDrawMatrixInvert");
230             bindFunc(cast(void**)&uiDrawMatrixTransformPoint, "uiDrawMatrixTransformPoint");
231             bindFunc(cast(void**)&uiDrawMatrixTransformSize, "uiDrawMatrixTransformSize");
232             
233             bindFunc(cast(void**)&uiDrawTransform, "uiDrawTransform");
234             
235             bindFunc(cast(void**)&uiDrawClip, "uiDrawClip");
236             
237             bindFunc(cast(void**)&uiDrawSave, "uiDrawSave");
238             bindFunc(cast(void**)&uiDrawRestore, "uiDrawRestore");
239             
240             bindFunc(cast(void**)&uiDrawListFontFamilies, "uiDrawListFontFamilies");
241             bindFunc(cast(void**)&uiDrawFontFamiliesNumFamilies, "uiDrawFontFamiliesNumFamilies");
242             bindFunc(cast(void**)&uiDrawFontFamiliesFamily, "uiDrawFontFamiliesFamily");
243             bindFunc(cast(void**)&uiDrawFreeFontFamilies, "uiDrawFreeFontFamilies");
244             
245             bindFunc(cast(void**)&uiDrawLoadClosestFont, "uiDrawLoadClosestFont");
246             bindFunc(cast(void**)&uiDrawFreeTextFont, "uiDrawFreeTextFont");
247             bindFunc(cast(void**)&uiDrawTextFontHandle, "uiDrawTextFontHandle");
248             bindFunc(cast(void**)&uiDrawTextFontDescribe, "uiDrawTextFontDescribe");
249             bindFunc(cast(void**)&uiDrawTextFontGetMetrics, "uiDrawTextFontGetMetrics");
250             
251             bindFunc(cast(void**)&uiDrawNewTextLayout, "uiDrawNewTextLayout");
252             bindFunc(cast(void**)&uiDrawFreeTextLayout, "uiDrawFreeTextLayout");
253             
254             bindFunc(cast(void**)&uiDrawTextLayoutSetWidth, "uiDrawTextLayoutSetWidth");
255             bindFunc(cast(void**)&uiDrawTextLayoutExtents, "uiDrawTextLayoutExtents");
256             bindFunc(cast(void**)&uiDrawTextLayoutSetColor, "uiDrawTextLayoutSetColor");
257             bindFunc(cast(void**)&uiDrawText, "uiDrawText");
258             
259             bindFunc(cast(void**)&uiFontButtonFont, "uiFontButtonFont");
260             bindFunc(cast(void**)&uiFontButtonOnChanged, "uiFontButtonOnChanged");
261             bindFunc(cast(void**)&uiNewFontButton, "uiNewFontButton");
262 
263             bindFunc(cast(void**)&uiColorButtonColor, "uiColorButtonColor");
264             bindFunc(cast(void**)&uiColorButtonSetColor, "uiColorButtonSetColor");
265             bindFunc(cast(void**)&uiColorButtonOnChanged, "uiColorButtonOnChanged");
266             bindFunc(cast(void**)&uiNewColorButton, "uiNewColorButton");
267         }
268     }
269 
270     public
271     {
272         this()
273         {
274             super(libNames);
275         }
276     }
277 }
278 
279 __gshared DerelictLibuiLoader DerelictLibui;
280 
281 shared static this()
282 {
283     DerelictLibui = new DerelictLibuiLoader();
284 }