home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 12 / praxis / grafik.def < prev    next >
Encoding:
Modula Definition  |  1990-08-15  |  4.8 KB  |  120 lines

  1. (* ------------------------------------------------------ *)
  2. (*                      GRAFIK.DEF                        *)
  3. (*            Grafik-Modul für Fitted Modula              *)
  4. (*           (c) 1990 Rainer Hamann & TOOLBOX             *)
  5. (* ------------------------------------------------------ *)
  6. DEFINITION MODULE Grafik;
  7.  
  8. FROM SYSTEM IMPORT BYTE;
  9.  
  10. EXPORT QUALIFIED
  11.   (* Typen *)       Colour,
  12.   (* Variablen *)   GrafikModus,
  13.                     xMaxScr, yMaxScr,
  14.                     FontX, FontY,
  15.   (* Prozeduren *)  Plot, Line, DotColor, Circle, Arc,
  16.                     PenColor, WriteText, WriteGrafText,
  17.                     ClearGrafScreen, ClearGrafWindow,
  18.                     WindowSize, DefineGrafWindow,
  19.                     SelectGrafWindow, StoreGrafWindow,
  20.                     RestoreGrafWindow, MoveGrafWindow,
  21.                     GetGrafWindow, FullGrafScreen,
  22.                     GrafScreen, TextScreen;
  23. TYPE
  24.   Colour   = (Black, Blue, Green, Cyan, Red, Magenta, Brown,
  25.               LightGray, DarkGray, LightBlue, LightGreen,
  26.               LightCyan, LightRed, LightMagenta,
  27.               Yellow, White);
  28.   ColArray = ARRAY[0..15] OF Colour;
  29.  
  30. VAR
  31.   GrafikModus : BOOLEAN;    (* Grafik- oder Textmodus?    *)
  32.   xMaxScr     : INTEGER;    (* max. x-Koordinate          *)
  33.   yMaxScr     : INTEGER;    (* max. y-Koordinate          *)
  34.   FontX       : INTEGER;    (* Zeichengröße in x-Richtung *)
  35.   FontY       : INTEGER;    (* Zeichengröße in y-Richtung *)
  36.  
  37.   PROCEDURE Plot(x, y : INTEGER);
  38.   (* zeichnet Punkt P(x/y)                                *)
  39.  
  40.   PROCEDURE Line(x1, y1, x2, y2 : INTEGER);
  41.   (* zeichnet Strecke von (x1/y1) nach (x2/y2)            *)
  42.  
  43.   PROCEDURE DotColor(x, y : INTEGER) : Colour;
  44.   (* ergibt Farbe des Punktes (x/y)                       *)
  45.  
  46.   PROCEDURE Circle(x, y, Radius : INTEGER);
  47.   (* Kreis um (x/y) mit angegebenem Radius                *)
  48.  
  49.   PROCEDURE Arc(x, y, StartWinkel, EndWinkel,
  50.                                           Radius : INTEGER);
  51.   (* Bogen um (x/y) mit angegebenem Radius von            *)
  52.   (* Startwinkel nach EndWinkel                           *)
  53.  
  54.   PROCEDURE PenColor(Farbe : Colour);
  55.   (* wählt die Zeichenfarbe f. Plot, Line, Circle und Arc *)
  56.  
  57.   PROCEDURE WriteText(x, y :INTEGER; s : ARRAY OF CHAR);
  58.   (* schreibt Text s beginnend an der Stelle (x/y) mit    *)
  59.   (* Koordinaten wie auf dem Textschirm 80 x 25.          *)
  60.   (* Löscht den Hintergrund. Bei Hercules-Karten bleibt   *)
  61.   (* rechts ein freier Rand, da hier 90 x 25 Zeichen      *)
  62.   (* möglich wären.                                       *)
  63.  
  64.   PROCEDURE WriteGrafText(x, y : INTEGER;
  65.                           Farbe : Colour;
  66.                           s : ARRAY OF CHAR);
  67.   (* schreibt Text s an den Grafik-Koordinaten (x/y) in   *)
  68.   (* angegebener Farbe. Der Hintergrund bleibt erhalten.  *)
  69.  
  70.   PROCEDURE ClearGrafScreen;
  71.   (* löscht den ganzen Grafikschirm                       *)
  72.  
  73.   PROCEDURE ClearGrafWindow;
  74.   (* löscht nur das aktive Grafikfenster                  *)
  75.  
  76.   PROCEDURE WindowSize(Nr : INTEGER) : CARDINAL;
  77.   (* ergibt die Größe des Speicherbereiches, der zum      *)
  78.   (* Speichern des Fenster "Nr" nötig ist.                *)
  79.  
  80.   PROCEDURE DefineGrafWindow(Nr, xLinks, yUnten,
  81.                                  xRechts, yOben : INTEGER);
  82.   (* definiert das Fenster "Nr" mit dem linken oberen     *)
  83.   (* Eckpunkt (xLinks/yUnten) - der linke obere Eckpunkt  *)
  84.   (* hat die Koordinaten (0/0) - und dem rechten unteren  *)
  85.   (* Eckpunkt (xRechts/yOben). Beim Programmstart werden  *)
  86.   (* alle Fenster auf den vollen Bildschirm definiert.    *)
  87.  
  88.   PROCEDURE SelectGrafWindow(Nr : INTEGER);
  89.   (* aktiviert das Fenster "Nr". Der linke obere Eckpunkt *)
  90.   (* dieses Fensters hat die Koordinaten (0/0)!           *)
  91.  
  92.   PROCEDURE StoreGrafWindow(Nr : INTEGER);
  93.   (* speichert das Fenster "Nr"                           *)
  94.  
  95.   PROCEDURE RestoreGrafWindow(Nr : INTEGER);
  96.   (* schreibt das Fenster "Nr" an die alte Stelle zurück  *)
  97.  
  98.   PROCEDURE MoveGrafWindow(Nr, x, y : INTEGER);
  99.   (* schreibt das Fenster "Nr" so auf den Bildschirm, daß *)
  100.   (* (x/y) der linke obere Eckpunkt des Fensters, bezogen *)
  101.   (* auf den ganzen Bildschirm, wird.                     *)
  102.  
  103.   PROCEDURE GetGrafWindow() : CARDINAL;
  104.   (* liefert den Index ("Nr") des zuletzt aktivierten     *)
  105.   (* Fensters                                             *)
  106.  
  107.   PROCEDURE FullGrafScreen;
  108.   (* aktiviert den ganzen Bildschirm als Fenster          *)
  109.  
  110.   PROCEDURE GrafScreen;
  111.   (* schaltet in den Grafikschirm um                      *)
  112.  
  113.   PROCEDURE TextScreen;
  114.   (* schaltet in den Textschirm um                        *)
  115.  
  116. END Grafik.
  117. (* ------------------------------------------------------ *)
  118. (*                Ende von GRAFIK.DEF                     *)
  119.  
  120.