home *** CD-ROM | disk | FTP | other *** search
- Unit PLOTSYS;
-
- Interface
-
- uses
- Crt,
- Dos,
- StrTool,
- GEDDEFS,
- LibMan,
- KEYSCRN;
-
- Const GrafmodeGlb=false;
-
- Type SinTab = Array[0..90] of Real;
- GrColor = 0..9; (* Zeichenfarbe 1..9, 0= farblos *)
-
- Var
- GrRotPhi :integer; (*Drehwinkel für Rotate/RotReal*)
- GrRot11,GrRot12,
- GrRot21,GrRot22 :Real; (* Drehmatrix für "" *)
- GrSinus :SinTab; (* Sinustabelle *)
- PlotRes,InvPlotRes, (* Plotterauflösung und Kehrwert*)
- PlotScale :Real; (* Plotmaßstab *)
- GrWindowX1, (* Plotterausgabefenster in *)
- GrWindowX2, (* Plotterkoordinaten *)
- GrWindowY1,
- GrWindowY2 :Real;
- MinFormX,
- MinFormY :Integer;
-
- Type CharKante=Record
- CharX,CharY :Byte;
- end;
- { Bit 0..6 von X ist X-koordinate }
- { Bit 7 von X ist 1 : Info - Vektor }
- { 0 : Aktiver Vektor}
- { Bit 0..6 von Y ist Y-koordinate }
- { Bit 7 von y ist PEN }
- { erster Vektor ist immer Info-Vektor }
- { X gibt Proportionalbreite an 16 = 100%}
- { Y gibt Anzahl der Vektoren+Infovektor an }
- { = Anzahl Worte des Zeichens max.127 }
-
- ChFeld = Array[0..500] of charkante;
- ChIndex =Array[0..224] of Integer;
- ChInfo =Record
- F:Array[0..223] of Integer;
- Size:Word;
- end;
- ChFPtr = ^Chfeld;
- ChIPtr = ^ChIndex;
-
- var GrafSet1,Grafset2: ChFPtr; { grafische Zeichensätze }
- CharIndex1,CharIndex2 :ChIPtr;
-
- Const Batch :Boolean=false;
- OutDevice :PathStr='';
- OutPath :PathStr='';
-
-
- procedure error(ErrCode:integer);
- (* Error-Handler, führt zu hartem Programmabbruch *)
-
- Procedure Normalize(Var Phi :Integer);
- (* normalisiert Winkel in Bereich 0..360 *)
-
- Procedure SinusCosinus(Phi :integer; Var Si,Co :Real);
- (*Bestimmt Sinus und Cosinus aus Tabelle, Phi in ganzen Grad*)
-
- Procedure CircleCoord(RX,RY,Phi :Integer ;Var CX,CY :Real);
- (*bestimmt PolarKoord. auf einer Ellipse (RX,RY) *)
-
- Procedure Turnto(Phi :Integer);
- (*Initialisiert Drehmatrix gemäß Phi *)
-
- Procedure Rotreal(Var X,Y :Real);
- (*Rotiert X,Y um durch Turnto festgelegten Winkel Phi *)
-
- Procedure Rotate(Var X,Y :Integer);
-
- Function PlotKoord(X:Real):Real;
- (*Bestimmt Potterkoordinate aus Zeichnungskoordinate in mm*)
-
- Function Ungleich(A,B:Real):Boolean;
- (*Prüft Gleichheit zweier Zeichnungskoordinaten*)
-
- Function PlotLimit(X:Real):Real;
- (*Begrenzt Maß auf >= Plotterauflösung*)
-
- Function CalcPhi(X,Y :Real):Integer;
- (*bestimmt Winkel aus X,Y (arctan) *)
-
- Procedure GrafWindow(X1,Y1,X2,Y2 :Integer);
- (* legt Plotterausgabefenster fest *)
-
- Procedure WhichField(X,Y :Real;Var WoX,WoY :Integer);
- (* wird für Clip-Funktion (Randabschneiden) benötigt *)
-
- Function InWindow(X,Y :Real) :Boolean;
- (* Prüft ob Punkt im Ausgabe-Fenster *)
-
- Function Clip(Var X1,Y1,X2,Y2: Real ):Boolean;
- (* schneidet Gerade X1,Y1,X2,Y2 an den Rändern des Ausgabefensters ab *)
- (* oder meldet wenn Gerade nicht gezeichnet werden muß (Clip=false ) *)
-
- Procedure CheckPath(Var P :PathStr);
-
- Procedure CheckDirs;
-
-
- Procedure ErrorInit;
-
- Procedure TextMode;
-
- procedure NormVideo;
-
- procedure LowVideo;
-
- {===========================================================================}
-
- Implementation
-
- Procedure TextMode;
- begin
- end;
-
-
- (*$I PLOTSYS.INC *)
-
- Var ExitSave :Pointer;
-
- {$F+} Procedure Myexit;{$F-}
- begin
- Crt.Normvideo;
- Crt.Clrscr;
- ErrorMSG;
- SetCursor(CursorInital);
- ExitProc:=ExitSave;
- end;
-
- begin
- ExitSave:=ExitProc;
- ExitProc:=@Myexit;
- NormVideo;
- If MODECO80 then EditForeground:=Crt.Yellow else EditForeground:=Crt.White;
- Editbackground:=Crt.black;
- OutDevice:='';
- If ParamCount>0 then
- begin
- OutDevice:=UpcaseStr(ParamStr(ParamCount));
- If Pos('/O',OutDevice)=1 then
- begin
- Delete(OutDevice,1,2);
- Batch:=ParamCount>1;
- end
- else
- If Pos('/P',OutDevice)=1 then
- begin
- Delete(OutDevice,1,2);
- If PathExists(OutDevice) then
- OutPath:=OutDevice;
- OutDevice:='';
- Batch:=ParamCount>1;
- end
- else
- begin
- OutDevice:='';
- Batch:=ParamCount>0;
- end;
- end;
-
- If Not(Batch) then
- begin
- LoadFilesetUp;
- CheckDirs;
- end;
- LoadSetup;
- InitCharNames;
- PlotSysInit;
- KeyScrn.Maus_Ratio:=SetupInfo.MausInfo.MausRatio shr 4;
- CheckBreak:=false;
- end.
-