mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-10 10:49:35 +00:00
1
This commit is contained in:
@@ -0,0 +1,451 @@
|
||||
/*
|
||||
File: CursorDevices.h
|
||||
|
||||
Contains: Cursor Devices (mouse/trackball/etc) Interfaces.
|
||||
|
||||
Version: Technology: System 7.5
|
||||
Release: QuickTime 7.3
|
||||
|
||||
Copyright: (c) 2007 (c) 1993-1999 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 __CURSORDEVICES__
|
||||
#define __CURSORDEVICES__
|
||||
|
||||
#ifndef __MACTYPES__
|
||||
#include <MacTypes.h>
|
||||
#endif
|
||||
|
||||
#ifndef __MIXEDMODE__
|
||||
#include <MixedMode.h>
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
#if PRAGMA_ONCE
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if PRAGMA_IMPORT
|
||||
#pragma import on
|
||||
#endif
|
||||
|
||||
#if PRAGMA_STRUCT_ALIGN
|
||||
#pragma options align=mac68k
|
||||
#elif PRAGMA_STRUCT_PACKPUSH
|
||||
#pragma pack(push, 2)
|
||||
#elif PRAGMA_STRUCT_PACK
|
||||
#pragma pack(2)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* * * I M P O R T A N T * * *
|
||||
|
||||
You will need CursorDevicesGlue.o to use CDM from PowerPC
|
||||
|
||||
|
||||
In order to use the Cursor Devices Manager (CDM) on PowerPC systems, you must
|
||||
link with the file CursorDevicesGlue.o and InterfaceLib 1.1.3. This is necessary
|
||||
because the original MixedMode transition code for CDM in InterfaceLib in ROM
|
||||
was wrong. The code in CursorDevicesGlue.o will check to see if the ROM has
|
||||
been fixed and calls through to it if so. If it detects that the ROM has not
|
||||
been fixed, it uses its own implementation of the CDM MixedMode transition
|
||||
routines.
|
||||
|
||||
*/
|
||||
|
||||
typedef short ButtonOpcode;
|
||||
/* ButtonOpcodes */
|
||||
enum {
|
||||
kButtonNoOp = 0, /* No action for this button */
|
||||
kButtonSingleClick = 1, /* Normal mouse button */
|
||||
kButtonDoubleClick = 2, /* Click-release-click when pressed */
|
||||
kButtonClickLock = 3 /* Click on press, release on next press */
|
||||
};
|
||||
|
||||
enum {
|
||||
kButtonCustom = 6 /* Custom behavior, data = CursorDeviceCustomButtonUPP */
|
||||
};
|
||||
|
||||
/* Device Classes */
|
||||
enum {
|
||||
kDeviceClassAbsolute = 0, /* a flat-response device */
|
||||
kDeviceClassMouse = 1, /* mechanical or optical mouse */
|
||||
kDeviceClassTrackball = 2, /* trackball */
|
||||
kDeviceClassTrackPad = 3
|
||||
};
|
||||
|
||||
enum {
|
||||
kDeviceClass3D = 6 /* a 3D pointing device */
|
||||
};
|
||||
|
||||
/* Structures used in Cursor Device Manager calls */
|
||||
struct CursorData {
|
||||
struct CursorData * nextCursorData; /* next in global list */
|
||||
Ptr displayInfo; /* unused (reserved for future) */
|
||||
Fixed whereX; /* horizontal position */
|
||||
Fixed whereY; /* vertical position */
|
||||
Point where; /* the pixel position */
|
||||
Boolean isAbs; /* has been stuffed with absolute coords */
|
||||
UInt8 buttonCount; /* number of buttons currently pressed */
|
||||
long screenRes; /* pixels per inch on the current display */
|
||||
short privateFields[22]; /* fields use internally by CDM */
|
||||
};
|
||||
typedef struct CursorData CursorData;
|
||||
typedef CursorData * CursorDataPtr;
|
||||
struct CursorDevice {
|
||||
struct CursorDevice * nextCursorDevice; /* pointer to next record in linked list */
|
||||
CursorData * whichCursor; /* pointer to data for target cursor */
|
||||
long refCon; /* application-defined */
|
||||
long unused; /* reserved for future */
|
||||
OSType devID; /* device identifier (from ADB reg 1) */
|
||||
Fixed resolution; /* units/inch (orig. from ADB reg 1) */
|
||||
UInt8 devClass; /* device class (from ADB reg 1) */
|
||||
UInt8 cntButtons; /* number of buttons (from ADB reg 1) */
|
||||
UInt8 filler1; /* reserved for future */
|
||||
UInt8 buttons; /* state of all buttons */
|
||||
UInt8 buttonOp[8]; /* action performed per button */
|
||||
unsigned long buttonTicks[8]; /* ticks when button last went up (for debounce) */
|
||||
long buttonData[8]; /* data for the button operation */
|
||||
unsigned long doubleClickTime; /* device-specific double click speed */
|
||||
Fixed acceleration; /* current acceleration */
|
||||
short privateFields[15]; /* fields used internally to CDM */
|
||||
};
|
||||
typedef struct CursorDevice CursorDevice;
|
||||
typedef CursorDevice * CursorDevicePtr;
|
||||
/* for use with CursorDeviceButtonOp when opcode = kButtonCustom */
|
||||
typedef CALLBACK_API_REGISTER68K( void , CursorDeviceCustomButtonProcPtr, (CursorDevicePtr ourDevice, short button) );
|
||||
typedef REGISTER_UPP_TYPE(CursorDeviceCustomButtonProcPtr) CursorDeviceCustomButtonUPP;
|
||||
#if CALL_NOT_IN_CARBON
|
||||
/*
|
||||
* NewCursorDeviceCustomButtonUPP()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: available as macro/inline
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( CursorDeviceCustomButtonUPP )
|
||||
NewCursorDeviceCustomButtonUPP(CursorDeviceCustomButtonProcPtr userRoutine);
|
||||
#if !OPAQUE_UPP_TYPES
|
||||
enum { uppCursorDeviceCustomButtonProcInfo = 0x000ED802 }; /* register no_return_value Func(4_bytes:A2, 2_bytes:D3) */
|
||||
#ifdef __cplusplus
|
||||
inline DEFINE_API_C(CursorDeviceCustomButtonUPP) NewCursorDeviceCustomButtonUPP(CursorDeviceCustomButtonProcPtr userRoutine) { return (CursorDeviceCustomButtonUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCursorDeviceCustomButtonProcInfo, GetCurrentArchitecture()); }
|
||||
#else
|
||||
#define NewCursorDeviceCustomButtonUPP(userRoutine) (CursorDeviceCustomButtonUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCursorDeviceCustomButtonProcInfo, GetCurrentArchitecture())
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* DisposeCursorDeviceCustomButtonUPP()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: available as macro/inline
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( void )
|
||||
DisposeCursorDeviceCustomButtonUPP(CursorDeviceCustomButtonUPP userUPP);
|
||||
#if !OPAQUE_UPP_TYPES
|
||||
#ifdef __cplusplus
|
||||
inline DEFINE_API_C(void) DisposeCursorDeviceCustomButtonUPP(CursorDeviceCustomButtonUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
|
||||
#else
|
||||
#define DisposeCursorDeviceCustomButtonUPP(userUPP) DisposeRoutineDescriptor(userUPP)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*
|
||||
* InvokeCursorDeviceCustomButtonUPP()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: available as macro/inline
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API_C( void )
|
||||
InvokeCursorDeviceCustomButtonUPP(
|
||||
CursorDevicePtr ourDevice,
|
||||
short button,
|
||||
CursorDeviceCustomButtonUPP userUPP);
|
||||
#if !OPAQUE_UPP_TYPES && (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
|
||||
#ifdef __cplusplus
|
||||
inline DEFINE_API_C(void) InvokeCursorDeviceCustomButtonUPP(CursorDevicePtr ourDevice, short button, CursorDeviceCustomButtonUPP userUPP) { CALL_TWO_PARAMETER_UPP(userUPP, uppCursorDeviceCustomButtonProcInfo, ourDevice, button); }
|
||||
#else
|
||||
#define InvokeCursorDeviceCustomButtonUPP(ourDevice, button, userUPP) CALL_TWO_PARAMETER_UPP((userUPP), uppCursorDeviceCustomButtonProcInfo, (ourDevice), (button))
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* CALL_NOT_IN_CARBON */
|
||||
|
||||
#if CALL_NOT_IN_CARBON || OLDROUTINENAMES
|
||||
/* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
|
||||
#define NewCursorDeviceCustomButtonProc(userRoutine) NewCursorDeviceCustomButtonUPP(userRoutine)
|
||||
#define CallCursorDeviceCustomButtonProc(userRoutine, ourDevice, button) InvokeCursorDeviceCustomButtonUPP(ourDevice, button, userRoutine)
|
||||
#endif /* CALL_NOT_IN_CARBON */
|
||||
|
||||
#if CALL_NOT_IN_CARBON
|
||||
/*
|
||||
* CursorDeviceMove()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceMove(
|
||||
CursorDevicePtr ourDevice,
|
||||
long deltaX,
|
||||
long deltaY) TWOWORDINLINE(0x7000, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CursorDeviceMoveTo()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceMoveTo(
|
||||
CursorDevicePtr ourDevice,
|
||||
long absX,
|
||||
long absY) TWOWORDINLINE(0x7001, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CursorDeviceFlush()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceFlush(CursorDevicePtr ourDevice) TWOWORDINLINE(0x7002, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CursorDeviceButtons()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceButtons(
|
||||
CursorDevicePtr ourDevice,
|
||||
short buttons) TWOWORDINLINE(0x7003, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CursorDeviceButtonDown()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceButtonDown(CursorDevicePtr ourDevice) TWOWORDINLINE(0x7004, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CursorDeviceButtonUp()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceButtonUp(CursorDevicePtr ourDevice) TWOWORDINLINE(0x7005, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CursorDeviceButtonOp()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceButtonOp(
|
||||
CursorDevicePtr ourDevice,
|
||||
short buttonNumber,
|
||||
ButtonOpcode opcode,
|
||||
long data) TWOWORDINLINE(0x7006, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CursorDeviceSetButtons()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceSetButtons(
|
||||
CursorDevicePtr ourDevice,
|
||||
short numberOfButtons) TWOWORDINLINE(0x7007, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CursorDeviceSetAcceleration()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceSetAcceleration(
|
||||
CursorDevicePtr ourDevice,
|
||||
Fixed acceleration) TWOWORDINLINE(0x7008, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CursorDeviceDoubleTime()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceDoubleTime(
|
||||
CursorDevicePtr ourDevice,
|
||||
long durationTicks) TWOWORDINLINE(0x7009, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CursorDeviceUnitsPerInch()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceUnitsPerInch(
|
||||
CursorDevicePtr ourDevice,
|
||||
Fixed resolution) TWOWORDINLINE(0x700A, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CursorDeviceNextDevice()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceNextDevice(CursorDevicePtr * ourDevice) TWOWORDINLINE(0x700B, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CursorDeviceNewDevice()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceNewDevice(CursorDevicePtr * ourDevice) TWOWORDINLINE(0x700C, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CursorDeviceDisposeDevice()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: not available
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CursorDeviceDisposeDevice(CursorDevicePtr ourDevice) TWOWORDINLINE(0x700D, 0xAADB);
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* * * W A R N I N G * * *
|
||||
|
||||
The routines CrsrDevMoveTo and CrsrDevNextDevice are no longer needed.
|
||||
They were added as a work around until the glue code CursorDevicesGlue.o
|
||||
was created. Please use the functions CursorDeviceMoveTo and
|
||||
CursorDeviceNextDevice instead.
|
||||
|
||||
*/
|
||||
#endif /* CALL_NOT_IN_CARBON */
|
||||
|
||||
#if OLDROUTINENAMES
|
||||
#if CALL_NOT_IN_CARBON
|
||||
/*
|
||||
* CrsrDevMoveTo()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: in InterfaceLib 8.5 and later
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CrsrDevMoveTo(
|
||||
CursorDevicePtr ourDevice,
|
||||
long absX,
|
||||
long absY) TWOWORDINLINE(0x7001, 0xAADB);
|
||||
|
||||
|
||||
/*
|
||||
* CrsrDevNextDevice()
|
||||
*
|
||||
* Availability:
|
||||
* Non-Carbon CFM: in InterfaceLib 8.5 and later
|
||||
* CarbonLib: not available
|
||||
* Mac OS X: not available
|
||||
*/
|
||||
EXTERN_API( OSErr )
|
||||
CrsrDevNextDevice(CursorDevicePtr * ourDevice) TWOWORDINLINE(0x700B, 0xAADB);
|
||||
|
||||
|
||||
#endif /* CALL_NOT_IN_CARBON */
|
||||
|
||||
#endif /* OLDROUTINENAMES */
|
||||
|
||||
|
||||
|
||||
#if PRAGMA_STRUCT_ALIGN
|
||||
#pragma options align=reset
|
||||
#elif PRAGMA_STRUCT_PACKPUSH
|
||||
#pragma pack(pop)
|
||||
#elif PRAGMA_STRUCT_PACK
|
||||
#pragma pack()
|
||||
#endif
|
||||
|
||||
#ifdef PRAGMA_IMPORT_OFF
|
||||
#pragma import off
|
||||
#elif PRAGMA_IMPORT
|
||||
#pragma import reset
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __CURSORDEVICES__ */
|
||||
|
||||
Reference in New Issue
Block a user