Permalink
Browse files

[VERSION] 1.0

  • Loading branch information...
0 parents commit d1509ed4c57d954d3fec36d734e1b95d6a68f2a8 @rentzsch committed Jan 28, 2012
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2007-2008 Alacatia Labs
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software
+ * in a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ *
+ * Joe Ranieri joe@alacatia.com
+ *
+ */
+
+#pragma once
+#include "CGSConnection.h"
+
+CG_EXTERN_C_BEGIN
+
+/*! Gets whether the display is zoomed. I'm not sure why there's two calls that appear to do the same thing - I think CGSIsZoomed calls through to CGSDisplayIsZoomed. */
+CG_EXTERN bool CGSDisplayIsZoomed(void);
+CG_EXTERN CGError CGSIsZoomed(CGSConnectionID cid, bool *outIsZoomed);
+
+/*! Gets and sets the cursor scale. The largest the Universal Access prefpane allows you to go is 4.0. */
+CG_EXTERN CGError CGSGetCursorScale(CGSConnectionID cid, float *outScale);
+CG_EXTERN CGError CGSSetCursorScale(CGSConnectionID cid, float scale);
+
+/*! Gets and sets the state of screen inversion. */
+CG_EXTERN bool CGDisplayUsesInvertedPolarity(void);
+CG_EXTERN void CGDisplaySetInvertedPolarity(bool invertedPolarity);
+
+/*! Gets and sets whether the screen is grayscale. */
+CG_EXTERN bool CGDisplayUsesForceToGray(void);
+CG_EXTERN void CGDisplayForceToGray(bool forceToGray);
+
+/*! Sets the display's contrast. There doesn't seem to be a get version of this function. */
+CG_EXTERN CGError CGSSetDisplayContrast(float contrast);
+
+CG_EXTERN_C_END
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2007-2008 Alacatia Labs
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software
+ * in a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ *
+ * Joe Ranieri joe@alacatia.com
+ *
+ */
+
+#pragma once
+#include "CGSConnection.h"
+#include "CGSWindow.h"
+
+typedef int CGSCIFilterID;
+
+/*! Creates a new CGSCIFilter from a filter name. These names are the same as you'd usually use for CIFilters. */
+CG_EXTERN CGError CGSNewCIFilterByName(CGSConnectionID cid, CFStringRef filterName, CGSCIFilterID *outFilter);
+
+/*! Adds or removes a CIFilter to a window. Flags are currently unknown (the Dock uses 0x3001).
+ Note: This stuff is VERY crashy under 10.4.10 - make sure to remove the filter before minimizing the window or closing it. */
+CG_EXTERN CGError CGSAddWindowFilter(CGSConnectionID cid, CGSWindowID wid, CGSCIFilterID filter, int flags);
+CG_EXTERN CGError CGSRemoveWindowFilter(CGSConnectionID cid, CGSWindowID wid, CGSCIFilterID filter);
+
+enum {
+ kCGWindowFilterUnderlay = 1,
+ kCGWindowFilterDock = 0x3001,
+};
+
+/*! Loads a set of values into the CIFilter. */
+CG_EXTERN CGError CGSSetCIFilterValuesFromDictionary(CGSConnectionID cid, CGSCIFilterID filter, CFDictionaryRef filterValues);
+
+/*! Releases a CIFilter. */
+CG_EXTERN CGError CGSReleaseCIFilter(CGSConnectionID cid, CGSCIFilterID filter);
+
+CG_EXTERN_C_END
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2007-2008 Alacatia Labs
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software
+ * in a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ *
+ * Joe Ranieri joe@alacatia.com
+ *
+ */
+
+#pragma once
+
+#include "Compatability.h"
+
+typedef int CGSConnectionID;
+static const CGSConnectionID kCGSNullConnectionID = 0;
+
+
+CG_EXTERN_C_BEGIN
+
+/*! DOCUMENTATION PENDING - verify this is Leopard only! */
+CG_EXTERN CGError CGSSetLoginwindowConnection(CGSConnectionID cid) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+CG_EXTERN CGError CGSSetLoginwindowConnectionWithOptions(CGSConnectionID cid, CFDictionaryRef options) AVAILABLE_MAC_OS_X_VERSION_10_5_AND_LATER;
+
+/*! Enables or disables updates on a connection. The WindowServer will forcibly reenable updates after 1 second. */
+CG_EXTERN CGError CGSDisableUpdate(CGSConnectionID cid);
+CG_EXTERN CGError CGSReenableUpdate(CGSConnectionID cid);
+
+/*! Is there a menubar associated with this connection? */
+CG_EXTERN bool CGSMenuBarExists(CGSConnectionID cid);
+
+
+
+#pragma mark notifications
+/*! Registers or removes a function to get notified when a connection is created. Only gets notified for connections created in the current application. */
+typedef void (*CGSNewConnectionNotificationProc)(CGSConnectionID cid);
+CG_EXTERN CGError CGSRegisterForNewConnectionNotification(CGSNewConnectionNotificationProc proc);
+CG_EXTERN CGError CGSRemoveNewConnectionNotification(CGSNewConnectionNotificationProc proc);
+
+/*! Registers or removes a function to get notified when a connection is released. Only gets notified for connections created in the current application. */
+typedef void (*CGSConnectionDeathNotificationProc)(CGSConnectionID cid);
+CG_EXTERN CGError CGSRegisterForConnectionDeathNotification(CGSConnectionDeathNotificationProc proc);
+CG_EXTERN CGError CGSRemoveConnectionDeathNotification(CGSConnectionDeathNotificationProc proc);
+
+/*! Creates a new connection to the window server. */
+CG_EXTERN CGError CGSNewConnection(int unused, CGSConnectionID *outConnection);
+
+/*! Releases a CGSConnection and all CGSWindows owned by it. */
+CG_EXTERN CGError CGSReleaseConnection(CGSConnectionID cid);
+
+/*! Gets the default connection for this process. `CGSMainConnectionID` is just a more modern name. */
+CG_EXTERN CGSConnectionID _CGSDefaultConnection(void);
+CG_EXTERN CGSConnectionID CGSMainConnectionID(void);
+
+/*! Gets the default connection for the current thread. */
+CG_EXTERN CGSConnectionID CGSDefaultConnectionForThread(void);
+
+/* Gets the `pid` that owns this CGSConnection. */
+CG_EXTERN CGError CGSConnectionGetPID(CGSConnectionID cid, pid_t *outPID);
+
+/*! Gets the CGSConnection for the PSN. */
+CG_EXTERN CGError CGSGetConnectionIDForPSN(CGSConnectionID cid, const ProcessSerialNumber *psn, CGSConnectionID *outOwnerCID);
+
+/*! Gets and sets a connection's property. */
+CG_EXTERN CGError CGSGetConnectionProperty(CGSConnectionID cid, CGSConnectionID targetCID, CFStringRef key, CFTypeRef *outValue);
+CG_EXTERN CGError CGSSetConnectionProperty(CGSConnectionID cid, CGSConnectionID targetCID, CFStringRef key, CFTypeRef value);
+
+/*! Closes ALL connections used by the current application. Essentially, it turns it into a console application. */
+CG_EXTERN CGError CGSShutdownServerConnections(void);
+
+/*! Only the owner of a window can manipulate it. So, Apple has the concept of a universal owner that owns all windows and can manipulate them all. There can only be one universal owner at a time (the Dock). */
+CG_EXTERN CGError CGSSetUniversalOwner(CGSConnectionID cid);
+
+/*! Sets a connection to be a universal owner. This call requires `cid` be a universal connection. */
+CG_EXTERN CGError CGSSetOtherUniversalConnection(CGSConnectionID cid, CGSConnectionID otherConnection);
+
+CG_EXTERN_C_END
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2007-2008 Alacatia Labs
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software
+ * in a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ *
+ * Joe Ranieri joe@alacatia.com
+ *
+ */
+
+#pragma once
+#include "CGSConnection.h"
+
+typedef int CGSCursorID;
+
+
+CG_EXTERN_C_BEGIN
+
+/*! Does the system support hardware cursors? */
+CG_EXTERN CGError CGSSystemSupportsHardwareCursor(CGSConnectionID cid, bool *outSupportsHardwareCursor);
+
+/*! Does the system support hardware color cursors? */
+CG_EXTERN CGError CGSSystemSupportsColorHardwareCursor(CGSConnectionID cid, bool *outSupportsHardwareCursor);
+
+/*! Shows the cursor. */
+CG_EXTERN CGError CGSShowCursor(CGSConnectionID cid);
+
+/*! Hides the cursor. */
+CG_EXTERN CGError CGSHideCursor(CGSConnectionID cid);
+
+/*! Hides the cursor until the mouse is moved. */
+CG_EXTERN CGError CGSObscureCursor(CGSConnectionID cid);
+
+/*! Gets the cursor location. */
+CG_EXTERN CGError CGSGetCurrentCursorLocation(CGSConnectionID cid, CGPoint *outPos);
+
+/*! Gets the name (in reverse DNS form) of a system cursor. */
+CG_EXTERN char *CGSCursorNameForSystemCursor(CGSCursorID cursor);
+
+/*! Gets the size of the data for the connection's cursor. */
+CG_EXTERN CGError CGSGetCursorDataSize(CGSConnectionID cid, int *outDataSize);
+
+/*! Gets the data for the connection's cursor. */
+CG_EXTERN CGError CGSGetCursorData(CGSConnectionID cid, void *outData);
+
+/*! Gets the size of the data for the current cursor. */
+CG_EXTERN CGError CGSGetGlobalCursorDataSize(CGSConnectionID cid, int *outDataSize);
+
+/*! Gets the data for the current cursor. */
+CG_EXTERN CGError CGSGetGlobalCursorData(CGSConnectionID cid, void *outData, int *outRowBytes, CGRect *outRect, CGRect *outHotSpot, int *outDepth, int *outComponents, int *outBitsPerComponent);
+
+/*! Gets the size of data for a system-defined cursor. */
+CG_EXTERN CGError CGSGetSystemDefinedCursorDataSize(CGSConnectionID cid, CGSCursorID cursor, int *outDataSize);
+
+/*! Gets the data for a system-defined cursor. */
+CG_EXTERN CGError CGSGetSystemDefinedCursorData(CGSConnectionID cid, CGSCursorID cursor, void *outData, int *outRowBytes, CGRect *outRect, CGRect *outHotSpot, int *outDepth, int *outComponents, int *outBitsPerComponent);
+
+/*! Gets the cursor 'seed'. Every time the cursor is updated, the seed changes. */
+CG_EXTERN int CGSCurrentCursorSeed(void);
+
+/*! Shows or hides the spinning beachball of death. */
+CG_EXTERN CGError CGSForceWaitCursorActive(CGSConnectionID cid, bool showWaitCursor);
+
+CG_EXTERN_C_END
@@ -0,0 +1,114 @@
+/*
+ * Routines for debugging the window server and application drawing.
+ *
+ * Copyright (C) 2007-2008 Alacatia Labs
+ *
+ * This software is provided 'as-is', without any express or implied
+ * warranty. In no event will the authors be held liable for any damages
+ * arising from the use of this software.
+ *
+ * Permission is granted to anyone to use this software for any purpose,
+ * including commercial applications, and to alter it and redistribute it
+ * freely, subject to the following restrictions:
+ *
+ * 1. The origin of this software must not be misrepresented; you must not
+ * claim that you wrote the original software. If you use this software
+ * in a product, an acknowledgment in the product documentation would be
+ * appreciated but is not required.
+ * 2. Altered source versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software.
+ * 3. This notice may not be removed or altered from any source distribution.
+ *
+ * Joe Ranieri joe@alacatia.com
+ *
+ */
+
+#pragma once
+#include "CGSConnection.h"
+
+typedef enum {
+ /*! Clears all flags. */
+ kCGSDebugOptionNone = 0,
+
+ /*! All screen updates are flashed in yellow. Regions under a DisableUpdate are flashed in orange. Regions that are hardware accellerated are painted green. */
+ kCGSDebugOptionFlashScreenUpdates = 0x4,
+
+ /*! Colors windows green if they are accellerated, otherwise red. Doesn't cause things to refresh properly - leaves excess rects cluttering the screen. */
+ kCGSDebugOptionColorByAccelleration = 0x20,
+
+ /*! Disables shadows on all windows. */
+ kCGSDebugOptionNoShadows = 0x4000,
+
+ /*! Setting this disables the pause after a flash when using FlashScreenUpdates or FlashIdenticalUpdates. */
+ kCGSDebugOptionNoDelayAfterFlash = 0x20000,
+
+ /*! Flushes the contents to the screen after every drawing operation. */
+ kCGSDebugOptionAutoflushDrawing = 0x40000,
+
+ /*! Highlights mouse tracking areas. Doesn't cause things to refresh correctly - leaves excess rectangles cluttering the screen. */
+ kCGSDebugOptionShowMouseTrackingAreas = 0x100000,
+
+ /*! Flashes identical updates in red. */
+ kCGSDebugOptionFlashIdenticalUpdates = 0x4000000,
+
+ /*! Dumps a list of windows to /tmp/WindowServer.winfo.out. This is what Quartz Debug uses to get the window list. */
+ kCGSDebugOptionDumpWindowListToFile = 0x80000001,
+
+ /*! Dumps a list of connections to /tmp/WindowServer.cinfo.out. */
+ kCGSDebugOptionDumpConnectionListToFile = 0x80000002,
+
+ /*! Dumps a very verbose debug log of the WindowServer to /tmp/CGLog_WinServer_<PID>. */
+ kCGSDebugOptionVerboseLogging = 0x80000006,
+
+ /*! Dumps a very verbose debug log of all processes to /tmp/CGLog_<NAME>_<PID>. */
+ kCGSDebugOptionVerboseLoggingAllApps = 0x80000007,
+
+ /*! Dumps a list of hotkeys to /tmp/WindowServer.keyinfo.out. */
+ kCGSDebugOptionDumpHotKeyListToFile = 0x8000000E,
+
+ /*! Dumps information about OpenGL extensions, etc to /tmp/WindowServer.glinfo.out. */
+ kCGSDebugOptionDumpOpenGLInfoToFile = 0x80000013,
+
+ /*! Dumps a list of shadows to /tmp/WindowServer.shinfo.out. */
+ kCGSDebugOptionDumpShadowListToFile = 0x80000014,
+
+ /*! Leopard: Dumps information about caches to `/tmp/WindowServer.scinfo.out`. */
+ kCGSDebugOptionDumpCacheInformationToFile = 0x80000015,
+
+ /*! Leopard: Purges some sort of cache - most likely the same caches dummped with `kCGSDebugOptionDumpCacheInformationToFile`. */
+ kCGSDebugOptionPurgeCaches = 0x80000016,
+
+ /*! Leopard: Dumps a list of windows to `/tmp/WindowServer.winfo.plist`. This is what Quartz Debug on 10.5 uses to get the window list. */
+ kCGSDebugOptionDumpWindowListToPlist = 0x80000017,
+
+ /*! Leopard: DOCUMENTATION PENDING */
+ kCGSDebugOptionEnableSurfacePurging = 0x8000001B,
+
+ // Leopard: 0x8000001C - invalid
+
+ /*! Leopard: DOCUMENTATION PENDING */
+ kCGSDebugOptionDisableSurfacePurging = 0x8000001D,
+
+ /*! Leopard: Dumps information about an application's resource usage to `/tmp/CGResources_<NAME>_<PID>`. */
+ kCGSDebugOptionDumpResourceUsageToFiles = 0x80000020,
+
+ // Leopard: 0x80000022 - something about QuartzGL?
+
+ // Leopard: Returns the magic mirror to its normal mode. The magic mirror is what the Dock uses to draw the screen reflection. For more information, see `CGSSetMagicMirror`. */
+ kCGSDebugOptionSetMagicMirrorModeNormal = 0x80000023,
+
+ /*! Leopard: Disables the magic mirror. It still appears but draws black instead of a reflection. */
+ kCGSDebugOptionSetMagicMirrorModeDisabled = 0x80000024,
+} CGSDebugOption;
+
+
+CG_EXTERN_C_BEGIN
+
+/*! Gets and sets the debug options. These options are global and are not reset when your application dies! */
+CG_EXTERN CGError CGSGetDebugOptions(int *outCurrentOptions);
+CG_EXTERN CGError CGSSetDebugOptions(int options);
+
+/*! Queries the server about its performance. This is how Quartz Debug gets the FPS meter, but not the CPU meter (for that it uses host_processor_info). Quartz Debug subtracts 25 so that it is at zero with the minimum FPS. */
+CG_EXTERN CGError CGSGetPerformanceData(CGSConnectionID cid, float *outFPS, float *unk, float *unk2, float *unk3);
+
+CG_EXTERN_C_END
Oops, something went wrong.

0 comments on commit d1509ed

Please sign in to comment.