
      Program Grafiktext;
      USES CRT,GRAPH;

      VAR
          textpara:TEXTSETTINGSTYPE;
          tripp:POINTER;smallp:POINTER;
          sansp:POINTER;gothp:POINTER;
          treiber,modi,x,y,i:INTEGER;
          zahl:STRING;col:BYTE;
          datei:FILE;hoehe,breite:INTEGER;
          textmodus:BOOLEAN;


      Procedure ZEICHENDEMO;   { Zeichens„tze laden }
      begin
       ASSIGN(datei,'trip.chr');RESET(datei,1);
       GETMEM(tripp,FILESIZE(datei));
       BLOCKREAD(datei,tripp^,FILESIZE(datei));
       CLOSE(datei);
       IF REGISTERBGIFONT(tripp) < 0 THEN
          begin
            WRITELN('Zeichensatz TRIP.CHR konnte nicht registriert werden.');
            HALT(1);
          end;
       ASSIGN(datei,'LITT.chr');RESET(datei,1);
       GETMEM(smallp,FILESIZE(datei));
       BLOCKREAD(datei,smallp^,FILESIZE(datei));
       CLOSE(datei);
       IF REGISTERBGIFONT(smallp) < 0 THEN
          begin
            WRITELN('Zeichensatz LITT.CHR konnte nicht registriert werden.');
            HALT(1);
          end;
       ASSIGN(datei,'sans.chr');RESET(datei,1);
       GETMEM(sansp,FILESIZE(datei));
       BLOCKREAD(datei,sansp^,FILESIZE(datei));
       CLOSE(datei);
       IF REGISTERBGIFONT(sansp) < 0 THEN
          begin
            WRITELN('Zeichensatz SANS.CHR konnte nicht registriert werden.');
            HALT(1);
          end;
       ASSIGN(datei,'goth.chr');RESET(datei,1);
       GETMEM(gothp,FILESIZE(datei));
       BLOCKREAD(datei,gothp^,FILESIZE(datei));
       CLOSE(datei);
       IF REGISTERBGIFONT(gothp) < 0 THEN
          begin
            WRITELN('Zeichensatz GOTH.CHR konnte nicht registriert werden.');
            HALT(1);
          end;
     end;              { Ende der Procedur ZEICHENDEMO }

     Procedure STYLEDEMO;      { Schriftarten anzeigen }
     begin
          SETTEXTJUSTIFY(centertext,centertext);
          FOR i:=1 TO 4 DO
           begin
            SETCOLOR(col+i);
             SETTEXTSTYLE(i,horizdir,i);
             STR(i,zahl);
             OUTTEXTXY(GETMAXX DIV 2,i*30,'Zeichensatz '+zahl+' Gr”sse '+zahl);
             y:=TEXTHEIGHT('Z');
             MOVETO(1+y*3,GETMAXY DIV 2);
             SETTEXTSTYLE(i,vertdir,i);
             OUTTEXT('Zeichensatz '+zahl+' Gr”sse '+zahl);
           end;
      end;               { Ende Procedur STYLEDEMO }

      Procedure JUSTIFYDEMO;    { Text ausrichten }
      begin
          x:=GETMAXX DIV 2;y:=GETMAXY DIV 2;
          SETTEXTSTYLE(defaultfont,horizdir,1);
          i:=TEXTHEIGHT('Z');
          SETTEXTJUSTIFY(lefttext,bottomtext);
          OUTTEXTXY(x,y,'Text links und auf Cursor ');
          SETTEXTJUSTIFY(centertext,centertext);
          OUTTEXTXY(x,y+i,'Text mittig zum Cursor ');
          SETTEXTJUSTIFY(righttext,toptext);
          OUTTEXTXY(x,y+i*2,'Text rechts und unter Cursor ');
       end;               { Ende Procedure JUSTIFYDEMO }

       Procedure USERSIZEDEMO;    { Textgr”sse frei w„hlen }
       begin
          SETTEXTSTYLE(sansseriffont,horizdir,3);
          SETTEXTJUSTIFY(centertext,centertext);
          FOR i:=10 DOWNTO 1 DO
            begin
            SETCOLOR(i);
             FOR x:=1 TO 15 DO
               begin
                SETUSERCHARSIZE(x,2,x,2);
                OUTTEXTXY(GETMAXX DIV 2,50,'Demo');
               end;
              end;
         end;             { Ende Procedure USERSIZE }

         Procedure TEXTHEIGHTDEMO;    { H”he des Demotextes feststellen }
         begin
             hoehe:=TEXTHEIGHT('DEMO');
         end;             { Ende Procedure TEXTHEIGHTDEMO }

         Procedure TEXTWIDTHDEMO;     { Breite eines Textes feststellen }
         begin
             breite:=TEXTWIDTH('DEMO');
         end;              { Ende Procedure TEXTWIDTHDEMO }

         Procedure SETTINGSDEMO;    { Textausgabeparameter feststellen }
         begin
             GETTEXTSETTINGS(textpara);
             textmodus:=TRUE;
             RESTORECRTMODE;
             WITH textpara DO
               begin
                WRITELN('Testparameter: ');
                WRITELN('Zeichensatz : ',Font);
                WRITELN('Richtung    : ',Direction);
                WRITELN('Zeicheng”sse: ',Charsize);
                WRITELN('Vertikalpos.: ',vert);
                WRITELN('Horizontpos.: ',horiz);
               end;
              WRITELN;
              WRITELN('Angaben zum Text DEMO:');
              WRITELN('H”he in Punkten  : ',Hoehe);
              WRITELN('Breite in Punkten: ',Breite);
          end;               { Ende Procedure SETTINGSDEMO }

          Procedure MELDUNG;   { Meldung ausgeben }
          VAR
              ch:CHAR;
          begin
              WHILE KEYPRESSED DO
                  ch:=READKEY;
              SETTEXTSTYLE(0,horizdir,1);
              SETTEXTJUSTIFY(lefttext,centertext);
              OUTTEXTXY(150,GETMAXY-50,'Weiter mit Taste');
              ch:=READKEY;
          end;

          BEGIN            { HAUPTPROGRAMM }

          ZEICHENDEMO;     { Procedur aufrufen }
          treiber:=DETECT;modi:=1;col:=1;
          INITGRAPH(treiber,modi,'');
          IF GRAPHRESULT <> 0 THEN
            begin
             WRITELN('Grafiktreiber nicht gefunden!');
             HALT(1);
            end;
          STYLEDEMO; MELDUNG;CLEARDEVICE;
          JUSTIFYDEMO; MELDUNG;CLEARDEVICE;
          USERSIZEDEMO; MELDUNG;CLEARDEVICE;
          TEXTHEIGHTDEMO;TEXTWIDTHDEMO;
          IF textmodus THEN begin
             SETGRAPHMODE(1);
             CLOSEGRAPH;
          end ELSE CLOSEGRAPH;
          SETTINGSDEMO;
          WRITELN('Anzeige beenden mit Return.');
          READLN;
          END.              { Ende HAUPTPROGRAMM }
