This repository has been archived by the owner on Nov 29, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQuickDraw2.p
267 lines (208 loc) · 9.06 KB
/
QuickDraw2.p
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
{ QuickDraw2.text: Implementation part of QuickDraw }
{$S Graf }
TYPE FMOutPtr = ^FMOutRec;
FMOutrec = PACKED RECORD
errNum: INTEGER; { used only for GrafError }
fontHandle: QDHandle; { handle to font }
bold: 0..255; { how much to smear horiz }
italic: 0..255; { how much to shear }
ulOffset: 0..255; { pixels below baseline }
ulShadow: 0..255; { how big is the halo }
ulThick: 0..255; { how thick is the underline }
shadow: 0..255; { 0,1,2,or 3 only }
extra: -128..127; { extra white dots each char }
ascent: 0..255; { ascent measure for font }
descent: 0..255; { descent measure for font }
widMax: 0..255; { width of widest char }
leading: -128..127; { leading between lines }
unused: 0..255;
numer: Point; { use this modified scale to }
denom: Point; { draw or measure text with }
END;
VAR wideOpen: RgnHandle; { a dummy rectangular region, read-only }
wideMaster: RgnPtr;
wideData: Region;
rgnBuf: QDHandle; { point saving buffer for OpenRgn }
rgnIndex: INTEGER; { current bytes used in rgnBuf }
rgnMax: INTEGER; { max bytes allocated so far to rgnBuf }
playPic: PicHandle; { used by StdGetPic }
QDSpare0: INTEGER; { unused word }
thePoly: PolyHandle; { the current polygon being defined }
polyMax: INTEGER; { max bytes allocated so far to thePoly }
patAlign: Point; { to align pattern during DrawPicture }
fixTxWid: Fixed; { Fixed Point width from StdTxMeas. }
fontPtr: FMOutPtr; { the last font used, used by DrawText }
playIndex: LongInt; { used by StdGetPic during DrawPicture }
QDSpare3: INTEGER; { unused word }
QDSpare4: INTEGER; { unused word }
QDSpare5: INTEGER; { unused word }
QDSpare6: INTEGER; { unused word }
QDSpare7: INTEGER; { unused word }
QDSpare8: INTEGER; { unused word }
QDSpare9: INTEGER; { unused word }
QDSpareA: INTEGER; { unused word }
QDSpareB: INTEGER; { unused word }
QDSpareC: INTEGER; { unused word }
QDSpareD: INTEGER; { unused word }
{ grafPort routines }
PROCEDURE InitGraf; EXTERNAL;
PROCEDURE OpenPort; EXTERNAL;
PROCEDURE InitPort; EXTERNAL;
PROCEDURE ClosePort; EXTERNAL;
PROCEDURE GrafDevice; EXTERNAL;
PROCEDURE SetPort; EXTERNAL;
PROCEDURE GetPort; EXTERNAL;
PROCEDURE SetPortBits; EXTERNAL;
PROCEDURE PortSize; EXTERNAL;
PROCEDURE MovePortTo; EXTERNAL;
PROCEDURE SetOrigin; EXTERNAL;
PROCEDURE SetClip; EXTERNAL;
PROCEDURE GetClip; EXTERNAL;
PROCEDURE ClipRect; EXTERNAL;
PROCEDURE BackPat; EXTERNAL;
{ cursor routines }
PROCEDURE InitCursor; EXTERNAL;
PROCEDURE SetCursor; EXTERNAL;
PROCEDURE HideCursor; EXTERNAL;
PROCEDURE ShowCursor; EXTERNAL;
PROCEDURE ObscureCursor; EXTERNAL;
{ text routines }
PROCEDURE TextFont; EXTERNAL;
PROCEDURE TextFace; EXTERNAL;
PROCEDURE TextMode; EXTERNAL;
PROCEDURE TextSize; EXTERNAL;
PROCEDURE SpaceExtra; EXTERNAL;
PROCEDURE DrawChar; EXTERNAL;
PROCEDURE DrawString; EXTERNAL;
PROCEDURE DrawText; EXTERNAL;
FUNCTION CharWidth; EXTERNAL;
FUNCTION StringWidth; EXTERNAL;
FUNCTION TextWidth; EXTERNAL;
PROCEDURE GetFontInfo; EXTERNAL;
{ line routines }
PROCEDURE HidePen; EXTERNAL;
PROCEDURE ShowPen; EXTERNAL;
PROCEDURE GetPen; EXTERNAL;
PROCEDURE GetPenState; EXTERNAL;
PROCEDURE SetPenState; EXTERNAL;
PROCEDURE PenSize; EXTERNAL;
PROCEDURE PenMode; EXTERNAL;
PROCEDURE PenPat; EXTERNAL;
PROCEDURE PenNormal; EXTERNAL;
PROCEDURE MoveTo; EXTERNAL;
PROCEDURE Move; EXTERNAL;
PROCEDURE LineTo; EXTERNAL;
PROCEDURE Line; EXTERNAL;
{ rectangle calculations }
PROCEDURE SetRect; EXTERNAL;
FUNCTION EqualRect; EXTERNAL;
FUNCTION EmptyRect; EXTERNAL;
PROCEDURE OffsetRect; EXTERNAL;
PROCEDURE MapRect; EXTERNAL;
PROCEDURE InsetRect; EXTERNAL;
FUNCTION SectRect; EXTERNAL;
PROCEDURE UnionRect; EXTERNAL;
FUNCTION PtInRect; EXTERNAL;
PROCEDURE Pt2Rect; EXTERNAL;
{ graphical operations on rectangles }
PROCEDURE FrameRect; EXTERNAL;
PROCEDURE PaintRect; EXTERNAL;
PROCEDURE EraseRect; EXTERNAL;
PROCEDURE InvertRect; EXTERNAL;
PROCEDURE FillRect; EXTERNAL;
{ graphical operations on RoundRects }
PROCEDURE FrameRoundRect; EXTERNAL;
PROCEDURE PaintRoundRect; EXTERNAL;
PROCEDURE EraseRoundRect; EXTERNAL;
PROCEDURE InvertRoundRect; EXTERNAL;
PROCEDURE FillRoundRect; EXTERNAL;
{ graphical operations on Ovals }
PROCEDURE FrameOval; EXTERNAL;
PROCEDURE PaintOval; EXTERNAL;
PROCEDURE EraseOval; EXTERNAL;
PROCEDURE InvertOval; EXTERNAL;
PROCEDURE FillOval; EXTERNAL;
{ Arc routines }
PROCEDURE FrameArc; EXTERNAL;
PROCEDURE PaintArc; EXTERNAL;
PROCEDURE EraseArc; EXTERNAL;
PROCEDURE InvertArc; EXTERNAL;
PROCEDURE FillArc; EXTERNAL;
PROCEDURE PtToAngle; EXTERNAL;
{ polygon routines }
FUNCTION OpenPoly; EXTERNAL;
PROCEDURE ClosePoly; EXTERNAL;
PROCEDURE KillPoly; EXTERNAL;
PROCEDURE OffsetPoly; EXTERNAL;
PROCEDURE MapPoly; EXTERNAL;
PROCEDURE FramePoly; EXTERNAL;
PROCEDURE PaintPoly; EXTERNAL;
PROCEDURE ErasePoly; EXTERNAL;
PROCEDURE InvertPoly; EXTERNAL;
PROCEDURE FillPoly; EXTERNAL;
{ region calculations }
FUNCTION NewRgn; EXTERNAL;
PROCEDURE DisposeRgn; EXTERNAL;
PROCEDURE OpenRgn; EXTERNAL;
PROCEDURE CloseRgn; EXTERNAL;
PROCEDURE OffsetRgn; EXTERNAL;
PROCEDURE MapRgn; EXTERNAL;
PROCEDURE InsetRgn; EXTERNAL;
PROCEDURE SectRgn; EXTERNAL;
PROCEDURE CopyRgn; EXTERNAL;
PROCEDURE SetEmptyRgn; EXTERNAL;
PROCEDURE SetRectRgn; EXTERNAL;
PROCEDURE RectRgn; EXTERNAL;
PROCEDURE UnionRgn; EXTERNAL;
PROCEDURE DiffRgn; EXTERNAL;
PROCEDURE XorRgn; EXTERNAL;
FUNCTION EqualRgn; EXTERNAL;
FUNCTION EmptyRgn; EXTERNAL;
FUNCTION PtInRgn; EXTERNAL;
FUNCTION RectInRgn; EXTERNAL;
{ graphical operations on Regions }
PROCEDURE FrameRgn; EXTERNAL;
PROCEDURE PaintRgn; EXTERNAL;
PROCEDURE EraseRgn; EXTERNAL;
PROCEDURE InvertRgn; EXTERNAL;
PROCEDURE FillRgn; EXTERNAL;
{ BitMap routines }
PROCEDURE CopyBits; EXTERNAL;
PROCEDURE ScrollRect; EXTERNAL;
{ Picture routines }
FUNCTION OpenPicture; EXTERNAL;
PROCEDURE ClosePicture; EXTERNAL;
PROCEDURE KillPicture; EXTERNAL;
PROCEDURE DrawPicture; EXTERNAL;
PROCEDURE PicComment; EXTERNAL;
{ BottleNeck routines }
PROCEDURE StdText; EXTERNAL;
PROCEDURE StdLine; EXTERNAL;
PROCEDURE StdRect; EXTERNAL;
PROCEDURE StdRRect; EXTERNAL;
PROCEDURE StdOval; EXTERNAL;
PROCEDURE StdArc; EXTERNAL;
PROCEDURE StdPoly; EXTERNAL;
PROCEDURE StdRgn; EXTERNAL;
PROCEDURE StdBits; EXTERNAL;
PROCEDURE StdComment; EXTERNAL;
FUNCTION StdTxMeas; EXTERNAL;
PROCEDURE StdGetPic; EXTERNAL;
PROCEDURE StdPutPic; EXTERNAL;
{ misc utility routines }
FUNCTION GetPixel; EXTERNAL;
FUNCTION Random; EXTERNAL;
PROCEDURE AddPt; EXTERNAL;
PROCEDURE SubPt; EXTERNAL;
PROCEDURE SetPt; EXTERNAL;
FUNCTION EqualPt; EXTERNAL;
PROCEDURE StuffHex; EXTERNAL;
PROCEDURE LocalToGlobal; EXTERNAL;
PROCEDURE GlobalToLocal; EXTERNAL;
PROCEDURE ScalePt; EXTERNAL;
PROCEDURE MapPt; EXTERNAL;
PROCEDURE ForeColor; EXTERNAL;
PROCEDURE BackColor; EXTERNAL;
PROCEDURE ColorBit; EXTERNAL;
PROCEDURE SetStdProcs; EXTERNAL;
END. { of UNIT }