ORCA-Pascal/Tool.Interface/Common.pas

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.