home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1987 / 09 / grafik6 / graftype.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1987-08-09  |  4.9 KB  |  116 lines

  1. (*------------------------------------------------------------*)
  2. (*                      GRAFTYPE.PAS                          *)
  3. (*       Globale Typendefinition fuer die Grafikserie         *)
  4. (*------------------------------------------------------------*)
  5.  
  6.   x_Koord_Sys = ScreenXmin_Sys..ScreenXmax_Sys;
  7.   y_Koord_Sys = ScreenYmin_Sys..ScreenYmax_Sys;
  8.  
  9.   x_Koord = 0..ScreenXmax;
  10.   y_Koord = 0..ScreenYmax;
  11.  
  12.   Sys_Colors = First_Color_Value..Last_Color_Value;
  13.  
  14. (*---------------------- Polygon-Typ: ------------------------*)
  15.  
  16.   PolyPunkt = RECORD       (* Punkt-Koordinaten eines Punktes *)
  17.                 x, y: INTEGER;
  18.               END;
  19.   PolyIndex = 1..PolyMax;      (* Indextyp fuer 'Range-Check' *)
  20.   Polygon   = ARRAY [PolyIndex] OF PolyPunkt;
  21.  
  22. (*---------------------- Pattern-Typ: ------------------------*)
  23.  
  24.   PatternIndex = 0..PatternSize;
  25.   Pattern_     = ARRAY [PatternIndex, PatternIndex] OF BOOLEAN;
  26.   (* der Unterstrich hinter Pattern ist bei Turbo wg. einer
  27.      Prozedur gleichen Namens notwendig!                      *)
  28.  
  29. (*---------------------- Window-Typ: -------------------------*)
  30. (* Der folgende Typ WinBackground muss so vereinbart werden,  *)
  31. (* dass er ggf. dazu geeignet ist, den Hintergrund, der beim  *)
  32. (* Oeffnen des Fensters abgespeichert wird, aufzunehmen.      *)
  33. (* SYSTEMABHAENGIG (wenn ueberhaupt moeglich) !               *)
  34.  
  35.   WinBuffer = array[1..8003] of integer; (* Turbo-Pas. MS-DOS *)
  36.   WinBackground = ^WinBuffer;            (* mit CGA-Grafik    *)
  37.  
  38.                                  (* systemunabhaengige Typen: *)
  39.   WinNrBereich = NULL..MaxWins;
  40.   WinRec = record
  41.              xmin, ymin,
  42.              xmax, ymax : real;  (* Weltkoordinatenausschnitt *)
  43.              Pixel_pro_x,                 (* Window/Viewport- *)
  44.              Pixel_pro_y : real;          (* Proportionen     *)
  45.              Vxmin, Vxmax : x_Koord;  (* Bildschirmausschnitt *)
  46.              Vymin, Vymax : y_Koord;  (* des Viewport         *)
  47.              Background : WinBackground
  48.            end;
  49.  
  50.   WinFeld = array[WinNrBereich] of ^WinRec;
  51.  
  52. (*--------------------- 2D-Objekt-Typ: -----------------------*)
  53. (* Typendefinition fuer zweidimensionale Transformationen:    *)
  54.  
  55.   tVektor = array[1..xMatDim] of real;
  56.   tMatrix = array[1..yMatDim,1..xMatDim] of real;
  57.  
  58.   ObjektIndex  = 1..MaxLineObj;
  59.   LinienObjekt = array[ObjektIndex] of
  60.                   Record
  61.                     Vektor1, Vektor2: tVektor;
  62.                   end;
  63.  
  64. (*----------------------- Font-Typ: --------------------------*)
  65. (* Erweiterung zu dem Typendefinitionsfile GRAFCONS.PAS der   *)
  66. (* Grafikserie, um Zeichenausgabe zu handhaben.               *)
  67.  
  68.   TCellElemIndex = 0..CellSize;            (* fuer Compiler-  *)
  69.   TCellIndex = CellMin..CellMax;           (* Range-Check     *)
  70.   TCellRow = array[TCellElemIndex] OF boolean; (* Zellenreihe *)
  71.   TCell = array[TCellElemIndex] of TCellRow;  (* Zeichenzelle *)
  72.   TFont = array[TCellIndex] of TCell;         (* Zeichensatz  *)
  73.                           (* Schreibmodus der Zeichenausgabe: *)
  74.   TWriteMode = (ReplaceMode,TransparentMode);
  75.   TGrafStr = string[255];  (* ggf. durch PACKED ARRAY OF CHAR *)
  76.                            (* ersetzen!                       *)
  77.  
  78. (*       Typen fuer Bildsegmentierung (Display-Files).        *)
  79. (* Kommandos, die in einem DF verwendet werden koennen.       *)
  80. (* Es wurde aus mnemotechnischen Gruenden einfach der erste   *)
  81. (* Vokal der mit dem Kommando korrespondierenden Prozedur     *)
  82. (* weggelassen. Kann ggf. erweitert werden.                   *)
  83.     tKommando = (pintw, lnew,
  84.                  mvewr, lnewr, pintwr, mvewa, lnewa,
  85.                  EoDF (* End of DisplayFile *)          );
  86.  
  87.  
  88.     tDFEintragP = ^tDFEintrag;  (* Zeigertyp fuer Liste *)
  89.     tDFEintrag = RECORD
  90.                  next : tDFEintragP;
  91.                  CASE Kommando : tKommando OF
  92.                            lnew : (x1, y1, x2, y2 : REAL);
  93.                  pintw, mvewr,
  94.                  lnewr, pintwr,
  95.                  mvewa, lnewa   : (x, y : REAL);
  96.                            EoDf : ();
  97.                END;
  98.  
  99.     tDFArrayInd = 1..InpFileSize;
  100.     tDFArray = ARRAY[tDFArrayInd] OF tDFEintrag;
  101.  
  102.     tSegTabEintrag = RECORD
  103.                        DFP : tDFEintragP;
  104.                        sichtbar : BOOLEAN;
  105.                        TransFolge : INTEGER; (* Transformat.-  *)
  106.                                              (* Reihenfolge    *)
  107.                        XPos, YPos,               (* Ursprung   *)
  108.                        XFaktor, YFaktor,         (* "Scaling"  *)
  109.                        XShear, YShear,           (* Verzerrung *)
  110.                        Drehwinkel        : REAL;
  111.                      END;
  112.  
  113.     SegNrBereich = NULL..MaxSeg;
  114.     tSegTab = ARRAY[1..MaxSeg] OF tSegTabEintrag;
  115. (*------------------------------------------------------------*)
  116. (*                  Ende von GRAFTYPE.PAS                     *)