You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
913 lines
24 KiB
913 lines
24 KiB
/* |
|
File: CGDirectDisplay.h |
|
|
|
Contains: CoreGraphics direct display |
|
|
|
Version: QuickTime 7.3 |
|
|
|
Copyright: (c) 2007 (c) 2000-2001 by Apple Computer, Inc., all rights reserved. |
|
|
|
Bugs?: For bug reports, consult the following page on |
|
the World Wide Web: |
|
|
|
http://developer.apple.com/bugreporter/ |
|
|
|
*/ |
|
#ifndef CGDIRECTDISPLAY_H_ |
|
#define CGDIRECTDISPLAY_H_ |
|
|
|
#ifndef __CGBASE__ |
|
#include <CGBase.h> |
|
#endif |
|
|
|
#ifndef __CGGEOMETRY__ |
|
#include <CGGeometry.h> |
|
#endif |
|
|
|
#ifndef __CGERROR__ |
|
#include <CGError.h> |
|
#endif |
|
|
|
#ifndef __CFARRAY__ |
|
#include <CFArray.h> |
|
#endif |
|
|
|
#ifndef __CFSTRING__ |
|
#include <CFString.h> |
|
#endif |
|
|
|
#ifndef __CFDICTIONARY__ |
|
#include <CFDictionary.h> |
|
#endif |
|
|
|
#include <stdint.h> |
|
|
|
|
|
#if PRAGMA_ONCE |
|
#pragma once |
|
#endif |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
|
|
#if PRAGMA_IMPORT |
|
#pragma import on |
|
#endif |
|
|
|
typedef struct _CGDirectDisplayID* CGDirectDisplayID; |
|
typedef struct _CGDirectPaletteRef* CGDirectPaletteRef; |
|
typedef uint32_t CGDisplayCount; |
|
typedef uint32_t CGTableCount; |
|
typedef int32_t CGDisplayCoord; |
|
typedef uint8_t CGByteValue; |
|
typedef uint32_t CGOpenGLDisplayMask; |
|
typedef uint32_t CGBeamPosition; |
|
typedef int32_t CGMouseDelta; |
|
typedef double CGRefreshRate; |
|
typedef CGError CGDisplayErr; |
|
enum { |
|
CGDisplayNoErr = kCGErrorSuccess |
|
}; |
|
|
|
/* A NULL value points to the main display device as a programming convention */ |
|
#define kCGDirectMainDisplay ((CGDirectDisplayID)NULL) |
|
|
|
/* |
|
* Mechanisms used to find screen IDs |
|
* An array length (maxDisplays) and array of CGDirectDisplayIDs are passed in. |
|
* Up to maxDisplays of the array are filled in with the displays meeting the |
|
* specified criteria. The actual number of displays filled in is returned in |
|
* dspyCnt. |
|
* |
|
* If the dspys array is NULL, maxDisplays is ignored, and *dspyCnt is filled |
|
* in with the number of displays meeting the function's requirements. |
|
*/ |
|
/* |
|
* CGGetDisplaysWithPoint() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGGetDisplaysWithPoint( |
|
CGPoint point, |
|
CGDisplayCount maxDisplays, |
|
CGDirectDisplayID * dspys, |
|
CGDisplayCount * dspyCnt); |
|
|
|
|
|
/* |
|
* CGGetDisplaysWithRect() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGGetDisplaysWithRect( |
|
CGRect rect, |
|
CGDisplayCount maxDisplays, |
|
CGDirectDisplayID * dspys, |
|
CGDisplayCount * dspyCnt); |
|
|
|
|
|
/* |
|
* CGGetDisplaysWithOpenGLDisplayMask() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGGetDisplaysWithOpenGLDisplayMask( |
|
CGOpenGLDisplayMask mask, |
|
CGDisplayCount maxDisplays, |
|
CGDirectDisplayID * dspys, |
|
CGDisplayCount * dspyCnt); |
|
|
|
|
|
/* |
|
* Get lists of displays. Use this to determine display IDs |
|
* |
|
* If the activeDspys array is NULL, maxDisplays is ignored, and *dspyCnt is filled |
|
* in with the number of displays meeting the function's requirements. |
|
* |
|
* The first display returned in the list is the main display, |
|
* the one with the menu bar. |
|
* When mirroring, this will be the largest display, |
|
* or if all are the same size, the one with the deepest pixel depth. |
|
*/ |
|
/* |
|
* CGGetActiveDisplayList() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGGetActiveDisplayList( |
|
CGDisplayCount maxDisplays, |
|
CGDirectDisplayID * activeDspys, |
|
CGDisplayCount * dspyCnt); |
|
|
|
|
|
/* Map a display to an OpenGL display mask; returns 0 on invalid display */ |
|
/* |
|
* CGDisplayIDToOpenGLDisplayMask() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGOpenGLDisplayMask ) |
|
CGDisplayIDToOpenGLDisplayMask(CGDirectDisplayID display); |
|
|
|
|
|
/* Return screen size and origin in global coords; Empty rect if display is invalid */ |
|
/* |
|
* CGDisplayBounds() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGRect ) |
|
CGDisplayBounds(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* CGDisplayPixelsWide() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( size_t ) |
|
CGDisplayPixelsWide(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* CGDisplayPixelsHigh() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( size_t ) |
|
CGDisplayPixelsHigh(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* Display mode selection |
|
* Display modes are represented as CFDictionaries |
|
* All dictionaries and arrays returned via these mechanisms are |
|
* owned by the framework and should not be released. The framework |
|
* will not release them out from under your application. |
|
* |
|
* Values associated with the following keys are CFNumber types. |
|
* With CFNumberGetValue(), use kCFNumberLongType for best results. |
|
*/ |
|
/* |
|
* Keys used in mode dictionaries. Source C strings shown won't change. |
|
* Some CFM environments cannot import data variables, and so |
|
* duplicate these CFStringRefs locally. |
|
*/ |
|
/* |
|
* kCGDisplayWidth |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
extern CFStringRef kCGDisplayWidth; |
|
/* |
|
* kCGDisplayHeight |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
extern CFStringRef kCGDisplayHeight; |
|
/* |
|
* kCGDisplayMode |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
extern CFStringRef kCGDisplayMode; |
|
/* |
|
* kCGDisplayBitsPerPixel |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
extern CFStringRef kCGDisplayBitsPerPixel; |
|
/* |
|
* kCGDisplayBitsPerSample |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
extern CFStringRef kCGDisplayBitsPerSample; |
|
/* |
|
* kCGDisplaySamplesPerPixel |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
extern CFStringRef kCGDisplaySamplesPerPixel; |
|
/* |
|
* kCGDisplayRefreshRate |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
extern CFStringRef kCGDisplayRefreshRate; |
|
/* |
|
* kCGDisplayModeUsableForDesktopGUI |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
extern CFStringRef kCGDisplayModeUsableForDesktopGUI; |
|
/* |
|
* kCGDisplayIOFlags |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
extern CFStringRef kCGDisplayIOFlags; |
|
/* |
|
* Return a CFArray of CFDictionaries describing all display modes. |
|
* Returns NULL if the display is invalid. |
|
*/ |
|
/* |
|
* CGDisplayAvailableModes() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CFArrayRef ) |
|
CGDisplayAvailableModes(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* Try to find a display mode of specified depth with dimensions equal or greater than |
|
* specified. |
|
* If no depth match is found, try for the next larger depth with dimensions equal or greater |
|
* than specified. If no luck, then just return the current mode. |
|
* |
|
* exactmatch, if not NULL, is set to 'true' if an exact match in width, height, and depth is found, |
|
* and 'false' otherwise. |
|
* Returns NULL if display is invalid. |
|
*/ |
|
/* |
|
* CGDisplayBestModeForParameters() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CFDictionaryRef ) |
|
CGDisplayBestModeForParameters( |
|
CGDirectDisplayID display, |
|
size_t bitsPerPixel, |
|
size_t width, |
|
size_t height, |
|
boolean_t * exactMatch); |
|
|
|
|
|
/* |
|
* CGDisplayBestModeForParametersAndRefreshRate() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CFDictionaryRef ) |
|
CGDisplayBestModeForParametersAndRefreshRate( |
|
CGDirectDisplayID display, |
|
size_t bitsPerPixel, |
|
size_t width, |
|
size_t height, |
|
CGRefreshRate refresh, |
|
boolean_t * exactMatch); |
|
|
|
|
|
/* |
|
* Return a CFDictionary describing the current display mode. |
|
* Returns NULL if display is invalid. |
|
*/ |
|
/* |
|
* CGDisplayCurrentMode() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CFDictionaryRef ) |
|
CGDisplayCurrentMode(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* Switch display mode. Note that after switching, |
|
* display parameters and addresses may change. |
|
* The selected display mode persists for the life of the program, and automatically |
|
* reverts to the permanent setting made by Preferences when the program terminates. |
|
* The mode dictionary passed in must be a dictionary vended by other CGDirectDisplay |
|
* APIs such as CGDisplayBestModeForParameters() and CGDisplayAvailableModes(). |
|
*/ |
|
/* |
|
* CGDisplaySwitchToMode() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGDisplaySwitchToMode( |
|
CGDirectDisplayID display, |
|
CFDictionaryRef mode); |
|
|
|
|
|
/* Query parameters for current mode */ |
|
/* |
|
* CGDisplayBitsPerPixel() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( size_t ) |
|
CGDisplayBitsPerPixel(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* CGDisplayBitsPerSample() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( size_t ) |
|
CGDisplayBitsPerSample(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* CGDisplaySamplesPerPixel() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( size_t ) |
|
CGDisplaySamplesPerPixel(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* CGDisplayBytesPerRow() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( size_t ) |
|
CGDisplayBytesPerRow(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* Set a display gamma/transfer function from a formula specifying |
|
* min and max values and a gamma for each channel. |
|
* Gamma values must be greater than 0.0. |
|
* To get an antigamma of 1.6, one would specify a value of (1.0 / 1.6) |
|
* Min values must be greater than or equal to 0.0 and less than 1.0. |
|
* Max values must be greater than 0.0 and less than or equal to 1.0. |
|
* Out of range values, or Max greater than or equal to Min result |
|
* in a kCGSRangeCheck error. |
|
* |
|
* Values are computed by sampling a function for a range of indices from 0 through 1: |
|
* value = Min + ((Max - Min) * pow(index, Gamma)) |
|
* The resulting values are converted to a machine specific format |
|
* and loaded into hardware. |
|
*/ |
|
typedef float CGGammaValue; |
|
/* |
|
* CGSetDisplayTransferByFormula() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGSetDisplayTransferByFormula( |
|
CGDirectDisplayID display, |
|
CGGammaValue redMin, |
|
CGGammaValue redMax, |
|
CGGammaValue redGamma, |
|
CGGammaValue greenMin, |
|
CGGammaValue greenMax, |
|
CGGammaValue greenGamma, |
|
CGGammaValue blueMin, |
|
CGGammaValue blueMax, |
|
CGGammaValue blueGamma); |
|
|
|
|
|
/* |
|
* CGGetDisplayTransferByFormula() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGGetDisplayTransferByFormula( |
|
CGDirectDisplayID display, |
|
CGGammaValue * redMin, |
|
CGGammaValue * redMax, |
|
CGGammaValue * redGamma, |
|
CGGammaValue * greenMin, |
|
CGGammaValue * greenMax, |
|
CGGammaValue * greenGamma, |
|
CGGammaValue * blueMin, |
|
CGGammaValue * blueMax, |
|
CGGammaValue * blueGamma); |
|
|
|
|
|
/* |
|
* Set a display gamma/transfer function using tables of data for each channel. |
|
* Values within each table should have values in the range of 0.0 through 1.0. |
|
* The same table may be passed in for red, green, and blue channels. 'tableSize' |
|
* indicates the number of entries in each table. |
|
* The tables are interpolated as needed to generate the number of samples needed |
|
* by hardware. |
|
*/ |
|
/* |
|
* CGSetDisplayTransferByTable() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGSetDisplayTransferByTable( |
|
CGDirectDisplayID display, |
|
CGTableCount tableSize, |
|
const CGGammaValue * redTable, |
|
const CGGammaValue * greenTable, |
|
const CGGammaValue * blueTable); |
|
|
|
|
|
/* |
|
* Get transfer tables. Capacity should contain the number of samples each |
|
* array can hold, and *sampleCount is filled in with the number of samples |
|
* actually copied in. |
|
*/ |
|
/* |
|
* CGGetDisplayTransferByTable() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGGetDisplayTransferByTable( |
|
CGDirectDisplayID display, |
|
CGTableCount capacity, |
|
CGGammaValue * redTable, |
|
CGGammaValue * greenTable, |
|
CGGammaValue * blueTable, |
|
CGTableCount * sampleCount); |
|
|
|
|
|
/* As a convenience, allow setting of the gamma table by byte values */ |
|
/* |
|
* CGSetDisplayTransferByByteTable() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGSetDisplayTransferByByteTable( |
|
CGDirectDisplayID display, |
|
CGTableCount tableSize, |
|
const CGByteValue * redTable, |
|
const CGByteValue * greenTable, |
|
const CGByteValue * blueTable); |
|
|
|
|
|
/* Restore gamma tables of system displays to the user's ColorSync specified values */ |
|
/* |
|
* CGDisplayRestoreColorSyncSettings() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void ) |
|
CGDisplayRestoreColorSyncSettings(void); |
|
|
|
|
|
/* Display capture and release */ |
|
/* |
|
* CGDisplayIsCaptured() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( boolean_t ) |
|
CGDisplayIsCaptured(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* CGDisplayCapture() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGDisplayCapture(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* CGDisplayRelease() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGDisplayRelease(CGDirectDisplayID display); |
|
|
|
|
|
|
|
/* |
|
* Capture all displays; this has the nice effect of providing an immersive |
|
* environment, and preventing other apps from trying to adjust themselves |
|
* to display changes only needed by your app. |
|
*/ |
|
/* |
|
* CGCaptureAllDisplays() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGCaptureAllDisplays(void); |
|
|
|
|
|
/* |
|
* Release all captured displays, and restore the display modes to the |
|
* user's preferences. May be used in conjunction with CGDisplayCapture() |
|
* or CGCaptureAllDisplays(). |
|
*/ |
|
/* |
|
* CGReleaseAllDisplays() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGReleaseAllDisplays(void); |
|
|
|
|
|
|
|
/* |
|
* Returns CoreGraphics raw shield window ID or NULL if not shielded |
|
* This value may be used with drawing surface APIs. |
|
*/ |
|
/* |
|
* CGShieldingWindowID() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void * ) |
|
CGShieldingWindowID(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* Returns the window level used for the shield window. |
|
* This value may be used with Cocoa windows to position the |
|
* Cocoa window in the same window level as the shield window. |
|
*/ |
|
/* |
|
* CGShieldingWindowLevel() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( int32_t ) |
|
CGShieldingWindowLevel(void); |
|
|
|
|
|
/* |
|
* Returns base address of display or NULL for an invalid display. |
|
* If the display has not been captured, the returned address may refer |
|
* to read-only memory. |
|
*/ |
|
/* |
|
* CGDisplayBaseAddress() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void * ) |
|
CGDisplayBaseAddress(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* return address for X,Y in screen coordinates; |
|
* (0,0) represents the upper left corner of the display. |
|
* returns NULL for an invalid display or out of bounds coordinates |
|
* If the display has not been captured, the returned address may refer |
|
* to read-only memory. |
|
*/ |
|
/* |
|
* CGDisplayAddressForPosition() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void * ) |
|
CGDisplayAddressForPosition( |
|
CGDirectDisplayID display, |
|
CGDisplayCoord x, |
|
CGDisplayCoord y); |
|
|
|
|
|
|
|
/* Mouse Cursor controls */ |
|
/* |
|
* CGDisplayHideCursor() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGDisplayHideCursor(CGDirectDisplayID display); |
|
|
|
|
|
/* increments hide cursor count */ |
|
/* |
|
* CGDisplayShowCursor() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGDisplayShowCursor(CGDirectDisplayID display); |
|
|
|
|
|
/* decrements hide cursor count */ |
|
/* |
|
* Move the cursor to the specified point relative to the display origin |
|
* (the upper left corner of the display). Returns CGDisplayNoErr on success. |
|
* No events are generated as a result of this move. |
|
* Points that would lie outside the desktop are clipped to the desktop. |
|
*/ |
|
/* |
|
* CGDisplayMoveCursorToPoint() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGDisplayMoveCursorToPoint( |
|
CGDirectDisplayID display, |
|
CGPoint point); |
|
|
|
|
|
/* |
|
* Report the mouse position change associated with the last mouse move event |
|
* recieved by this application. |
|
*/ |
|
/* |
|
* CGGetLastMouseDelta() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void ) |
|
CGGetLastMouseDelta( |
|
CGMouseDelta * deltaX, |
|
CGMouseDelta * deltaY); |
|
|
|
|
|
|
|
/* Palette controls (8 bit pseudocolor only) */ |
|
/* |
|
* Returns TRUE if the current display mode supports palettes |
|
*/ |
|
/* |
|
* CGDisplayCanSetPalette() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( boolean_t ) |
|
CGDisplayCanSetPalette(CGDirectDisplayID display); |
|
|
|
|
|
/* |
|
* Set a palette. The current gamma function is applied to the palette |
|
* elements before being loaded into hardware. |
|
*/ |
|
/* |
|
* CGDisplaySetPalette() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGDisplaySetPalette( |
|
CGDirectDisplayID display, |
|
CGDirectPaletteRef palette); |
|
|
|
|
|
/* |
|
* Wait until the beam position is outside the range specified by upperScanLine and lowerScanLine. |
|
* Note that if upperScanLine and lowerScanLine encompass the entire display height, |
|
* the function returns an error. |
|
* lowerScanLine must be greater than or equal to upperScanLine. |
|
* |
|
* Some display systems may not conventional video vertical and horizontal sweep in painting. |
|
* These displays report a kCGDisplayRefreshRate of 0 in the CFDictionaryRef returned by |
|
* CGDisplayCurrentMode(). On such displays, this function returns at once. |
|
* |
|
* Some drivers may not implement support for this mechanism. |
|
* On such displays, this function returns at once. |
|
* |
|
* Returns CGDisplayNoErr on success, and an error if display or upperScanLine and |
|
* lowerScanLine are invalid. |
|
* |
|
* The app should set the values of upperScanLine and lowerScanLine to allow enough lead time |
|
* for the drawing operation to complete. A common strategy is to wait for the beam to pass |
|
* the bottom of the drawing area, allowing almost a full vertical sweep period to perform drawing. |
|
* To do this, set upperScanLine to 0, and set lowerScanLine to the bottom of the bounding box: |
|
* lowerScanLine = (CGBeamPosition)(cgrect.origin.y + cgrect.size.height); |
|
* |
|
* IOKit may implement this as a spin-loop on the beam position call used for CGDisplayBeamPosition(). |
|
* On such system the function is CPU bound, and subject to all the usual scheduling pre-emption. |
|
* In particular, attempting to wait for the beam to hit a specific scanline may be an exercise in frustration. |
|
* |
|
* These functions are advisary in nature, and depend on IOKit and hardware specific drivers to implement |
|
* support. If you need extremely precise timing, or access to vertical blanking interrupts, |
|
* you should consider writing a device driver to tie into hardware-specific capabilities. |
|
*/ |
|
/* |
|
* CGDisplayWaitForBeamPositionOutsideLines() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGDisplayErr ) |
|
CGDisplayWaitForBeamPositionOutsideLines( |
|
CGDirectDisplayID display, |
|
CGBeamPosition upperScanLine, |
|
CGBeamPosition lowerScanLine); |
|
|
|
|
|
/* |
|
* Returns the current beam position on the display. If display is invalid, |
|
* or the display does not implement conventional video vertical and horizontal |
|
* sweep in painting, or the driver does not implement this functionality, 0 is returned. |
|
*/ |
|
/* |
|
* CGDisplayBeamPosition() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( CGBeamPosition ) |
|
CGDisplayBeamPosition(CGDirectDisplayID display); |
|
|
|
|
|
|
|
#ifdef PRAGMA_IMPORT_OFF |
|
#pragma import off |
|
#elif PRAGMA_IMPORT |
|
#pragma import reset |
|
#endif |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif |
|
|
|
#endif /* CGDIRECTDISPLAY_H_ */ |
|
|
|
|