summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/CGRemoteOperation.h
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /common/quicktime_win32/CGRemoteOperation.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'common/quicktime_win32/CGRemoteOperation.h')
-rw-r--r--common/quicktime_win32/CGRemoteOperation.h514
1 files changed, 514 insertions, 0 deletions
diff --git a/common/quicktime_win32/CGRemoteOperation.h b/common/quicktime_win32/CGRemoteOperation.h
new file mode 100644
index 0000000..7b51f7a
--- /dev/null
+++ b/common/quicktime_win32/CGRemoteOperation.h
@@ -0,0 +1,514 @@
+/*
+ File: CGRemoteOperation.h
+
+ Contains: CoreGraphics remote operation
+
+ 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 CGREMOTEOPERATION_H_
+#define CGREMOTEOPERATION_H_
+
+#ifndef __CGBASE__
+#include <CGBase.h>
+#endif
+
+#ifndef __CGGEOMETRY__
+#include <CGGeometry.h>
+#endif
+
+#ifndef __CGERROR__
+#include <CGError.h>
+#endif
+
+#ifndef __CFDATE__
+#include <CFDate.h>
+#endif
+
+#ifndef __CFMACHPORT__
+#include <CFMachPort.h>
+#endif
+
+
+
+
+#if PRAGMA_ONCE
+#pragma once
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#if PRAGMA_IMPORT
+#pragma import on
+#endif
+
+#if PRAGMA_ENUM_ALWAYSINT
+ #if defined(__fourbyteints__) && !__fourbyteints__
+ #define __CGREMOTEOPERATION__RESTORE_TWOBYTEINTS
+ #pragma fourbyteints on
+ #endif
+ #pragma enumsalwaysint on
+#elif PRAGMA_ENUM_OPTIONS
+ #pragma option enum=int
+#elif PRAGMA_ENUM_PACK
+ #if __option(pack_enums)
+ #define __CGREMOTEOPERATION__RESTORE_PACKED_ENUMS
+ #pragma options(!pack_enums)
+ #endif
+#endif
+
+typedef CGError CGEventErr;
+enum {
+ CGEventNoErr = kCGErrorSuccess
+};
+
+
+/* Screen refresh or drawing notification */
+/*
+ * Callback function pointer;
+ * Declare your callback function in this form. When an area of the display is
+ * modified or refreshed, your callback function will be invoked with a count
+ * of the number of rectangles in the refreshed areas, and a list of the refreshed
+ * rectangles. The rectangles are in global coordinates.
+ *
+ * Your function should not modify, deallocate or free memory pointed to by rectArray.
+ *
+ * The system continues to accumulate refreshed areas constantly. Whenever new
+ * information is available, your callback function is invoked.The list of rects
+ * passed to the callback function are cleared from the accumulated refreshed area
+ * when the callback is made.
+ *
+ * This callback may be triggered by drawing operations, window movement, and
+ * display reconfiguration.
+ *
+ * Bear in mind that a single rectangle may occupy multiple displays,
+ * either by overlapping the displays, or by residing on coincident displays
+ * when mirroring is active. Use the CGGetDisplaysWithRect() to determine
+ * the displays a rectangle occupies.
+ */
+typedef u_int32_t CGRectCount;
+typedef CALLBACK_API_C( void , CGScreenRefreshCallback )(CGRectCount count, const CGRect *rectArray, void *userParameter);
+/*
+ * Register a callback function to be invoked when an area of the display
+ * is refreshed, or modified. The function is invoked on the same thread
+ * of execution that is processing events within your application.
+ * userParameter is passed back with each invocation of the callback function.
+ */
+/*
+ * CGRegisterScreenRefreshCallback()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+CGRegisterScreenRefreshCallback(
+ CGScreenRefreshCallback callback,
+ void * userParameter);
+
+
+/*
+ * Remove a previously registered calback function.
+ * Both the function and the userParameter must match the registered entry to be removed.
+ */
+/*
+ * CGUnregisterScreenRefreshCallback()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+CGUnregisterScreenRefreshCallback(
+ CGScreenRefreshCallback callback,
+ void * userParameter);
+
+
+
+/*
+ * In some applications it may be preferable to have a seperate thread wait for screen refresh data.
+ * This function should be called on a thread seperate from the event processing thread.
+ * If screen refresh callback functions are registered, this function should not be used.
+ * The mechanisms are mutually exclusive.
+ *
+ * Deallocate screen refresh rects using CGReleaseScreenRefreshRects().
+ *
+ * Returns an error code if parameters are invalid or an error occurs in retrieving
+ * dirty screen rects from the server.
+ */
+/*
+ * CGWaitForScreenRefreshRects()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( CGEventErr )
+CGWaitForScreenRefreshRects(
+ CGRect ** pRectArray,
+ CGRectCount * pCount);
+
+
+/*
+ * Deallocate the list of rects recieved from CGWaitForScreenRefreshRects()
+ */
+/*
+ * CGReleaseScreenRefreshRects()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( void )
+CGReleaseScreenRefreshRects(CGRect * rectArray);
+
+
+/*
+ * Posting events: These functions post events into the system. Use for remote
+ * operation and virtualization.
+ *
+ * Note that remote operation requires a valid connection to the server, which
+ * must be owned by either the root/Administrator user or the logged in console
+ * user. This means that your application must be running as root/Administrator
+ * user or the logged in console user.
+ */
+
+/*
+ * Synthesize mouse events.
+ * mouseCursorPosition should be the global coordinates the mouse is at for the event.
+ * updateMouseCursor should be TRUE if the on-screen cursor
+ * should be moved to mouseCursorPosition.
+ *
+ * Based on the values entered, the appropriate mouse-down, mouse-up, mouse-move,
+ * or mouse-drag events are generated, by comparing the new state with the current state.
+ *
+ * The current implemementation of the event system supports a maximum of thirty-two buttons.
+ * The buttonCount parameter should be followed by 'buttonCount' boolean_t values
+ * indicating button state. The first value should reflect the state of the primary
+ * button on the mouse. The second value, if any, should reflect the state of the secondary
+ * mouse button (right), if any. A third value woule be the center button, and the remaining
+ * buttons would be in USB device order.
+ */
+typedef u_int32_t CGButtonCount;
+/*
+ * CGPostMouseEvent()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( CGEventErr )
+CGPostMouseEvent(
+ CGPoint mouseCursorPosition,
+ boolean_t updateMouseCursorPosition,
+ CGButtonCount buttonCount,
+ boolean_t mouseButtonDown,
+ ...);
+
+
+/*
+ * Synthesize scroll wheel events.
+ *
+ * The current implemementation of the event system supports a maximum of three wheels.
+ *
+ * The wheelCount parameter should be followed by 'wheelCount' 32 bit integer values
+ * indicating wheel movements. The first value should reflect the state of the primary
+ * wheel on the mouse. The second value, if any, should reflect the state of a secondary
+ * mouse wheel, if any.
+ *
+ * Wheel movement is represented by small signed integer values,
+ * typically in a range from -10 to +10. Large values may have unexpected results,
+ * depending on the application that processes the event.
+ */
+typedef u_int32_t CGWheelCount;
+/*
+ * CGPostScrollWheelEvent()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( CGEventErr )
+CGPostScrollWheelEvent(
+ CGWheelCount wheelCount,
+ int32_t wheel1,
+ ...);
+
+
+/*
+ * Synthesize keyboard events. Based on the values entered,
+ * the appropriate key down, key up, and flags changed events are generated.
+ * If keyChar is NUL (0), an apropriate value will be guessed at, based on the
+ * default keymapping.
+ *
+ * All keystrokes needed to generate a character must be entered, including
+ * SHIFT, CONTROL, OPTION, and COMMAND keys. For example, to produce a 'Z',
+ * the SHIFT key must be down, the 'z' key must go down, and then the SHIFT
+ * and 'z' key must be released:
+ * CGPostKeyboardEvent( (CGCharCode)0, (CGKeyCode)56, true ); // shift down
+ * CGPostKeyboardEvent( (CGCharCode)'Z', (CGKeyCode)6, true ); // 'z' down
+ * CGPostKeyboardEvent( (CGCharCode)'Z', (CGKeyCode)6, false ); // 'z' up
+ * CGPostKeyboardEvent( (CGCharCode)0, (CGKeyCode)56, false ); // 'shift up
+ */
+typedef u_int16_t CGCharCode;
+typedef u_int16_t CGKeyCode;
+/*
+ * CGPostKeyboardEvent()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( CGEventErr )
+CGPostKeyboardEvent(
+ CGCharCode keyChar,
+ CGKeyCode virtualKey,
+ boolean_t keyDown);
+
+
+/*
+ * Warp the mouse cursor to the desired position in global
+ * coordinates without generating events
+ */
+/*
+ * CGWarpMouseCursorPosition()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( CGEventErr )
+CGWarpMouseCursorPosition(CGPoint newCursorPosition);
+
+
+/*
+ * Remote operation may want to inhibit local events (events from
+ * the machine's keyboard and mouse). This may be done either as a
+ * explicit request (tracked per app) or as a short term side effect of
+ * posting an event.
+ *
+ * CGInhibitLocalEvents() is typically used for long term remote operation
+ * of a system, as in automated system testing or telecommuting applications.
+ * Local device state changes are discarded.
+ *
+ * Local event inhibition is turned off if the app that requested it terminates.
+ */
+/*
+ * CGInhibitLocalEvents()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( CGEventErr )
+CGInhibitLocalEvents(boolean_t doInhibit);
+
+
+/*
+ * Set the period of time in seconds that local hardware events (keyboard and mouse)
+ * are supressed after posting an event. Defaults to 0.25 second.
+ */
+/*
+ * CGSetLocalEventsSuppressionInterval()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( CGEventErr )
+CGSetLocalEventsSuppressionInterval(CFTimeInterval seconds);
+
+
+/*
+ * By default, the flags that indicate modifier key state (Command, Alt, Shift, etc.)
+ * from the system's keyboard and from other event sources are ORed together as an event is
+ * posted into the system, and current key and mouse button state is considered in generating new events.
+ * This function allows your application to enable or disable the
+ * merging of event state. When combining is turned off, the event state propagated in the events
+ * posted by your app reflect state built up only by your app. The state within your app's generated
+ * event will not be combined with the system's current state, so the system-wide state reflecting key
+ * and mouse button state will remain unchanged
+ *
+ * When called with doCombineState equal to FALSE, this function initializes local (per application)
+ * state tracking information to a state of all keys, modifiers, and mouse buttons up.
+ *
+ * When called with doCombineState equal to TRUE, the current global state of keys, modifiers,
+ * and mouse buttons are used in generating events.
+ */
+/*
+ * CGEnableEventStateCombining()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.1 and later
+ */
+EXTERN_API_C( CGEventErr )
+CGEnableEventStateCombining(boolean_t doCombineState);
+
+
+/*
+ * By default the system supresses local hardware events from the keyboard and mouse during
+ * a short interval after a synthetic event is posted (see CGSetLocalEventsSuppressionInterval())
+ * and while a synthetic mouse drag (mouse movement with the left/only mouse button down).
+ * Some classes of applications may want to enable events from some of the local hardware.
+ * For example, an app may want to post only mouse events, and so may wish to permit local
+ * keyboard hardware events to pass through.
+ *
+ * This interface lets an app specify a state (event supression interval, or mouse drag), and
+ * a mask of event categories to be passed through.
+ */
+enum CGEventFilterMask {
+ kCGEventFilterMaskPermitLocalMouseEvents = 0x00000001, /* Mouse, scroll wheel */
+ kCGEventFilterMaskPermitLocalKeyboardEvents = 0x00000002, /* Alphanumeric keys and Command, Option, Control, Shift, AlphaLock */
+ kCGEventFilterMaskPermitSystemDefinedEvents = 0x00000004, /* Power key, bezel buttons, sticky keys */
+ kCGEventFilterMaskPermitAllEvents = kCGEventFilterMaskPermitLocalMouseEvents | kCGEventFilterMaskPermitLocalKeyboardEvents | kCGEventFilterMaskPermitSystemDefinedEvents
+};
+typedef enum CGEventFilterMask CGEventFilterMask;
+
+enum CGEventSupressionState {
+ kCGEventSupressionStateSupressionInterval = 0,
+ kCGEventSupressionStateRemoteMouseDrag = 1,
+ kCGNumberOfEventSupressionStates = 2
+};
+typedef enum CGEventSupressionState CGEventSupressionState;
+
+/*
+ * CGSetLocalEventsFilterDuringSupressionState()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.1 and later
+ */
+EXTERN_API_C( CGEventErr )
+CGSetLocalEventsFilterDuringSupressionState(
+ CGEventFilterMask filter,
+ CGEventSupressionState state);
+
+
+/*
+ * Helper function to connect or disconnect the mouse and mouse cursor.
+ * CGAssociateMouseAndMouseCursorPosition(false) has the same effect
+ * as the following, without actually modifying the supression interval:
+ *
+ * CGSetLocalEventsSuppressionInterval(MAX_DOUBLE);
+ * CGWarpMouseCursorPosition(currentPosition);
+ *
+ * While disconnected, mouse move and drag events will reflect the current position of
+ * the mouse cursor position, which will not change with mouse movement. Use the
+ * <CoreGraphics/CGDirectDisplay.h> function:
+ *
+ * void CGGetLastMouseDelta( CGMouseDelta * deltaX, CGMouseDelta * deltaY );
+ *
+ * This will report mouse movement associated with the last mouse move or drag event.
+ *
+ * To update the display cursor position, use the function defined in this module:
+ *
+ * CGEventErr CGWarpMouseCursorPosition( CGPoint newCursorPosition );
+ */
+/*
+ * CGAssociateMouseAndMouseCursorPosition()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.0 and later
+ */
+EXTERN_API_C( CGEventErr )
+CGAssociateMouseAndMouseCursorPosition(boolean_t connected);
+
+
+/*
+ * Some classes of applications need to detect when the window server process dies, or
+ * is not running. The easiest way to do this is to use a CFMachPortRef.
+ *
+ * If the CoreGraphics window server is not running, this function returns NULL.
+ * If the server is running, a CFMachPortRef is returned.
+ *
+ * A program can register a callback function to use a CFMachPortRef to determine
+ * when the CoreGraphics window server exits:
+ *
+ * static void handleWindowServerDeath( CFMachPortRef port, void *info )
+ * {
+ * printf( "Window Server port death detected!\n" );
+ * CFRelease( port );
+ * exit( 1 );
+ * }
+ *
+ * static void watchForServerDeath()
+ * {
+ * CFMachPortRef port;
+ *
+ * port = CGWindowServerCFMachPort();
+ * CFMachPortSetInvalidationCallBack( port, handleWindowServerDeath );
+ * }
+ *
+ * Note that when the window server exits, there may be a few seconds during which
+ * no window server is running, until the operating system starts a new
+ * window server/loginwindow pair of processes. This function will return NULL
+ * until a new window server is running.
+ *
+ * Multiple calls to this function may return multiple CFMachPortRefs, each referring
+ * to the same Mach port. Multiple callbacks registered on multiple CFMachPortRefs
+ * obtained in this way may fire in a nondetermanistic manner.
+ *
+ * Your program will need to run a CFRunLoop for the port death
+ * callback to function. A program which does not use a CFRunLoop may use
+ * CFMachPortIsValid(CFMachPortRef port) periodically to check if the port is valid.
+ */
+/*
+ * CGWindowServerCFMachPort()
+ *
+ * Availability:
+ * Non-Carbon CFM: not available
+ * CarbonLib: not available
+ * Mac OS X: in version 10.1 and later
+ */
+EXTERN_API_C( CFMachPortRef )
+CGWindowServerCFMachPort(void);
+
+
+
+#if PRAGMA_ENUM_ALWAYSINT
+ #pragma enumsalwaysint reset
+ #ifdef __CGREMOTEOPERATION__RESTORE_TWOBYTEINTS
+ #pragma fourbyteints off
+ #endif
+#elif PRAGMA_ENUM_OPTIONS
+ #pragma option enum=reset
+#elif defined(__CGREMOTEOPERATION__RESTORE_PACKED_ENUMS)
+ #pragma options(pack_enums)
+#endif
+
+#ifdef PRAGMA_IMPORT_OFF
+#pragma import off
+#elif PRAGMA_IMPORT
+#pragma import reset
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* CGREMOTEOPERATION_H_ */
+