From 95645475a00875e2d69a7c03ecd6db904fdaf6df Mon Sep 17 00:00:00 2001 From: Lubos Dolezel Date: Tue, 28 Feb 2017 17:52:50 +0100 Subject: [PATCH] CF & F both building + other fixes --- .gitmodules | 6 + src/CMakeLists.txt | 5 +- src/CoreGraphics/CGBase.h | 37 -- src/CoreGraphics/CGContext.cpp | 100 ----- src/CoreGraphics/CGContext.h | 21 - src/CoreGraphics/CGDirectDisplay.h | 117 ------ src/CoreGraphics/CGDirectDisplay.mm | 593 ---------------------------- src/CoreGraphics/CGError.h | 22 -- src/CoreGraphics/CGEventRef.h | 13 - src/CoreGraphics/CGGeometry.cpp | 404 ------------------- src/CoreGraphics/CGGeometry.h | 98 ----- src/CoreGraphics/CGLayer.cpp | 126 ------ src/CoreGraphics/CGLayer.h | 23 -- src/CoreGraphics/CMakeLists.txt | 47 --- src/external/IOKitUser | 2 +- src/external/IONetworkingFamily | 1 + src/external/corefoundation | 2 +- src/external/coregraphics | 1 + src/external/foundation | 2 +- src/external/libclosure | 2 +- src/external/libkqueue | 2 +- 21 files changed, 16 insertions(+), 1608 deletions(-) delete mode 100644 src/CoreGraphics/CGBase.h delete mode 100644 src/CoreGraphics/CGContext.cpp delete mode 100644 src/CoreGraphics/CGContext.h delete mode 100644 src/CoreGraphics/CGDirectDisplay.h delete mode 100644 src/CoreGraphics/CGDirectDisplay.mm delete mode 100644 src/CoreGraphics/CGError.h delete mode 100644 src/CoreGraphics/CGEventRef.h delete mode 100644 src/CoreGraphics/CGGeometry.cpp delete mode 100644 src/CoreGraphics/CGGeometry.h delete mode 100644 src/CoreGraphics/CGLayer.cpp delete mode 100644 src/CoreGraphics/CGLayer.h delete mode 100644 src/CoreGraphics/CMakeLists.txt create mode 160000 src/external/IONetworkingFamily create mode 160000 src/external/coregraphics diff --git a/.gitmodules b/.gitmodules index b23f8b315..014b3b99a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -190,3 +190,9 @@ [submodule "src/external/configd"] path = src/external/configd url = ../darling-configd.git +[submodule "src/external/coregraphics"] + path = src/external/coregraphics + url = ../darling-coregraphics.git +[submodule "src/external/IONetworkingFamily"] + path = src/external/IONetworkingFamily + url = ../darling-IONetworkingFamily.git diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cf0acd752..032684a25 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -110,10 +110,11 @@ add_subdirectory(external/libxslt) add_subdirectory(external/icu/icuSources) add_subdirectory(external/corefoundation) add_subdirectory(external/openssl/src) -#add_subdirectory(external/foundation) +#add_subdirectory(external/configd/SystemConfiguration.fproj) +add_subdirectory(external/foundation) add_subdirectory(external/curl) add_subdirectory(external/liblzma) -#add_subdirectory(external/cfnetwork) +#add_subdirectory(external/cfnetwork/src) add_subdirectory(external/pcre) add_subdirectory(external/sqlite) add_subdirectory(external/openpam) diff --git a/src/CoreGraphics/CGBase.h b/src/CoreGraphics/CGBase.h deleted file mode 100644 index cf6173773..000000000 --- a/src/CoreGraphics/CGBase.h +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef CGBASE_H_ -#define CGBASE_H_ -#include - -#ifndef CGFLOAT_DEFINED -# ifdef __x86_64__ -# define CGFLOAT_IS_DOUBLE 1 -# define CGFLOAT_MIN DBL_MIN -# define CGFLOAT_MAX DBL_MAX -# ifdef DARLING_BUILD -# define CGFLOAT_EPSILON DBL_EPSILON -# endif -typedef double CGFloat; -# else -# define CGFLOAT_IS_DOUBLE 0 -# define CGFLOAT_MIN FLT_MIN -# define CGFLOAT_MAX FLT_MAX -# ifdef DARLING_BUILD -# define CGFLOAT_EPSILON FLT_EPSILON -# endif -typedef float CGFloat; -# endif -#endif - -#ifndef BEGIN_EXTERN_C -# ifdef __cplusplus -# define BEGIN_EXTERN_C extern "C" { -# define END_EXTERN_C } -# else -# define BEGIN_EXTERN_C -# define END_EXTERN_C -# endif -#endif - - -#endif - diff --git a/src/CoreGraphics/CGContext.cpp b/src/CoreGraphics/CGContext.cpp deleted file mode 100644 index e71314476..000000000 --- a/src/CoreGraphics/CGContext.cpp +++ /dev/null @@ -1,100 +0,0 @@ -#include "CGContext.h" -#include -#include -#include -#include - -static CFTypeID _kCGContextTypeID; -__attribute__((constructor)) void CGContextInitialize(); - -struct __CGContext -{ - CFRuntimeBase _parent; - QPainter* painter; -}; - -CGContextRef CGContextForPaintDevice(QPaintDevice* paintDevice) -{ - CGContextRef context = (CGContextRef)_CFRuntimeCreateInstance (nullptr, _kCGContextTypeID, - sizeof(struct __CGContext) - sizeof(CFRuntimeBase), nullptr); - - // TODO: mutual reference counting? - context->painter = new QPainter(paintDevice); - - return context; -} - -QPainter* CGContextGetPainter(CGContextRef ref) -{ - return ref->painter; -} - -CGContextRef CGContextRetain(CGContextRef c) -{ - if (c) - CFRetain(c); - return c; -} - -void CGContextRelease(CGContextRef c) -{ - if (c) - CFRelease(c); -} - -static CFHashCode CGContextHash (CFTypeRef cf) -{ - return CFHash (cf); -} - -static CFStringRef CGContextCopyFormattingDesc (CFTypeRef cf, CFDictionaryRef formatOptions) -{ - return CFSTR("CGContext"); -} - -static Boolean CGContextEqual (CFTypeRef cf1, CFTypeRef cf2) -{ - return cf1 == cf2; -} - -static void CGContextDealloc(CFTypeRef cf) -{ - CGContextRef ref = CGContextRef(cf); - delete ref->painter; -} - -void CGContextInitialize() -{ - static const CFRuntimeClass CGContextClass = - { - 0, - "CGContext", - NULL, - NULL, - CGContextDealloc, - NULL, - CGContextHash, - CGContextCopyFormattingDesc, - NULL - }; - _kCGContextTypeID = _CFRuntimeRegisterClass (&CGContextClass); -} - -CFTypeID CGContextGetTypeID(void) -{ - return _kCGContextTypeID; -} - -void CGContextSaveGState(CGContextRef c) -{ - c->painter->save(); -} - -void CGContextRestoreGState(CGContextRef c) -{ - c->painter->restore(); -} - -void CGContextFlush(CGContextRef c) -{ -} diff --git a/src/CoreGraphics/CGContext.h b/src/CoreGraphics/CGContext.h deleted file mode 100644 index 055c044b8..000000000 --- a/src/CoreGraphics/CGContext.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef CGCONTEXT_H_ -#define CGCONTEXT_H_ -#include "CGGeometry.h" -#include - -BEGIN_EXTERN_C - -struct __CGContext; -typedef struct __CGContext *CGContextRef; - -CGContextRef CGContextRetain(CGContextRef c); -void CGContextRelease(CGContextRef c); -CFTypeID CGContextGetTypeID(void); - -void CGContextSaveGState(CGContextRef c); -void CGContextRestoreGState(CGContextRef c); -void CGContextFlush(CGContextRef c); - -END_EXTERN_C - -#endif diff --git a/src/CoreGraphics/CGDirectDisplay.h b/src/CoreGraphics/CGDirectDisplay.h deleted file mode 100644 index f11019cdd..000000000 --- a/src/CoreGraphics/CGDirectDisplay.h +++ /dev/null @@ -1,117 +0,0 @@ -/* -This file is part of Darling. - -Copyright (C) 2013 Lubos Dolezel - -Darling is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Darling is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Darling. If not, see . -*/ - -#ifndef CGDIRECTDISPLAY_H -#define CGDIRECTDISPLAY_H -#include -#include -#include -#include -#include -#include "CGError.h" - -extern "C" -{ - -typedef uint32_t CGCaptureOptions; -typedef uint32_t CGDirectDisplayID; -typedef CFDictionaryRef CGDisplayModeRef; -typedef float CGGammaValue; - -CGDirectDisplayID CGMainDisplayID(); - -// couple of missing functions (locating the displays) -CGError CGGetActiveDisplayList(uint32_t max, CGDirectDisplayID* list, uint32_t* countOut); -CGError CGGetOnlineDisplayList(uint32_t max, CGDirectDisplayID* list, uint32_t* countOut); -size_t CGDisplayPixelsWide(CGDirectDisplayID id); -size_t CGDisplayPixelsHigh(CGDirectDisplayID id); - -// old mode APIs -extern CFStringRef kCGDisplayWidth; -extern CFStringRef kCGDisplayHeight; -extern CFStringRef kCGDisplayMode; -extern CFStringRef kCGDisplayBitsPerPixel; -extern CFStringRef kCGDisplayBitsPerSample; -extern CFStringRef kCGDisplaySamplesPerPixel; -extern CFStringRef kCGDisplayRefreshRate; -extern CFStringRef kCGDisplayModeUsableForDesktopGUI; -extern CFStringRef kCGDisplayIOFlags; -extern CFStringRef kCGDisplayBytesPerRow; - -CFDictionaryRef CGDisplayCurrentMode(CGDirectDisplayID id); -CGError CGDisplaySwitchToMode(CGDirectDisplayID id, CFDictionaryRef mode); - -// new mode APIs -CFArrayRef CGDisplayCopyAllDisplayModes(CGDirectDisplayID id); -CGDisplayModeRef CGDisplayCopyDisplayMode(CGDirectDisplayID id); -CGDisplayModeRef CGDisplayModeRetain(CGDisplayModeRef mode); -void CGDisplayModeRelease(CGDisplayModeRef mode); -CFStringRef CGDisplayModeCopyPixelEncoding(CGDisplayModeRef mode); -size_t CGDisplayModeGetHeight(CGDisplayModeRef mode); -double CGDisplayModeGetRefreshRate(CGDisplayModeRef mode); -CFTypeID CGDisplayModeGetTypeID(); // typeid of CGDisplayModeRef -size_t CGDisplayModeGetWidth(CGDisplayModeRef mode); -bool CGDisplayModeIsUsableForDesktopGUI(CGDisplayModeRef mode); - -bool CGDisplayIsActive(CGDirectDisplayID id); -bool CGDisplayIsAlwaysInMirrorSet(CGDirectDisplayID id); -bool CGDisplayIsAsleep(CGDirectDisplayID id); -bool CGDisplayIsBuiltin(CGDirectDisplayID id); -bool CGDisplayIsCaptured(CGDirectDisplayID id); -bool CGDisplayIsInHWMirrorSet(CGDirectDisplayID id); -bool CGDisplayIsInMirrorSet(CGDirectDisplayID id); -bool CGDisplayIsMain(CGDirectDisplayID id); -bool CGDisplayIsOnline(CGDirectDisplayID id); -bool CGDisplayIsStereo(CGDirectDisplayID id); -CGDirectDisplayID CGDisplayMirrorsDisplay(CGDirectDisplayID id); -uint32_t CGDisplayModelNumber(CGDirectDisplayID); -CGDirectDisplayID CGDisplayPrimaryDisplay(CGDirectDisplayID id); -double CGDisplayRotation(CGDirectDisplayID id); -CGSize CGDisplayScreenSize(CGDirectDisplayID id); -uint32_t CGDisplaySerialNumber(CGDirectDisplayID id); -CGError CGDisplaySetDisplayMode(CGDirectDisplayID id, CGDisplayModeRef mode, CFDictionaryRef unused); -uint32_t CGDisplayUnitNumber(CGDirectDisplayID id); -bool CGDisplayUsesOpenGLAcceleration(CGDirectDisplayID id); -uint32_t CGDisplayVendorNumber(CGDirectDisplayID id); - -CGError CGCaptureAllDisplays(); -CGError CGCaptureAllDisplaysWithOptions(CGCaptureOptions opts); -bool CGDisplayIsCaptured(CGDirectDisplayID id); -CGError CGDisplayRelease(CGDirectDisplayID id); -CGError CGReleaseAllDisplays(); - -CGError CGDisplayHideCursor(CGDirectDisplayID id); -CGError CGDisplayShowCursor(CGDirectDisplayID id); - -CGError CGDisplayMoveCursorToPoint(CGDirectDisplayID id, CGPoint pt); -void CGGetLastMouseDelta(int32_t* x, int32_t* y); - -// gamma -CGError CGSetDisplayTransferByFormula(CGDirectDisplayID id, CGGammaValue redMin, CGGammaValue redMax, CGGammaValue redGamma, - CGGammaValue greenMin, CGGammaValue greenMax, CGGammaValue greenGamma, CGGammaValue blueMin, CGGammaValue blueMax, CGGammaValue blueGamma); -CGError CGGetDisplayTransferByFormula(CGDirectDisplayID id, CGGammaValue* redMin, CGGammaValue* redMax, CGGammaValue* redGamma, - CGGammaValue* greenMin, CGGammaValue* greenMax, CGGammaValue* greenGamma, CGGammaValue* blueMin, CGGammaValue* blueMax, CGGammaValue* blueGamma); - -uint32_t CGDisplayGammaTableCapacity(CGDirectDisplayID id); -CGError CGSetDisplayTransferByTable(CGDirectDisplayID id, uint32_t tableSize, const CGGammaValue* redTable, const CGGammaValue* greenTable, const CGGammaValue* blueTable); -CGError CGGetDisplayTransferByTable(CGDirectDisplayID id, uint32_t capacity, CGGammaValue* redTable, CGGammaValue* greenTable, CGGammaValue* blueTable, uint32_t* sampleCount); - -} - -#endif diff --git a/src/CoreGraphics/CGDirectDisplay.mm b/src/CoreGraphics/CGDirectDisplay.mm deleted file mode 100644 index 00968b65f..000000000 --- a/src/CoreGraphics/CGDirectDisplay.mm +++ /dev/null @@ -1,593 +0,0 @@ -/* -This file is part of Darling. - -Copyright (C) 2013 Lubos Dolezel - -Darling is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Darling is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with Darling. If not, see . -*/ - -#include -#include "CGDirectDisplay.h" -#include -#include -#include -#include -#include -#include - -static Display* g_display = nullptr; -static Display* getDisplay(); -static void closeDisplay() __attribute__((destructor)); - -static int g_lastMouseX = -1, g_lastMouseY = -1; - -CFStringRef kCGDisplayWidth = CFSTR("Width"); -CFStringRef kCGDisplayHeight = CFSTR("Height"); -CFStringRef kCGDisplayMode = CFSTR("Mode"); -CFStringRef kCGDisplayBitsPerPixel = CFSTR("BitsPerPixel"); -CFStringRef kCGDisplayBitsPerSample = CFSTR("BitsPerSample"); -CFStringRef kCGDisplaySamplesPerPixel = CFSTR("SamplesPerPixel"); -CFStringRef kCGDisplayRefreshRate = CFSTR("RefreshRate"); -CFStringRef kCGDisplayModeUsableForDesktopGUI = CFSTR("UsableForDesktopGUI"); -CFStringRef kCGDisplayIOFlags = CFSTR("IOFlags"); -CFStringRef kCGDisplayBytesPerRow = CFSTR("kCGDisplayBytesPerRow"); -static CFStringRef kCGDarlingResolutionIndex = CFSTR("kCGDarlingResolutionIndex"); - -Display* getDisplay() -{ - if (g_display) - return g_display; - - g_display = XOpenDisplay(nullptr); - - // Returning a CG error would be better than this - if (!g_display) - { - std::cerr << "Darling CG: Cannot open a connection to the X server!\n"; - if (!getenv("DISPLAY")) - std::cerr << "The application you are trying to run requires an X server and cannot be run only in the console.\n"; - abort(); - } - - int evbase, errbase; - if (!XRRQueryExtension(g_display, &evbase, &errbase)) - { - std::cerr << "Darling CG: XRandR not available\n"; - abort(); - } - - return g_display; -} - -void closeDisplay() -{ - if (g_display) - { - XCloseDisplay(g_display); - g_display = nullptr; - } -} - -bool checkRandRVersion(int minMaj, int minMin) -{ - static int maj = 0, min = 0; - if (!maj && !min) - XRRQueryVersion(getDisplay(), &maj, &min); - if (minMaj < maj) - return false; - if (minMin < min) - return false; - return true; -} - -CGError CGCaptureAllDisplays() -{ - return kCGErrorSuccess; -} - -CGError CGCaptureAllDisplaysWithOptions(CGCaptureOptions opts) -{ - return kCGErrorSuccess; -} - -bool CGDisplayIsCaptured(CGDirectDisplayID id) -{ - return true; -} - -CGError CGDisplayRelease(CGDirectDisplayID id) -{ - return kCGErrorSuccess; -} - -CGError CGReleaseAllDisplays() -{ - return kCGErrorSuccess; -} - -CGError CGDisplayMoveCursorToPoint(CGDirectDisplayID id, CGPoint pt) -{ - Display* dpy = getDisplay(); - Window root_window; - root_window = XRootWindow(dpy, 0); - - XSelectInput(dpy, root_window, KeyReleaseMask); - XWarpPointer(dpy, None, root_window, 0, 0, 0, 0, pt.x, pt.y); - - g_lastMouseX = pt.x; - g_lastMouseY = pt.y; - - XFlush(dpy); - return kCGErrorSuccess; -} - -void CGGetLastMouseDelta(int32_t* x, int32_t* y) -{ - Display* dpy = getDisplay(); - Window root_window; - Window window_returned; - int root_x, root_y; - int win_x, win_y; - unsigned int mask_return; - - root_window = XRootWindow(dpy, 0); - XQueryPointer(dpy, root_window, &window_returned, - &window_returned, &root_x, &root_y, &win_x, &win_y, - &mask_return); - - if (g_lastMouseX == -1) - *x = 0; - else - *x = root_x - g_lastMouseX; - - if (g_lastMouseY == -1) - *y = 0; - else - *y = root_y - g_lastMouseY; - - g_lastMouseX = root_x; - g_lastMouseY = root_y; -} - -CGError CGGetActiveDisplayList(uint32_t max, CGDirectDisplayID* list, uint32_t* countOut) -{ - Display* dpy = getDisplay(); - int count = XScreenCount(dpy); - - for (int i = 0; i < count && i < max; i++) - list[i] = i; - - *countOut = std::min(count, max); - return kCGErrorSuccess; -} - -CGError CGGetOnlineDisplayList(uint32_t max, CGDirectDisplayID* list, uint32_t* countOut) -{ - return CGGetActiveDisplayList(max, list, countOut); -} - -size_t CGDisplayPixelsWide(CGDirectDisplayID id) -{ - Screen* screen = XScreenOfDisplay(getDisplay(), id); - if (!screen) - return 0; - else - return XWidthOfScreen(screen); -} - -size_t CGDisplayPixelsHigh(CGDirectDisplayID id) -{ - Screen* screen = XScreenOfDisplay(getDisplay(), id); - if (!screen) - return 0; - else - return XHeightOfScreen(screen); -} - -static void CFDictAddInt(CFMutableDictionaryRef dict, CFStringRef key, int number) -{ - CFNumberRef num; - num = CFNumberCreate(kCFAllocatorDefault, kCFNumberIntType, &number); - CFDictionaryAddValue(dict, key, num); - CFRelease(num); -} - -CFArrayRef CGDisplayCopyAllDisplayModes(CGDirectDisplayID id) -{ - CFMutableArrayRef rv; - Display* dpy = getDisplay(); - XRRScreenConfiguration* rrc = XRRGetScreenInfo(dpy, RootWindow(dpy, id)); - XRRScreenSize *rrsizes; - int nSizes; - - rrsizes = XRRConfigSizes(rrc, &nSizes); - - if (nSizes <= 0) - { - XRRFreeScreenConfigInfo(rrc); - return nullptr; - } - - rv = CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks); - for (int i = 0; i < nSizes; i++) - { - CFMutableDictionaryRef dict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, - &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); - short* rates; - int nRates; - - CFDictAddInt(dict, kCGDisplayWidth, rrsizes[i].width); - CFDictAddInt(dict, kCGDisplayHeight, rrsizes[i].height); - CFDictAddInt(dict, kCGDisplayBitsPerPixel, 24); - CFDictAddInt(dict, kCGDisplayIOFlags, 0); - CFDictAddInt(dict, kCGDarlingResolutionIndex, i); - - CFDictionaryAddValue(dict, kCGDisplayModeUsableForDesktopGUI, - (rrsizes[i].width > 800 && rrsizes[i].height > 600) ? kCFBooleanTrue : kCFBooleanFalse); - - rates = XRRConfigRates (rrc, i, &nRates); - for (int j = 0; j < nRates; j++) - { - CFMutableDictionaryRef dictR = CFDictionaryCreateMutableCopy(kCFAllocatorDefault, 0, (CFDictionaryRef) dict); - CFDictAddInt(dictR, kCGDisplayRefreshRate, rates[j]); - CFDictAddInt(dictR, kCGDisplayMode, (i << 16) | rates[j]); - - CFArrayAppendValue(rv, dictR); - CFRelease(dictR); - } - - CFRelease(dict); - } - - XRRFreeScreenConfigInfo(rrc); - return (CFArrayRef) rv; -} - -CGError CGDisplaySwitchToMode(CGDirectDisplayID id, CFDictionaryRef mode) -{ - XRRScreenConfiguration* rrc; - Display* dpy = getDisplay(); - CFNumberRef sizeIndex, refreshRate; - int sizeIndexN, refreshRateN; - Status status; - - sizeIndex = (CFNumberRef) CFDictionaryGetValue(mode, kCGDarlingResolutionIndex); - if (!sizeIndex) - return kCGErrorIllegalArgument; - - refreshRate = (CFNumberRef) CFDictionaryGetValue(mode, kCGDisplayRefreshRate); - if (!refreshRate) - return kCGErrorIllegalArgument; - - CFNumberGetValue(sizeIndex, kCFNumberIntType, &sizeIndexN); - CFNumberGetValue(refreshRate, kCFNumberIntType, &refreshRateN); - - rrc = XRRGetScreenInfo(dpy, RootWindow(dpy, id)); - // TODO: remove fixed RR_Rotate_0 - status = XRRSetScreenConfigAndRate(dpy, rrc, RootWindow(dpy, id), sizeIndexN, RR_Rotate_0, refreshRateN, CurrentTime); - - return (status != Success) ? kCGErrorFailure : kCGErrorSuccess; -} - -CFDictionaryRef CGDisplayCurrentMode(CGDirectDisplayID id) -{ - Display* dpy = getDisplay(); - XRRScreenConfiguration* rrc = XRRGetScreenInfo(dpy, RootWindow(dpy, id)); - XRRScreenSize *rrsizes; - int nSizes; - SizeID curSize; - Rotation curRotation; - - rrsizes = XRRConfigSizes(rrc, &nSizes); - - if (nSizes <= 0) - { - XRRFreeScreenConfigInfo(rrc); - return nullptr; - } - - curSize = XRRConfigCurrentConfiguration(rrc, &curRotation); - - CFMutableDictionaryRef dict = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, - &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); - - CFDictAddInt(dict, kCGDisplayWidth, rrsizes[curSize].width); - CFDictAddInt(dict, kCGDisplayHeight, rrsizes[curSize].height); - CFDictAddInt(dict, kCGDisplayBitsPerPixel, 24); - CFDictAddInt(dict, kCGDisplayIOFlags, 0); - CFDictAddInt(dict, kCGDarlingResolutionIndex, curSize); - - CFDictionaryAddValue(dict, kCGDisplayModeUsableForDesktopGUI, - (rrsizes[curSize].width > 800 && rrsizes[curSize].height > 600) ? kCFBooleanTrue : kCFBooleanFalse); - - short rate = XRRConfigCurrentRate(rrc); - CFDictAddInt(dict, kCGDisplayRefreshRate, rate); - CFDictAddInt(dict, kCGDisplayMode, (curSize << 16) | rate); - - XRRFreeScreenConfigInfo(rrc); - - return (CFDictionaryRef) dict; -} - -CGDisplayModeRef CGDisplayCopyDisplayMode(CGDirectDisplayID id) -{ - return CGDisplayCurrentMode(id); -} - -CGDisplayModeRef CGDisplayModeRetain(CGDisplayModeRef mode) -{ - return (CGDisplayModeRef) CFRetain(mode); -} - -void CGDisplayModeRelease(CGDisplayModeRef mode) -{ - CFRelease(mode); -} - -CFStringRef CGDisplayModeCopyPixelEncoding(CGDisplayModeRef mode) -{ - return nullptr; -} - -static size_t CGDisplayModeGetInt(CGDisplayModeRef mode, CFStringRef key) -{ - int n; - CFNumberRef height = (CFNumberRef) CFDictionaryGetValue(mode, key); - if (!height) - return 0; - - CFNumberGetValue(height, kCFNumberIntType, &n); - return n; -} - -size_t CGDisplayModeGetHeight(CGDisplayModeRef mode) -{ - return CGDisplayModeGetInt(mode, kCGDisplayHeight); -} - -double CGDisplayModeGetRefreshRate(CGDisplayModeRef mode) -{ - return CGDisplayModeGetInt(mode, kCGDisplayRefreshRate); -} - -CFTypeID CGDisplayModeGetTypeID() -{ - return CFDictionaryGetTypeID(); -} - -size_t CGDisplayModeGetWidth(CGDisplayModeRef mode) -{ - return CGDisplayModeGetInt(mode, kCGDisplayWidth); -} - -bool CGDisplayModeIsUsableForDesktopGUI(CGDisplayModeRef mode) -{ - CFBooleanRef _bool = (CFBooleanRef) CFDictionaryGetValue(mode, kCGDisplayModeUsableForDesktopGUI); - return !!CFBooleanGetValue(_bool); -} - -bool CGDisplayIsActive(CGDirectDisplayID id) -{ - return true; -} - -bool CGDisplayIsAlwaysInMirrorSet(CGDirectDisplayID id) -{ - return false; -} - -bool CGDisplayIsAsleep(CGDirectDisplayID id) -{ - return false; -} - -bool CGDisplayIsBuiltin(CGDirectDisplayID id) -{ - return false; -} - -bool CGDisplayIsInHWMirrorSet(CGDirectDisplayID id) -{ - return false; -} - -bool CGDisplayIsInMirrorSet(CGDirectDisplayID id) -{ - return false; -} - -bool CGDisplayIsMain(CGDirectDisplayID id) -{ - return true; -} - -bool CGDisplayIsOnline(CGDirectDisplayID id) -{ - return true; -} - -bool CGDisplayIsStereo(CGDirectDisplayID id) -{ - return false; -} - -CGDirectDisplayID CGDisplayMirrorsDisplay(CGDirectDisplayID id) -{ - return id; -} - -uint32_t CGDisplayModelNumber(CGDirectDisplayID) -{ - return 0; -} - -CGDirectDisplayID CGDisplayPrimaryDisplay(CGDirectDisplayID id) -{ - return id; -} - -double CGDisplayRotation(CGDirectDisplayID id) -{ - Display* dpy = getDisplay(); - XRRScreenConfiguration* rrc = XRRGetScreenInfo(dpy, RootWindow(dpy, id)); - Rotation rot; - - XRRConfigCurrentConfiguration(rrc, &rot); - XRRFreeScreenConfigInfo(rrc); - - switch (rot) - { - case RR_Rotate_0: - return 0.0; - case RR_Rotate_90: - return 90.0; - case RR_Rotate_180: - return 180.0; - case RR_Rotate_270: - return 270.0; - default: - return 0.0; - } -} - -CGSize CGDisplayScreenSize(CGDirectDisplayID id) -{ - Display* dpy = getDisplay(); - XRRScreenResources* rrc = XRRGetScreenResources(dpy, RootWindow(dpy, id)); - CGSize size; - - // No idea if this is even nearly correct, idea taken from Qt - for (int i = 0; i < rrc->noutput; i++) - { - XRROutputInfo *output = XRRGetOutputInfo(dpy, rrc, rrc->outputs[i]); - if (output->crtc) - size = CGSizeMake(output->mm_width, output->mm_height); - XRRFreeOutputInfo(output); - } - - XRRFreeScreenResources(rrc); - return size; -} - -uint32_t CGDisplaySerialNumber(CGDirectDisplayID id) -{ - return 0; -} - -CGError CGDisplaySetDisplayMode(CGDirectDisplayID id, CGDisplayModeRef mode, CFDictionaryRef) -{ - return CGDisplaySwitchToMode(id, mode); -} - -uint32_t CGDisplayUnitNumber(CGDirectDisplayID id) -{ - return 0; -} - -bool CGDisplayUsesOpenGLAcceleration(CGDirectDisplayID id) -{ - return true; -} - -uint32_t CGDisplayVendorNumber(CGDirectDisplayID id) -{ - return 0; -} - -CGError CGSetDisplayTransferByFormula(CGDirectDisplayID id, CGGammaValue redMin, CGGammaValue redMax, CGGammaValue redGamma, - CGGammaValue greenMin, CGGammaValue greenMax, CGGammaValue greenGamma, CGGammaValue blueMin, CGGammaValue blueMax, CGGammaValue blueGamma) -{ - if (!checkRandRVersion(1, 2)) - return kCGErrorNotImplemented; - - int SAMPLES = CGDisplayGammaTableCapacity(id); - CGGammaValue r[SAMPLES], g[SAMPLES], b[SAMPLES]; - - auto CalculateSample = [](float index, float min, float max, float value) -> float - { - return min + ((max-min) * powf(index, value)); - }; - - for (int i = 0; i < SAMPLES; i++) - { - float index = 1.0f/SAMPLES * i; - r[i] = CalculateSample(index, redMin, redMax, redGamma); - g[i] = CalculateSample(index, greenMin, greenMax, greenGamma); - b[i] = CalculateSample(index, blueMin, blueMax, blueGamma); - } - - return CGSetDisplayTransferByTable(id, SAMPLES, r, g, b); -} - -CGError CGGetDisplayTransferByFormula(CGDirectDisplayID id, CGGammaValue* redMin, CGGammaValue* redMax, CGGammaValue* redGamma, - CGGammaValue* greenMin, CGGammaValue* greenMax, CGGammaValue* greenGamma, CGGammaValue* blueMin, CGGammaValue* blueMax, CGGammaValue* blueGamma) -{ - if (!checkRandRVersion(1, 2)) - return kCGErrorNotImplemented; - - return kCGErrorNotImplemented; -} - -uint32_t CGDisplayGammaTableCapacity(CGDirectDisplayID id) -{ - if (!checkRandRVersion(1, 2)) - return kCGErrorNotImplemented; - - Display* dpy = getDisplay(); - XRRScreenResources* rrc = XRRGetScreenResources(dpy, RootWindow(dpy, id)); - int rv; - - rv = XRRGetCrtcGammaSize(dpy, rrc->crtcs[0]); - - XRRFreeScreenResources(rrc); - return rv; -} - -CGError CGSetDisplayTransferByTable(CGDirectDisplayID id, uint32_t tableSize, const CGGammaValue* redTable, const CGGammaValue* greenTable, const CGGammaValue* blueTable) -{ - if (!checkRandRVersion(1, 2)) - return kCGErrorNotImplemented; - - XRRCrtcGamma* gamma; - Display* dpy = getDisplay(); - XRRScreenResources* rrc; - - gamma = XRRAllocGamma(tableSize); - if (!gamma) - return kCGErrorCannotComplete; - - rrc = XRRGetScreenResources(dpy, RootWindow(dpy, id)); - - for (uint32_t i = 0; i < tableSize; i++) - { - gamma->red[i] = short(redTable[i]*65535.0f); - gamma->green[i] = short(greenTable[i]*65535.0f); - gamma->blue[i] = short(blueTable[i]*65535.0f); - } - - for (int i = 0; i < rrc->ncrtc; i++) - XRRSetCrtcGamma(dpy, rrc->crtcs[i], gamma); - - XRRFreeScreenResources(rrc); - XRRFreeGamma(gamma); - return kCGErrorNotImplemented; -} - -CGError CGGetDisplayTransferByTable(CGDirectDisplayID id, uint32_t capacity, CGGammaValue* redTable, CGGammaValue* greenTable, CGGammaValue* blueTable, uint32_t* sampleCount) -{ - if (!checkRandRVersion(1, 2)) - return kCGErrorNotImplemented; - return kCGErrorNotImplemented; -} - diff --git a/src/CoreGraphics/CGError.h b/src/CoreGraphics/CGError.h deleted file mode 100644 index f140c1102..000000000 --- a/src/CoreGraphics/CGError.h +++ /dev/null @@ -1,22 +0,0 @@ -#ifndef CGERROR_H -#define CGERROR_H -#include - -typedef int32_t CGError; - -enum : CGError -{ - kCGErrorSuccess = 0, - kCGErrorFailure = 1000, - kCGErrorIllegalArgument, - kCGErrorInvalidConnection, - kCGErrorInvalidContext, - kCGErrorCannotComplete, - kCGErrorNotImplemented, - kCGErrorRangeCheck, - kCGErrorTypeCheck, - kCGErrorInvalidOperation = 1010, - kCGErrorNoneAvailable -}; - -#endif diff --git a/src/CoreGraphics/CGEventRef.h b/src/CoreGraphics/CGEventRef.h deleted file mode 100644 index e96756419..000000000 --- a/src/CoreGraphics/CGEventRef.h +++ /dev/null @@ -1,13 +0,0 @@ -#ifndef CGEVENTREF_H_ -#define CGEVENTREF_H_ - -#ifdef DARLING_BUILD -# include -typedef QEvent *CGEventRef; -#else -struct __CGEvent; -typedef struct __CGEvent *CGEventRef; -#endif - -#endif - diff --git a/src/CoreGraphics/CGGeometry.cpp b/src/CoreGraphics/CGGeometry.cpp deleted file mode 100644 index fd97cbced..000000000 --- a/src/CoreGraphics/CGGeometry.cpp +++ /dev/null @@ -1,404 +0,0 @@ -#include "CGGeometry.h" -#include -#include -#include -#include -#include -#include -#include - -const CGRect CGRectInfinite = { CGPoint { -CGFLOAT_MAX / 2, -CGFLOAT_MAX / 2 }, CGSize { CGFLOAT_MAX, CGFLOAT_MAX } }; -const CGPoint CGPointZero = { 0, 0 }; -const CGSize CGSizeZero = { 0, 0 }; -const CGRect CGRectZero = { CGPointZero, CGSizeZero }; -const CGRect CGRectNull = { { std::numeric_limits::infinity(), std::numeric_limits::infinity() }, CGSizeZero }; - -inline CGFloat cgabs(CGFloat a) { return a > 0 ? a : -a; } - -CGPoint CGPointMake(CGFloat x, CGFloat y) -{ - return CGPoint { x, y }; -} - -CGSize CGSizeMake(CGFloat width, CGFloat height) -{ - return CGSize { width, height }; -} - -CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height) -{ - return CGRect { CGPoint { x, y }, CGSize { width, height } }; -} - -CGVector CGVectorMake(CGFloat dx, CGFloat dy) -{ - return CGVector { dx, dy }; -} - -bool CGSizeEqualToSize(CGSize size1, CGSize size2) -{ - return cgabs(size1.width - size2.width) < CGFLOAT_EPSILON - && cgabs(size1.height - size2.height) < CGFLOAT_EPSILON; -} - -bool CGPointEqualToPoint(CGPoint point1, CGPoint point2) -{ - return cgabs(point1.x - point2.x) < CGFLOAT_EPSILON - && cgabs(point1.y - point2.y) < CGFLOAT_EPSILON; -} - -bool CGRectEqualToRect(CGRect rect1, CGRect rect2) -{ - return CGSizeEqualToSize(rect1.size, rect2.size) - && CGPointEqualToPoint(rect1.origin, rect2.origin); -} - -CGFloat CGRectGetHeight(CGRect rect) -{ - return cgabs(rect.size.height); -} - -CGFloat CGRectGetWidth(CGRect rect) -{ - return cgabs(rect.size.width); -} - -CGFloat CGRectGetMaxX(CGRect rect) -{ - return (rect.size.width > 0) ? (rect.origin.x + rect.size.width) : (rect.origin.x); -} - -CGFloat CGRectGetMaxY(CGRect rect) -{ - return (rect.size.height > 0) ? (rect.origin.y + rect.size.height) : (rect.origin.y); -} - -CGFloat CGRectGetMidY(CGRect rect) -{ - return rect.origin.y + rect.size.height/2; -} - -CGFloat CGRectGetMidX(CGRect rect) -{ - return rect.origin.x + rect.size.width/2; -} - -CGFloat CGRectGetMinX(CGRect rect) -{ - return (rect.size.width > 0) ? (rect.origin.x) : (rect.origin.x + rect.size.width); -} - -CGFloat CGRectGetMinY(CGRect rect) -{ - return (rect.size.height > 0) ? (rect.origin.y) : (rect.origin.y + rect.size.height); -} - -bool CGRectIsNull(CGRect rect) -{ - return rect.origin.x == std::numeric_limits::infinity() - && rect.origin.y == std::numeric_limits::infinity(); -} - -bool CGRectIsInfinite(CGRect rect) -{ - return rect.origin.x == CGRectInfinite.origin.x - && rect.origin.y == CGRectInfinite.origin.y - && rect.size.width == CGRectInfinite.size.width - && rect.size.height == CGRectInfinite.size.height; -} - -bool CGRectIsEmpty(CGRect rect) -{ - return rect.size.height == 0 && rect.size.width == 0; -} - -bool CGRectContainsPoint(CGRect rect, CGPoint point) -{ - return point.x >= rect.origin.x && point.x < rect.origin.x+rect.size.width - && point.y >= rect.origin.y && point.y < rect.origin.y+rect.size.height; -} - -bool CGRectContainsRect(CGRect rect1, CGRect rect2) -{ - return CGRectContainsPoint(rect1, rect2.origin) - && CGRectContainsPoint(rect1, CGPoint { rect2.origin.x+rect2.size.width, rect2.origin.y+rect2.size.height }); -} - -CGRect CGRectStandardize(CGRect rect) -{ - if (rect.size.width < 0) - { - rect.origin.x += rect.size.width; - rect.size.width = -rect.size.width; - } - - if (rect.size.height < 0) - { - rect.origin.y += rect.size.height; - rect.size.height = -rect.size.height; - } - - return rect; -} - -CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy) -{ - return CGRect { CGPoint { rect.origin.x+dx, rect.origin.y+dy }, rect.size }; -} - -CGRect CGRectIntegral(CGRect rect) -{ - return CGRect { - CGPoint { std::floor(rect.origin.x), std::floor(rect.origin.y) }, - CGSize { std::ceil(rect.size.width), std::ceil(rect.size.height) } - }; -} - -CGRect CGRectIntersection(CGRect r1, CGRect r2) -{ - r1 = CGRectStandardize(r1); - r2 = CGRectStandardize(r2); - - CGFloat x0 = std::max(r1.origin.x, r2.origin.x); - CGFloat x1 = std::min(r1.origin.x + r1.size.width, r2.origin.x + r2.size.width); - - if (x0 <= x1) - { - CGFloat y0 = std::max(r1.origin.y, r2.origin.y); - CGFloat y1 = std::min(r1.origin.y + r1.size.height, r2.origin.y + r2.size.height); - - if (y0 <= y1) - { - return CGRect { - CGPoint { x0, y0 }, - CGSize { x1 - x0, y1 - y0 } - }; - } - } - - return CGRectNull; -} - -CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy) -{ - if (cgabs(dx)*2 > rect.size.width || cgabs(dy)*2 > rect.size.height) - return CGRectNull; - - rect.origin.x -= dx; - rect.origin.y -= dy; - rect.size.width -= dx*2; - rect.size.height -= dy*2; - - return rect; -} - -CGRect CGRectUnion(CGRect r1, CGRect r2) -{ - if (CGRectIsNull(r1)) - return r2; - if (CGRectIsNull(r2)) - return r1; - - r1 = CGRectStandardize(r1); - r2 = CGRectStandardize(r2); - - CGFloat x0 = std::min(r1.origin.x, r2.origin.x); - CGFloat x1 = std::max(r1.origin.x + r1.size.width, r2.origin.x + r2.size.width); - CGFloat y0 = std::min(r1.origin.y, r2.origin.y); - CGFloat y1 = std::max(r1.origin.y + r1.size.height, r2.origin.y + r2.size.height); - - return CGRect { - CGPoint { x0, y0 }, - CGSize { x1 - x0, y1 - y0 } - }; -} - -void CGRectDivide(CGRect rect, CGRect* slice, CGRect* remainder, CGFloat amount, CGRectEdge edge) -{ - rect = CGRectStandardize(rect); - - if (((edge == CGRectMinXEdge || edge == CGRectMaxXEdge) && amount > rect.size.width) - || ((edge == CGRectMinYEdge || edge == CGRectMaxYEdge) && amount > rect.size.height)) - { - memcpy(slice, &rect, sizeof(CGRect)); - memcpy(remainder, &CGRectZero, sizeof(CGRect)); - return; - } - - switch (edge) - { - case CGRectMinXEdge: - slice->origin.x = rect.origin.x; - slice->origin.y = rect.origin.y; - slice->size.width = amount; - slice->size.height = rect.size.height; - - remainder->origin.x = rect.origin.x + amount; - remainder->origin.y = rect.origin.y; - remainder->size.width = rect.size.width - amount; - remainder->size.height = rect.size.height; - - break; - case CGRectMinYEdge: - slice->origin.x = rect.origin.x; - slice->origin.y = rect.origin.y; - slice->size.width = rect.size.width; - slice->size.height = amount; - - remainder->origin.x = rect.origin.x; - remainder->origin.y = rect.origin.y + amount; - remainder->size.width = rect.size.width; - remainder->size.height = rect.size.height - amount; - - break; - case CGRectMaxXEdge: - slice->origin.x = rect.origin.x + rect.size.width - amount; - slice->origin.y = rect.origin.y; - slice->size.width = amount; - slice->size.height = rect.size.height; - - remainder->origin.x = rect.origin.x; - remainder->origin.y = rect.origin.y; - remainder->size.width = rect.size.width - amount; - remainder->size.height = rect.size.height; - - break; - case CGRectMaxYEdge: - slice->origin.x = rect.origin.x; - slice->origin.y = rect.origin.y + rect.size.height - amount; - slice->size.width = rect.size.width; - slice->size.height = amount; - - remainder->origin.x = rect.origin.x; - remainder->origin.y = rect.origin.y; - remainder->size.width = rect.size.width; - remainder->size.height = rect.size.height - amount; - - break; - } -} - -CFDictionaryRef CGPointCreateDictionaryRepresentation(CGPoint point) -{ - CFNumberRef values[2]; - static const CFStringRef keys[] = { CFSTR("X"), CFSTR("Y") }; - CFDictionaryRef dict; - - values[0] = CFNumberCreate(nullptr, kCFNumberCGFloatType, &point.x); - values[1] = CFNumberCreate(nullptr, kCFNumberCGFloatType, &point.y); - - dict = CFDictionaryCreate(nullptr, (const void**) keys, (const void**) values, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); - - CFRelease(values[0]); - CFRelease(values[1]); - - return dict; -} - -CFDictionaryRef CGSizeCreateDictionaryRepresentation(CGSize size) -{ - CFNumberRef values[2]; - static const CFStringRef keys[] = { CFSTR("Width"), CFSTR("Height") }; - CFDictionaryRef dict; - - values[0] = CFNumberCreate(nullptr, kCFNumberCGFloatType, &size.width); - values[1] = CFNumberCreate(nullptr, kCFNumberCGFloatType, &size.height); - - dict = CFDictionaryCreate(nullptr, (const void**) keys, (const void**) values, 2, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); - - CFRelease(values[0]); - CFRelease(values[1]); - - return dict; -} - -CFDictionaryRef CGRectCreateDictionaryRepresentation(CGRect rect) -{ - CFNumberRef values[4]; - static const CFStringRef keys[] = { CFSTR("X"), CFSTR("Y"), CFSTR("Width"), CFSTR("Height") }; - CFDictionaryRef dict; - - values[0] = CFNumberCreate(nullptr, kCFNumberCGFloatType, &rect.origin.x); - values[1] = CFNumberCreate(nullptr, kCFNumberCGFloatType, &rect.origin.y); - values[2] = CFNumberCreate(nullptr, kCFNumberCGFloatType, &rect.size.width); - values[3] = CFNumberCreate(nullptr, kCFNumberCGFloatType, &rect.size.height); - - dict = CFDictionaryCreate(nullptr, (const void**) keys, (const void**) values, 4, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); - - CFRelease(values[0]); - CFRelease(values[1]); - CFRelease(values[2]); - CFRelease(values[3]); - - return dict; -} - -bool CGPointMakeWithDictionaryRepresentation(CFDictionaryRef dict, CGPoint *point) -{ - CFNumberRef x, y; - - if (!point) - return false; - - x = (CFNumberRef) CFDictionaryGetValue(dict, CFSTR("X")); - y = (CFNumberRef) CFDictionaryGetValue(dict, CFSTR("Y")); - - if (!x || !y) - return false; - - if (CFGetTypeID(x) != CFNumberGetTypeID() || CFGetTypeID(y) != CFNumberGetTypeID()) - return false; - - return CFNumberGetValue(x, kCFNumberCGFloatType, &point->x) - && CFNumberGetValue(y, kCFNumberCGFloatType, &point->y); -} - -bool CGSizeMakeWithDictionaryRepresentation(CFDictionaryRef dict, CGSize *size) -{ - CFNumberRef w, h; - - if (!size) - return false; - - w = (CFNumberRef) CFDictionaryGetValue(dict, CFSTR("Width")); - h = (CFNumberRef) CFDictionaryGetValue(dict, CFSTR("Height")); - - if (!w || !h) - return false; - - if (CFGetTypeID(w) != CFNumberGetTypeID() || CFGetTypeID(h) != CFNumberGetTypeID()) - return false; - - return CFNumberGetValue(w, kCFNumberCGFloatType, &size->width) - && CFNumberGetValue(h, kCFNumberCGFloatType, &size->height); -} - -bool CGRectMakeWithDictionaryRepresentation(CFDictionaryRef dict, CGRect *rect) -{ - CFNumberRef x, y, w, h; - - if (!rect) - return false; - - x = (CFNumberRef) CFDictionaryGetValue(dict, CFSTR("X")); - y = (CFNumberRef) CFDictionaryGetValue(dict, CFSTR("Y")); - w = (CFNumberRef) CFDictionaryGetValue(dict, CFSTR("Width")); - h = (CFNumberRef) CFDictionaryGetValue(dict, CFSTR("Height")); - - if (!x || !y || !w || !h) - return false; - - if (CFGetTypeID(x) != CFNumberGetTypeID() || CFGetTypeID(y) != CFNumberGetTypeID() - || CFGetTypeID(w) != CFNumberGetTypeID() || CFGetTypeID(h) != CFNumberGetTypeID()) - { - return false; - } - - return CFNumberGetValue(x, kCFNumberCGFloatType, &rect->origin.x) - && CFNumberGetValue(y, kCFNumberCGFloatType, &rect->origin.y) - && CFNumberGetValue(w, kCFNumberCGFloatType, &rect->size.width) - && CFNumberGetValue(h, kCFNumberCGFloatType, &rect->size.height); -} - - - diff --git a/src/CoreGraphics/CGGeometry.h b/src/CoreGraphics/CGGeometry.h deleted file mode 100644 index b1b4064df..000000000 --- a/src/CoreGraphics/CGGeometry.h +++ /dev/null @@ -1,98 +0,0 @@ -#ifndef CGGEOMETRY_H_ -#define CGGEOMETRY_H_ -#include "CGBase.h" -#include -#include -#include - -BEGIN_EXTERN_C - -struct CGPoint -{ - CGFloat x; - CGFloat y; -}; -typedef struct CGPoint CGPoint; -//typedef struct CGPoint NSPoint; - -struct CGSize -{ - CGFloat width; - CGFloat height; -}; -typedef struct CGSize CGSize; -//typedef struct CGSize NSSize; - -struct CGVector -{ - CGFloat dx; - CGFloat dy; -}; -typedef struct CGVector CGVector; - -struct CGRect -{ - CGPoint origin; - CGSize size; -}; -typedef struct CGRect CGRect; -//typedef struct CGRect NSRect; - -enum CGRectEdge -{ - CGRectMinXEdge, - CGRectMinYEdge, - CGRectMaxXEdge, - CGRectMaxYEdge -}; -typedef enum CGRectEdge CGRectEdge; - -extern const CGRect CGRectInfinite; -extern const CGPoint CGPointZero; -extern const CGRect CGRectZero; -extern const CGSize CGSizeZero; -extern const CGRect CGRectNull; - -CGPoint CGPointMake(CGFloat x, CGFloat y); -CGSize CGSizeMake(CGFloat width, CGFloat height); -CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height); -CGVector CGVectorMake(CGFloat dx, CGFloat dy); - -bool CGSizeEqualToSize(CGSize size1, CGSize size2); -bool CGPointEqualToPoint(CGPoint point1, CGPoint point2); -bool CGRectEqualToRect(CGRect rect1, CGRect rect2); - -CFDictionaryRef CGPointCreateDictionaryRepresentation(CGPoint point); -CFDictionaryRef CGSizeCreateDictionaryRepresentation(CGSize size); -CFDictionaryRef CGRectCreateDictionaryRepresentation(CGRect rect); - -bool CGPointMakeWithDictionaryRepresentation(CFDictionaryRef dict, CGPoint *point); -bool CGSizeMakeWithDictionaryRepresentation(CFDictionaryRef dict, CGSize *size); -bool CGRectMakeWithDictionaryRepresentation(CFDictionaryRef dict, CGRect *rect); - -CGFloat CGRectGetHeight(CGRect rect); -CGFloat CGRectGetWidth(CGRect rect); -CGFloat CGRectGetMaxX(CGRect rect); -CGFloat CGRectGetMaxY(CGRect rect); -CGFloat CGRectGetMinX(CGRect rect); -CGFloat CGRectGetMinY(CGRect rect); -CGFloat CGRectGetMidX(CGRect rect); -CGFloat CGRectGetMidY(CGRect rect); -bool CGRectIsNull(CGRect rect); -bool CGRectIsInfinite(CGRect rect); -bool CGRectContainsPoint(CGRect rect, CGPoint point); -bool CGRectContainsRect(CGRect rect1, CGRect rect2); - -CGRect CGRectStandardize(CGRect rect); -CGRect CGRectOffset(CGRect rect, CGFloat dx, CGFloat dy); -CGRect CGRectIntegral(CGRect rect); -CGRect CGRectIntersection(CGRect r1, CGRect r2); -CGRect CGRectInset(CGRect rect, CGFloat dx, CGFloat dy); -CGRect CGRectUnion(CGRect r1, CGRect r2); -void CGRectDivide(CGRect rect, CGRect* slice, CGRect* remainder, CGFloat amount, CGRectEdge edge); - - -END_EXTERN_C - -#endif - diff --git a/src/CoreGraphics/CGLayer.cpp b/src/CoreGraphics/CGLayer.cpp deleted file mode 100644 index 10344eb9b..000000000 --- a/src/CoreGraphics/CGLayer.cpp +++ /dev/null @@ -1,126 +0,0 @@ -#include "CGLayer.h" -#include -#include -#include -#include -#include - -static CFTypeID _kCGLayerTypeID; -__attribute__((constructor)) void CGLayerInitialize(); - -// in CGContext.cpp -CGContextRef CGContextForPaintDevice(QPaintDevice* paintDevice); -QPainter* CGContextGetPainter(CGContextRef ref); - -struct __CGLayer -{ - CFRuntimeBase _parent; - QPicture* picture; - CGContextRef context; -}; - -void CGContextDrawLayerAtPoint(CGContextRef context, CGPoint point, CGLayerRef layer) -{ - QPainter* painter = CGContextGetPainter(context); - painter->drawPicture(QPointF(point.x, point.y), *layer->picture); -} - -void CGContextDrawLayerInRect(CGContextRef context, CGRect rect, CGLayerRef layer) -{ - QPainter* painter = CGContextGetPainter(context); - QTransform tf = painter->worldTransform(); - qreal sx, sy; - CGSize origSize = CGLayerGetSize(layer); - - sx = CGRectGetWidth(rect) / origSize.width; - sy = CGRectGetHeight(rect) / origSize.height; - - painter->scale(sx, sy); - - painter->drawPicture(QPointF(rect.origin.x / sx, rect.origin.y / sy), *layer->picture); - - painter->setWorldTransform(tf); -} - -CGLayerRef CGLayerCreateWithContext(CGContextRef context, CGSize size, CFDictionaryRef auxiliaryInfo) -{ - CGLayerRef layer = (CGLayerRef)_CFRuntimeCreateInstance (nullptr, _kCGLayerTypeID, - sizeof(struct __CGLayer) - sizeof(CFRuntimeBase), nullptr); - - layer->picture = new QPicture; - layer->picture->setBoundingRect(QRect(0, 0, size.width, size.height)); - layer->context = CGContextForPaintDevice(layer->picture); - - // TODO: copy over settings from "context" - - return layer; -} - -CGContextRef CGLayerGetContext(CGLayerRef layer) -{ - return layer->context; -} - -CGSize CGLayerGetSize(CGLayerRef layer) -{ - QRect rect = layer->picture->boundingRect(); - return CGSize { CGFloat(rect.width()), CGFloat(rect.height()) }; -} - -static CFHashCode CGLayerHash (CFTypeRef cf) -{ - return CFHash (cf); -} - -static CFStringRef CGLayerCopyFormattingDesc (CFTypeRef cf, CFDictionaryRef formatOptions) -{ - return CFSTR("CGLayer"); -} - -static Boolean CGLayerEqual (CFTypeRef cf1, CFTypeRef cf2) -{ - return cf1 == cf2; -} - -static void CGLayerDealloc(CFTypeRef cf) -{ - CGLayerRef ref = CGLayerRef(cf); - CFRelease(ref->context); - delete ref->picture; -} - -void CGLayerInitialize() -{ - static const CFRuntimeClass CGLayerClass = - { - 0, - "CGLayer", - NULL, - NULL, - CGLayerDealloc, - NULL, - CGLayerHash, - CGLayerCopyFormattingDesc, - NULL - }; - _kCGLayerTypeID = _CFRuntimeRegisterClass (&CGLayerClass); -} - -CFTypeID CGLayerGetTypeID(void) -{ - return _kCGLayerTypeID; -} - - -void CGLayerRelease(CGLayerRef layer) -{ - if (layer) - CFRelease(layer); -} - -CGLayerRef CGLayerRetain(CGLayerRef layer) -{ - if (layer) - CFRetain(layer); - return layer; -} diff --git a/src/CoreGraphics/CGLayer.h b/src/CoreGraphics/CGLayer.h deleted file mode 100644 index 2f0422ee5..000000000 --- a/src/CoreGraphics/CGLayer.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef CGLAYER_H_ -#define CGLAYER_H_ -#include -#include "CGContext.h" -#include "CGGeometry.h" - -BEGIN_EXTERN_C - -struct __CGLayer; -typedef __CGLayer *CGLayerRef; - -void CGContextDrawLayerAtPoint(CGContextRef context, CGPoint point, CGLayerRef layer); -void CGContextDrawLayerInRect(CGContextRef context, CGRect rect, CGLayerRef layer); -CGLayerRef CGLayerCreateWithContext(CGContextRef context, CGSize size, CFDictionaryRef auxiliaryInfo); -CGContextRef CGLayerGetContext(CGLayerRef layer); -CGSize CGLayerGetSize(CGLayerRef layer); -CFTypeID CGLayerGetTypeID(void); -void CGLayerRelease(CGLayerRef layer); -CGLayerRef CGLayerRetain(CGLayerRef layer); - -END_EXTERN_C - -#endif diff --git a/src/CoreGraphics/CMakeLists.txt b/src/CoreGraphics/CMakeLists.txt deleted file mode 100644 index 6570c556c..000000000 --- a/src/CoreGraphics/CMakeLists.txt +++ /dev/null @@ -1,47 +0,0 @@ -project(CoreGraphics) - -cmake_minimum_required(VERSION 2.4.0) -if(COMMAND cmake_policy) - cmake_policy(SET CMP0003 NEW) -endif(COMMAND cmake_policy) - -set(QT_USE_QTDECLARATIVE TRUE) -find_package(Qt4 REQUIRED) - -add_definitions(${QT_DEFINITIONS}) -include_directories(${QT_INCLUDE_DIR}) -include(${QT_USE_FILE}) - -#if (NOT "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}" MATCHES ".*clang") -# message(FATAL_ERROR "Clang is the only supported compiler.") -#endif (NOT "${CMAKE_CXX_COMPILER} ${CMAKE_CXX_COMPILER_ARG1}" MATCHES ".*clang") - -#configure_file(config.h.in config.h) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fblocks") - -add_definitions(-D__STDC_LIMIT_MACROS) -add_definitions(-DDARLING_BUILD) - -include_directories(${CMAKE_CURRENT_SOURCE_DIR}) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/..) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../util) - -set(CoreGraphics_SRCS - CGDirectDisplay.mm - CGGeometry.cpp - CGLayer.cpp - CGContext.cpp -) - -SET(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/darling") -#SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--enable-new-dtags") -SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) -SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) - -add_library(CoreGraphics SHARED ${CoreGraphics_SRCS}) -target_link_libraries(CoreGraphics -lopal -lgnustep-corebase -lX11 -lXrandr - -lgnustep-corebase ${QT_LIBRARIES}) - -install(TARGETS CoreGraphics DESTINATION "${CMAKE_INSTALL_LIBDIR}/darling") - diff --git a/src/external/IOKitUser b/src/external/IOKitUser index cc74282c3..1d514ec34 160000 --- a/src/external/IOKitUser +++ b/src/external/IOKitUser @@ -1 +1 @@ -Subproject commit cc74282c30112106b85ca36d4c42ba6088785beb +Subproject commit 1d514ec3454cd31c4e5aadb2855cb02ae13ea0f3 diff --git a/src/external/IONetworkingFamily b/src/external/IONetworkingFamily new file mode 160000 index 000000000..d24f75126 --- /dev/null +++ b/src/external/IONetworkingFamily @@ -0,0 +1 @@ +Subproject commit d24f751267f8ac86759d16cb95224410cc586d5d diff --git a/src/external/corefoundation b/src/external/corefoundation index e5e3f95c4..5d8d13ea1 160000 --- a/src/external/corefoundation +++ b/src/external/corefoundation @@ -1 +1 @@ -Subproject commit e5e3f95c4476317bd957b3500e16475c4cf55433 +Subproject commit 5d8d13ea122c1739cf415c941a0da43c806b4d8b diff --git a/src/external/coregraphics b/src/external/coregraphics new file mode 160000 index 000000000..7243e159c --- /dev/null +++ b/src/external/coregraphics @@ -0,0 +1 @@ +Subproject commit 7243e159cbce985107d895a877aefc219ef8fe83 diff --git a/src/external/foundation b/src/external/foundation index 947998794..8c7be80b9 160000 --- a/src/external/foundation +++ b/src/external/foundation @@ -1 +1 @@ -Subproject commit 9479987947e4da8ed491aa433b69c8f9dee8986e +Subproject commit 8c7be80b924c0df33e4b7dda6dcae4eca1c831aa diff --git a/src/external/libclosure b/src/external/libclosure index 3a6ab78bb..3f7acfe74 160000 --- a/src/external/libclosure +++ b/src/external/libclosure @@ -1 +1 @@ -Subproject commit 3a6ab78bb16b6fbd79823bc684cc0d588b098af8 +Subproject commit 3f7acfe743f55738cf025ed2438a5800895b189e diff --git a/src/external/libkqueue b/src/external/libkqueue index 7dbf79587..e7f550d34 160000 --- a/src/external/libkqueue +++ b/src/external/libkqueue @@ -1 +1 @@ -Subproject commit 7dbf79587a5726b42c2902c0b515a005f58b58e1 +Subproject commit e7f550d34d2252a6d8bd376b1ac7bc0d0bee2eb7