mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-23 06:36:54 +00:00
1735 lines
57 KiB
C
1735 lines
57 KiB
C
/*
|
|
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__ */
|
|
|