/* ============================================================================== This file is part of the JUCE library. Copyright (c) 2022 - Raw Material Software Limited JUCE is an open source library subject to commercial or open-source licensing. By using JUCE, you agree to the terms of both the JUCE 7 End-User License Agreement and JUCE Privacy Policy. End User License Agreement: www.juce.com/juce-7-licence Privacy Policy: www.juce.com/juce-privacy-policy Or: You may also use this code under the terms of the GPL v3 (see www.gnu.org/licenses). JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE DISCLAIMED. ============================================================================== */ namespace juce { //============================================================================== namespace ReturnHelpers { template Type returnDefaultConstructedAnyType() { return {}; } template <> inline void returnDefaultConstructedAnyType() {} } #define JUCE_GENERATE_FUNCTION_WITH_DEFAULT(functionName, objectName, args, returnType) \ using functionName = returnType (*) args; \ functionName objectName = [] args -> returnType { return ReturnHelpers::returnDefaultConstructedAnyType(); }; //============================================================================== class JUCE_API X11Symbols { public: //============================================================================== bool loadAllSymbols(); //============================================================================== JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XAllocClassHint, xAllocClassHint, (), XClassHint*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XAllocSizeHints, xAllocSizeHints, (), XSizeHints*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XAllocWMHints, xAllocWMHints, (), XWMHints*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XBitmapBitOrder, xBitmapBitOrder, (::Display*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XBitmapUnit, xBitmapUnit, (::Display*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XChangeActivePointerGrab, xChangeActivePointerGrab, (::Display*, unsigned int, Cursor, ::Time), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XChangeProperty, xChangeProperty, (::Display*, ::Window, Atom, Atom, int, int, const unsigned char*, int), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XCheckTypedWindowEvent, xCheckTypedWindowEvent, (::Display*, ::Window, int, XEvent*), Bool) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XCheckWindowEvent, xCheckWindowEvent, (::Display*, ::Window, long, XEvent*), Bool) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XClearArea, xClearArea, (::Display*, ::Window, int, int, unsigned int, unsigned int, Bool), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XCloseDisplay, xCloseDisplay, (::Display*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XConnectionNumber, xConnectionNumber, (::Display*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XConvertSelection, xConvertSelection, (::Display*, Atom, Atom, Atom, ::Window, ::Time), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XCreateColormap, xCreateColormap, (::Display*, ::Window, Visual*, int), Colormap) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XCreateFontCursor, xCreateFontCursor, (::Display*, unsigned int), Cursor) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XCreateGC, xCreateGC, (::Display*, ::Drawable, unsigned long, XGCValues*), GC) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XCreateImage, xCreateImage, (::Display*, Visual*, unsigned int, int, int, const char*, unsigned int, unsigned int, int, int), XImage*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XCreatePixmap, xCreatePixmap, (::Display*, ::Drawable, unsigned int, unsigned int, unsigned int), Pixmap) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XCreatePixmapCursor, xCreatePixmapCursor, (::Display*, Pixmap, Pixmap, XColor*, XColor*, unsigned int, unsigned int), Cursor) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XCreatePixmapFromBitmapData, xCreatePixmapFromBitmapData, (::Display*, ::Drawable, const char*, unsigned int, unsigned int, unsigned long, unsigned long, unsigned int), Pixmap) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XCreateWindow, xCreateWindow, (::Display*, ::Window, int, int, unsigned int, unsigned int, unsigned int, int, unsigned int, Visual*, unsigned long, XSetWindowAttributes*), ::Window) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XDefaultRootWindow, xDefaultRootWindow, (::Display*), ::Window) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XDefaultScreen, xDefaultScreen, (::Display*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XDefaultScreenOfDisplay, xDefaultScreenOfDisplay, (::Display*), Screen*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XDefaultVisual, xDefaultVisual, (::Display*, int), Visual*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XDefineCursor, xDefineCursor, (::Display*, ::Window, Cursor), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XDeleteContext, xDeleteContext, (::Display*, XID, XContext), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XDeleteProperty, xDeleteProperty, (::Display*, Window, Atom), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XDestroyImage, xDestroyImage, (XImage*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XDestroyWindow, xDestroyWindow, (::Display*, ::Window), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XDisplayHeight, xDisplayHeight, (::Display*, int), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XDisplayHeightMM, xDisplayHeightMM, (::Display*, int), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XDisplayWidth, xDisplayWidth, (::Display*, int), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XDisplayWidthMM, xDisplayWidthMM, (::Display*, int), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XEventsQueued, xEventsQueued, (::Display*, int), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XFindContext, xFindContext, (::Display*, XID, XContext, XPointer*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XFlush, xFlush, (::Display*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XFree, xFree, (void*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XFreeCursor, xFreeCursor, (::Display*, Cursor), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XFreeColormap ,xFreeColormap, (::Display*, Colormap), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XFreeGC, xFreeGC, (::Display*, GC), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XFreeModifiermap, xFreeModifiermap, (XModifierKeymap*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XFreePixmap, xFreePixmap, (::Display*, Pixmap), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGetAtomName, xGetAtomName, (::Display*, Atom), char*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGetErrorDatabaseText, xGetErrorDatabaseText, (::Display*, const char*, const char*, const char*, const char*, int), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGetErrorText, xGetErrorText, (::Display*, int, const char*, int), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGetGeometry, xGetGeometry, (::Display*, ::Drawable, ::Window*, int*, int*, unsigned int*, unsigned int*, unsigned int*, unsigned int*), Status) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGetImage, xGetImage, (::Display*, ::Drawable, int, int, unsigned int, unsigned int, unsigned long, int), XImage*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGetInputFocus, xGetInputFocus, (::Display*, ::Window*, int*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGetModifierMapping, xGetModifierMapping, (::Display*), XModifierKeymap*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGetPointerMapping, xGetPointerMapping, (::Display*, unsigned char[], int), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGetSelectionOwner, xGetSelectionOwner, (::Display*, Atom), ::Window) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGetVisualInfo, xGetVisualInfo, (::Display*, long, XVisualInfo*, int*), XVisualInfo*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGetWMHints, xGetWMHints, (::Display*, ::Window), XWMHints*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGetWindowAttributes, xGetWindowAttributes, (::Display*, ::Window, XWindowAttributes*), Status) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGetWindowProperty, xGetWindowProperty, (::Display*, ::Window, Atom, long, long, Bool, Atom, Atom*, int*, unsigned long*, unsigned long*, unsigned char**), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGrabPointer, xGrabPointer, (::Display*, ::Window, Bool, unsigned int, int, int, ::Window, Cursor, ::Time), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XGrabServer, xGrabServer, (::Display*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XImageByteOrder, xImageByteOrder, (::Display*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XInitImage, xInitImage, (XImage*), Status) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XInitThreads, xInitThreads, (), Status) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XInstallColormap, xInstallColormap, (::Display*, Colormap), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XInternAtom, xInternAtom, (::Display*, const char*, Bool), Atom) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XkbKeycodeToKeysym, xkbKeycodeToKeysym, (::Display*, KeyCode, unsigned int, unsigned int), KeySym) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XKeysymToKeycode, xKeysymToKeycode, (::Display*, KeySym), KeyCode) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XListProperties, xListProperties, (::Display*, Window, int*), Atom*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XLockDisplay, xLockDisplay, (::Display*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XLookupString, xLookupString, (XKeyEvent*, const char*, int, KeySym*, XComposeStatus*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XMapRaised, xMapRaised, (::Display*, ::Window), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XMapWindow, xMapWindow, (::Display*, ::Window), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XMoveResizeWindow, xMoveResizeWindow, (::Display*, ::Window, int, int, unsigned int, unsigned int), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XNextEvent, xNextEvent, (::Display*, XEvent*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XOpenDisplay, xOpenDisplay, (const char*), ::Display*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XPeekEvent, xPeekEvent, (::Display*, XEvent*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XPending, xPending, (::Display*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XPutImage, xPutImage, (::Display*, ::Drawable, GC, XImage*, int, int, int, int, unsigned int, unsigned int), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XPutPixel, xPutPixel, (XImage*, int, int, unsigned long), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XQueryBestCursor, xQueryBestCursor, (::Display*, ::Drawable, unsigned int, unsigned int, unsigned int*, unsigned int*), Status) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XQueryExtension, xQueryExtension, (::Display*, const char*, int*, int*, int*), Bool) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XQueryPointer, xQueryPointer, (::Display*, ::Window, ::Window*, ::Window*, int*, int*, int*, int*, unsigned int*), Bool) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XQueryTree, xQueryTree, (::Display*, ::Window, ::Window*, ::Window*, ::Window**, unsigned int*), Status) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRefreshKeyboardMapping, xRefreshKeyboardMapping, (XMappingEvent*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XReparentWindow, xReparentWindow, (::Display*, ::Window, ::Window, int, int), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XResizeWindow, xResizeWindow, (::Display*, Window, unsigned int, unsigned int), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRestackWindows, xRestackWindows, (::Display*, ::Window[], int), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRootWindow, xRootWindow, (::Display*, int), ::Window) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSaveContext, xSaveContext, (::Display*, XID, XContext, XPointer), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XScreenCount, xScreenCount, (::Display*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XScreenNumberOfScreen, xScreenNumberOfScreen, (Screen*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSelectInput, xSelectInput, (::Display*, ::Window, long), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSendEvent, xSendEvent, (::Display*, ::Window, Bool, long, XEvent*), Status) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSetClassHint, xSetClassHint, (::Display*, ::Window, XClassHint*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSetErrorHandler, xSetErrorHandler, (XErrorHandler), XErrorHandler) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSetIOErrorHandler, xSetIOErrorHandler, (XIOErrorHandler), XIOErrorHandler) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSetInputFocus, xSetInputFocus, (::Display*, ::Window, int, ::Time), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSetSelectionOwner, xSetSelectionOwner, (::Display*, Atom, ::Window, ::Time), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSetWMHints, xSetWMHints, (::Display*, ::Window, XWMHints*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSetWMIconName, xSetWMIconName, (::Display*, ::Window, XTextProperty*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSetWMName, xSetWMName, (::Display*, ::Window, XTextProperty*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSetWMNormalHints, xSetWMNormalHints, (::Display*, ::Window, XSizeHints*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XStringListToTextProperty, xStringListToTextProperty, (char**, int, XTextProperty*), Status) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (Xutf8TextListToTextProperty, xutf8TextListToTextProperty, (::Display*, char**, int, XICCEncodingStyle, XTextProperty*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSync, xSync, (::Display*, Bool), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XSynchronize, xSynchronize, (::Display*, Bool), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XTranslateCoordinates, xTranslateCoordinates, (::Display*, ::Window, ::Window, int, int, int*, int*, ::Window*), Bool) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XrmUniqueQuark, xrmUniqueQuark, (), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XUngrabPointer, xUngrabPointer, (::Display*, ::Time), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XUngrabServer, xUngrabServer, (::Display*), int) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XUnlockDisplay, xUnlockDisplay, (::Display*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XUnmapWindow, xUnmapWindow, (::Display*, ::Window), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XWarpPointer, xWarpPointer, (::Display*, ::Window, ::Window, int, int, unsigned int, unsigned int, int, int), void) #if JUCE_USE_XCURSOR JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XcursorImageCreate, xcursorImageCreate, (int, int), XcursorImage*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XcursorImageLoadCursor, xcursorImageLoadCursor, (::Display*, XcursorImage*), Cursor) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XcursorImageDestroy, xcursorImageDestroy, (XcursorImage*), void) #endif #if JUCE_USE_XINERAMA JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XineramaIsActive, xineramaIsActive, (::Display*), Bool) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XineramaQueryScreens, xineramaQueryScreens, (::Display*, int*), XineramaScreenInfo*) #endif #if JUCE_USE_XRENDER JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRenderQueryVersion, xRenderQueryVersion, (::Display*, int*, int*), Status) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRenderFindStandardFormat, xRenderFindStandardFormat, (Display*, int), XRenderPictFormat*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRenderFindFormat, xRenderFindFormat, (Display*, unsigned long, XRenderPictFormat*, int), XRenderPictFormat*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRenderFindVisualFormat, xRenderFindVisualFormat, (Display*, Visual*), XRenderPictFormat*) #endif #if JUCE_USE_XRANDR JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRRGetScreenResources, xRRGetScreenResources, (::Display*, Window), XRRScreenResources*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRRFreeScreenResources, xRRFreeScreenResources, (XRRScreenResources*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRRGetOutputInfo, xRRGetOutputInfo, (::Display*, XRRScreenResources*, RROutput), XRROutputInfo*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRRFreeOutputInfo, xRRFreeOutputInfo, (XRROutputInfo*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRRGetCrtcInfo, xRRGetCrtcInfo, (::Display*, XRRScreenResources*, RRCrtc), XRRCrtcInfo*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRRFreeCrtcInfo, xRRFreeCrtcInfo, (XRRCrtcInfo*), void) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XRRGetOutputPrimary, xRRGetOutputPrimary, (::Display*, ::Window), RROutput) #endif #if JUCE_USE_XSHM JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XShmAttach, xShmAttach, (::Display*, XShmSegmentInfo*), Bool) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XShmCreateImage, xShmCreateImage, (::Display*, Visual*, unsigned int, int, const char*, XShmSegmentInfo*, unsigned int, unsigned int), XImage*) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XShmDetach, xShmDetach, (::Display*, XShmSegmentInfo*), Bool) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XShmGetEventBase, xShmGetEventBase, (::Display*), Status) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XShmPutImage, xShmPutImage, (::Display*, ::Drawable, GC, XImage*, int, int, int, int, unsigned int, unsigned int, bool), Bool) JUCE_GENERATE_FUNCTION_WITH_DEFAULT (XShmQueryVersion, xShmQueryVersion, (::Display*, int*, int*, Bool*), Bool) #endif //============================================================================== JUCE_DECLARE_SINGLETON (X11Symbols, false) private: X11Symbols() = default; ~X11Symbols() { clearSingletonInstance(); } //============================================================================== DynamicLibrary xLib { "libX11.so.6" }, xextLib { "libXext.so.6" }; #if JUCE_USE_XCURSOR DynamicLibrary xcursorLib { "libXcursor.so.1" }; #endif #if JUCE_USE_XINERAMA DynamicLibrary xineramaLib { "libXinerama.so.1" }; #endif #if JUCE_USE_XRENDER DynamicLibrary xrenderLib { "libXrender.so.1" }; #endif #if JUCE_USE_XRANDR DynamicLibrary xrandrLib { "libXrandr.so.2" }; #endif //============================================================================== JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (X11Symbols) }; } // namespace juce