summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/Drag.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/Drag.h')
-rw-r--r--common/quicktime_win32/Drag.h1734
1 files changed, 1734 insertions, 0 deletions
diff --git a/common/quicktime_win32/Drag.h b/common/quicktime_win32/Drag.h
new file mode 100644
index 0000000..4960e47
--- /dev/null
+++ b/common/quicktime_win32/Drag.h
@@ -0,0 +1,1734 @@
+/*
+ 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__ */
+