home *** CD-ROM | disk | FTP | other *** search
-
- PROGRAM Reelle_Graphik;
-
- (* REELLG.Pas : Demonstriert Graphik mit reellen Koordinaten *)
-
- USES
- MSGraph, Crt;
-
- CONST
- bananen : ARRAY [0..20] OF Single =
- ( -0.3, -0.2, -0.224, -0.1, -0.5, +0.21, +2.9,
- +0.3, +0.2, 0.0, -0.885, -1.1, -0.3, -0.2,
- 0.001, 0.005, 0.14, 0.0, -0.9, -0.13, +0.3 );
-
- VAR
- halbx, halby, a : Integer;
- vc : _VideoConfig;
- ch : Char;
- orig_modus : Word;
-
- (* ====================== vier_farben ====================== *)
- (* Die Funktion vier-farben legt den Grafikmodus mit den *)
- (* meisten Farben fest. *)
-
- FUNCTION vier_farben : Boolean;
- BEGIN
- vier_farben := FALSE;
- IF ( _SetVideoMode( _MaxColorMode) > 0 ) THEN
- BEGIN
- _GetVideoConfig( vc );
- IF ( vc.NumColors >= 4 ) THEN
- vier_farben := TRUE;
- END;
- END;
-
- (* ====================== raster_form ====================== *)
- (* Die Prozedur raster_form zeichnet das Raster. *)
-
- PROCEDURE raster_form;
-
- VAR
- i, x1, y1, x2, y2 : Integer;
- x, y : Real;
- s : String[80];
-
- BEGIN
- FOR i := 1 TO vc.NumColors DO
- BEGIN
- _SetTextPosition( i, 2 );
- _SetTextColor( i );
- Str( i, s );
- _OutText( 'Farbe '+ s );
- END;
-
- _SetColor( 1 );
- _Rectangle_w( _GBorder, -1.0, -1.0, 1.0, 1.0 );
- _Rectangle_w( _GBorder, -1.02, -1.02, 1.02, 1.02 );
-
- x := -0.9;
- i := 0;
- WHILE x < 0.9 DO
- BEGIN
- _SetColor( 2 );
- _MoveTo_w( x, -1.0 ); _LineTo_w( x, 1.0 );
- _MoveTo_w( -1.0, x ); _LineTo_w( 1.0, x );
- _SetColor( 3 );
- _MoveTo_w( x - 0.1, Bananen[i] );
- Inc( i );
- _LineTo_w( x, Bananen[i]);
- x := x + 0.1;
- END;
-
- _MoveTo_w( 0.9, Bananen[i] );
- Inc(i);
- _LineTo_w( 1.0, Bananen[i]);
- END;
-
- (* ====================== drei_graphen ====================== *)
- (* Die Prozedur gibt drei Schaubilder in drei Viewports aus. *)
-
- PROCEDURE drei_graphen;
-
- VAR
- obenlinks, untenrechts : _WXYCoord;
- xlaenge, yhoehe, spalten, zeilen : Integer;
-
- BEGIN
- _ClearScreen( _GClearScreen );
- xlaenge := vc.NumXPixels;
- yhoehe := vc.NumYPixels;
- halbx := xlaenge DIV 2;
- halby := yhoehe DIV 2;
- spalten := vc.NumTextCols;
- zeilen := vc.NumTextRows;
-
- (* Erstes Fenster *)
- _SetViewport( 0, 0, halbx - 1, halby - 1 );
- _SetTextWindow( 1, 1, zeilen DIV 2, spalten DIV 2 );
- _SetWindow( FALSE, -2.0, -2.0, 2.0, 2.0 );
- raster_form;
- _Rectangle( _GBorder, 0, 0, halbx - 1, halby - 1 );
-
- (* Zweites Fenster *)
- _SetViewport( halbx, 0, xlaenge - 1, halby - 1 );
- _SetTextWindow( 1, spalten DIV 2 + 1, zeilen DIV 2, spalten );
- _SetWindow( FALSE, -3.0, -3.0, 3.0, 3.0 );
- raster_form;
- _Rectangle( _GBorder, -3, -3, 3, 3 );
-
- (* Drittes Fenster *)
- _SetViewport( 0, halby, xlaenge - 1, yhoehe - 1 );
- _SetTextWindow( zeilen DIV 2 + 2, 1, zeilen, spalten );
- _SetWindow( TRUE, -3.0, -1.5, 1.5, 1.5 );
- raster_form;
- obenlinks.Wx := -3.0;
- obenlinks.Wy := -1.5;
- untenrechts.Wx := 1.5;
- untenrechts.Wy := 1.5;
- _Rectangle_wxy( _GBorder, obenlinks, untenrechts );
- END;
-
- BEGIN (* Hauptprogramm *)
-
- orig_modus := LastMode;
- TextMode( Lo( LastMode ) + Font8x8 );
- IF vier_farben THEN
- drei_graphen
- ELSE
- _OutText( 'Dieses Programm benötigt eine CGA-,' +
- ' EGA- oder VGA-Graphikkarte.');
- ch := ReadKey;
- a := _SetVideoMode( _DefaultMode );
- TextMode( orig_modus );
- END.
-
-