511 lines
17 KiB
ObjectPascal
511 lines
17 KiB
ObjectPascal
{$keep 'Common'}
|
|
unit Common;
|
|
interface
|
|
|
|
{********************************************************
|
|
*
|
|
* Common Types Interface File
|
|
*
|
|
* Other USES Files Needed: - None -
|
|
*
|
|
* Copyright 1987-1992
|
|
* By the Byte Works, Inc.
|
|
* All Rights Reserved
|
|
*
|
|
*********************************************************}
|
|
|
|
const
|
|
{Reference verbs describing parameter type.}
|
|
pointerVerb = $0000; {parm is pointer to block of data}
|
|
handleVerb = $0001; {parm is handle of block of data}
|
|
resourceVerb = $0002; {parm is resource ID}
|
|
newHandleVerb = $0003; {tool is to create new handle}
|
|
|
|
{TaskMaster/Event Manager result codes}
|
|
nullEvt = $0000;
|
|
inNull = $0000;
|
|
wNoHit = $0000;
|
|
mouseDownEvt = $0001;
|
|
inButtDwn = $0001;
|
|
mouseUpEvt = $0002;
|
|
keyDownEvt = $0003;
|
|
inKey = $0003;
|
|
autoKeyEvt = $0005;
|
|
updateEvt = $0006;
|
|
inUpdate = $0006;
|
|
activateEvt = $0008;
|
|
switchEvt = $0009;
|
|
deskAccEvt = $000A;
|
|
driverEvt = $000B;
|
|
app1Evt = $000C;
|
|
app2Evt = $000D;
|
|
app3Evt = $000E;
|
|
app4Evt = $000F;
|
|
wInDesk = $0010; {in desktop}
|
|
wInMenuBar = $0011; {in system menu bar}
|
|
wClickCalled = $0012; {system click called}
|
|
wInContent = $0013; {in content region of window}
|
|
wInDrag = $0014; {in drag region of window}
|
|
wInGrow = $0015; {in grow box of active window}
|
|
wInGoAway = $0016; {in close box of active window}
|
|
wInZoom = $0017; {in zoom box of active window}
|
|
wInInfo = $0018; {in information bar of window}
|
|
wInSpecial = $0019; {item ID selected was 250-255}
|
|
wInDeskItem = $001A; {item ID selected was 1-249}
|
|
wInFrame = $001B; {in frame, but not on anything else}
|
|
wInactMenu = $001C; {inactive menu item selected}
|
|
wClosedNDA = $001D; {desk accessory closed}
|
|
wCalledSysEdit = $001E; {inactive menu item selected}
|
|
wTrackZoom = $001F; {zoom box clicked, but not selected}
|
|
wHitFrame = $0020; {button down on frame, made active}
|
|
wInControl = $0021; {button or keystroke in control}
|
|
wInSysWindow = $8000; {high-order bit set for system windows}
|
|
|
|
type
|
|
{GS/OS class 1 input string}
|
|
gsosInString = record
|
|
size: integer;
|
|
{Change the array size as needed for your application}
|
|
theString: packed array [1..508] of char;
|
|
end;
|
|
gsosInStringPtr = ^gsosInString;
|
|
|
|
{GS/OS class 1 output string}
|
|
gsosOutString = record
|
|
maxSize: integer;
|
|
theString: gsosInString;
|
|
end;
|
|
gsosOutStringPtr = ^gsosOutString;
|
|
|
|
{GS/OS option list}
|
|
optionListRecord = record
|
|
totalSize: integer;
|
|
requiredSize: integer;
|
|
fileSysID: integer;
|
|
{Change size of theData as needed}
|
|
theData: packed array [1..100] of char;
|
|
end;
|
|
optionListPtr = ^optionListRecord;
|
|
|
|
{GS/OS time field}
|
|
timeField = array[1..8] of byte;
|
|
|
|
{ProDOS 16 pathname}
|
|
pathName = packed array [0..128] of char;
|
|
pathPtr = ^pathName;
|
|
|
|
{String with a length byte}
|
|
pString = packed array [0..255] of char;
|
|
pStringPtr = ^pString;
|
|
|
|
{Null-terminated string}
|
|
cString = packed array [1..256] of char;
|
|
cStringPtr = ^cString;
|
|
|
|
{Unterminated text; length specified separately. Array size can be}
|
|
{adjusted by user.}
|
|
textBlock = packed array [1..300] of char;
|
|
textPtr = ^textBlock;
|
|
|
|
{"General" types to circumvent type checking by the compiler}
|
|
ptr = ^byte;
|
|
handle = ^ptr;
|
|
rgnHandle = handle;
|
|
procPtr = ptr;
|
|
integerPtr = ^integer;
|
|
longintPtr = ^longint;
|
|
fixed = longint;
|
|
|
|
{Point}
|
|
point = record
|
|
v: integer;
|
|
h: integer;
|
|
end;
|
|
pointPtr = ^point;
|
|
|
|
{Rectangle}
|
|
rectKinds = (normal, mac, points);
|
|
|
|
rect = record
|
|
case rectKinds of
|
|
normal: (v1: integer;
|
|
h1: integer;
|
|
v2: integer;
|
|
h2: integer);
|
|
|
|
mac: (top: integer;
|
|
left: integer;
|
|
bottom: integer;
|
|
right: integer);
|
|
|
|
points: (topLeft: point;
|
|
botRight: point);
|
|
end;
|
|
rectPtr = ^rect;
|
|
|
|
{Color table}
|
|
colorTable = array [0..15] of integer;
|
|
colorTblPtr = ^colorTable;
|
|
colorTablePtr = ^colorTable;
|
|
colorTableHndl = ^ColorTablePtr;
|
|
|
|
{Event record}
|
|
eventRecord = record
|
|
eventWhat: integer;
|
|
eventMessage: longint;
|
|
eventWhen: longint;
|
|
eventWhere: point;
|
|
eventModifiers: integer;
|
|
|
|
{The following fields are required by TaskMaster. They can be removed }
|
|
{(but do not have to be) if you are not using TaskMaster. }
|
|
|
|
taskData: longint;
|
|
taskMask: longint;
|
|
lastClickTick: longint;
|
|
ClickCount: integer;
|
|
TaskData2: longint;
|
|
TaskData3: longint;
|
|
TaskData4: longint;
|
|
lastClickPt: point;
|
|
end;
|
|
eventRecPtr = ^eventRecord;
|
|
wmTaskRec = eventRecord;
|
|
|
|
{Pattern}
|
|
pattern = array [0..31] of byte;
|
|
patternPtr = ^pattern;
|
|
|
|
{Font record}
|
|
font = record
|
|
offsetToMF: integer;
|
|
family: integer;
|
|
style: integer;
|
|
size: integer;
|
|
version: integer;
|
|
fbrExtent: integer;
|
|
highowTLoc: integer;
|
|
{ }
|
|
{The rest of the font record cannot be easily accessed from Pascal, }
|
|
{as it is intended to change dynamically at run-time. The record is }
|
|
{included here for completeness. }
|
|
{ }
|
|
{Array of bytes, as defined by the user: }
|
|
{ }
|
|
{ additionalFields: array [0..n] of byte; }
|
|
{ }
|
|
{ fontType: integer; - ignored on the AppleIIgs - }
|
|
{ }
|
|
{ firstChar: integer; }
|
|
{ lastChar: integer; }
|
|
{ widMax: integer; }
|
|
{ kernMax: integer; }
|
|
{ nDescent: integer; }
|
|
{ fRectWidth: integer; }
|
|
{ fRectHeight: integer; }
|
|
{ owTLoc: integer; }
|
|
{ ascent: integer; }
|
|
{ descent: integer; }
|
|
{ leading: integer; }
|
|
{ rowWords: integer; }
|
|
{ }
|
|
{Three arrays, as defined by the user: }
|
|
{ }
|
|
{ bitImage: array [1..rowWords, 1..fRectHeight] of integer; }
|
|
{ locTable: array [firstChar..lastChar+2] of integer; }
|
|
{ owTable: array [firstChar..lastChar+2] of integer; }
|
|
|
|
end;
|
|
fontRec = ^font;
|
|
fontHndl = ^fontRec;
|
|
|
|
{Location information record}
|
|
locInfo = record
|
|
portSCB: integer;
|
|
ptrToPixelImage: ptr;
|
|
width: integer;
|
|
boundsRect: rect;
|
|
end;
|
|
locInfoPtr = ^locInfo;
|
|
|
|
{Mask}
|
|
mask = array [0..7] of byte;
|
|
maskPtr = ^mask;
|
|
|
|
{Font ID}
|
|
fontID = record
|
|
famNum: integer;
|
|
fontStyle, fontSize: byte;
|
|
end;
|
|
|
|
{Font stats record}
|
|
fontStatRec = record
|
|
resultID: fontID;
|
|
resultStats: integer;
|
|
end;
|
|
fontStatRecPtr = ^fontStatRec;
|
|
|
|
ctlPtr = ^ctlRec;
|
|
ctlRecHndl = ^ctlPtr;
|
|
|
|
{Graphics port}
|
|
grafPort = record
|
|
portInfo: locInfo;
|
|
portRect: rect;
|
|
clipRgn: rgnHandle;
|
|
visRgn: rgnHandle;
|
|
bkPat: pattern;
|
|
pnLoc: point;
|
|
pnSize: point;
|
|
pnMode: integer;
|
|
pnPat: pattern;
|
|
pnMask: mask;
|
|
pnVis: integer;
|
|
fontHandle: fontHndl;
|
|
theFontID: fontID;
|
|
fontFlags: integer;
|
|
txSize: integer;
|
|
txFace: integer;
|
|
txMode: integer;
|
|
spExtra: fixed;
|
|
chExtra: fixed;
|
|
fgColor: integer;
|
|
bgColor: integer;
|
|
picSave: handle;
|
|
rgnSave: handle;
|
|
polySave: handle;
|
|
grafProcs: ptr;
|
|
arcRot: integer;
|
|
userField: longint;
|
|
sysField: longint;
|
|
{These additional fields are used by the Window Manager.}
|
|
wDefProc: longint;
|
|
wRefCon: longint;
|
|
wContDraw: longint;
|
|
wReserved: longint;
|
|
wStructRgn: rgnHandle;
|
|
wContRgn: rgnHandle;
|
|
wUpdateRgn: rgnHandle;
|
|
wControl: ctlRecHndl;
|
|
wFrameControl: ctlRecHndl;
|
|
wFrame: integer;
|
|
end;
|
|
grafPortPtr = ^grafPort;
|
|
|
|
{Member record}
|
|
memRec = record
|
|
memPtr: pStringPtr;
|
|
memFlag: byte;
|
|
{Rest is defined by user}
|
|
end;
|
|
memRecPtr = ^memRec;
|
|
|
|
{Scroll bar color table}
|
|
barColors = record
|
|
barOutline: integer;
|
|
barNorArrow: integer;
|
|
barSelArrow: integer;
|
|
barArrowBack: integer;
|
|
barNorThumb: integer;
|
|
barSelThumb: integer;
|
|
barPageRgn: integer;
|
|
barInactive: integer;
|
|
end;
|
|
barColorsPtr = ^barColors;
|
|
|
|
{Menu record}
|
|
menu = record
|
|
menuID: integer;
|
|
menuWidth: integer;
|
|
menuHeight: integer;
|
|
menuProc: procPtr;
|
|
menuFlag: byte;
|
|
menuRes: byte;
|
|
numOfItems: integer;
|
|
titleWidth: integer;
|
|
titleName: pStringPtr;
|
|
menuCache: handle;
|
|
end;
|
|
menuPtr = ^menu;
|
|
menuHandle = ^menuPtr;
|
|
|
|
textList = record
|
|
cachedHandle: longint;
|
|
cachedOffset: longint;
|
|
end;
|
|
|
|
superHandle = record
|
|
cachedHandle: longint;
|
|
cachedOffset: longint;
|
|
cachedIndex: integer;
|
|
end;
|
|
|
|
teStyle = record
|
|
teFont: fontID;
|
|
foreColor: integer;
|
|
backColor: integer;
|
|
userData: longint;
|
|
end;
|
|
|
|
keyRecord = record
|
|
theChar: integer;
|
|
theModifiers: integer;
|
|
theInputHandle: longint;
|
|
cursorOffset: longint;
|
|
theOpCode: integer;
|
|
end;
|
|
|
|
keyEquivRec = record
|
|
key1: byte;
|
|
key2: byte;
|
|
keyModifiers: integer;
|
|
keyCareBits: integer;
|
|
end;
|
|
|
|
ctlType = (generic, btnOrCheck, icon, lnEdPicGrow, list, popUp, scroll,
|
|
staticText, textEdit);
|
|
|
|
{Control record}
|
|
ctlRec = record
|
|
ctlNext: ctlRecHndl;
|
|
ctlOwner: grafPortPtr;
|
|
ctlRect: rect;
|
|
ctlFlag: byte;
|
|
ctlHilite: byte;
|
|
ctlValue: integer;
|
|
ctlProc: procPtr;
|
|
ctlAction: procPtr;
|
|
ctlData: longint;
|
|
ctlRefCon: longint;
|
|
ctlColor: colorTblPtr;
|
|
{These new fields have been added for GS/OS 5.0 calls.}
|
|
case ctlType of
|
|
generic: (ctlReserved: packed array [0..15] of byte;
|
|
ctlID: longint;
|
|
ctlMoreFlags: integer;
|
|
ctlVersion: integer);
|
|
|
|
btnOrCheck: (keyEquiv1: keyEquivRec;
|
|
reserved1: packed array [1..10] of byte;
|
|
ctlID1: longint;
|
|
ctlMoreFlags1: integer;
|
|
ctlVersion1: integer);
|
|
|
|
icon: (keyEquiv2: keyEquivRec;
|
|
reserved2: packed array [1..10] of byte;
|
|
ctlID2: longint;
|
|
ctlMoreFlags2: integer;
|
|
ctlVersion2: integer;
|
|
iconRef: longint;
|
|
displayMode: integer);
|
|
|
|
lnEdPicGrow: (reserved3: packed array [1..10] of byte;
|
|
ctlID3: longint;
|
|
ctlMoreFlags3: integer;
|
|
ctlVersion3: integer);
|
|
|
|
list: (ctlMemDraw: procPtr;
|
|
ctlMemHeight: integer;
|
|
ctlMemSize: integer;
|
|
ctlListRef: longint;
|
|
ctlListBar: ctlRecHndl;
|
|
ctlID4: longint;
|
|
ctlMoreFlags4: integer;
|
|
ctlVersion4: integer);
|
|
|
|
popUp: (menuRef: longint;
|
|
menuEnd: longint;
|
|
popUpRect: rect;
|
|
ctlID5: longint;
|
|
ctlMoreFlags5: integer;
|
|
ctlVersion5: integer;
|
|
titleWidth: integer);
|
|
|
|
scroll: (thumbRect: rect;
|
|
pageRegion: rect;
|
|
ctlID6: longint;
|
|
ctlMoreFlags6: integer;
|
|
ctlVersion6: integer);
|
|
|
|
staticText: (ctlJust: integer;
|
|
reserved7: packed array [1..14] of byte;
|
|
ctlID7: longint;
|
|
ctlMoreFlags7: integer;
|
|
ctlVersion7: integer);
|
|
|
|
textEdit: (textFlags: longint;
|
|
textLength: longint;
|
|
blockList: textList;
|
|
ctrlID8: integer;
|
|
ctrlMoreFlags8: integer;
|
|
ctrlVersion8: integer;
|
|
viewRect: rect;
|
|
totalHeight: longint;
|
|
lineSuper: superHandle;
|
|
styleSuper: superHandle;
|
|
styleList: handle;
|
|
rulerList: handle;
|
|
lineAtEndFlag: integer;
|
|
selectionStart: longint;
|
|
selectionEnd: longint;
|
|
selectionActive: integer;
|
|
selectionState: integer;
|
|
caretTime: longint;
|
|
nullStyleActive: integer;
|
|
nullStyle: teStyle;
|
|
topTextOffset: longint;
|
|
topTextVPos: integer;
|
|
vertScrollBar: ctlRecHndl;
|
|
vertScrollPos: longint;
|
|
vertScrollMax: longint;
|
|
vertScrollAmount: integer;
|
|
horzScrollBar: ctlRecHndl;
|
|
horzScrollPos: longint;
|
|
horzScrollMax: longint;
|
|
horzScrollAmount: integer;
|
|
growBoxHandle: ctlRecHndl;
|
|
maximumChars: longint;
|
|
maximumLines: longint;
|
|
maxCharsPerLine: integer;
|
|
maximumHeight: integer;
|
|
textDrawMode: integer;
|
|
wordBreakHook: procPtr;
|
|
wordWrapHook: procPtr;
|
|
keyFilter: procPtr;
|
|
theFilterRect: rect;
|
|
theBufferVPos: integer;
|
|
theBufferHPos: integer;
|
|
theKeyRecord: keyRecord;
|
|
cachedSelcOffset: longint;
|
|
cachedSelcVPos: integer;
|
|
cachedSelcHPos: integer;
|
|
mouseRect: rect;
|
|
mouseTime: longint;
|
|
mouseKind: integer;
|
|
lastClick: longint;
|
|
savedHPos: integer;
|
|
anchorPoint: longint);
|
|
end;
|
|
|
|
{Menu bar record}
|
|
menuBar = record
|
|
ctlNext: ctlRecHndl;
|
|
ctlOwner: grafPortPtr;
|
|
ctlRect: rect;
|
|
ctlFlag: byte;
|
|
ctlHilite: byte;
|
|
ctlValue: integer;
|
|
ctlProc: procPtr;
|
|
ctlAction: procPtr;
|
|
ctlData: longint;
|
|
ctlRefCon: longint;
|
|
ctlColor: colorTblPtr;
|
|
{Change size of array for application}
|
|
menuList: array [1..10] of menuHandle;
|
|
end;
|
|
menuBarPtr = ^menuBar;
|
|
menuBarHandle = ^menuBarPtr;
|
|
|
|
implementation
|
|
end.
|