topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-Lists.h / h
/*
File: Lists.h
Contains: List Manager Interfaces.
Version: Technology: Mac OS 8
Release: QuickTime 6.0.2
Copyright: (c) 1985-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 __LISTS__
define __LISTS__
ifndef __MACTYPES__
include <MacTypes.h>
endif
ifndef __CONTROLS__
include <Controls.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
typedef Point Cell;
typedef Rect ListBounds;
typedef char DataArray[32001];
typedef char * DataPtr;
typedef DataPtr * DataHandle;
typedef CALLBACK_API( short , ListSearchProcPtr )(Ptr aPtr, Ptr bPtr, short aLen, short bLen);
typedef CALLBACK_API( Boolean , ListClickLoopProcPtr )(void );
/*
WARNING: ListClickLoopProcPtr uses register based parameters under classic 68k
and cannot be written in a high-level language without
the help of mixed mode or assembly glue.
*/
typedef STACK_UPP_TYPE(ListSearchProcPtr) ListSearchUPP;
typedef REGISTER_UPP_TYPE(ListClickLoopProcPtr) ListClickLoopUPP;
if !TARGET_OS_MAC
/* QuickTime 3.0 */
typedef long ListNotification;
enum {
listNotifyNothing = FOUR_CHAR_CODE('nada'), /* No (null) notification*/
listNotifyClick = FOUR_CHAR_CODE('clik'), /* Control was clicked*/
listNotifyDoubleClick = FOUR_CHAR_CODE('dblc'), /* Control was double-clicked*/
listNotifyPreClick = FOUR_CHAR_CODE('pclk') /* Control about to be clicked*/
};
endif /* !TARGET_OS_MAC */
struct ListRec {
Rect rView;
GrafPtr port;
Point indent;
Point cellSize;
ListBounds visible;
ControlHandle vScroll;
ControlHandle hScroll;
SInt8 selFlags;
Boolean lActive;
SInt8 lReserved;
SInt8 listFlags;
long clikTime;
Point clikLoc;
Point mouseLoc;
ListClickLoopUPP lClickLoop;
Cell lastClick;
long refCon;
Handle listDefProc;
Handle userHandle;
ListBounds dataBounds;
DataHandle cells;
short maxIndex;
short cellArray[1];
};
typedef struct ListRec ListRec;
typedef ListRec * ListPtr;
typedef ListPtr * ListHandle;
/* ListRef is obsolete. Use ListHandle. */
typedef ListHandle ListRef;
enum {
/* ListRec.listFlags bits*/
lDoVAutoscrollBit = 1,
lDoHAutoscrollBit = 0
};
enum {
/* ListRec.listFlags masks*/
lDoVAutoscroll = 2,
lDoHAutoscroll = 1
};
enum {
/* ListRec.selFlags bits*/
lOnlyOneBit = 7,
lExtendDragBit = 6,
lNoDisjointBit = 5,
lNoExtendBit = 4,
lNoRectBit = 3,
lUseSenseBit = 2,
lNoNilHiliteBit = 1
};
enum {
/* ListRec.selFlags masks*/
lOnlyOne = -128,
lExtendDrag = 64,
lNoDisjoint = 32,
lNoExtend = 16,
lNoRect = 8,
lUseSense = 4,
lNoNilHilite = 2
};
enum {
/* LDEF messages*/
lInitMsg = 0,
lDrawMsg = 1,
lHiliteMsg = 2,
lCloseMsg = 3
};
typedef CALLBACK_API( void , ListDefProcPtr )(short lMessage, Boolean lSelect, Rect *lRect, Cell lCell, short lDataOffset, short lDataLen, ListHandle lHandle);
typedef STACK_UPP_TYPE(ListDefProcPtr) ListDefUPP;
if OPAQUE_UPP_TYPES
EXTERN_API(ListSearchUPP)
NewListSearchUPP (ListSearchProcPtr userRoutine);
EXTERN_API(ListClickLoopUPP)
NewListClickLoopUPP (ListClickLoopProcPtr userRoutine);
EXTERN_API(ListDefUPP)
NewListDefUPP (ListDefProcPtr userRoutine);
EXTERN_API(void)
DisposeListSearchUPP (ListSearchUPP userUPP);
EXTERN_API(void)
DisposeListClickLoopUPP (ListClickLoopUPP userUPP);
EXTERN_API(void)
DisposeListDefUPP (ListDefUPP userUPP);
EXTERN_API(short)
InvokeListSearchUPP (Ptr aPtr,
Ptr bPtr,
short aLen,
short bLen,
ListSearchUPP userUPP);
EXTERN_API(Boolean)
InvokeListClickLoopUPP (ListClickLoopUPP userUPP);
EXTERN_API(void)
InvokeListDefUPP (short lMessage,
Boolean lSelect,
Rect * lRect,
Cell lCell,
short lDataOffset,
short lDataLen,
ListHandle lHandle,
ListDefUPP userUPP);
else
enum { uppListSearchProcInfo = 0x00002BE0 }; /* pascal 2_bytes Func(4_bytes, 4_bytes, 2_bytes, 2_bytes) */
enum { uppListClickLoopProcInfo = 0x00000012 }; /* register 1_byte:D0 Func() */
enum { uppListDefProcInfo = 0x000EBD80 }; /* pascal no_return_value Func(2_bytes, 1_byte, 4_bytes, 4_bytes, 2_bytes, 2_bytes, 4_bytes) */
#define NewListSearchUPP(userRoutine) (ListSearchUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppListSearchProcInfo, GetCurrentArchitecture())
#define NewListClickLoopUPP(userRoutine) (ListClickLoopUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppListClickLoopProcInfo, GetCurrentArchitecture())
#define NewListDefUPP(userRoutine) (ListDefUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppListDefProcInfo, GetCurrentArchitecture())
#define DisposeListSearchUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeListClickLoopUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeListDefUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define InvokeListSearchUPP(aPtr, bPtr, aLen, bLen, userUPP) (short)CALL_FOUR_PARAMETER_UPP((userUPP), uppListSearchProcInfo, (aPtr), (bPtr), (aLen), (bLen))
#if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
#pragma parameter __D0 InvokeListClickLoopUPP(__A0)
Boolean InvokeListClickLoopUPP(ListClickLoopUPP userUPP) = 0x4E90;
#else
#define InvokeListClickLoopUPP(userUPP) (Boolean)CALL_ZERO_PARAMETER_UPP((userUPP), uppListClickLoopProcInfo)
#endif
#define InvokeListDefUPP(lMessage, lSelect, lRect, lCell, lDataOffset, lDataLen, lHandle, userUPP) CALL_SEVEN_PARAMETER_UPP((userUPP), uppListDefProcInfo, (lMessage), (lSelect), (lRect), (lCell), (lDataOffset), (lDataLen), (lHandle))
endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
define NewListSearchProc(userRoutine) NewListSearchUPP(userRoutine)
define NewListClickLoopProc(userRoutine) NewListClickLoopUPP(userRoutine)
define NewListDefProc(userRoutine) NewListDefUPP(userRoutine)
define CallListSearchProc(userRoutine, aPtr, bPtr, aLen, bLen) InvokeListSearchUPP(aPtr, bPtr, aLen, bLen, userRoutine)
define CallListClickLoopProc(userRoutine) InvokeListClickLoopUPP(userRoutine)
define CallListDefProc(userRoutine, lMessage, lSelect, lRect, lCell, lDataOffset, lDataLen, lHandle) InvokeListDefUPP(lMessage, lSelect, lRect, lCell, lDataOffset, lDataLen, lHandle, userRoutine)
enum {
kListDefUserProcType = 0,
kListDefStandardTextType = 1,
kListDefStandardIconType = 2
};
typedef UInt32 ListDefType;
struct ListDefSpec {
ListDefType defType;
union {
ListDefUPP userProc;
} u;
};
typedef struct ListDefSpec ListDefSpec;
EXTERN_API( OSStatus )
CreateCustomList (const Rect * rView,
const ListBounds * dataBounds,
Point cellSize,
const ListDefSpec * theSpec,
WindowPtr theWindow,
Boolean drawIt,
Boolean hasGrow,
Boolean scrollHoriz,
Boolean scrollVert,
ListHandle * outList);
if !TARGET_OS_MAC
/* QuickTime 3.0 */
typedef CALLBACK_API( void , ListNotificationProcPtr )(ListHandle theList, ListNotification notification, long param);
typedef ListNotificationProcPtr ListNotificationUPP;
if CALL_NOT_IN_CARBON
EXTERN_API_C( void )
LSetNotificationCallback (ListNotificationProcPtr callBack,
ListHandle lHandle);
EXTERN_API_C( void )
GetListVisibleBounds (ListHandle theList,
Rect * visibleBounds);
endif /* CALL_NOT_IN_CARBON */
endif /* !TARGET_OS_MAC */
EXTERN_API( ListHandle )
LNew (const Rect * rView,
const ListBounds * dataBounds,
Point cSize,
short theProc,
WindowPtr theWindow,
Boolean drawIt,
Boolean hasGrow,
Boolean scrollHoriz,
Boolean scrollVert) THREEWORDINLINE(0x3F3C, 0x0044, 0xA9E7);
EXTERN_API( void )
LDispose (ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0028, 0xA9E7);
EXTERN_API( short )
LAddColumn (short count,
short colNum,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0004, 0xA9E7);
EXTERN_API( short )
LAddRow (short count,
short rowNum,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0008, 0xA9E7);
EXTERN_API( void )
LDelColumn (short count,
short colNum,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0020, 0xA9E7);
EXTERN_API( void )
LDelRow (short count,
short rowNum,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0024, 0xA9E7);
EXTERN_API( Boolean )
LGetSelect (Boolean next,
Cell * theCell,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x003C, 0xA9E7);
EXTERN_API( Cell )
LLastClick (ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0040, 0xA9E7);
EXTERN_API( Boolean )
LNextCell (Boolean hNext,
Boolean vNext,
Cell * theCell,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0048, 0xA9E7);
EXTERN_API( Boolean )
LSearch (const void * dataPtr,
short dataLen,
ListSearchUPP searchProc,
Cell * theCell,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0054, 0xA9E7);
EXTERN_API( void )
LSize (short listWidth,
short listHeight,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0060, 0xA9E7);
EXTERN_API( void )
LSetDrawingMode (Boolean drawIt,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x002C, 0xA9E7);
EXTERN_API( void )
LScroll (short dCols,
short dRows,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0050, 0xA9E7);
EXTERN_API( void )
LAutoScroll (ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0010, 0xA9E7);
EXTERN_API( void )
LUpdate (RgnHandle theRgn,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0064, 0xA9E7);
EXTERN_API( void )
LActivate (Boolean act,
ListHandle lHandle) TWOWORDINLINE(0x4267, 0xA9E7);
EXTERN_API( void )
LCellSize (Point cSize,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0014, 0xA9E7);
EXTERN_API( Boolean )
LClick (Point pt,
short modifiers,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0018, 0xA9E7);
EXTERN_API( void )
LAddToCell (const void * dataPtr,
short dataLen,
Cell theCell,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x000C, 0xA9E7);
EXTERN_API( void )
LClrCell (Cell theCell,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x001C, 0xA9E7);
EXTERN_API( void )
LGetCell (void * dataPtr,
short * dataLen,
Cell theCell,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0038, 0xA9E7);
EXTERN_API( void )
LRect (Rect * cellRect,
Cell theCell,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x004C, 0xA9E7);
EXTERN_API( void )
LSetCell (const void * dataPtr,
short dataLen,
Cell theCell,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0058, 0xA9E7);
EXTERN_API( void )
LSetSelect (Boolean setIt,
Cell theCell,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x005C, 0xA9E7);
EXTERN_API( void )
LDraw (Cell theCell,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0030, 0xA9E7);
EXTERN_API( void )
LGetCellDataLocation (short * offset,
short * len,
Cell theCell,
ListHandle lHandle) THREEWORDINLINE(0x3F3C, 0x0034, 0xA9E7);
if CALL_NOT_IN_CARBON
if CALL_NOT_IN_CARBON
EXTERN_API( OSErr )
SetListDefinitionProc (SInt16 resID,
ListDefUPP defProc);
endif /* CALL_NOT_IN_CARBON */
endif /* CALL_NOT_IN_CARBON */
if !TARGET_OS_MAC
/* QuickTime 3.0 */
if CALL_NOT_IN_CARBON
EXTERN_API_C( void )
LSetLDEF (ListDefProcPtr proc,
ListRef lHandle);
endif /* CALL_NOT_IN_CARBON */
endif /* !TARGET_OS_MAC */
if CALL_NOT_IN_CARBON
EXTERN_API_C( void )
laddtocell (const void * dataPtr,
short dataLen,
const Cell * theCell,
ListHandle lHandle);
EXTERN_API_C( void )
lclrcell (const Cell * theCell,
ListHandle lHandle);
EXTERN_API_C( void )
lgetcelldatalocation (short * offset,
short * len,
const Cell * theCell,
ListHandle lHandle);
EXTERN_API_C( void )
lgetcell (void * dataPtr,
short * dataLen,
const Cell * theCell,
ListHandle lHandle);
EXTERN_API_C( ListHandle )
lnew (const Rect * rView,
const ListBounds * dataBounds,
Point * cSize,
short theProc,
WindowPtr theWindow,
Boolean drawIt,
Boolean hasGrow,
Boolean scrollHoriz,
Boolean scrollVert);
EXTERN_API_C( void )
lrect (Rect * cellRect,
const Cell * theCell,
ListHandle lHandle);
EXTERN_API_C( void )
lsetcell (const void * dataPtr,
short dataLen,
const Cell * theCell,
ListHandle lHandle);
EXTERN_API_C( void )
lsetselect (Boolean setIt,
const Cell * theCell,
ListHandle lHandle);
EXTERN_API_C( void )
ldraw (const Cell * theCell,
ListHandle lHandle);
EXTERN_API_C( Boolean )
lclick (Point * pt,
short modifiers,
ListHandle lHandle);
EXTERN_API_C( void )
lcellsize (Point * cSize,
ListHandle lHandle);
endif /* CALL_NOT_IN_CARBON */
if OLDROUTINENAMES
define LDoDraw(drawIt, lHandle) LSetDrawingMode(drawIt, lHandle)
define LFind(offset, len, theCell, lHandle) LGetCellDataLocation(offset, len, theCell, lHandle)
if CGLUESUPPORTED
define lfind(offset, len, theCell, lHandle) lgetcelldatalocation(offset, len, theCell, lHandle)
endif
endif /* OLDROUTINENAMES */
if ACCESSOR_CALLS_ARE_FUNCTIONS
/* Getters */
EXTERN_API( Rect *)
GetListViewBounds (ListRef list,
Rect * view);
EXTERN_API( CGrafPtr )
GetListPort (ListRef list);
EXTERN_API( Point *)
GetListCellIndent (ListRef list,
Point * indent);
EXTERN_API( Point *)
GetListCellSize (ListRef list,
Point * size);
EXTERN_API( ListBounds *)
GetListVisibleCells (ListRef list,
ListBounds * visible);
EXTERN_API( ControlHandle )
GetListVerticalScrollBar (ListRef list);
EXTERN_API( ControlHandle )
GetListHorizontalScrollBar (ListRef list);
EXTERN_API( Boolean )
GetListActive (ListRef list);
EXTERN_API( SInt32 )
GetListClickTime (ListRef list);
EXTERN_API( Point *)
GetListClickLocation (ListRef list,
Point * click);
EXTERN_API( Point *)
GetListMouseLocation (ListRef list,
Point * mouse);
EXTERN_API( ListClickLoopUPP )
GetListClickLoop (ListRef list);
EXTERN_API( SInt32 )
GetListRefCon (ListRef list);
EXTERN_API( Handle )
GetListDefinition (ListRef list);
EXTERN_API( Handle )
GetListUserHandle (ListRef list);
EXTERN_API( ListBounds *)
GetListDataBounds (ListRef list,
ListBounds * bounds);
EXTERN_API( DataHandle )
GetListDataHandle (ListRef list);
EXTERN_API( OptionBits )
GetListFlags (ListRef list);
EXTERN_API( OptionBits )
GetListSelectionFlags (ListRef list);
/* Setters */
EXTERN_API( void )
SetListViewBounds (ListRef list,
const Rect * view);
EXTERN_API( void )
SetListPort (ListRef list,
CGrafPtr port);
EXTERN_API( void )
SetListCellIndent (ListRef list,
Point * indent);
EXTERN_API( void )
SetListClickTime (ListRef list,
SInt32 time);
EXTERN_API( void )
SetListClickLoop (ListRef list,
ListClickLoopUPP clickLoop);
EXTERN_API( void )
SetListLastClick (ListRef list,
Cell * lastClick);
EXTERN_API( void )
SetListRefCon (ListRef list,
SInt32 refCon);
EXTERN_API( void )
SetListUserHandle (ListRef list,
Handle userHandle);
EXTERN_API( void )
SetListFlags (ListRef list,
OptionBits listFlags);
EXTERN_API( void )
SetListSelectionFlags (ListRef list,
OptionBits selectionFlags);
/* WARNING: These may go away in a future build. Beware! */
if CALL_NOT_IN_CARBON
EXTERN_API( void )
SetListDefinition (ListRef list,
Handle listDefProc);
EXTERN_API( void )
SetListCellSize (ListRef list,
Point * size);
EXTERN_API( void )
SetListHorizontalScrollBar (ListRef list,
ControlHandle hScroll);
EXTERN_API( void )
SetListVerticalScrollBar (ListRef list,
ControlHandle vScroll);
EXTERN_API( void )
SetListVisibleCells (ListRef list,
ListBounds * visible);
endif /* CALL_NOT_IN_CARBON */
endif /* ACCESSOR_CALLS_ARE_FUNCTIONS */
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 /* __LISTS__ */
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.