forked from gnachman/iTerm2
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 732e201
Showing
462 changed files
with
88,610 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 [email protected] | ||
* | ||
*/ | ||
|
||
#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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 [email protected] | ||
* | ||
*/ | ||
|
||
#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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
/* | ||
* 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 [email protected] | ||
* | ||
*/ | ||
|
||
#pragma once | ||
|
||
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 [email protected] | ||
* | ||
*/ | ||
|
||
#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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 [email protected] | ||
* | ||
*/ | ||
|
||
#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.