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.
914 lines
24 KiB
914 lines
24 KiB
5 years ago
|
/*
|
||
|
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_ */
|
||
|
|