1
This commit is contained in:
913
common/quicktime_win32/CGDirectDisplay.h
Normal file
913
common/quicktime_win32/CGDirectDisplay.h
Normal file
@ -0,0 +1,913 @@
|
||||
/*
|
||||
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_ */
|
||||
|
Reference in New Issue
Block a user