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.
1734 lines
57 KiB
1734 lines
57 KiB
/* |
|
File: Drag.h |
|
|
|
Contains: Drag and Drop Interfaces. |
|
|
|
Version: QuickTime 7.3 |
|
|
|
Copyright: (c) 2007 (c) 1992-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 __DRAG__ |
|
#define __DRAG__ |
|
|
|
#ifndef __MACTYPES__ |
|
#include <MacTypes.h> |
|
#endif |
|
|
|
#ifndef __FILES__ |
|
#include <Files.h> |
|
#endif |
|
|
|
#ifndef __APPLEEVENTS__ |
|
#include <AppleEvents.h> |
|
#endif |
|
|
|
#ifndef __QUICKDRAW__ |
|
#include <Quickdraw.h> |
|
#endif |
|
|
|
#ifndef __EVENTS__ |
|
#include <Events.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 |
|
|
|
|
|
/* |
|
* HIPoint |
|
* |
|
* Discussion: |
|
* HIPoint is a new, floating point-based type to help express |
|
* coordinates in a much richer fashion than the classic QuickDraw |
|
* points. It will, in time, be more heavily used throughout the |
|
* Toolbox. For now, it is replacing our use of typeQDPoint in mouse |
|
* events. This is to better support sub-pixel tablet coordinates. |
|
* If you ask for a mouse location with typeQDPoint, and the point |
|
* is actually stored as typeHIPoint, it will automatically be |
|
* coerced to typeQDPoint for you, so this change should be largely |
|
* transparent to applications. HIPoints are in screen space, i.e. |
|
* the top left of the screen is 0, 0. |
|
*/ |
|
typedef CGPoint HIPoint; |
|
|
|
/* |
|
* HISize |
|
* |
|
* Discussion: |
|
* HISize is a floating point-based type to help express dimensions |
|
* in a much richer fashion than the classic QuickDraw coordinates. |
|
*/ |
|
typedef CGSize HISize; |
|
|
|
/* |
|
* HIRect |
|
* |
|
* Discussion: |
|
* HIRect is a new, floating point-based type to help express |
|
* rectangles in a much richer fashion than the classic QuickDraw |
|
* rects. It will, in time, be more heavily used throughout the |
|
* Toolbox. HIRects are in screen space, i.e. the top left of the |
|
* screen is 0, 0. |
|
*/ |
|
typedef CGRect HIRect; |
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o DRAG MANAGER DATA TYPES |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
typedef struct OpaqueDragRef* DragRef; |
|
typedef UInt32 DragItemRef; |
|
typedef OSType FlavorType; |
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o DRAG ATTRIBUTES |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
typedef UInt32 DragAttributes; |
|
enum { |
|
kDragHasLeftSenderWindow = (1L << 0), /* drag has left the source window since TrackDrag*/ |
|
kDragInsideSenderApplication = (1L << 1), /* drag is occurring within the sender application*/ |
|
kDragInsideSenderWindow = (1L << 2) /* drag is occurring within the sender window*/ |
|
}; |
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o DRAG BEHAVIORS |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
typedef UInt32 DragBehaviors; |
|
enum { |
|
kDragBehaviorNone = 0, |
|
kDragBehaviorZoomBackAnimation = (1L << 0) /* do zoomback animation for failed drags (normally enabled).*/ |
|
}; |
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o DRAG IMAGE FLAGS |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
typedef UInt32 DragImageFlags; |
|
enum { |
|
kDragRegionAndImage = (1L << 4) /* drag region and image*/ |
|
}; |
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o DRAG IMAGE TRANSLUCENCY LEVELS |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
enum { |
|
kDragStandardTranslucency = 0L, /* 65% image translucency (standard)*/ |
|
kDragDarkTranslucency = 1L, /* 50% image translucency*/ |
|
kDragDarkerTranslucency = 2L, /* 25% image translucency*/ |
|
kDragOpaqueTranslucency = 3L /* 0% image translucency (opaque)*/ |
|
}; |
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o DRAG DRAWING PROCEDURE MESSAGES |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
typedef SInt16 DragRegionMessage; |
|
enum { |
|
kDragRegionBegin = 1, /* initialize drawing*/ |
|
kDragRegionDraw = 2, /* draw drag feedback*/ |
|
kDragRegionHide = 3, /* hide drag feedback*/ |
|
kDragRegionIdle = 4, /* drag feedback idle time*/ |
|
kDragRegionEnd = 5 /* end of drawing*/ |
|
}; |
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o ZOOM ACCELERATION |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
typedef SInt16 ZoomAcceleration; |
|
enum { |
|
kZoomNoAcceleration = 0, /* use linear interpolation*/ |
|
kZoomAccelerate = 1, /* ramp up step size*/ |
|
kZoomDecelerate = 2 /* ramp down step size*/ |
|
}; |
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o FLAVOR FLAGS |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
typedef UInt32 FlavorFlags; |
|
enum { |
|
flavorSenderOnly = (1 << 0), /* flavor is available to sender only*/ |
|
flavorSenderTranslated = (1 << 1), /* flavor is translated by sender*/ |
|
flavorNotSaved = (1 << 2), /* flavor should not be saved*/ |
|
flavorSystemTranslated = (1 << 8), /* flavor is translated by system*/ |
|
flavorDataPromised = (1 << 9) /* flavor data is promised by sender*/ |
|
}; |
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o FILE SYSTEM CONSTANTS |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
enum { |
|
kDragFlavorTypeHFS = FOUR_CHAR_CODE('hfs '), /* flavor type for HFS data*/ |
|
kDragFlavorTypePromiseHFS = FOUR_CHAR_CODE('phfs'), /* flavor type for promised HFS data*/ |
|
flavorTypeHFS = kDragFlavorTypeHFS, /* old name*/ |
|
flavorTypePromiseHFS = kDragFlavorTypePromiseHFS /* old name*/ |
|
}; |
|
|
|
enum { |
|
kDragPromisedFlavorFindFile = FOUR_CHAR_CODE('rWm1'), /* promisedFlavor value for Find File*/ |
|
kDragPromisedFlavor = FOUR_CHAR_CODE('fssP') /* promisedFlavor value for everything else*/ |
|
}; |
|
|
|
enum { |
|
kDragPseudoCreatorVolumeOrDirectory = FOUR_CHAR_CODE('MACS'), /* "creator code" for volume or directory*/ |
|
kDragPseudoFileTypeVolume = FOUR_CHAR_CODE('disk'), /* "file type" for volume*/ |
|
kDragPseudoFileTypeDirectory = FOUR_CHAR_CODE('fold') /* "file type" for directory*/ |
|
}; |
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o SPECIAL FLAVORS |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
enum { |
|
flavorTypeDirectory = FOUR_CHAR_CODE('diry') /* flavor type for AOCE directories*/ |
|
}; |
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o FLAVORS FOR FINDER 8.0 AND LATER |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
enum { |
|
kFlavorTypeClippingName = FOUR_CHAR_CODE('clnm'), /* name hint for clipping file (preferred over 'clfn')*/ |
|
kFlavorTypeClippingFilename = FOUR_CHAR_CODE('clfn'), /* name for clipping file*/ |
|
kFlavorTypeUnicodeClippingName = FOUR_CHAR_CODE('ucln'), /* unicode name hint for clipping file (preferred over 'uclf')*/ |
|
kFlavorTypeUnicodeClippingFilename = FOUR_CHAR_CODE('uclf'), /* unicode name for clipping file*/ |
|
kFlavorTypeDragToTrashOnly = FOUR_CHAR_CODE('fdtt'), /* for apps that want to allow dragging private data to the trash*/ |
|
kFlavorTypeFinderNoTrackingBehavior = FOUR_CHAR_CODE('fntb') /* Finder completely ignores any drag containing this flavor*/ |
|
}; |
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o DRAG TRACKING HANDLER MESSAGES |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
typedef SInt16 DragTrackingMessage; |
|
enum { |
|
kDragTrackingEnterHandler = 1, /* drag has entered handler*/ |
|
kDragTrackingEnterWindow = 2, /* drag has entered window*/ |
|
kDragTrackingInWindow = 3, /* drag is moving within window*/ |
|
kDragTrackingLeaveWindow = 4, /* drag has exited window*/ |
|
kDragTrackingLeaveHandler = 5 /* drag has exited handler*/ |
|
}; |
|
|
|
/* |
|
--------------------------------------------------------------------------------------------------------- |
|
o STANDARD DROP LOCATIONS |
|
--------------------------------------------------------------------------------------------------------- |
|
*/ |
|
|
|
|
|
/* |
|
* Summary: |
|
* Standard Drop Location constants |
|
* |
|
* Discussion: |
|
* The following constants define common "meta" drop locations. |
|
*/ |
|
enum { |
|
|
|
/* |
|
* The drop location was in the trash. This is set when a drag is |
|
* dropped on the trash icon. Setting this standard drop location |
|
* sets the traditional drop location to an alias to the trash folder |
|
* automatically. |
|
*/ |
|
kDragStandardDropLocationTrash = FOUR_CHAR_CODE('trsh'), |
|
|
|
/* |
|
* The receiver did not specify a drop lcoation. This is the default. |
|
*/ |
|
kDragStandardDropLocationUnknown = FOUR_CHAR_CODE('unkn') |
|
}; |
|
|
|
typedef OSType StandardDropLocation; |
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o DRAG ACTIONS |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
/* |
|
* Summary: |
|
* Drag Action constants |
|
* |
|
* Discussion: |
|
* The following constants define, in a general way, what actions a |
|
* drag should or has performed. Some drag actions enforce a mode |
|
* of operation while others are flexible suggestions. These |
|
* constants are used in conjunction with the |
|
* Get/SetDragAllowableActions() and Get/SetDragDropAction() APIs. |
|
* Adopting the Drag Action APIs increases compatability with the |
|
* Cocoa drag operation model. |
|
*/ |
|
enum { |
|
|
|
/* |
|
* Suggests nothing should be/was done with the data in a drag. When |
|
* set as an allowable action for remote drags, the drag will not be |
|
* sent to apps other than the sender. |
|
*/ |
|
kDragActionNothing = 0L, |
|
|
|
/* |
|
* Suggests the data contained within the drag can be/was copied. |
|
*/ |
|
kDragActionCopy = 1L, |
|
|
|
/* |
|
* Suggests the data contained within the drag can be/is shared. |
|
*/ |
|
kDragActionAlias = (1L << 1), |
|
|
|
/* |
|
* Suggests the drag action is can be defined by the drag destination |
|
* or was not defined by the drag destination. |
|
*/ |
|
kDragActionGeneric = (1L << 2), |
|
|
|
/* |
|
* Suggests the drag action should be negotiated privately between |
|
* the drag source and destination. |
|
*/ |
|
kDragActionPrivate = (1L << 3), |
|
|
|
/* |
|
* Description forthcoming. |
|
*/ |
|
kDragActionMove = (1L << 4), |
|
|
|
/* |
|
* Description forthcoming. |
|
*/ |
|
kDragActionDelete = (1L << 5), |
|
|
|
/* |
|
* All of the above drag actions are allowed. |
|
*/ |
|
kDragActionAll = (long)0xFFFFFFFF |
|
}; |
|
|
|
typedef UInt32 DragActions; |
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o HFS FLAVORS |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
struct HFSFlavor { |
|
OSType fileType; /* file type */ |
|
OSType fileCreator; /* file creator */ |
|
UInt16 fdFlags; /* Finder flags */ |
|
FSSpec fileSpec; /* file system specification */ |
|
}; |
|
typedef struct HFSFlavor HFSFlavor; |
|
struct PromiseHFSFlavor { |
|
OSType fileType; /* file type */ |
|
OSType fileCreator; /* file creator */ |
|
UInt16 fdFlags; /* Finder flags */ |
|
FlavorType promisedFlavor; /* promised flavor containing an FSSpec */ |
|
}; |
|
typedef struct PromiseHFSFlavor PromiseHFSFlavor; |
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o APPLICATION-DEFINED DRAG HANDLER ROUTINES |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
typedef CALLBACK_API( OSErr , DragTrackingHandlerProcPtr )(DragTrackingMessage message, WindowRef theWindow, void *handlerRefCon, DragRef theDrag); |
|
typedef CALLBACK_API( OSErr , DragReceiveHandlerProcPtr )(WindowRef theWindow, void *handlerRefCon, DragRef theDrag); |
|
typedef STACK_UPP_TYPE(DragTrackingHandlerProcPtr) DragTrackingHandlerUPP; |
|
typedef STACK_UPP_TYPE(DragReceiveHandlerProcPtr) DragReceiveHandlerUPP; |
|
/* |
|
* NewDragTrackingHandlerUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( DragTrackingHandlerUPP ) |
|
NewDragTrackingHandlerUPP(DragTrackingHandlerProcPtr userRoutine); |
|
#if !OPAQUE_UPP_TYPES |
|
enum { uppDragTrackingHandlerProcInfo = 0x00003FA0 }; /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes, 4_bytes) */ |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(DragTrackingHandlerUPP) NewDragTrackingHandlerUPP(DragTrackingHandlerProcPtr userRoutine) { return (DragTrackingHandlerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragTrackingHandlerProcInfo, GetCurrentArchitecture()); } |
|
#else |
|
#define NewDragTrackingHandlerUPP(userRoutine) (DragTrackingHandlerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragTrackingHandlerProcInfo, GetCurrentArchitecture()) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* NewDragReceiveHandlerUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( DragReceiveHandlerUPP ) |
|
NewDragReceiveHandlerUPP(DragReceiveHandlerProcPtr userRoutine); |
|
#if !OPAQUE_UPP_TYPES |
|
enum { uppDragReceiveHandlerProcInfo = 0x00000FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes) */ |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(DragReceiveHandlerUPP) NewDragReceiveHandlerUPP(DragReceiveHandlerProcPtr userRoutine) { return (DragReceiveHandlerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragReceiveHandlerProcInfo, GetCurrentArchitecture()); } |
|
#else |
|
#define NewDragReceiveHandlerUPP(userRoutine) (DragReceiveHandlerUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragReceiveHandlerProcInfo, GetCurrentArchitecture()) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* DisposeDragTrackingHandlerUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void ) |
|
DisposeDragTrackingHandlerUPP(DragTrackingHandlerUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(void) DisposeDragTrackingHandlerUPP(DragTrackingHandlerUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } |
|
#else |
|
#define DisposeDragTrackingHandlerUPP(userUPP) DisposeRoutineDescriptor(userUPP) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* DisposeDragReceiveHandlerUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void ) |
|
DisposeDragReceiveHandlerUPP(DragReceiveHandlerUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(void) DisposeDragReceiveHandlerUPP(DragReceiveHandlerUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } |
|
#else |
|
#define DisposeDragReceiveHandlerUPP(userUPP) DisposeRoutineDescriptor(userUPP) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* InvokeDragTrackingHandlerUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( OSErr ) |
|
InvokeDragTrackingHandlerUPP( |
|
DragTrackingMessage message, |
|
WindowRef theWindow, |
|
void * handlerRefCon, |
|
DragRef theDrag, |
|
DragTrackingHandlerUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(OSErr) InvokeDragTrackingHandlerUPP(DragTrackingMessage message, WindowRef theWindow, void * handlerRefCon, DragRef theDrag, DragTrackingHandlerUPP userUPP) { return (OSErr)CALL_FOUR_PARAMETER_UPP(userUPP, uppDragTrackingHandlerProcInfo, message, theWindow, handlerRefCon, theDrag); } |
|
#else |
|
#define InvokeDragTrackingHandlerUPP(message, theWindow, handlerRefCon, theDrag, userUPP) (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppDragTrackingHandlerProcInfo, (message), (theWindow), (handlerRefCon), (theDrag)) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* InvokeDragReceiveHandlerUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( OSErr ) |
|
InvokeDragReceiveHandlerUPP( |
|
WindowRef theWindow, |
|
void * handlerRefCon, |
|
DragRef theDrag, |
|
DragReceiveHandlerUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(OSErr) InvokeDragReceiveHandlerUPP(WindowRef theWindow, void * handlerRefCon, DragRef theDrag, DragReceiveHandlerUPP userUPP) { return (OSErr)CALL_THREE_PARAMETER_UPP(userUPP, uppDragReceiveHandlerProcInfo, theWindow, handlerRefCon, theDrag); } |
|
#else |
|
#define InvokeDragReceiveHandlerUPP(theWindow, handlerRefCon, theDrag, userUPP) (OSErr)CALL_THREE_PARAMETER_UPP((userUPP), uppDragReceiveHandlerProcInfo, (theWindow), (handlerRefCon), (theDrag)) |
|
#endif |
|
#endif |
|
|
|
#if CALL_NOT_IN_CARBON || OLDROUTINENAMES |
|
/* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ |
|
#define NewDragTrackingHandlerProc(userRoutine) NewDragTrackingHandlerUPP(userRoutine) |
|
#define NewDragReceiveHandlerProc(userRoutine) NewDragReceiveHandlerUPP(userRoutine) |
|
#define CallDragTrackingHandlerProc(userRoutine, message, theWindow, handlerRefCon, theDrag) InvokeDragTrackingHandlerUPP(message, theWindow, handlerRefCon, theDrag, userRoutine) |
|
#define CallDragReceiveHandlerProc(userRoutine, theWindow, handlerRefCon, theDrag) InvokeDragReceiveHandlerUPP(theWindow, handlerRefCon, theDrag, userRoutine) |
|
#endif /* CALL_NOT_IN_CARBON */ |
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o APPLICATION-DEFINED ROUTINES |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
typedef CALLBACK_API( OSErr , DragSendDataProcPtr )(FlavorType theType, void *dragSendRefCon, DragItemRef theItemRef, DragRef theDrag); |
|
typedef CALLBACK_API( OSErr , DragInputProcPtr )(Point *mouse, SInt16 *modifiers, void *dragInputRefCon, DragRef theDrag); |
|
typedef CALLBACK_API( OSErr , DragDrawingProcPtr )(DragRegionMessage message, RgnHandle showRegion, Point showOrigin, RgnHandle hideRegion, Point hideOrigin, void *dragDrawingRefCon, DragRef theDrag); |
|
typedef STACK_UPP_TYPE(DragSendDataProcPtr) DragSendDataUPP; |
|
typedef STACK_UPP_TYPE(DragInputProcPtr) DragInputUPP; |
|
typedef STACK_UPP_TYPE(DragDrawingProcPtr) DragDrawingUPP; |
|
/* |
|
* NewDragSendDataUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( DragSendDataUPP ) |
|
NewDragSendDataUPP(DragSendDataProcPtr userRoutine); |
|
#if !OPAQUE_UPP_TYPES |
|
enum { uppDragSendDataProcInfo = 0x00003FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */ |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(DragSendDataUPP) NewDragSendDataUPP(DragSendDataProcPtr userRoutine) { return (DragSendDataUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragSendDataProcInfo, GetCurrentArchitecture()); } |
|
#else |
|
#define NewDragSendDataUPP(userRoutine) (DragSendDataUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragSendDataProcInfo, GetCurrentArchitecture()) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* NewDragInputUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( DragInputUPP ) |
|
NewDragInputUPP(DragInputProcPtr userRoutine); |
|
#if !OPAQUE_UPP_TYPES |
|
enum { uppDragInputProcInfo = 0x00003FE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */ |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(DragInputUPP) NewDragInputUPP(DragInputProcPtr userRoutine) { return (DragInputUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragInputProcInfo, GetCurrentArchitecture()); } |
|
#else |
|
#define NewDragInputUPP(userRoutine) (DragInputUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragInputProcInfo, GetCurrentArchitecture()) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* NewDragDrawingUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( DragDrawingUPP ) |
|
NewDragDrawingUPP(DragDrawingProcPtr userRoutine); |
|
#if !OPAQUE_UPP_TYPES |
|
enum { uppDragDrawingProcInfo = 0x000FFFA0 }; /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */ |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(DragDrawingUPP) NewDragDrawingUPP(DragDrawingProcPtr userRoutine) { return (DragDrawingUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragDrawingProcInfo, GetCurrentArchitecture()); } |
|
#else |
|
#define NewDragDrawingUPP(userRoutine) (DragDrawingUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragDrawingProcInfo, GetCurrentArchitecture()) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* DisposeDragSendDataUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void ) |
|
DisposeDragSendDataUPP(DragSendDataUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(void) DisposeDragSendDataUPP(DragSendDataUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } |
|
#else |
|
#define DisposeDragSendDataUPP(userUPP) DisposeRoutineDescriptor(userUPP) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* DisposeDragInputUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void ) |
|
DisposeDragInputUPP(DragInputUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(void) DisposeDragInputUPP(DragInputUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } |
|
#else |
|
#define DisposeDragInputUPP(userUPP) DisposeRoutineDescriptor(userUPP) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* DisposeDragDrawingUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( void ) |
|
DisposeDragDrawingUPP(DragDrawingUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(void) DisposeDragDrawingUPP(DragDrawingUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } |
|
#else |
|
#define DisposeDragDrawingUPP(userUPP) DisposeRoutineDescriptor(userUPP) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* InvokeDragSendDataUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( OSErr ) |
|
InvokeDragSendDataUPP( |
|
FlavorType theType, |
|
void * dragSendRefCon, |
|
DragItemRef theItemRef, |
|
DragRef theDrag, |
|
DragSendDataUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(OSErr) InvokeDragSendDataUPP(FlavorType theType, void * dragSendRefCon, DragItemRef theItemRef, DragRef theDrag, DragSendDataUPP userUPP) { return (OSErr)CALL_FOUR_PARAMETER_UPP(userUPP, uppDragSendDataProcInfo, theType, dragSendRefCon, theItemRef, theDrag); } |
|
#else |
|
#define InvokeDragSendDataUPP(theType, dragSendRefCon, theItemRef, theDrag, userUPP) (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppDragSendDataProcInfo, (theType), (dragSendRefCon), (theItemRef), (theDrag)) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* InvokeDragInputUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( OSErr ) |
|
InvokeDragInputUPP( |
|
Point * mouse, |
|
SInt16 * modifiers, |
|
void * dragInputRefCon, |
|
DragRef theDrag, |
|
DragInputUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(OSErr) InvokeDragInputUPP(Point * mouse, SInt16 * modifiers, void * dragInputRefCon, DragRef theDrag, DragInputUPP userUPP) { return (OSErr)CALL_FOUR_PARAMETER_UPP(userUPP, uppDragInputProcInfo, mouse, modifiers, dragInputRefCon, theDrag); } |
|
#else |
|
#define InvokeDragInputUPP(mouse, modifiers, dragInputRefCon, theDrag, userUPP) (OSErr)CALL_FOUR_PARAMETER_UPP((userUPP), uppDragInputProcInfo, (mouse), (modifiers), (dragInputRefCon), (theDrag)) |
|
#endif |
|
#endif |
|
|
|
/* |
|
* InvokeDragDrawingUPP() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: available as macro/inline |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API_C( OSErr ) |
|
InvokeDragDrawingUPP( |
|
DragRegionMessage message, |
|
RgnHandle showRegion, |
|
Point showOrigin, |
|
RgnHandle hideRegion, |
|
Point hideOrigin, |
|
void * dragDrawingRefCon, |
|
DragRef theDrag, |
|
DragDrawingUPP userUPP); |
|
#if !OPAQUE_UPP_TYPES |
|
#ifdef __cplusplus |
|
inline DEFINE_API_C(OSErr) InvokeDragDrawingUPP(DragRegionMessage message, RgnHandle showRegion, Point showOrigin, RgnHandle hideRegion, Point hideOrigin, void * dragDrawingRefCon, DragRef theDrag, DragDrawingUPP userUPP) { return (OSErr)CALL_SEVEN_PARAMETER_UPP(userUPP, uppDragDrawingProcInfo, message, showRegion, showOrigin, hideRegion, hideOrigin, dragDrawingRefCon, theDrag); } |
|
#else |
|
#define InvokeDragDrawingUPP(message, showRegion, showOrigin, hideRegion, hideOrigin, dragDrawingRefCon, theDrag, userUPP) (OSErr)CALL_SEVEN_PARAMETER_UPP((userUPP), uppDragDrawingProcInfo, (message), (showRegion), (showOrigin), (hideRegion), (hideOrigin), (dragDrawingRefCon), (theDrag)) |
|
#endif |
|
#endif |
|
|
|
#if CALL_NOT_IN_CARBON || OLDROUTINENAMES |
|
/* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ |
|
#define NewDragSendDataProc(userRoutine) NewDragSendDataUPP(userRoutine) |
|
#define NewDragInputProc(userRoutine) NewDragInputUPP(userRoutine) |
|
#define NewDragDrawingProc(userRoutine) NewDragDrawingUPP(userRoutine) |
|
#define CallDragSendDataProc(userRoutine, theType, dragSendRefCon, theItemRef, theDrag) InvokeDragSendDataUPP(theType, dragSendRefCon, theItemRef, theDrag, userRoutine) |
|
#define CallDragInputProc(userRoutine, mouse, modifiers, dragInputRefCon, theDrag) InvokeDragInputUPP(mouse, modifiers, dragInputRefCon, theDrag, userRoutine) |
|
#define CallDragDrawingProc(userRoutine, message, showRegion, showOrigin, hideRegion, hideOrigin, dragDrawingRefCon, theDrag) InvokeDragDrawingUPP(message, showRegion, showOrigin, hideRegion, hideOrigin, dragDrawingRefCon, theDrag, userRoutine) |
|
#endif /* CALL_NOT_IN_CARBON */ |
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o INSTALLING AND REMOVING HANDLERS API'S |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
/* |
|
* InstallTrackingHandler() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
InstallTrackingHandler( |
|
DragTrackingHandlerUPP trackingHandler, |
|
WindowRef theWindow, |
|
void * handlerRefCon) TWOWORDINLINE(0x7001, 0xABED); |
|
|
|
|
|
/* |
|
* InstallReceiveHandler() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
InstallReceiveHandler( |
|
DragReceiveHandlerUPP receiveHandler, |
|
WindowRef theWindow, |
|
void * handlerRefCon) TWOWORDINLINE(0x7002, 0xABED); |
|
|
|
|
|
/* |
|
* RemoveTrackingHandler() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
RemoveTrackingHandler( |
|
DragTrackingHandlerUPP trackingHandler, |
|
WindowRef theWindow) TWOWORDINLINE(0x7003, 0xABED); |
|
|
|
|
|
/* |
|
* RemoveReceiveHandler() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
RemoveReceiveHandler( |
|
DragReceiveHandlerUPP receiveHandler, |
|
WindowRef theWindow) TWOWORDINLINE(0x7004, 0xABED); |
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o CREATING & DISPOSING |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
/* |
|
* NewDrag() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
NewDrag(DragRef * theDrag) TWOWORDINLINE(0x7005, 0xABED); |
|
|
|
|
|
/* |
|
* DisposeDrag() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
DisposeDrag(DragRef theDrag) TWOWORDINLINE(0x7006, 0xABED); |
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o ADDING DRAG ITEM FLAVORS |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
/* |
|
The method for setting Drag Manager promises differs from that for Scrap Manger promises. This chart |
|
describes the method for setting drag promises via AddDragItemFlavor(). |
|
|
|
dataPtr dataSize result |
|
pointer value actual data size The data of size dataSize pointed to by dataPtr is added to the drag. |
|
NULL ignored A promise is placed on the drag. |
|
*/ |
|
/* |
|
* AddDragItemFlavor() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
AddDragItemFlavor( |
|
DragRef theDrag, |
|
DragItemRef theItemRef, |
|
FlavorType theType, |
|
const void * dataPtr, |
|
Size dataSize, |
|
FlavorFlags theFlags) TWOWORDINLINE(0x7007, 0xABED); |
|
|
|
|
|
/* |
|
* SetDragItemFlavorData() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetDragItemFlavorData( |
|
DragRef theDrag, |
|
DragItemRef theItemRef, |
|
FlavorType theType, |
|
const void * dataPtr, |
|
Size dataSize, |
|
UInt32 dataOffset) TWOWORDINLINE(0x7009, 0xABED); |
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o PROVIDING CALLBACK PROCEDURES |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
/* |
|
* SetDragSendProc() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetDragSendProc( |
|
DragRef theDrag, |
|
DragSendDataUPP sendProc, |
|
void * dragSendRefCon) TWOWORDINLINE(0x700A, 0xABED); |
|
|
|
|
|
|
|
/* |
|
* SetDragInputProc() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetDragInputProc( |
|
DragRef theDrag, |
|
DragInputUPP inputProc, |
|
void * dragInputRefCon) TWOWORDINLINE(0x700B, 0xABED); |
|
|
|
|
|
/* |
|
* SetDragDrawingProc() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetDragDrawingProc( |
|
DragRef theDrag, |
|
DragDrawingUPP drawingProc, |
|
void * dragDrawingRefCon) TWOWORDINLINE(0x700C, 0xABED); |
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o SETTING THE DRAG IMAGE |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
/* |
|
* SetDragImage() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 7.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetDragImage( |
|
DragRef theDrag, |
|
PixMapHandle imagePixMap, |
|
RgnHandle imageRgn, |
|
Point imageOffsetPt, |
|
DragImageFlags theImageFlags) TWOWORDINLINE(0x7027, 0xABED); |
|
|
|
|
|
/* |
|
* SetDragImageWithCGImage() |
|
* |
|
* Discussion: |
|
* Used by the sender of the drag to set the image, in CGImage |
|
* format, to be displayed as user feedback during the drag. This |
|
* API may be called at any point during the drag to update the |
|
* image. |
|
* |
|
* Parameters: |
|
* |
|
* inDrag: |
|
* The drag reference for which the image will be displayed. |
|
* |
|
* inCGImage: |
|
* The CGImageRef for the image to be displayed during the drag. |
|
* The image is retained internally by the Drag Manager for the |
|
* duration of the drag so it may be released by the client |
|
* immediately after setting. |
|
* |
|
* inImageOffsetPt: |
|
* A pointer to the offset from the mouse to the upper left of the |
|
* image (normally expressed in negative values). This differs |
|
* from the usage of the offset passed to SetDragImage(). Here, |
|
* an offset of ( -30, -30 ) will center a 60x60 pixel image on |
|
* the drag mouse. |
|
* |
|
* inImageFlags: |
|
* The flags determining image drawing during the drag. |
|
* |
|
* Result: |
|
* An operating system result code. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: in version 10.2 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
SetDragImageWithCGImage( |
|
DragRef inDrag, |
|
CGImageRef inCGImage, |
|
const HIPoint * inImageOffsetPt, |
|
DragImageFlags inImageFlags); |
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o ALTERING THE BEHAVIOR OF A DRAG |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
/* |
|
* ChangeDragBehaviors() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 9.0 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
ChangeDragBehaviors( |
|
DragRef theDrag, |
|
DragBehaviors inBehaviorsToSet, |
|
DragBehaviors inBehaviorsToClear) TWOWORDINLINE(0x7028, 0xABED); |
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o PERFORMING A DRAG |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
/* |
|
* TrackDrag() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
TrackDrag( |
|
DragRef theDrag, |
|
const EventRecord * theEvent, |
|
RgnHandle theRegion) TWOWORDINLINE(0x700D, 0xABED); |
|
|
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o GETTING DRAG ITEM INFORMATION |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
/* |
|
* CountDragItems() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
CountDragItems( |
|
DragRef theDrag, |
|
UInt16 * numItems) TWOWORDINLINE(0x700E, 0xABED); |
|
|
|
|
|
/* |
|
* GetDragItemReferenceNumber() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetDragItemReferenceNumber( |
|
DragRef theDrag, |
|
UInt16 index, |
|
DragItemRef * theItemRef) TWOWORDINLINE(0x700F, 0xABED); |
|
|
|
|
|
/* |
|
* CountDragItemFlavors() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
CountDragItemFlavors( |
|
DragRef theDrag, |
|
DragItemRef theItemRef, |
|
UInt16 * numFlavors) TWOWORDINLINE(0x7010, 0xABED); |
|
|
|
|
|
/* |
|
* GetFlavorType() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetFlavorType( |
|
DragRef theDrag, |
|
DragItemRef theItemRef, |
|
UInt16 index, |
|
FlavorType * theType) TWOWORDINLINE(0x7011, 0xABED); |
|
|
|
|
|
/* |
|
* GetFlavorFlags() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetFlavorFlags( |
|
DragRef theDrag, |
|
DragItemRef theItemRef, |
|
FlavorType theType, |
|
FlavorFlags * theFlags) TWOWORDINLINE(0x7012, 0xABED); |
|
|
|
|
|
/* |
|
* GetFlavorDataSize() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetFlavorDataSize( |
|
DragRef theDrag, |
|
DragItemRef theItemRef, |
|
FlavorType theType, |
|
Size * dataSize) TWOWORDINLINE(0x7013, 0xABED); |
|
|
|
|
|
/* |
|
* GetFlavorData() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetFlavorData( |
|
DragRef theDrag, |
|
DragItemRef theItemRef, |
|
FlavorType theType, |
|
void * dataPtr, |
|
Size * dataSize, |
|
UInt32 dataOffset) TWOWORDINLINE(0x7014, 0xABED); |
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o DRAG ITEM BOUNDS |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
/* |
|
* GetDragItemBounds() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetDragItemBounds( |
|
DragRef theDrag, |
|
DragItemRef theItemRef, |
|
Rect * itemBounds) TWOWORDINLINE(0x7015, 0xABED); |
|
|
|
|
|
/* |
|
* SetDragItemBounds() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetDragItemBounds( |
|
DragRef theDrag, |
|
DragItemRef theItemRef, |
|
const Rect * itemBounds) TWOWORDINLINE(0x7016, 0xABED); |
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o DROP LOCATIONS |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
/* |
|
* GetDropLocation() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetDropLocation( |
|
DragRef theDrag, |
|
AEDesc * dropLocation) TWOWORDINLINE(0x7017, 0xABED); |
|
|
|
|
|
/* |
|
* SetDropLocation() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetDropLocation( |
|
DragRef theDrag, |
|
const AEDesc * dropLocation) TWOWORDINLINE(0x7018, 0xABED); |
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o STANDARD DROP LOCATIONS |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
/* |
|
* GetStandardDropLocation() |
|
* |
|
* Discussion: |
|
* Gets the standard drop location that was set by the receiver of |
|
* the drag. |
|
* |
|
* Parameters: |
|
* |
|
* theDrag: |
|
* The drag reference from which to retrieve the allowable drag |
|
* actions. |
|
* |
|
* outDropLocation: |
|
* A pointer to the standard drop location, set by the receiver, |
|
* representing the location where the drag was dropped. |
|
* |
|
* Result: |
|
* An operating system result code. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later |
|
* Mac OS X: in version 10.2 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
GetStandardDropLocation( |
|
DragRef theDrag, |
|
StandardDropLocation * outDropLocation) TWOWORDINLINE(0x7017, 0xABED); |
|
|
|
|
|
/* |
|
* SetStandardDropLocation() |
|
* |
|
* Discussion: |
|
* Used by the receiver of the drag to set the standard drop |
|
* location. |
|
* |
|
* Parameters: |
|
* |
|
* theDrag: |
|
* The drag reference from which to retrieve the allowable drag |
|
* actions. |
|
* |
|
* dropLocation: |
|
* The standard drop location representing the location where the |
|
* drag was dropped. |
|
* |
|
* Result: |
|
* An operating system result code. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later |
|
* Mac OS X: in version 10.2 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
SetStandardDropLocation( |
|
DragRef theDrag, |
|
StandardDropLocation dropLocation) TWOWORDINLINE(0x7018, 0xABED); |
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o GETTING INFORMATION ABOUT A DRAG |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
/* |
|
* GetDragAttributes() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetDragAttributes( |
|
DragRef theDrag, |
|
DragAttributes * flags) TWOWORDINLINE(0x7019, 0xABED); |
|
|
|
|
|
/* |
|
* GetDragMouse() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetDragMouse( |
|
DragRef theDrag, |
|
Point * mouse, |
|
Point * globalPinnedMouse) TWOWORDINLINE(0x701A, 0xABED); |
|
|
|
|
|
/* |
|
* SetDragMouse() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
SetDragMouse( |
|
DragRef theDrag, |
|
Point globalPinnedMouse) TWOWORDINLINE(0x701B, 0xABED); |
|
|
|
|
|
/* |
|
* GetDragOrigin() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetDragOrigin( |
|
DragRef theDrag, |
|
Point * globalInitialMouse) TWOWORDINLINE(0x701C, 0xABED); |
|
|
|
|
|
/* |
|
* GetDragModifiers() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetDragModifiers( |
|
DragRef theDrag, |
|
SInt16 * modifiers, |
|
SInt16 * mouseDownModifiers, |
|
SInt16 * mouseUpModifiers) TWOWORDINLINE(0x701D, 0xABED); |
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o ACCESSING DRAG ACTIONS |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
/* |
|
* GetDragAllowableActions() |
|
* |
|
* Discussion: |
|
* Gets the actions the drag sender has allowed the receiver to |
|
* perform. These are not requirements, but they highly suggested |
|
* actions which allows the drag receiver to improve harmony across |
|
* the system. The allowable actions received are always those |
|
* local to the caller's process. |
|
* |
|
* Parameters: |
|
* |
|
* theDrag: |
|
* The drag reference from which to retreive the allowable drag |
|
* actions. |
|
* |
|
* outActions: |
|
* A pointer to receive the field of allowable drag actions. |
|
* |
|
* Result: |
|
* An operating system result code. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
GetDragAllowableActions( |
|
DragRef theDrag, |
|
DragActions * outActions); |
|
|
|
|
|
/* |
|
* SetDragAllowableActions() |
|
* |
|
* Discussion: |
|
* Sets the actions the receiver of the drag is allowed to perform. |
|
* These are not requirements, but they highly suggested actions |
|
* which allows the drag receiver to improve harmony across the |
|
* system. The caller may select wether these drag actions apply to |
|
* a local or remote process. |
|
* |
|
* Parameters: |
|
* |
|
* theDrag: |
|
* The drag reference in which to set the allowable drag actions. |
|
* |
|
* inActions: |
|
* A field of allowable drag actions to be set. |
|
* |
|
* isLocal: |
|
* A boolean value allowing the drag sender to distinguish between |
|
* those drag actions allowable by the local receiver versus a |
|
* remote one. |
|
* |
|
* Result: |
|
* An operating system result code. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
SetDragAllowableActions( |
|
DragRef theDrag, |
|
DragActions inActions, |
|
Boolean isLocal); |
|
|
|
|
|
/* |
|
* GetDragDropAction() |
|
* |
|
* Discussion: |
|
* Gets the action performed by the receiver of the drag. More than |
|
* one action may have been performed. |
|
* |
|
* Parameters: |
|
* |
|
* theDrag: |
|
* The drag reference from which to retreive the performed drop |
|
* action. |
|
* |
|
* outAction: |
|
* A pointer to receive the drag action performed. |
|
* |
|
* Result: |
|
* An operating system result code. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
GetDragDropAction( |
|
DragRef theDrag, |
|
DragActions * outAction); |
|
|
|
|
|
/* |
|
* SetDragDropAction() |
|
* |
|
* Discussion: |
|
* Sets the action performed by the receiver of the drag. More than |
|
* one action may be performed. |
|
* |
|
* Parameters: |
|
* |
|
* theDrag: |
|
* The drag reference in which to set the performed drop action. |
|
* |
|
* inAction: |
|
* The drop action performed. |
|
* |
|
* Result: |
|
* An operating system result code. |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later |
|
* Mac OS X: in version 10.1 and later |
|
*/ |
|
EXTERN_API_C( OSStatus ) |
|
SetDragDropAction( |
|
DragRef theDrag, |
|
DragActions inAction); |
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o DRAG HIGHLIGHTING |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
/* |
|
* ShowDragHilite() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
ShowDragHilite( |
|
DragRef theDrag, |
|
RgnHandle hiliteFrame, |
|
Boolean inside) TWOWORDINLINE(0x701E, 0xABED); |
|
|
|
|
|
/* |
|
* HideDragHilite() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
HideDragHilite(DragRef theDrag) TWOWORDINLINE(0x701F, 0xABED); |
|
|
|
|
|
/* |
|
* DragPreScroll() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
DragPreScroll( |
|
DragRef theDrag, |
|
SInt16 dH, |
|
SInt16 dV) TWOWORDINLINE(0x7020, 0xABED); |
|
|
|
|
|
/* |
|
* DragPostScroll() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
DragPostScroll(DragRef theDrag) TWOWORDINLINE(0x7021, 0xABED); |
|
|
|
|
|
/* |
|
* UpdateDragHilite() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
UpdateDragHilite( |
|
DragRef theDrag, |
|
RgnHandle updateRgn) TWOWORDINLINE(0x7022, 0xABED); |
|
|
|
|
|
/* |
|
* GetDragHiliteColor() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 7.5 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
GetDragHiliteColor( |
|
WindowRef window, |
|
RGBColor * color) TWOWORDINLINE(0x7026, 0xABED); |
|
|
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
|
|
o UTILITIES |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
|
|
/* |
|
* WaitMouseMoved() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( Boolean ) |
|
WaitMouseMoved(Point initialGlobalMouse) TWOWORDINLINE(0x7023, 0xABED); |
|
|
|
|
|
|
|
/* |
|
* ZoomRects() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
ZoomRects( |
|
const Rect * fromRect, |
|
const Rect * toRect, |
|
SInt16 zoomSteps, |
|
ZoomAcceleration acceleration) TWOWORDINLINE(0x7024, 0xABED); |
|
|
|
|
|
/* |
|
* ZoomRegion() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: in DragLib 1.1 and later |
|
* CarbonLib: in CarbonLib 1.0 and later |
|
* Mac OS X: in version 10.0 and later |
|
*/ |
|
EXTERN_API( OSErr ) |
|
ZoomRegion( |
|
RgnHandle region, |
|
Point zoomDistance, |
|
SInt16 zoomSteps, |
|
ZoomAcceleration acceleration) TWOWORDINLINE(0x7025, 0xABED); |
|
|
|
|
|
|
|
/* |
|
_________________________________________________________________________________________________________ |
|
o OLD NAMES |
|
These are provided for compatiblity with older source bases. It is recommended to not use them since |
|
they may removed from this interface file at any time. |
|
_________________________________________________________________________________________________________ |
|
*/ |
|
|
|
|
|
typedef DragRef DragReference; |
|
typedef DragItemRef ItemReference; |
|
#if OLDROUTINENAMES |
|
enum { |
|
dragHasLeftSenderWindow = kDragHasLeftSenderWindow, /* drag has left the source window since TrackDrag */ |
|
dragInsideSenderApplication = kDragInsideSenderApplication, /* drag is occurring within the sender application */ |
|
dragInsideSenderWindow = kDragInsideSenderWindow /* drag is occurring within the sender window */ |
|
}; |
|
|
|
enum { |
|
dragTrackingEnterHandler = kDragTrackingEnterHandler, /* drag has entered handler */ |
|
dragTrackingEnterWindow = kDragTrackingEnterWindow, /* drag has entered window */ |
|
dragTrackingInWindow = kDragTrackingInWindow, /* drag is moving within window */ |
|
dragTrackingLeaveWindow = kDragTrackingLeaveWindow, /* drag has exited window */ |
|
dragTrackingLeaveHandler = kDragTrackingLeaveHandler /* drag has exited handler */ |
|
}; |
|
|
|
enum { |
|
dragRegionBegin = kDragRegionBegin, /* initialize drawing */ |
|
dragRegionDraw = kDragRegionDraw, /* draw drag feedback */ |
|
dragRegionHide = kDragRegionHide, /* hide drag feedback */ |
|
dragRegionIdle = kDragRegionIdle, /* drag feedback idle time */ |
|
dragRegionEnd = kDragRegionEnd /* end of drawing */ |
|
}; |
|
|
|
enum { |
|
zoomNoAcceleration = kZoomNoAcceleration, /* use linear interpolation */ |
|
zoomAccelerate = kZoomAccelerate, /* ramp up step size */ |
|
zoomDecelerate = kZoomDecelerate /* ramp down step size */ |
|
}; |
|
|
|
enum { |
|
kDragStandardImage = kDragStandardTranslucency, /* 65% image translucency (standard)*/ |
|
kDragDarkImage = kDragDarkTranslucency, /* 50% image translucency*/ |
|
kDragDarkerImage = kDragDarkerTranslucency, /* 25% image translucency*/ |
|
kDragOpaqueImage = kDragOpaqueTranslucency /* 0% image translucency (opaque)*/ |
|
}; |
|
|
|
#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 /* __DRAG__ */ |
|
|
|
|