Think Pascal Graphics Commands
September 1997
The following Think Pascal commands will be useful to you in writing
interactive graphics programs on the Macintosh. They are listed by type:
Window Commands:
These commands will manipulate the various windows in Think
Pascal.
- ShowDrawing
- Open the drawing window (if not already open) and make it
the active window on the screen. Should be used when first draw to drawing
window and anytime shift from text to drawing window.
- ShowText
- Similarly for the text window.
- HideAll
- Closes all Think Pascal windows on the screen.
Commands to move current point:
The drawing window remembers where the pen was last. This place in
the window is known as the current point (CP).
- MoveTo(X_Coord, Y_Coord)
- Sets CP to (X_Coord, Y_Coord)
- Move(X_Diff, Y_Diff)
- Moves CP X_Diff to right and Y_Diff down.
- LineTo(X_Coord, Y_Coord)
- Draws line from CP to (X_Coord,
Y_Coord). CP is moved to new position.
- Line(X_Diff, Y_Diff)
- Draws line from CP X_Diff to right and
Y_Diff down. CP is moved to new position.
- DrawLine(Start_X, Start_Y, End_X, End_Y)
- Draws line from
(Start_X, Start_Y) to
(End_X, End_Y) leaving CP at (End_X, End_Y).
Commands to draw outlines of shapes:
- FrameRect(top, left, bottom, right)
- Draws outline of rectangle whose
highest point is at top, leftmost at left, lowest at
bottom and rightmost at right
- FrameOval(top, left, bottom, right)
- Similar to above but draws an oval
inscribed in the rectangle.
- FrameArc(top, left, bottom, right, start_angle, num_degrees)
- Draws that part of an oval ranging from start_angle to
start_angle + num_degrees (0 degrees is at top).
- FrameRoundRect(top, left, bottom, right, oval_width, oval_ht)
- Draws rectangle with rounded corners. The corners are quarter
ovals determined by oval_width and oval_ht.
More commands to draw shapes:
- PaintRect(top, left, bottom, right)
- Draw outline of rectangle and
fill it with the current pen pattern.
- EraseRect(top, left, bottom, right)
- Paints rectangle with the
background color (usually white). The net effect is to erase the
rectangle.
- InvertRect(top, left, bottom, right)
- Reverse all pixels in the
rectangle (i.e. all formerly white dots are painted black and
vice-versa).
Paint, Erase, and Invert can also be prefixed to Oval, Arc, and RoundRect
for similar effects.
Writing words on the screen:
- Writeln('text'')
- Prints text to the Text Window and
moves cursor to next line.
- Writeln(integer)
- Prints integer in the Text Window and
moves cursor to next line.
- Writeln(integer : d )
- Prints integer in the Text
Window using at least d spaces and then moves cursor to next
line.
- Write('text'')
- Prints text to the Text Window but does
not move cursor to next line.
- WriteDraw('text'')
- Prints text to the Drawing Window,
starting at the CP. The CP is left at the lower right corner of the last
character drawn.
Note that Write and Writedraw can both be used to print integers similarly
to Writeln.
Command to change pattern of pen:
- PenPat(New_pat)
- Changes pen pattern to New_pat if
New_pat is one of black, white, dkGray, gray, ltGray.
Command to change colors drawn on screen:
- ForeColor(new_color)
- Changes color of any new objects drawn to
new_color where new_color is one of blackColor, whiteColor,
redColor, greenColor, blueColor, cyanColor, magentaColor, and
yellowColor.
- BackColor(new_color)
- Changes background color of all areas which will be
"erased" to new_color.
Notes: In the three commands above the type of New_pat is a
built-in Mac type, Pattern. The type of new_color is longint.
It is only necessary to know their types if you need to pass them as
parameters to other procedures.
Graphics types:
- Rect, Point
- implemented as records - Rect has fields left, top, right,
bottom : integer, Point has fields h, v : integer
Procedures to create and test points and rectangles:
- PROCEDURE SetPt(VAR pt : Point; h,v : INTEGER)
- Make point, pt,with coords (h,v)
- PROCEDURE SetRect(VAR r : Rect; left, top, right, bottom : INTEGER)
- Make rectangle with coords (left,top) and (right,bottom)
as corners.
- PROCEDURE Pt2Rect( pt1, pt2 : Point; dstRect : Rect);
- Make
rectangle with pt1 and pt2 as corners
- PROCEDURE PtInRect(pt:Point; r : Rect) : BOOLEAN;
- Determine if pt is in the rectangle r.
Sizing Windows:
- SetDrawingRect(WindowRect)
- Set Drawing Window to fit
WindowRect
- SetTextRect(WindowRect)
- Set Text Window to fit WindowRect
Must still use ShowDrawing or ShowText to display the window on top of
screen.
Back to: