home *** CD-ROM | disk | FTP | other *** search
/ TopWare 18: Liquid / Image.iso / liquid / top1200 / paperbgi.lzh / PASCAL / BEISPIEL / BGIDEMO.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-11-28  |  17.0 KB  |  648 lines

  1. {$A-,B+,D+,E+,F-,I+,L+,N+,O-,R+,S+,V+}
  2. {$M 16384,30000,655360}
  3. program BGIdemo;
  4. {
  5.  
  6. (C)opyright   1991
  7. Raimund Nisius
  8. Software∙Entwicklung
  9. Goethepark  13
  10. 10627  Berlin
  11.  
  12. Dieses Programm dient zur Demonstration der Graphiktreiber *.BGI
  13. und diente mir bei der Entwicklung zum Testen der Treiber -> die
  14. Zeichnung sind nicht schön, aber vielfältig.
  15.  
  16. Alles, was mit Turbo-Pascal und den BGI-Treibern machbar ist, wird
  17. vorgeführt. Über die Graphikbefehle an sich erfahren Sie nichts neues.
  18.     (
  19.     Ausnahme "sector" u.Ä. Prozeduren machen einen Fehler,
  20.     den meine Treiber auskorrigieren :
  21.            sector(x,y,startwinkel, stop       ,rx,ry);
  22.            sector(x,y, stop      , startwinkel,rx,ry);
  23.     erzeugen auf dem Monitor meistens(!) die gleiche Figur.
  24.     Vergleichen Sie hierzu die Plotterausgabe.
  25.     )
  26. Zum Übersetzen brauchen Sie die Dateien
  27. "alloc.pas","params.pas","auswahl.pas","inventar.inc" und "goth.chr".
  28. und natürlich die BGI-Treiber, die in inventar.inc angegeben sind.
  29. }
  30.  
  31.  
  32.  
  33. uses
  34.   Crt,
  35.   Dos,
  36.   auswahl,
  37.   params,
  38.   alloc,
  39.   Graph;
  40.  
  41. {$define STERNE }
  42. const
  43.   MaxPoints     = 18;
  44.  
  45. type
  46.   PolygonType = array[1..MaxPoints+5] of PointType;
  47.   windowtype  = record
  48.                 x1 ,
  49.                 y1 ,
  50.                 x2 ,
  51.                 y2 : integer;
  52.                 end;
  53.  
  54.  
  55.  
  56. var
  57.   hpgl_parameter : HPGL_Konfig_ptr;
  58.   Poly           : PolygonType;
  59.   polysize       : word;
  60.   MaxX, MaxY     : word;     { The maximum resolution of the screen }
  61.   ErrorCode      : integer;  { Reports any graphics errors }
  62.   OldExitProc    : Pointer;  { Saves exit procedure address }
  63.   PathToDriver   : string;   { Stores the DOS path to *.BGI & *.CHR }
  64.   InGraphicsMode : boolean; { Flags initialization of graphics mode }
  65.   testfill       : word;
  66.   width          ,
  67.   xoffs          ,
  68.   yoffs          : word;
  69.   texth          : word;
  70.   gr_error       : integer;
  71.   fenster        : windowtype;
  72.   modename       : string;
  73.   BitMap         : pointer;
  74.   extension      : string[3]; {Ausgabefile je nach Geräteart}
  75.  
  76. {$I inventar.inc}  { hier sind die vorhanden Nisius-BGI-Treiber gelistet }
  77.  
  78. procedure waitkey;
  79. var c:char;
  80. begin
  81. c:=readkey;
  82. if c = #0 then
  83.    c:=readkey;
  84. end;
  85.  
  86. function min(a,b : integer) : integer;
  87. begin
  88. if a<b then
  89.    min := a
  90. else
  91.    min := b;
  92. end;
  93. function Int2Str(L : LongInt) : string;
  94. { Converts an integer to a string for use with OutText, OutTextXY }
  95. var
  96.   S : string;
  97. begin
  98.   Str(L, S);
  99.   Int2Str := S;
  100. end; { Int2Str }
  101.  
  102.  
  103. procedure schreibeTreiberVersion;
  104. begin
  105. setcolor(2);
  106. setwritemode(copyput);
  107. SetTextStyle(3, HorizDir, 1);
  108. texth := textheight('H');
  109. setusercharsize(Maxx div 60,texth,Maxx div 60,texth);
  110. texth := textheight('H');
  111. settextjustify(lefttext,Bottomtext);
  112. outtextxy(MaxX div 20,MaxY-texth,
  113. 'Treiber '+TreiberName(treibertyp) +',   '+int2str(getmaxcolor) +' Farben.');
  114. end;
  115.  
  116.  
  117. procedure kreise;
  118. var
  119.    m     : pointtype;
  120.    i     ,
  121.    j     ,
  122.    start ,
  123.    stop  ,
  124.    max_r ,
  125.    r     ,
  126.    xasp  ,
  127.    yasp  : word;
  128.    st_str: string;
  129.    AC    : ArcCoordsType;
  130.  
  131. begin
  132. m.x   := Getmaxx div 4;
  133. m.y   := 3*(Getmaxy div 4);
  134. max_r := min(Getmaxy,Getmaxx) div 4;
  135. start := 270;
  136. stop  := 180;
  137.  
  138.  
  139. getaspectratio(xasp,yasp);
  140. setaspectratio(xasp div 2,yasp);
  141.  
  142. for i := 0 to 18 do
  143.     begin
  144.     start := i * 30;
  145.     r     := (max_r div 40 ) + round(((3.0*i) * max_r)/42.0);
  146.     setlinestyle(CenterLn,2, Thickwidth );
  147.     arc(m.x,m.y,start,stop,r);
  148.     end;
  149. setlinestyle(CenterLn,2, normwidth);
  150. m.x := GetMaxx - m.x;
  151. m.y   := 4*(Getmaxy div 5);
  152. for i := 0 to 18 do
  153.     begin
  154.     start := i * 30;
  155.     r     := (max_r div 40 ) + round(((1.7*i) * max_r)/42.0);
  156.     arc(m.x,m.y,start,stop,r);
  157.     end;
  158.  
  159. setaspectratio(xasp,yasp);
  160.  
  161. circle(GetmaxX div 2,m.y, GetmaxY div 15);
  162. ellipse(GetmaxX div 2,4*(GetmaxY div 10),0,270,GetmaxX div 4, GetmaxY div 14);
  163. m.y := (GetMaxY div 5);
  164. setfillstyle(LtBkSlashFill,1);
  165. for j := 0 to 10 do
  166.     begin
  167.     m.x := (1+j)*(GetMaxx div 12);
  168.     start := j * 36;
  169.     stop  := (j+1) * 36;
  170.     sector(  m.x,  m.y,start, stop ,GetMaxx div 26,GetMaxy div 26);
  171.     sector(  m.x,3*m.y, stop, start,GetMaxx div 26,GetMaxy div 26);
  172.     end;
  173.  
  174. setfillstyle(XHatchFill,1);
  175. setlinestyle(CenterLn,2, Normwidth );
  176. m.x   := Getmaxx div 7;
  177. m.y   := 5*(Getmaxy div 11);
  178. max_r := min( Getmaxx,Getmaxy) div 8;
  179. sector(  m.x,  m.y, 30, 60, max_r, max_r);
  180.  
  181. setlinestyle(CenterLn,2, Normwidth);
  182. setfillstyle(LineFill,1);
  183. m.x   := 6*(Getmaxx div 7);
  184. fillellipse ( m.x,m.y,max_r,max_r div 2);
  185. schreibeTreiberVersion;
  186.  
  187. end; {kreise}
  188.  
  189. {$F+}   { !!!!! Far Function sehr wichtig }
  190.  
  191. procedure MyExitProc;
  192. begin
  193.   ExitProc := OldExitProc; { Restore exit procedure address }
  194.   if InGraphicsMode then
  195.      CloseGraph;
  196. end; { MyExitProc }
  197.  
  198. {$F-}
  199.  
  200.  
  201. procedure Initialize;
  202. { Initialize graphics and report any errors that may occur }
  203.  
  204. begin
  205.   DirectVideo := False;
  206.   OldExitProc := ExitProc;                { save previous exit proc }
  207.   ExitProc := @MyExitProc;                { insert our exit proc in chain }
  208.   PathToDriver := '';
  209. end; { Initialize }
  210.  
  211. {$ifdef STERNE }
  212.  
  213. procedure stern_punkte;
  214. var
  215.    i : integer;
  216.  
  217. begin
  218.  i := 1;
  219.  while i <= MaxPoints do
  220.    begin
  221.    Poly[i].x := xoffs+2+round(xoffs*cos((i*2.0*PI) / MaxPoints));
  222.    Poly[i].y := yoffs+2+round(yoffs*sin((i*2.0*PI) / MaxPoints));
  223.    inc(i);
  224.    Poly[i].x := xoffs+2+round(xoffs/4.0*cos((i*2.0*PI) / MaxPoints));
  225.    Poly[i].y := yoffs+2+round(yoffs/4.0*sin((i*2.0*PI) / MaxPoints));
  226.    inc(i);
  227.    Poly[MaxPoints+1] := Poly[1];
  228.    polysize := MaxPoints+1;
  229.    end;
  230. end;
  231. {$else}
  232.  
  233. procedure stern_punkte;
  234. var
  235.    i : integer;
  236.  
  237. begin
  238.    i := 1;
  239.    Poly[i].x  := 0;
  240.    Poly[i].y  := 0;
  241. inc(i);
  242.    Poly[i].x  := xoffs div 3;
  243.    Poly[i].y  := 0;
  244. inc(i);
  245.    Poly[i].x  := xoffs div 2;
  246.    Poly[i].y  := yoffs div 10;
  247. inc(i);
  248.  
  249.  
  250.    Poly[i].x  := xoffs div 2;
  251.    Poly[i].y  := yoffs div 2;
  252. inc(i);
  253.    Poly[i].x  := xoffs div 2;
  254.    Poly[i].y  := yoffs div 10;
  255. inc(i);
  256.  
  257.  
  258.    Poly[i].x  := xoffs div 3;
  259.    Poly[i].y  := yoffs div 5;
  260. inc(i);
  261.    Poly[i].x  := xoffs div 8;
  262.    Poly[i].y  := yoffs div 5;
  263. inc(i);
  264.    Poly[i].x  := xoffs div 8;
  265.    Poly[i].y  := (3*yoffs) div 4;
  266. inc(i);
  267.    Poly[i].x  := (7*xoffs) div 8;
  268.    Poly[i].y  := (3*yoffs) div 4;
  269. inc(i);
  270.    Poly[i].x := (7*xoffs) div 8;
  271.    Poly[i].y := yoffs div 5;
  272. inc(i);
  273.    Poly[i].x := (2*xoffs) div 3;
  274.    Poly[i].y := yoffs div 5;
  275. inc(i);
  276.    Poly[i].x := xoffs div 2;
  277.    Poly[i].y := yoffs div 10;
  278. inc(i);
  279.    Poly[i].x := (2*xoffs) div 3;
  280.    Poly[i].y := 0;
  281. inc(i);
  282.    Poly[i].x := xoffs;
  283.    Poly[i].y := 0;
  284. inc(i);
  285.    Poly[i].x := xoffs;
  286.    Poly[i].y := yoffs;
  287. inc(i);
  288.    Poly[i].x := 0;
  289.    Poly[i].y := yoffs;
  290. inc(i);
  291.    Poly[i] := Poly[1];
  292. polysize := i;
  293. end;
  294. {$endif}
  295.  
  296. procedure verschiebe(x : word);
  297. var
  298.    i  : integer;
  299.    dx ,
  300.    dy : word;
  301.  
  302. begin
  303. dy := (2 * yoffs) * (x div 4);
  304. dx := (5 * xoffs * (x mod 4)) div 3;
  305. for i := 1 to MaxPoints+1 do
  306.    begin
  307.    inc(Poly[i].x,dx);
  308.    inc(Poly[i].y,dy);
  309.    end;
  310. end;
  311.  
  312.  
  313.  
  314. procedure test1;  (* bei eröffnetem Graphikmode *)
  315. var
  316.    vp : ViewPortType;
  317.    li : Linesettingstype;
  318.    FillInfo    : FillSettingsType;
  319.    FillPattern : FillPatternType;
  320.    TextInfo    : TextSettingsType;
  321.    pal         : PaletteType;
  322.    regs        : registers;
  323.    Direktes_Kommando : string;
  324.  
  325. begin
  326.   MaxX := getmaxx;
  327.   MaxY := getmaxy;
  328.   xoffs := getmaxx div 10;   {ok}
  329.   yoffs := getmaxy div 7;    {ok}
  330. moveto(10,100);
  331. width := getx;      {ok}
  332. width := gety;      {ok}
  333. ClearDevice;         {ok}
  334. PutPixel(100,100,1); {ok}
  335. Line   (0,       0, MaxX div 2, MaxY div 2);
  336. MoveTo (MaxX, MaxY );
  337. LineTo (MaxX div 2, 0);
  338. MoveRel(0, MaxY div 4);
  339. LineRel(MaxX div 3, MaxY div 3);
  340. {GraphDefaults; setzt BKcolor auf 0 !}
  341.  
  342. width := GetPixel(100,100);
  343. texth := ImageSize(0,0,100,100);
  344. getmem(BitMap,texth);
  345. GetImage( 0,0,100,100,BitMap^);      {Normaler Gebrauch von PutImage,GetImage}
  346. PutImage(100,100,BitMap^, NotPut);   {wird vom treibertyp ignoriert.}
  347. freemem(BitMap,texth);
  348. SetWriteMode(4);
  349. getlinesettings(li);
  350. GetFillSettings(FillInfo );      {ok}
  351. GetFillPattern(FillPattern );    {!ok}
  352. SetFillPattern(FillPattern ,1);  {!ok}
  353. FloodFill(0,0,1);                {!ok}
  354. setcolor(RED);                   {ok}
  355. texth := getbkcolor;             {ok}
  356. texth := getcolor;               {ok}
  357. SetRGBPalette(3, 200, 200, 200); {ok}
  358. SetPalette(3, 12);               {ok}
  359. GetPalette(pal);                 {ok}
  360. SetAllPalette(pal);              {ok}
  361. texth := GetPaletteSize;         {ok}
  362. GetDefaultPalette(pal);          {ok}
  363. SetAllPalette(pal);              {ok}
  364.  
  365.  
  366. for testfill := Solidln to Dashedln do
  367.     begin
  368.     setlinestyle(testfill,0,normwidth);
  369.     line(0, (MaxY div 20)*(2*testfill), MaxX div 2, (MaxY div 20)*(1+2*testfill));
  370.     setlinestyle(testfill,0,thickwidth);
  371.     line(0, (MaxY div 20)*(1+2*testfill), MaxX div 2, (MaxY div 20)*(2+2*testfill));
  372.     end;
  373. testfill := UserBitLn;
  374. setlinestyle(testfill,$FCCF,normwidth);
  375. line(0, (MaxY div 20)*(2*testfill), MaxX div 2, (MaxY div 20)*(1+2*testfill));
  376. setlinestyle(testfill,$FCCF,thickwidth);
  377. line(0, (MaxY div 20)*(1+2*testfill), MaxX div 2, (MaxY div 20)*(2+2*testfill));
  378.  
  379. testfill := 4;
  380. setlinestyle(testfill,$FCCF,normwidth);
  381. setfillstyle(LTSlashFill,2);
  382.  
  383. rectangle(MaxX - MaxX div 8,MaxY div 3,MaxX - MaxX div 10,MaxY div 2);
  384. bar3d( MaxX - MaxX div 10,MaxY div 20,
  385.        MaxX - MaxX div 20,MaxY div 8,
  386.        MaxX div 50,TopOn);
  387.  
  388. setfillstyle(testfill,1);
  389. bar3d(MaxX - MaxX div 10,MaxY div 8,
  390.       MaxX - MaxX div 20,MaxY div 4,
  391.       MaxX div 50,TopOff);
  392.  
  393.  
  394. Poly[1].X := MaxX -MaxX div 4;
  395. Poly[1].Y := MaxY -MaxY div 6;
  396.  
  397. Poly[2].X := MaxX -MaxX div 8;
  398. Poly[2].Y := MaxY -MaxY div 6;
  399.  
  400. Poly[3].X := MaxX -MaxX div 8;
  401. Poly[3].Y := MaxY -MaxY div 9;
  402.  
  403. Poly[4].X := MaxX -MaxX div 8;
  404. Poly[4].Y := MaxY -MaxY div 6;
  405.  
  406. Poly[5].X := MaxX -MaxX div 16;
  407. Poly[5].Y := MaxY -MaxY div 6;
  408.  
  409. Poly[6].X := MaxX -MaxX div 16;
  410. Poly[6].Y := MaxY -MaxY div 4;
  411.  
  412. Poly[7].X := MaxX - MaxX div 4;
  413. Poly[7].Y := MaxY -MaxY div 4;
  414.  
  415. setlinestyle(2,0,thickwidth);
  416. setfillstyle(0,1);
  417. FillPoly(3, Poly);
  418.  
  419.  
  420. setlinestyle(2,0,normwidth);
  421. dec(Poly[1].x,MaxX div 4);
  422. dec(Poly[2].x,MaxX div 4);
  423. dec(Poly[3].x,MaxX div 4);
  424. inc(Poly[1].y,MaxY div 20);
  425. inc(Poly[2].y,MaxY div 20);
  426. inc(Poly[3].y,MaxY div 20);
  427. FillPoly(3, Poly);
  428.  
  429. fenster.x1 := MaxX - MaxX div 10;
  430. fenster.y1 := MaxY div 2;
  431. fenster.x2 := MaxX - MaxX div 20;
  432. fenster.y2 := MaxY - MaxY div 3;
  433. setlinestyle(2,0,thickwidth);
  434. setfillstyle(4,1);
  435.  
  436. with fenster do
  437.   begin
  438.  
  439.   bar (x1,
  440.        y1,
  441.        x2,
  442.        y2);
  443.   setviewport(x1,
  444.               y1,
  445.               x2,
  446.               y2,
  447.               true);
  448.  
  449.   line(0,0,2*(x2-x1),2*(y2-y1));
  450.   getviewsettings(vp);
  451.   end;
  452.  
  453. setviewport(0,0,getmaxx,getmaxy,true);
  454.  
  455. {$IFDEF HPGLPLOTTER}
  456. if treibertyp = plottertreiber then
  457.     begin
  458.     hpgl_parameter := Treiber_konfiguration.plotter;
  459.  
  460.     if hpgl_parameter^.filehandle <> 0 then { HPGL.BGI hat eine Ausgabe eröffnet.}
  461.        begin
  462.        Direktes_Kommando := 'PU1000,1000;LBDies ist ein direkter Plotterbefehl'#3 ;
  463.        regs.CX := length(Direktes_Kommando);    { Stringlänge }
  464.        regs.DX := ofs(Direktes_Kommando[1]);    { Stringadresse Offset  }
  465.        regs.DS := seg(Direktes_Kommando[1]);    { Stringadresse Offset  }
  466.        regs.BX := hpgl_parameter^.filehandle;   { handle }
  467.        regs.AH := $40;                          { DOS Funktion write to file or device }
  468.        msdos(regs);                             { Enter DOS }
  469.        if (regs.Flags and 1) <> 0 then          { Carry Flag gesetzt -> Fehler }
  470.           begin
  471.           writeln('Direkter Befehl an Plotter über Handle #',
  472.                    hpgl_parameter^.filehandle,
  473.                    ' hat nicht geklappt!');
  474.           writeln('DOS-Fehler ',regs.AX);
  475.           writeln('Taste !');
  476.           while readkey = #0 do { warten };
  477.           halt;
  478.           end;
  479.        end;
  480.     end;
  481. {$ENDIF}
  482.  
  483. schreibeTreiberVersion;
  484. outtextxy(MaxX div 2,MaxY-MaxY Div 40,'Programmende mit Tastendruck.');
  485. gr_error := graphresult;
  486. SetTextStyle(4, VertDir, 4);
  487. gr_error := graphresult;
  488. if gr_error <> 0 then
  489.    writeln(grapherrormsg(gr_error));
  490. texth := textheight('How nice !');
  491. setusercharsize(Maxx div 20,texth,Maxx div 15,texth);
  492. texth := textheight('How nice !');
  493. settextjustify(2,0);
  494. outtextxy(MaxX,MaxY,'How nice !');
  495.  
  496.  
  497. settextjustify(0,2);
  498. SetTextStyle(0, VertDir,4);
  499. texth := textheight('How nice !');
  500. setusercharsize(Maxx div 20,texth,Maxx div 15,texth);
  501. outtextxy(round(MaxX*0.9),round(maxy*0.1),Int2Str(MaxX));
  502.  
  503. settextjustify(0,0);
  504. SetTextStyle(0, HorizDir, 4);
  505. texth := textheight('How nice !');
  506. (*
  507. GetTextSettings(TextInfo );
  508. *)
  509. setusercharsize(Maxx div 20,texth,Maxx div 15,texth);
  510. outtextxy(0,MaxY,Int2Str(MaxY));
  511. end;
  512.  
  513. procedure testzeichnung;  (* bei eröffnetem Graphikmode *)
  514.  
  515.  
  516. begin
  517.  
  518.     for testfill := emptyfill to closedotfill do
  519.       begin
  520.       width := testfill div 5;
  521.       if width < 1 then
  522.          width := 1
  523.       else
  524.          width := 3;
  525.       setlinestyle(testfill mod 5,$FFCC,width);
  526.       stern_punkte;
  527.       verschiebe(testfill);
  528.       SetFillStyle(testfill , 1 + (testfill mod getmaxcolor));
  529.       FillPoly(polysize, Poly);
  530.       end;
  531.  
  532. SetFillStyle(LtSlashFill , 1 + (testfill mod getmaxcolor));
  533. sector(MaxX - MaxX div 8,2*(MaxY div 3),345,15,MaxX div 8,MaxY div 10);
  534. sector(MaxX - MaxX div 8,MaxY div 3,15,345,MaxX div 8,MaxY div 10);
  535. schreibeTreiberVersion;
  536. end;
  537.  
  538. procedure setbackground;
  539. begin
  540. if getmaxcolor > 1 then
  541.     begin
  542.     setcolor(8);           { dunkelgraue Fläche = Scharze Linien }
  543.     setbkcolor(15);        { weiß für Farbversion }
  544.     end
  545. else
  546.     begin
  547.     setcolor(1);           { schwarz }
  548.     setbkcolor(0);         { unbedruckt für Mono }
  549.     end;
  550. end;
  551.  
  552.  
  553. begin { program body }
  554.   Initialize;
  555.   repeat
  556.       waehle_treiber;                        { Ausgabegerät bestimmen }
  557.       {$IFDEF HPGLPLOTTER}
  558.       if treibertyp = plottertreiber then
  559.          begin
  560.          Treiber_konfiguration.plotter^.rotate := false;  { Querformat }
  561.          extension := 'PLT';
  562.          end;
  563.       {$ENDIF}
  564.       {$IFDEF LASERDRUCKER}
  565.       if treibertyp = lasertreiber then
  566.          begin
  567.          Treiber_konfiguration.laserjet^.rotate := true;  { Querformat }
  568.          Treiber_konfiguration.laserjet^.resolution := 4;
  569.          Treiber_konfiguration.laserjet^.size.x     := 2400 div 4;
  570.          Treiber_konfiguration.laserjet^.size.y     := 3300 div 4;
  571.          extension := 'LAS';
  572.          end;
  573.       {$ENDIF}
  574.       {$IFDEF NADELDRUCKER}
  575.       if treibertyp = nadeltreiber then
  576.          begin
  577.          Treiber_konfiguration.nadeldrucker^.rotate := true;  { Querformat }
  578.          extension := 'PRN';
  579.          end;
  580.       {$ENDIF}
  581.  
  582.       {$IFDEF DESKJETDRUCKER}
  583.       if treibertyp = deskjettreiber then
  584.          begin
  585.          Treiber_konfiguration.deskjet_c^.rotate := true;  { Querformat }
  586.          Treiber_konfiguration.deskjet_c^.resolution := 4;
  587.          Treiber_konfiguration.deskjet_c^.size.x     := 2400 div 4;
  588.          Treiber_konfiguration.deskjet_c^.size.y     := 3100 div 4;
  589.          extension := 'DJC';
  590.          end;
  591.       {$ENDIF}
  592.       {$IFDEF paintjetDRUCKER}
  593.       if treibertyp = paintjettreiber then
  594.          begin
  595.          Treiber_konfiguration.paintjet^.rotate     := true;  { Querformat }
  596.          Treiber_konfiguration.paintjet^.resolution := 4;
  597.          extension := 'PJ';
  598.          end;
  599.       {$ENDIF}
  600.  
  601.       {$IFDEF DXFDRUCKER}
  602.       if treibertyp = DXFtreiber then
  603.          begin
  604.          Treiber_konfiguration.DXF^.resolution := -1;   {1/10 mm }
  605.          Treiber_konfiguration.DXF^.size.x := 2900;     { ca. DIN A 4}
  606.          Treiber_konfiguration.DXF^.size.y := 2100;     { ca. DIN A 4}
  607.          extension := 'DXF';
  608.          end;
  609.       {$ENDIF}
  610.  
  611.       Treiber_konfiguration.umgebung.dateiname := 'Test1.'+extension;  { für Mode 8  }
  612.       InitGraph(treibertyp,treibermode, PathToDriver);
  613.       InGraphicsMode := true;
  614.       writeln(getmaxcolor,' Farben');
  615.       writeln('Allgemeiner Test');
  616.       writeln(Treiber_konfiguration.umgebung.dateiname);
  617.       setbackground;
  618.       test1;
  619.       if treibertyp = monitortreiber then
  620.          while readkey = #0 do;      { warten }
  621.       restorecrtmode;
  622.  
  623.       Treiber_konfiguration.umgebung.dateiname := 'kreise.'+extension;
  624.       setgraphmode(treibermode);
  625.       writeln('Kreise');
  626.       writeln(Treiber_konfiguration.umgebung.dateiname);
  627.       setbackground;
  628.       kreise;
  629.       if treibertyp = monitortreiber then
  630.          while readkey = #0 do;      { warten }
  631.       restorecrtmode;
  632.  
  633.       Treiber_konfiguration.umgebung.dateiname := 'sterne.'+extension;
  634.       setgraphmode(treibermode);
  635.       writeln('Sterne');
  636.       writeln(Treiber_konfiguration.umgebung.dateiname);
  637.       setbackground;
  638.       testzeichnung;
  639.  
  640.  
  641.       if treibertyp = monitortreiber then
  642.          while readkey = #0 do;      { warten }
  643.       CloseGraph;
  644.       InGraphicsMode := false;
  645.       writeln('Weiter mit Tastendruck,   Abbruch mit <ESC>');
  646.   until readkey = #27;
  647. end.
  648.