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