JUCE-7.0.12-0-g4f43011b96 JUCE-7.0.12-0-g4f43011b96
JUCE — C++ application framework with suport for VST, VST3, LV2 audio plug-ins

« « « Anklang Documentation
Loading...
Searching...
No Matches
juce_XSymbols_linux.cpp
Go to the documentation of this file.
1 /*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26namespace juce
27{
28
29namespace X11SymbolHelpers
30{
31
32template <typename FuncPtr>
34{
35 FuncPtr& func;
36 const char* name;
37};
38
39template <typename FuncPtr>
40SymbolBinding<FuncPtr> makeSymbolBinding (FuncPtr& func, const char* name)
41{
42 return { func, name };
43}
44
45template <typename FuncPtr>
46bool loadSymbols (DynamicLibrary& lib, SymbolBinding<FuncPtr> binding)
47{
48 if (auto* func = lib.getFunction (binding.name))
49 {
50 binding.func = reinterpret_cast<FuncPtr> (func);
51 return true;
52 }
53
54 return false;
55}
56
57template <typename FuncPtr, typename... Args>
58bool loadSymbols (DynamicLibrary& lib1, DynamicLibrary& lib2, SymbolBinding<FuncPtr> binding)
59{
60 return loadSymbols (lib1, binding) || loadSymbols (lib2, binding);
61}
62
63template <typename FuncPtr, typename... Args>
64bool loadSymbols (DynamicLibrary& lib, SymbolBinding<FuncPtr> binding, Args... args)
65{
66 return loadSymbols (lib, binding) && loadSymbols (lib, args...);
67}
68
69template <typename FuncPtr, typename... Args>
70bool loadSymbols (DynamicLibrary& lib1, DynamicLibrary& lib2, SymbolBinding<FuncPtr> binding, Args... args)
71{
72 return loadSymbols (lib1, lib2, binding) && loadSymbols (lib1, lib2, args...);
73}
74
75}
76
77//==============================================================================
78bool X11Symbols::loadAllSymbols()
79{
80 using namespace X11SymbolHelpers;
81
82 if (! loadSymbols (xLib, xextLib,
83 makeSymbolBinding (xAllocClassHint, "XAllocClassHint"),
84 makeSymbolBinding (xAllocSizeHints, "XAllocSizeHints"),
85 makeSymbolBinding (xAllocWMHints, "XAllocWMHints"),
86 makeSymbolBinding (xBitmapBitOrder, "XBitmapBitOrder"),
87 makeSymbolBinding (xBitmapUnit, "XBitmapUnit"),
88 makeSymbolBinding (xChangeActivePointerGrab, "XChangeActivePointerGrab"),
89 makeSymbolBinding (xChangeProperty, "XChangeProperty"),
90 makeSymbolBinding (xCheckTypedWindowEvent, "XCheckTypedWindowEvent"),
91 makeSymbolBinding (xCheckWindowEvent, "XCheckWindowEvent"),
92 makeSymbolBinding (xClearArea, "XClearArea"),
93 makeSymbolBinding (xCloseDisplay, "XCloseDisplay"),
94 makeSymbolBinding (xConnectionNumber, "XConnectionNumber"),
95 makeSymbolBinding (xConvertSelection, "XConvertSelection"),
96 makeSymbolBinding (xCreateColormap, "XCreateColormap"),
97 makeSymbolBinding (xCreateFontCursor, "XCreateFontCursor"),
98 makeSymbolBinding (xCreateGC, "XCreateGC"),
99 makeSymbolBinding (xCreateImage, "XCreateImage"),
100 makeSymbolBinding (xCreatePixmap, "XCreatePixmap"),
101 makeSymbolBinding (xCreatePixmapCursor, "XCreatePixmapCursor"),
102 makeSymbolBinding (xCreatePixmapFromBitmapData, "XCreatePixmapFromBitmapData"),
103 makeSymbolBinding (xCreateWindow, "XCreateWindow"),
104 makeSymbolBinding (xDefaultRootWindow, "XDefaultRootWindow"),
105 makeSymbolBinding (xDefaultScreen, "XDefaultScreen"),
106 makeSymbolBinding (xDefaultScreenOfDisplay, "XDefaultScreenOfDisplay"),
107 makeSymbolBinding (xDefaultVisual, "XDefaultVisual"),
108 makeSymbolBinding (xDefineCursor, "XDefineCursor"),
109 makeSymbolBinding (xDeleteContext, "XDeleteContext"),
110 makeSymbolBinding (xDeleteProperty, "XDeleteProperty"),
111 makeSymbolBinding (xDestroyImage, "XDestroyImage"),
112 makeSymbolBinding (xDestroyWindow, "XDestroyWindow"),
113 makeSymbolBinding (xDisplayHeight, "XDisplayHeight"),
114 makeSymbolBinding (xDisplayHeightMM, "XDisplayHeightMM"),
115 makeSymbolBinding (xDisplayWidth, "XDisplayWidth"),
116 makeSymbolBinding (xDisplayWidthMM, "XDisplayWidthMM"),
117 makeSymbolBinding (xEventsQueued, "XEventsQueued"),
118 makeSymbolBinding (xFindContext, "XFindContext"),
119 makeSymbolBinding (xFlush, "XFlush"),
120 makeSymbolBinding (xFree, "XFree"),
121 makeSymbolBinding (xFreeCursor, "XFreeCursor"),
122 makeSymbolBinding (xFreeColormap, "XFreeColormap"),
123 makeSymbolBinding (xFreeGC, "XFreeGC"),
124 makeSymbolBinding (xFreeModifiermap, "XFreeModifiermap"),
125 makeSymbolBinding (xFreePixmap, "XFreePixmap"),
126 makeSymbolBinding (xGetAtomName, "XGetAtomName"),
127 makeSymbolBinding (xGetErrorDatabaseText, "XGetErrorDatabaseText"),
128 makeSymbolBinding (xGetErrorText, "XGetErrorText"),
129 makeSymbolBinding (xGetGeometry, "XGetGeometry"),
130 makeSymbolBinding (xGetImage, "XGetImage"),
131 makeSymbolBinding (xGetInputFocus, "XGetInputFocus"),
132 makeSymbolBinding (xGetModifierMapping, "XGetModifierMapping"),
133 makeSymbolBinding (xGetPointerMapping, "XGetPointerMapping"),
134 makeSymbolBinding (xGetSelectionOwner, "XGetSelectionOwner"),
135 makeSymbolBinding (xGetVisualInfo, "XGetVisualInfo"),
136 makeSymbolBinding (xGetWMHints, "XGetWMHints"),
137 makeSymbolBinding (xGetWindowAttributes, "XGetWindowAttributes"),
138 makeSymbolBinding (xGetWindowProperty, "XGetWindowProperty"),
139 makeSymbolBinding (xGrabPointer, "XGrabPointer"),
140 makeSymbolBinding (xGrabServer, "XGrabServer"),
141 makeSymbolBinding (xImageByteOrder, "XImageByteOrder"),
142 makeSymbolBinding (xInitImage, "XInitImage"),
143 makeSymbolBinding (xInitThreads, "XInitThreads"),
144 makeSymbolBinding (xInstallColormap, "XInstallColormap"),
145 makeSymbolBinding (xInternAtom, "XInternAtom"),
146 makeSymbolBinding (xkbKeycodeToKeysym, "XkbKeycodeToKeysym"),
147 makeSymbolBinding (xKeysymToKeycode, "XKeysymToKeycode"),
148 makeSymbolBinding (xListProperties, "XListProperties"),
149 makeSymbolBinding (xLockDisplay, "XLockDisplay"),
150 makeSymbolBinding (xLookupString, "XLookupString"),
151 makeSymbolBinding (xMapRaised, "XMapRaised"),
152 makeSymbolBinding (xMapWindow, "XMapWindow"),
153 makeSymbolBinding (xMoveResizeWindow, "XMoveResizeWindow"),
154 makeSymbolBinding (xNextEvent, "XNextEvent"),
155 makeSymbolBinding (xOpenDisplay, "XOpenDisplay"),
156 makeSymbolBinding (xPeekEvent, "XPeekEvent"),
157 makeSymbolBinding (xPending, "XPending"),
158 makeSymbolBinding (xPutImage, "XPutImage"),
159 makeSymbolBinding (xPutPixel, "XPutPixel"),
160 makeSymbolBinding (xQueryBestCursor, "XQueryBestCursor"),
161 makeSymbolBinding (xQueryExtension, "XQueryExtension"),
162 makeSymbolBinding (xQueryPointer, "XQueryPointer"),
163 makeSymbolBinding (xQueryTree, "XQueryTree"),
164 makeSymbolBinding (xRefreshKeyboardMapping, "XRefreshKeyboardMapping"),
165 makeSymbolBinding (xReparentWindow, "XReparentWindow"),
166 makeSymbolBinding (xResizeWindow, "XResizeWindow"),
167 makeSymbolBinding (xRestackWindows, "XRestackWindows"),
168 makeSymbolBinding (xRootWindow, "XRootWindow"),
169 makeSymbolBinding (xSaveContext, "XSaveContext"),
170 makeSymbolBinding (xScreenCount, "XScreenCount"),
171 makeSymbolBinding (xScreenNumberOfScreen, "XScreenNumberOfScreen"),
172 makeSymbolBinding (xSelectInput, "XSelectInput"),
173 makeSymbolBinding (xSendEvent, "XSendEvent"),
174 makeSymbolBinding (xSetClassHint, "XSetClassHint"),
175 makeSymbolBinding (xSetErrorHandler, "XSetErrorHandler"),
176 makeSymbolBinding (xSetIOErrorHandler, "XSetIOErrorHandler"),
177 makeSymbolBinding (xSetInputFocus, "XSetInputFocus"),
178 makeSymbolBinding (xSetSelectionOwner, "XSetSelectionOwner"),
179 makeSymbolBinding (xSetWMHints, "XSetWMHints"),
180 makeSymbolBinding (xSetWMIconName, "XSetWMIconName"),
181 makeSymbolBinding (xSetWMName, "XSetWMName"),
182 makeSymbolBinding (xSetWMNormalHints, "XSetWMNormalHints"),
183 makeSymbolBinding (xStringListToTextProperty, "XStringListToTextProperty"),
184 makeSymbolBinding (xSync, "XSync"),
185 makeSymbolBinding (xSynchronize, "XSynchronize"),
186 makeSymbolBinding (xTranslateCoordinates, "XTranslateCoordinates"),
187 makeSymbolBinding (xrmUniqueQuark, "XrmUniqueQuark"),
188 makeSymbolBinding (xUngrabPointer, "XUngrabPointer"),
189 makeSymbolBinding (xUngrabServer, "XUngrabServer"),
190 makeSymbolBinding (xUnlockDisplay, "XUnlockDisplay"),
191 makeSymbolBinding (xUnmapWindow, "XUnmapWindow"),
192 makeSymbolBinding (xutf8TextListToTextProperty, "Xutf8TextListToTextProperty"),
193 makeSymbolBinding (xWarpPointer, "XWarpPointer")))
194 return false;
195
196 #if JUCE_USE_XCURSOR
197 loadSymbols (xcursorLib,
198 makeSymbolBinding (xcursorImageCreate, "XcursorImageCreate"),
199 makeSymbolBinding (xcursorImageLoadCursor, "XcursorImageLoadCursor"),
200 makeSymbolBinding (xcursorImageDestroy, "XcursorImageDestroy"));
201 #endif
202 #if JUCE_USE_XINERAMA
203 loadSymbols (xineramaLib,
204 makeSymbolBinding (xineramaIsActive, "XineramaIsActive"),
205 makeSymbolBinding (xineramaQueryScreens, "XineramaQueryScreens"));
206 #endif
207 #if JUCE_USE_XRENDER
208 loadSymbols (xrenderLib,
209 makeSymbolBinding (xRenderQueryVersion, "XRenderQueryVersion"),
210 makeSymbolBinding (xRenderFindStandardFormat, "XRenderFindStandardFormat"),
211 makeSymbolBinding (xRenderFindFormat, "XRenderFindFormat"),
212 makeSymbolBinding (xRenderFindVisualFormat, "XRenderFindVisualFormat"));
213 #endif
214 #if JUCE_USE_XRANDR
215 loadSymbols (xrandrLib,
216 makeSymbolBinding (xRRGetScreenResources, "XRRGetScreenResources"),
217 makeSymbolBinding (xRRFreeScreenResources, "XRRFreeScreenResources"),
218 makeSymbolBinding (xRRGetOutputInfo, "XRRGetOutputInfo"),
219 makeSymbolBinding (xRRFreeOutputInfo, "XRRFreeOutputInfo"),
220 makeSymbolBinding (xRRGetCrtcInfo, "XRRGetCrtcInfo"),
221 makeSymbolBinding (xRRFreeCrtcInfo, "XRRFreeCrtcInfo"),
222 makeSymbolBinding (xRRGetOutputPrimary, "XRRGetOutputPrimary"));
223 #endif
224 #if JUCE_USE_XSHM
225 loadSymbols (xLib, xextLib,
226 makeSymbolBinding (xShmAttach, "XShmAttach"),
227 makeSymbolBinding (xShmCreateImage, "XShmCreateImage"),
228 makeSymbolBinding (xShmDetach, "XShmDetach"),
229 makeSymbolBinding (xShmGetEventBase, "XShmGetEventBase"),
230 makeSymbolBinding (xShmPutImage, "XShmPutImage"),
231 makeSymbolBinding (xShmQueryVersion, "XShmQueryVersion"));
232 #endif
233
234 return true;
235}
236
237//==============================================================================
238JUCE_IMPLEMENT_SINGLETON (X11Symbols)
239
240} // namespace juce
#define JUCE_IMPLEMENT_SINGLETON(Classname)
This is a counterpart to the JUCE_DECLARE_SINGLETON macros.
JUCE Namespace.
Type unalignedPointerCast(void *ptr) noexcept
Casts a pointer to another type via void*, which suppresses the cast-align warning which sometimes ar...
Definition juce_Memory.h:88