home *** CD-ROM | disk | FTP | other *** search
- PROGRAM SegmentTest(Input,Output);
-
- CONST (*$I GRAFCONS.PAS *)
-
- TYPE (*$I GRAFTYPE.PAS *)
-
- VAR (*$I GRAFVAR.PAS *)
- WinHandle : WinNrBereich;
- Obj1, Obj2 : SegNrBereich;
- i : INTEGER;
-
- (*$I GRAPH.P *)
- (*$I GRAFSYS.PAS *)
- (*$I INTDDA.PAS *)
- (*$I LINE.PAS *)
- (*$I WINSYS.PAS *)
- (*$I WINGRAF.PAS *)
- (*$I CLIPPING.PAS *)
- (*$I GRAFMAT.PAS *)
- (*$I TRANS2D.PAS *)
- (*$I LINEOBJ.PAS *)
- (*$I LISTHAND.PAS *)
- (*$I SEGHAND.PAS *)
- (*$I SEGTRANS.PAS *)
- (*$I SEGDISP.PAS *)
- (*$I DFREAD.PAS *)
-
- (*--------------------------------------------------------------------*)
- (* Hilfsprozedur, die nur zwei Objekte auf dem Bildschirm dreht. *)
-
- PROCEDURE Show(Obj1, Obj2 : SegNrBereich);
-
- BEGIN
- IF (Obj1 <> NULL) AND (Obj2 <> NULL) THEN BEGIN
- FOR i := 1 TO 36 DO BEGIN
- RotateSeg(Obj2,10,FALSE); (* Objekt 2 drehen *)
- ProcessSeg(Obj2,FALSE); (* Objekt 2 zeichnen *)
- IF i > 1 THEN
- ProcessSeg(Obj1,TRUE); (* Wenn schon vorh., Objekt 1 loeschen *)
- RotateSeg(Obj1,10,FALSE); (* Objekt 1 drehen *)
- ProcessSeg(Obj1,FALSE); (* Objekt 1 zeichnen *)
- ProcessSeg(Obj2,TRUE); (* Objekt 2 loeschen *)
- END;
- ProcessSeg(Obj1,TRUE); (* Letztes Objekt 1 loeschen *)
- END;
- END;
-
- (* MAIN *)
- BEGIN
- Enter_Graphic;
- InitWindows;
- (* Window & Viewport selectieren *)
- WinHandle := SelectViewport(0,0,ScreenXmax,ScreenyMax);
- SelectWorld(WinHandle,-400,-400,400,400);
-
- InitSeg;
-
- (* Dreieck und Viereck einlesen *)
- DFRead(DFInpArray,'VIERECK.DAT'); (* Kommandos einlesen *)
- Obj1 := OpenSeg(DFInpArray);
- DFRead(DFInpArray,'DREIECK.DAT'); (* Kommandos einlesen *)
- Obj2 := OpenSeg(DFInpArray);
-
- (* Objekte vom Nullpunkt entfernen *)
- XShiftSeg(Obj1,-150,TRUE);
- XShiftSeg(Obj2,150,TRUE);
-
- (* Dreieck und Viereck parallel rotieren lassen *)
- Show(Obj1,Obj2);
-
- DFRead(DFInpArray,'DREIECK2.DAT'); (* Zweites Dreieck einlesen *)
- ExtendSeg(Obj2,1,DFInpArray); (* und in erstes Einfuegen *)
-
- Show(Obj1,Obj2);
-
- XSkaleSeg(Obj1,0.5,FALSE); (* Viereck auf Haelfte verkleinern *)
- YSkaleSeg(Obj1,0.5,FALSE);
-
- XSkaleSeg(Obj2,1.3,FALSE); (* Stern um 30% vergroessern *)
- YSkaleSeg(Obj2,1.3,FALSE);
-
- Show(Obj1,Obj2);
-
- CutSeg(Obj2,1,4); (* Stern wieder zu Dreieck machen *)
-
- Show(Obj1,Obj2);
-
- XShiftSeg(Obj1,0,TRUE); (* Viereck in die Mitte *)
- XSkaleSeg(Obj2,0.5,FALSE); (* Stern wieder verkleinern *)
- YSkaleSeg(Obj2,0.5,FALSE);
-
- SetTransOrder(Obj2,4); (* Transformationsreihenfolge f. Dreieck aendern *)
- Show(Obj1,Obj2); (* Dreieck kreist um Viereck *)
-
- Read;
- CloseSeg(Obj1);
- CloseSeg(Obj2);
- CloseWindow(WinHandle);
- Exit_Graphic;
- END.