home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1989-11-23 | 4.1 KB | 117 lines |
- (* ------------------------------------------------------ *)
- (* GRAFIK.DEF *)
- (* (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
- (* Farb-Palette *)
- Colour = (Black, Blue, Green, Cyan, Red, Magenta, Brown,
- LightGray, DarkGray, LightBlue, LightGreen,
- LightCyan, LightRed, LightMagenta,
- Yellow, White);
- 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 der
- angegebenen 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 *)