home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 01 / grdlagen / screen.def < prev    next >
Encoding:
Modula Definition  |  1989-11-23  |  4.1 KB  |  117 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     GRAFIK.DEF                         *)
  3. (*         (c) 1990  Rainer Hamann  &  TOOLBOX            *)
  4. (* ------------------------------------------------------ *)
  5. DEFINITION MODULE Grafik;
  6.  
  7. FROM SYSTEM IMPORT BYTE;
  8.  
  9. EXPORT QUALIFIED
  10.  
  11.   (* Typen *)
  12.   Colour,
  13.  
  14.   (* Variablen *)
  15.   GrafikModus, xMaxScr, yMaxScr, FontX, FontY,
  16.  
  17.   (* Prozeduren *)
  18.   Plot, Line, DotColor, Circle, Arc, PenColor, WriteText,
  19.   WriteGrafText, ClearGrafScreen, ClearGrafWindow,
  20.   WindowSize, DefineGrafWindow, SelectGrafWindow,
  21.   StoreGrafWindow, RestoreGrafWindow, MoveGrafWindow,
  22.   GetGrafWindow, FullGrafScreen, GrafScreen, TextScreen;
  23.  
  24. TYPE
  25.   (* Farb-Palette *)
  26.   Colour = (Black, Blue, Green, Cyan, Red, Magenta, Brown,
  27.             LightGray, DarkGray, LightBlue, LightGreen,
  28.             LightCyan, LightRed, LightMagenta,
  29.             Yellow, White);
  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 Startwinkel
  52.      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; Farbe : Colour;
  65.                           s : ARRAY OF CHAR);
  66.   (* schreibt Text s an den Grafik-Koordinaten (x/y) in der
  67.      angegebenen Farbe. Der Hintergrund bleibt erhalten.  *)
  68.  
  69.   PROCEDURE ClearGrafScreen;
  70.   (* löscht den ganzen Grafikschirm *)
  71.  
  72.   PROCEDURE ClearGrafWindow;
  73.   (* löscht nur das aktive Grafikfenster  *)
  74.  
  75.   PROCEDURE WindowSize(Nr : INTEGER) : CARDINAL;
  76.   (* ergibt die Größe des Speicherbereiches, der zum
  77.      Speichern des Fenster "Nr" nötig ist.  *)
  78.  
  79.   PROCEDURE DefineGrafWindow(Nr, xLinks, yUnten,
  80.                              xRechts, yOben : INTEGER);
  81.   (* definiert das Fenster "Nr" mit dem linken oberen
  82.      Eckpunkt (xLinks/yUnten) - !! der linke obere Eckpunkt
  83.      hat die Koordinaten (0/0) !! - und dem rechten unteren
  84.      Eckpunkt (xRechts/yOben). Beim Programmstart werden
  85.      alle Fenster auf den vollen Bildschirm definiert.    *)
  86.  
  87.   PROCEDURE SelectGrafWindow(Nr : INTEGER);
  88.   (* aktiviert das Fenster "Nr". Der linke obere Eckpunkt
  89.      dieses Fensters hat die Koordinaten (0/0)!           *)
  90.  
  91.   PROCEDURE StoreGrafWindow(Nr : INTEGER);
  92.   (* speichert das Fenster "Nr" *)
  93.  
  94.   PROCEDURE RestoreGrafWindow(Nr : INTEGER);
  95.   (* schreibt das Fenster "Nr" an die alte Stelle zurück  *)
  96.  
  97.   PROCEDURE MoveGrafWindow(Nr, x, y : INTEGER);
  98.   (* schreibt das Fenster "Nr" so auf den Bildschirm, daß
  99.      (x/y) der linke obere Eckpunkt des Fensters bezogen
  100.      auf den ganzen Bildschirm wird.  *)
  101.  
  102.   PROCEDURE GetGrafWindow() : CARDINAL;
  103.   (* liefert den Index ("Nr") des zuletzt aktivierten
  104.      Fensters *)
  105.  
  106.   PROCEDURE FullGrafScreen;
  107.   (* aktiviert den ganzen Bildschirm als Fenster *)
  108.  
  109.   PROCEDURE GrafScreen;
  110.   (* schaltet in den Grafikschirm um  *)
  111.  
  112.   PROCEDURE TextScreen;
  113.   (* schaltet in den Textschirm um  *)
  114.  
  115. END Grafik.
  116. (* ------------------------------------------------------ *)
  117. (*                  Ende von GRAFIK.DEF                   *)