# 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: