home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / qpdemo / reellg.pas < prev    next >
Pascal/Delphi Source File  |  1994-04-10  |  4KB  |  136 lines

  1.  
  2. PROGRAM Reelle_Graphik;
  3.  
  4. (* REELLG.Pas : Demonstriert Graphik mit reellen Koordinaten *)
  5.  
  6. USES
  7.     MSGraph, Crt;
  8.  
  9. CONST
  10.     bananen : ARRAY [0..20] OF Single =
  11.        ( -0.3,   -0.2,   -0.224,  -0.1,    -0.5,  +0.21,  +2.9,
  12.          +0.3,   +0.2,    0.0,    -0.885,  -1.1,  -0.3,   -0.2,
  13.           0.001,  0.005,  0.14,    0.0,    -0.9,  -0.13,  +0.3 );
  14.  
  15. VAR
  16.     halbx, halby, a : Integer;
  17.     vc                       : _VideoConfig;
  18.     ch                       : Char;
  19.     orig_modus       : Word;
  20.  
  21. (* ====================== vier_farben ====================== *)
  22. (*   Die Funktion vier-farben legt den Grafikmodus mit den   *)
  23. (*   meisten Farben fest.                                    *)
  24.  
  25. FUNCTION vier_farben : Boolean;
  26. BEGIN
  27.     vier_farben := FALSE;
  28.     IF ( _SetVideoMode( _MaxColorMode) > 0 ) THEN
  29.         BEGIN
  30.            _GetVideoConfig( vc );
  31.            IF ( vc.NumColors >= 4 ) THEN
  32.               vier_farben := TRUE;
  33.         END;
  34. END;
  35.  
  36. (* ====================== raster_form ====================== *)
  37. (* Die Prozedur raster_form zeichnet das Raster.             *)
  38.  
  39. PROCEDURE raster_form;
  40.  
  41. VAR
  42.     i, x1, y1, x2, y2 : Integer;
  43.     x, y                       : Real;
  44.     s                          : String[80];
  45.  
  46. BEGIN
  47.     FOR i := 1 TO vc.NumColors DO
  48.         BEGIN
  49.             _SetTextPosition( i, 2 );
  50.             _SetTextColor( i );
  51.             Str( i, s );
  52.             _OutText( 'Farbe '+ s );
  53.         END;
  54.  
  55.     _SetColor( 1 );
  56.     _Rectangle_w( _GBorder, -1.0,  -1.0,  1.0,  1.0 );
  57.     _Rectangle_w( _GBorder, -1.02, -1.02, 1.02, 1.02 );
  58.  
  59.     x := -0.9;
  60.     i := 0;
  61.     WHILE x < 0.9 DO
  62.         BEGIN
  63.             _SetColor( 2 );
  64.             _MoveTo_w( x, -1.0 );   _LineTo_w( x, 1.0 );
  65.             _MoveTo_w( -1.0, x );   _LineTo_w( 1.0, x );
  66.             _SetColor( 3 );
  67.             _MoveTo_w( x - 0.1, Bananen[i] );
  68.             Inc( i );
  69.             _LineTo_w( x, Bananen[i]);
  70.             x := x + 0.1;
  71.             END;
  72.  
  73.     _MoveTo_w( 0.9, Bananen[i] );
  74.     Inc(i);
  75.     _LineTo_w( 1.0, Bananen[i]);
  76. END;
  77.  
  78. (* ====================== drei_graphen ====================== *)
  79. (* Die Prozedur gibt drei Schaubilder in drei Viewports aus.  *)
  80.  
  81. PROCEDURE drei_graphen;
  82.  
  83. VAR
  84.     obenlinks, untenrechts                  : _WXYCoord;
  85.     xlaenge, yhoehe, spalten, zeilen        : Integer;
  86.  
  87. BEGIN
  88.     _ClearScreen( _GClearScreen );
  89.     xlaenge := vc.NumXPixels;
  90.     yhoehe  := vc.NumYPixels;
  91.     halbx   := xlaenge DIV 2;
  92.     halby   := yhoehe DIV 2;
  93.     spalten := vc.NumTextCols;
  94.     zeilen  := vc.NumTextRows;
  95.  
  96.     (* Erstes Fenster *)
  97.     _SetViewport( 0, 0, halbx - 1, halby - 1 );
  98.     _SetTextWindow( 1, 1, zeilen DIV 2, spalten DIV 2 );
  99.     _SetWindow( FALSE, -2.0, -2.0, 2.0, 2.0 );
  100.     raster_form;
  101.     _Rectangle( _GBorder, 0, 0, halbx - 1, halby - 1 );
  102.  
  103.     (* Zweites Fenster *)
  104.     _SetViewport( halbx, 0, xlaenge - 1, halby - 1 );
  105.     _SetTextWindow( 1, spalten DIV 2 + 1, zeilen DIV 2, spalten );
  106.     _SetWindow( FALSE, -3.0, -3.0, 3.0, 3.0 );
  107.     raster_form;
  108.     _Rectangle( _GBorder, -3, -3, 3, 3 );
  109.  
  110.     (* Drittes Fenster *)
  111.     _SetViewport( 0, halby, xlaenge - 1, yhoehe - 1 );
  112.     _SetTextWindow( zeilen DIV 2 + 2, 1, zeilen, spalten );
  113.     _SetWindow( TRUE, -3.0, -1.5, 1.5, 1.5 );
  114.     raster_form;
  115.     obenlinks.Wx := -3.0;
  116.     obenlinks.Wy := -1.5;
  117.     untenrechts.Wx := 1.5;
  118.     untenrechts.Wy := 1.5;
  119.     _Rectangle_wxy( _GBorder, obenlinks, untenrechts );
  120. END;
  121.  
  122. BEGIN  (* Hauptprogramm *)
  123.  
  124.     orig_modus := LastMode;
  125.     TextMode( Lo( LastMode ) + Font8x8 );
  126.     IF vier_farben THEN
  127.         drei_graphen
  128.     ELSE
  129.         _OutText( 'Dieses Programm benötigt eine CGA-,' +
  130.                 ' EGA- oder VGA-Graphikkarte.');
  131.     ch := ReadKey;
  132.     a := _SetVideoMode( _DefaultMode );
  133.     TextMode( orig_modus );
  134. END.
  135.  
  136.