home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* PLOTXX.PAS *)
- (* gemeinsame Prozeduren zum Test als Include *)
- (* (c) 1991 Bernd Haendel & TOOLBOX *)
- (* ------------------------------------------------------ *)
-
- PROCEDURE GrafMod; { Grafikmodus einrichten }
- VAR
- GraphPath : STRING;
- BEGIN
- GraphPath := GetEnv('BGIPATH');
- (* -------------------------------------------------- *)
- (* Im Environment: *)
- (* SET BGIPATH=C:\TURBO\GRAPH *)
- (* -------------------------------------------------- *)
- GraphDriver := Detect;
- InitGraph(GraphDriver, GraphMode, GraphPath);
-
- ModeName := GetModeName(GraphDriver);
- GetModeRange(GraphDriver, MinMode, MaxMode);
- END;
-
- PROCEDURE Farben; { Farben neu festlegen }
- BEGIN
- CASE KeyNr OF
- 59 : BEGIN
- Inc(Color1);
- IF Color1 > MaxColorV THEN Color1 := 0;
- END;
- 60 : BEGIN
- Inc(Color2);
- IF Color2 > MaxColorV THEN Color2 := 0;
- END;
- 61 : BEGIN
- Inc(Color3);
- IF Color3 > MaxColorV THEN Color3 := 0;
- END;
- 62 : BEGIN
- Inc(Color4);
- IF Color4 > MaxColorV THEN Color4 := 0;
- END;
- 63 : BEGIN
- Inc(Color5);
- IF Color5 > MaxColorH THEN Color5 := 0;
- END;
- 64 : BEGIN
- Inc(Color6);
- IF Color6 > MaxColorV THEN Color6 := 0;
- END;
- END;
- END;
-
- FUNCTION TastKey : INTEGER;
- { Einlesen einer Tastaturbetätigung }
- BEGIN
- Key := Chr(32); KeyNr := 0;
- IF KeyPressed THEN BEGIN
- Key := ReadKey; KeyNr := Ord(Key);
- WHILE KeyPressed DO BEGIN
- Key := ReadKey; KeyNr := Ord(Key);
- IF (Key = Chr(0)) THEN BEGIN
- Key := ReadKey; KeyNr := Ord(Key);
- END ELSE
- KeyNr := Ord(Key);
- END;
- END;
- TastKey := KeyNr;
- END;
-
- PROCEDURE Erklaerung; { Erklärung der F-Tasten }
- BEGIN
- SetColor(Color6);
- OutTextXY(10, 250, 'F1 Farbe 1');
- OutTextXY(10, 260, 'F2 Farbe 2');
- OutTextXY(10, 270, 'F3 Farbe 3');
- OutTextXY(10, 280, 'F4 Farbe 4');
- OutTextXY(10, 290, 'F5 Farbe 5');
- OutTextXY(10, 300, 'F10 Ende ');
- END;
-
-
- PROCEDURE KoordAchsen; { Koordiantenachsen festlegen }
- BEGIN
- X0 := 320; Y0 := 170;
- { Umrandung zeichnen }
- SetColor(Color6);
- MoveTo( 3, 3); LineTo(636, 3); LineTo(636, 346);
- LineTo( 3, 346); LineTo( 3, 3);
- MoveTo( 4, 4); LineTo(635, 4); LineTo(635, 345);
- LineTo( 4, 345); LineTo( 4, 4);
- MoveTo( 5, 5); LineTo( 5, 344);
- MoveTo(634, 5); LineTo(634, 344);
- END;
-
- PROCEDURE PlotLine(X1, Y1, X2, Y2 : REAL);
- { Zeichnen einer geraden Linie von X1/Y1 nach X2/Y2 }
- CONST
- XF = 4.000;
- YF = 3.100;
- VAR
- IX, IY : INTEGER;
- XX, YY : REAL;
- BEGIN
- IX := X0 + Round(X1 * XF);
- IY := Y0 - Round(Y1 * YF); MoveTo(IX, IY);
- IX := X0 + Round(X2 * XF);
- IY := Y0 - Round(Y2 * YF); LineTo(IX, IY);
- END;
-
- FUNCTION VZ(X1, X2 : REAL) : REAL;
- { Vorzeichen für ein Geradeninkrement ermitteln }
- BEGIN
- IF X2 >= X1 THEN VZ := 1.00 ELSE VZ := -1.00;
- END;
-
- PROCEDURE NeuerPunkt(X1, Y1, X2, Y2 : REAL);
- { Neuen Anfangspunkt auf einer vorgegebenen }
- { Geradenlinie ermitteln }
- VAR
- DXX, DYY, VZX, VZY : REAL;
- DX, DY, DXY, SXX : REAL;
- DX1, DY1 : REAL;
- BEGIN
- DX := Abs(X2-X1); DXX := DX*DX; VZX := VZ(X1, X2);
- DY := Abs(Y2-Y1); DYY := DY*DY; VZY := VZ(Y1, Y2);
- IF DXX > 1.E-6 THEN BEGIN
- DXY := DYY/DXX; SXX := SX*SX;
- DX1 := Sqrt(SXX/(1.0 + DXY));
- DY1 := DY*Abs(DX1)/DX;
- END ELSE BEGIN
- DX1 := 0.00; DY1 := SX;
- END;
- XXN := X1 + VZX*DX1; YYN := Y1 + VZY*DY1;
- END;
-
- PROCEDURE HinterGrund; { Setzen einer Hintergrundfarbe }
- VAR
- Kasten : ARRAY [1..5] OF PointType;
- BEGIN
- Kasten[1].X := 0; Kasten[1].y := 0;
- Kasten[2].X := 639; Kasten[2].y := 0;
- Kasten[3].X := 639; Kasten[3].y := 349;
- Kasten[4].X := 0; Kasten[4].y := 349;
- Kasten[5].X := 0; Kasten[5].y := 0;
-
- SetFillStyle(SolidFill, Color5);
- FillPoly(5, Kasten);
- END;
-
- (* ------------------------------------------------------ *)
- (* Ende von PLOTXX.PAS *)