home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1990-08-15 | 4.8 KB | 120 lines |
- (* ------------------------------------------------------ *)
- (* GRAFIK.DEF *)
- (* Grafik-Modul für Fitted Modula *)
- (* (c) 1990 Rainer Hamann & TOOLBOX *)
- (* ------------------------------------------------------ *)
- DEFINITION MODULE Grafik;
-
- FROM SYSTEM IMPORT BYTE;
-
- EXPORT QUALIFIED
- (* Typen *) Colour,
- (* Variablen *) GrafikModus,
- xMaxScr, yMaxScr,
- FontX, FontY,
- (* Prozeduren *) Plot, Line, DotColor, Circle, Arc,
- PenColor, WriteText, WriteGrafText,
- ClearGrafScreen, ClearGrafWindow,
- WindowSize, DefineGrafWindow,
- SelectGrafWindow, StoreGrafWindow,
- RestoreGrafWindow, MoveGrafWindow,
- GetGrafWindow, FullGrafScreen,
- GrafScreen, TextScreen;
- TYPE
- Colour = (Black, Blue, Green, Cyan, Red, Magenta, Brown,
- LightGray, DarkGray, LightBlue, LightGreen,
- LightCyan, LightRed, LightMagenta,
- Yellow, White);
- ColArray = ARRAY[0..15] OF Colour;
-
- VAR
- GrafikModus : BOOLEAN; (* Grafik- oder Textmodus? *)
- xMaxScr : INTEGER; (* max. x-Koordinate *)
- yMaxScr : INTEGER; (* max. y-Koordinate *)
- FontX : INTEGER; (* Zeichengröße in x-Richtung *)
- FontY : INTEGER; (* Zeichengröße in y-Richtung *)
-
- PROCEDURE Plot(x, y : INTEGER);
- (* zeichnet Punkt P(x/y) *)
-
- PROCEDURE Line(x1, y1, x2, y2 : INTEGER);
- (* zeichnet Strecke von (x1/y1) nach (x2/y2) *)
-
- PROCEDURE DotColor(x, y : INTEGER) : Colour;
- (* ergibt Farbe des Punktes (x/y) *)
-
- PROCEDURE Circle(x, y, Radius : INTEGER);
- (* Kreis um (x/y) mit angegebenem Radius *)
-
- PROCEDURE Arc(x, y, StartWinkel, EndWinkel,
- Radius : INTEGER);
- (* Bogen um (x/y) mit angegebenem Radius von *)
- (* Startwinkel nach EndWinkel *)
-
- PROCEDURE PenColor(Farbe : Colour);
- (* wählt die Zeichenfarbe f. Plot, Line, Circle und Arc *)
-
- PROCEDURE WriteText(x, y :INTEGER; s : ARRAY OF CHAR);
- (* schreibt Text s beginnend an der Stelle (x/y) mit *)
- (* Koordinaten wie auf dem Textschirm 80 x 25. *)
- (* Löscht den Hintergrund. Bei Hercules-Karten bleibt *)
- (* rechts ein freier Rand, da hier 90 x 25 Zeichen *)
- (* möglich wären. *)
-
- PROCEDURE WriteGrafText(x, y : INTEGER;
- Farbe : Colour;
- s : ARRAY OF CHAR);
- (* schreibt Text s an den Grafik-Koordinaten (x/y) in *)
- (* angegebener Farbe. Der Hintergrund bleibt erhalten. *)
-
- PROCEDURE ClearGrafScreen;
- (* löscht den ganzen Grafikschirm *)
-
- PROCEDURE ClearGrafWindow;
- (* löscht nur das aktive Grafikfenster *)
-
- PROCEDURE WindowSize(Nr : INTEGER) : CARDINAL;
- (* ergibt die Größe des Speicherbereiches, der zum *)
- (* Speichern des Fenster "Nr" nötig ist. *)
-
- PROCEDURE DefineGrafWindow(Nr, xLinks, yUnten,
- xRechts, yOben : INTEGER);
- (* definiert das Fenster "Nr" mit dem linken oberen *)
- (* Eckpunkt (xLinks/yUnten) - der linke obere Eckpunkt *)
- (* hat die Koordinaten (0/0) - und dem rechten unteren *)
- (* Eckpunkt (xRechts/yOben). Beim Programmstart werden *)
- (* alle Fenster auf den vollen Bildschirm definiert. *)
-
- PROCEDURE SelectGrafWindow(Nr : INTEGER);
- (* aktiviert das Fenster "Nr". Der linke obere Eckpunkt *)
- (* dieses Fensters hat die Koordinaten (0/0)! *)
-
- PROCEDURE StoreGrafWindow(Nr : INTEGER);
- (* speichert das Fenster "Nr" *)
-
- PROCEDURE RestoreGrafWindow(Nr : INTEGER);
- (* schreibt das Fenster "Nr" an die alte Stelle zurück *)
-
- PROCEDURE MoveGrafWindow(Nr, x, y : INTEGER);
- (* schreibt das Fenster "Nr" so auf den Bildschirm, daß *)
- (* (x/y) der linke obere Eckpunkt des Fensters, bezogen *)
- (* auf den ganzen Bildschirm, wird. *)
-
- PROCEDURE GetGrafWindow() : CARDINAL;
- (* liefert den Index ("Nr") des zuletzt aktivierten *)
- (* Fensters *)
-
- PROCEDURE FullGrafScreen;
- (* aktiviert den ganzen Bildschirm als Fenster *)
-
- PROCEDURE GrafScreen;
- (* schaltet in den Grafikschirm um *)
-
- PROCEDURE TextScreen;
- (* schaltet in den Textschirm um *)
-
- END Grafik.
- (* ------------------------------------------------------ *)
- (* Ende von GRAFIK.DEF *)
-
-