/******************************************** * * Control Manager * * Copyright Apple Computer, Inc.1986-91 * All Rights Reserved * * Copyright 1992, 1993, Byte Works, Inc. * ********************************************/ #ifndef __TYPES__ #include #endif #ifndef __CONTROL__ #define __CONTROL__ /* Axis Parameters */ #define noConstraint 0x0000 /* No constraint on movement. */ #define hAxisOnly 0x0001 /* Horizontal axis only. */ #define vAxisOnly 0x0002 /* Vertical axis only. */ /* CtlFlag */ #define simpRound 0x0000 /* Simple button flag */ #define upFlag 0x0001 /* Scroll bar flag. */ #define boldButton 0x0001 /* Bold round cornered outlined button. */ #define simpBRound 0x0001 /* Simple button flag */ #define downFlag 0x0002 /* Scroll bar flag. */ #define simpSquare 0x0002 /* Simple button flag */ #define simpDropSquare 0x0003 /* Simple button flag */ #define leftFlag 0x0004 /* Scroll bar flag. */ #define rightFlag 0x0008 /* Scroll bar flag. */ #define dirScroll 0x0010 /* Scroll bar flag. */ #define horScroll 0x0010 /* Scroll bar flag. */ #define family 0x007F /* Mask for radio button family number */ #define ctlInVis 0x0080 /* invisible mask for any type of control */ #define fCallWindowMgr 0x0001 /* Control Template flag value */ #define fSubstituteText 0x0002 #define fSubTextType 0x0001 #define inListBox 0x88 #define fBlastText 0x0004 /* static text control */ #define fTextCanDim 0x0008 /* static text control */ #define fSquishText 0x0010 /* static text control */ #define fNoTrackIcon 0x0008 /* make Icon Button play dead */ /* CtlProc Codes */ #define simpleProc 0x00000000L #define checkProc 0x02000000L #define radioProc 0x04000000L #define scrollProc 0x06000000L #define growProc 0x08000000L /* DefProc Commands */ #define drawCtl 0x0000 /* Draw control command. */ #define calcCRect 0x0001 /* Compute drag RECT command. */ #define testCtl 0x0002 /* Hit test command. */ #define initCtl 0x0003 /* Initialize command. */ #define dispCtl 0x0004 /* Dispose command. */ #define posCtl 0x0005 /* Move indicator command. */ #define thumbCtl 0x0006 /* Compute drag parameters command. */ #define dragCtl 0x0007 /* Drag command. */ #define autoTrack 0x0008 /* Action command. */ #define newValue 0x0009 /* Set new value command. */ #define setParams 0x000A /* Set new parameters command. */ #define moveCtl 0x000B /* Move command. */ #define recSize 0x000C /* Return record size command. */ #define ctlHandleEvent 0x000D /* Handle a keystroke or menu selection */ #define ctlChangeTarget 0x000E /* Issued when control's target status has changed */ #define ctlChangeBounds 0x000F /* Issued when control's boundary rectangle has changed */ #define ctlWindChangeSize 0x0010 /* Window has been grown or zoomed */ #define ctlHandleTab 0x0011 /* Control has been tabbed to */ #define ctlNotifyMultiPart 0x0012 /* A multipart control has been hidden, drawn or shown */ #define ctlWinStateChange 0x0013 /* Window state has changed */ /* hiliteState Codes */ #define noHilite 0x0000 /* Param to HiliteControl */ #define inactiveHilite 0x00FF /* Param to HiliteControl */ /* PartCode Numbers */ #define noPart 0x0000 #define simpleButton 0x0002 #define checkBox 0x0003 #define radioButton 0x0004 #define upArrow 0x0005 #define downArrow 0x0006 #define pageUp 0x0007 #define pageDown 0x0008 #define growBox 0x000A #define thumb 0x0081 /* moreFlags Codes */ #define fCtlTarget 0x8000 /* is current target of typing commands */ #define fCtlCanBeTarget 0x4000 /* can be made the target control */ #define fCtlWantEvent 0x2000 /* control can be called view SendEventToCtl */ #define fCtlWantsEvent 0x2000 /* control can be called view SendEventToCtl */ #define fCtlWantEvents 0x2000 /* control can be called view SendEventToCtl */ #define fCtlWantsEvents 0x2000 /* control can be called view SendEventToCtl */ #define fCtlProcRefNotPtr 0x1000 /* set = ID of defproc, clear = pointer to defproc */ #define fCtlTellAboutSize 0x0800 /* set if ctl needs notification when size of owning window changes */ #define fCtlIsMultiPart 0x0400 /* set if ctl needs notification to be hidden */ #define fMenuDefIsText 0x0004 #define fDrawIconInResult 0x0020 #define fDrawPopDownIcon 0x0080 #define colorDescriptor 0x000C /* indicates type of reference in colorRef */ #define styleDescriptor 0x0003 /* indicates type of reference in styleRef */ /* Ctl Verbs */ #define titleIsPtr 0x00 #define titleIsHandle 0x01 #define titleIsResource 0x02 #define colorTableIsPtr 0x00 #define colorTableIsHandle 0x04 #define colorTableIsResource 0x08 #define ctlHideCtl 0x12 /* InputVerb Codes */ #define singlePtr 0x0000 #define singleHandle 0x0001 #define singleResource 0x0002 #define ptrToPtr 0x0003 #define ptrToHandle 0x0004 #define ptrToResource 0x0005 #define handleToPtr 0x0006 #define handleToHandle 0x0007 #define handleToResource 0x0008 #define resourceToResource 0x0009 /* ProcRefs */ #define simpleButtonControl 0x80000000L #define checkControl 0x82000000L #define radioControl 0x84000000L #define scrollBarControl 0x86000000L #define growControl 0x88000000L #define statTextControl 0x81000000L #define editLineControl 0x83000000L #define editTextControl 0x85000000L #define popUpControl 0x87000000L #define listControl 0x89000000L #define pictureControl 0x8D000000L #define iconButtonControl 0x87FF0001L #define thermometerControl 0x87FF0002L #define rectangleControl 0x87FF0003L /* Error Codes */ #define wmNotStartedUp 0x1001 /* Window manager was not initialized */ #define cmNotInitialized 0x1002 /* Control manager was not initialized */ #define noCtlInList 0x1003 /* Control not in window list */ #define noCtlError 0x1004 /* no controls in window */ #define noSuperCtlError 0x1005 /* no super controls in window */ #define noCtlTargetError 0x1006 /* no target super control */ #define notSuperCtlError 0x1007 /* action can only be done on super control */ #define canNotBeTargetError 0x1008 /* conrol cannot be made target */ #define noSuchIDError 0x1009 /* specified ID cannot be found */ #define tooFewParmsError 0x100A /* not enough params specified */ #define noCtlToBeTargetError 0x100B /* NextCtl call, no ctl could be target */ #define noFrontWindowError 0x100C /* there is no front window */ /* displayMode flags */ #define selectedIcon 0x0001 #define openIcon 0x0002 #define offline 0x0004 /* listType values */ #define fListString 0x0001 #define fListSelect 0x0002 #define fListScrollBar 0x0004 /* PopUp control flag values */ #define fRightJustifyResult 0x0001 #define fRightJustifyTitle 0x0002 #define fInWindowOnly 0x0004 #define fDontDrawResult 0x0008 #define fDontDrawTitle 0x0010 #define fDontHiliteTitle 0x0020 #define fType2PopUp 0x0040 struct BoxColors { Word boxReserved; /* reserved */ Word boxNor; /* color of box when not checked */ Word boxSel; /* color of box when checked */ Word boxTitle; /* color of check box's title */ }; typedef struct BoxColors BoxColors, *BoxColorsPtr, **BoxColorsHndl; struct BttnColors { Word bttnOutline; /* color of outline */ Word bttnNorBack; /* color of background when not selected */ Word bttnSelBack; /* color of background when selected */ Word bttnNorText; /* color of title's text when not selected */ Word bttnSelText; /* color of title's text when selected */ }; typedef struct BttnColors BttnColors, *BttnColorsPtr, **BttnColorsHndl; struct LimitBlk { Rect boundRect; /* Drag bounds. */ Rect slopRect; /* Cursor bounds. */ Word axisParam; /* Movement constrains. */ Pointer dragPatt; /* Pointer to 32 byte Pattern for drag outline. */ }; typedef struct LimitBlk LimitBlk, *LimitBlkPtr, **LimitBlkHndl; struct RadioColors { Word radReserved; /* reserved */ Word radNor; /* color of radio button when off */ Word radSel; /* color of radio button when on */ Word radTitle; /* color of radio button's title text */ }; typedef struct RadioColors RadioColors, *RadioColorsPtr, **RadioColorsHndl; struct KeystrokeRec { Byte key1; Byte key2; Word keyModifiers; Word keyCareBits; }; typedef struct KeystrokeRec KeystrokeRec; struct ControlTemplate { Word pCount; LongWord ID; Rect rect; LongWord procRef; Word flag; Word moreFlags; LongWord refCon; }; typedef struct ControlTemplate ControlTemplate; struct SimpleButtonTemplate { ControlTemplate ctlTemplate; Ref titleRef; Ref colorTableRef; KeystrokeRec keyEquivalent; }; typedef struct SimpleButtonTemplate SimpleButtonTemplate; struct CheckBoxTemplate { ControlTemplate ctlTemplate; Ref titleRef; Word initalValue; Ref colorTableRef; KeystrokeRec keyEquivalent; }; typedef struct CheckBoxTemplate CheckBoxTemplate; struct IconButtonTemplate { ControlTemplate ctlTemplate; Ref iconRef; Ref titleRef; Ref colorTableRef; Word displayMode; KeystrokeRec keyEquivalent; }; typedef struct IconButtonTemplate IconButtonTemplate; struct LineEditTemplate { ControlTemplate ctlTemplate; Word maxSize; Ref defaultRef; Word passwordChar; }; typedef struct LineEditTemplate LineEditTemplate; struct ListTemplate { ControlTemplate ctlTemplate; Word listSize; Word listView; Word listType; Word listStart; ProcPtr listDraw; Word listMemHeight; Word listMemSize; Ref listRef; Ref colorTableRef; }; typedef struct ListTemplate ListTemplate; struct PictureTemplate { ControlTemplate ctlTemplate; Ref pictureRef; }; typedef struct PictureTemplate PictureTemplate; struct PopupTemplate { ControlTemplate ctlTemplate; Word titleWidth; Ref menuRef; Word initialValue; Ref colorTableRef; }; typedef struct PopupTemplate PopupTemplate; struct RadioButtonTemplate { ControlTemplate ctlTemplate; Ref titleRef; Word initalValue; Ref colorTableRef; KeystrokeRec keyEquivalent; }; typedef struct RadioButtonTemplate RadioButtonTemplate; struct RectangleTemplate { ControlTemplate ctlTemplate; Word penHeight; Word penWidth; Mask penMask; Pattern penPattern; }; typedef struct RectangleTemplate RectangleTemplate; struct ScrollBarTemplate { ControlTemplate ctlTemplate; Word maxSize; Word viewSize; Word initalValue; Ref colorTableRef; }; typedef struct ScrollBarTemplate ScrollBarTemplate; struct SizeBoxTemplate { ControlTemplate ctlTemplate; Ref colorTableRef; }; typedef struct SizeBoxTemplate SizeBoxTemplate; struct StaticTextTemplate { ControlTemplate ctlTemplate; Ref textRef; Word textSize; Word just; }; typedef struct StaticTextTemplate StaticTextTemplate; struct TextEditTemplate { ControlTemplate ctlTemplate; LongWord textFlags; Rect indentRect; CtlRecHndl vertBar; Word vertAmount; CtlRecHndl horzBar; Word horzAmount; Ref styleRef; Word textDescriptor; Ref textRef; LongWord textLength; LongWord maxChars; LongWord maxLines; Word maxCharsPerLine; Word maxHeight; Ref colorRef; Word drawMode; ProcPtr filterProcPtr; }; typedef struct TextEditTemplate TextEditTemplate; struct ThermometerTemplate { ControlTemplate ctlTemplate; Word value; Word data; Ref colorTableRef; }; typedef struct ThermometerTemplate ThermometerTemplate; extern pascal void CtlBootInit(void) inline(0x0110,dispatcher); extern pascal void CtlStartUp(Word, Word) inline(0x0210,dispatcher); extern pascal void CtlShutDown(void) inline(0x0310,dispatcher); extern pascal Word CtlVersion(void) inline(0x0410,dispatcher); extern pascal void CtlReset(void) inline(0x0510,dispatcher); extern pascal Boolean CtlStatus(void) inline(0x0610,dispatcher); extern pascal void CtlNewRes(void) inline(0x1210,dispatcher); extern pascal void DisposeControl(CtlRecHndl) inline(0x0A10,dispatcher); extern pascal void DragControl(Integer, Integer, Rect *, Rect *, Word, CtlRecHndl) inline(0x1710,dispatcher); extern pascal Point DragRect(VoidProcPtr, Pattern, Integer, Integer, Rect *, Rect *, Rect *, Word) inline(0x1D10,dispatcher); extern pascal void DrawControls(GrafPortPtr) inline(0x1010,dispatcher); extern pascal void DrawOneCtl(CtlRecHndl) inline(0x2510,dispatcher); extern pascal void EraseControl(CtlRecHndl) inline(0x2410,dispatcher); extern pascal Word FindControl(CtlRecHndl *, Integer, Integer, GrafPortPtr) inline(0x1310,dispatcher); extern pascal LongProcPtr GetCtlAction(CtlRecHndl) inline(0x2110,dispatcher); extern pascal Word GetCtlDPage(void) inline(0x1F10,dispatcher); extern pascal LongWord GetCtlParams(CtlRecHndl) inline(0x1C10,dispatcher); extern pascal LongWord GetCtlRefCon(CtlRecHndl) inline(0x2310,dispatcher); extern pascal Pointer GetCtlTitle(CtlRecHndl) inline(0x0D10,dispatcher); extern pascal Word GetCtlValue(CtlRecHndl) inline(0x1A10,dispatcher); extern pascal LongWord GrowSize(void) inline(0x1E10,dispatcher); extern pascal void HideControl(CtlRecHndl) inline(0x0E10,dispatcher); extern pascal void HiliteControl(Word, CtlRecHndl) inline(0x1110,dispatcher); extern pascal void KillControls(GrafPortPtr) inline(0x0B10,dispatcher); extern pascal void MoveControl(Integer, Integer, CtlRecHndl) inline(0x1610,dispatcher); extern pascal CtlRecHndl NewControl(GrafPortPtr, Rect *, Pointer, Word, Word, Word, Word, LongProcPtr, Longint, Pointer) inline(0x0910,dispatcher); extern pascal void SetCtlAction(LongProcPtr, CtlRecHndl) inline(0x2010,dispatcher); extern pascal FontHndl SetCtlIcons(FontHndl) inline(0x1810,dispatcher); extern pascal void SetCtlParams(Word, Word, CtlRecHndl) inline(0x1B10,dispatcher); extern pascal void SetCtlRefCon(Longint, CtlRecHndl) inline(0x2210,dispatcher); extern pascal void SetCtlTitle(Pointer, Handle) inline(0x0C10,dispatcher); extern pascal void SetCtlValue(Word, CtlRecHndl) inline(0x1910,dispatcher); extern pascal void ShowControl(CtlRecHndl) inline(0x0F10,dispatcher); extern pascal Word TestControl(Integer, Integer, CtlRecHndl) inline(0x1410,dispatcher); extern pascal Word TrackControl(Integer, Integer, LongProcPtr, CtlRecHndl) inline(0x1510,dispatcher); extern pascal LongWord CallCtlDefProc(CtlRecHndl, Word, Long) inline(0x2C10,dispatcher); extern pascal Handle CMLoadResource(Word, Long) inline(0x3210,dispatcher); extern pascal void CMReleaseResource(Word, Long) inline(0x3310,dispatcher); extern pascal CtlRecHndl FindTargetCtl(void) inline(0x2610,dispatcher); extern pascal CtlRecHndl GetCtlHandleFromID(WindowPtr, Long) inline(0x3010,dispatcher); extern pascal LongWord GetCtlID(CtlRecHndl) inline(0x2A10,dispatcher); extern pascal Word GetCtlMoreFlags(CtlRecHndl) inline(0x2E10,dispatcher); extern pascal Pointer GetCtlParamPtr(void) inline(0x3510,dispatcher); extern pascal void InvalCtls(WindowPtr) inline(0x3710,dispatcher); extern pascal CtlRecHndl MakeNextCtlTarget(void) inline(0x2710,dispatcher); extern pascal void MakeThisCtlTarget(CtlRecHndl) inline(0x2810,dispatcher); extern pascal CtlRecHndl NewControl2(WindowPtr, Word, Ref) inline(0x3110,dispatcher); extern pascal void NotifyControls(Word, Word, Long, WindowPtr) inline(0x2D10,dispatcher); extern pascal void NotifyCtls(Word, Word, Long, WindowPtr) inline(0x2D10,dispatcher); extern pascal Boolean SendEventToCtl(Boolean, WindowPtr, EventRecordPtr) inline(0x2910,dispatcher); extern pascal void SetCtlID(Long, CtlRecHndl) inline(0x2B10,dispatcher); extern pascal void SetCtlMoreFlags(Word, CtlRecHndl) inline(0x2F10,dispatcher); extern pascal void SetCtlParamPtr(Pointer) inline(0x3410,dispatcher); extern pascal Word FindRadioButton(WindowPtr, Word) inline(0x3910,dispatcher); extern pascal void GetLETextByID(WindowPtr, Long, StringPtr) inline(0x3B10,dispatcher); extern pascal void SetLETextByID(WindowPtr, Long, StringPtr) inline(0x3A10,dispatcher); extern pascal void SetCtlValueByID(Word, GrafPortPtr, Long) inline(0x3C10,dispatcher); extern pascal Word GetCtlValueByID(GrafPortPtr, Long) inline(0x3D10,dispatcher); extern pascal void InvalOneCtlByID(GrafPortPtr, Long) inline(0x3E10,dispatcher); extern pascal void HiliteCtlByID(Word, GrafPortPtr, Long) inline(0x3F10,dispatcher); #endif