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, libui.A.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**)&uiControlDestroy, "uiControlDestroy");
70             bindFunc(cast(void**)&uiControlShow, "uiControlShow");
71 
72             bindFunc(cast(void**)&uiWindowOnClosing, "uiWindowOnClosing");
73             bindFunc(cast(void**)&uiWindowSetChild, "uiWindowSetChild");
74             bindFunc(cast(void**)&uiWindowMargined, "uiWindowMargined");
75             bindFunc(cast(void**)&uiWindowSetMargined, "uiWindowSetMargined");
76             bindFunc(cast(void**)&uiNewWindow, "uiNewWindow");
77 
78             bindFunc(cast(void**)&uiNewColorButton, "uiNewColorButton");
79         }
80     }
81 
82     public
83     {
84         this()
85         {
86             super(libNames);
87         }
88     }
89 }
90 
91 __gshared DerelictLibuiLoader DerelictLibui;
92 
93 shared static this()
94 {
95     DerelictLibui = new DerelictLibuiLoader();
96 }