home *** CD-ROM | disk | FTP | other *** search
-
- UNIT GRAPHWIN;
-
-
- INTERFACE
-
-
- USES TPCRT,DOS,GRAPH;
-
-
- TYPE WINTYPE = (WOPEN,WCLOSE);
-
- TYPE FONTTYPE = (GROSS,KLEIN);
-
-
- PROCEDURE TWINDOW(W,H:WORD;WAS:WINTYPE;TITEL:STRING);
-
- FUNCTION CHRHIG:BYTE; { ZEICHENHÖHE IN PIXEL }
- FUNCTION NCHARS:BYTE; { ANZAHL ZEICHEN PRO ZEILE }
- FUNCTION NLINES:BYTE; { ANZAHL ZEILEN PRO BILDSCHIRM }
- PROCEDURE LOADFONT(T:FONTTYPE);
-
-
-
- IMPLEMENTATION
-
-
- VAR VS : VIEWPORTTYPE;
- SAVSCR : POINTER;
-
-
- PROCEDURE TWINDOW(W,H:WORD;WAS:WINTYPE;TITEL:STRING);
- VAR XN1,YN1,XN2,YN2 : WORD;
- XW1,YW1,XW2,YW2 : WORD;
- SIZE : WORD;
- I : INTEGER;
- BEGIN
- INC(W); INC(H);
- XW1 := ((NCHARS-W) DIV 2) + 1;
- XW2 := XW1 + W;
- YW1 := ((NLINES-H) DIV 2);
- YW2 := YW1 + H;
- XN1 := (XW1-1) * 8;
- XN2 := XW2 * 8;
- YN1 := (YW1-1) * CHRHIG;
- YN2 := YW2 * CHRHIG;
- SIZE := IMAGESIZE(XN1,YN1,XN2,YN2);
- CASE WAS OF
- WOPEN : BEGIN
- IF MAXAVAIL < SIZE THEN BEGIN
- {@@@}
- (*
- ALERT('zu wenig Speicher');
- *)
- WRITELN;
- WRITELN(' *** ZU WENIG SPEICHER *** ');
- EXIT;
- END;
- GETVIEWSETTINGS(VS);
- SETVIEWPORT(0,0,GETMAXX,GETMAXY,CLIPON);
- GETMEM(SAVSCR,SIZE);
- GETIMAGE(XN1,YN1,XN2,YN2,SAVSCR^);
- SETVIEWPORT(XN1,YN1,XN2,YN2,CLIPON);
- CLEARVIEWPORT;
- SETVIEWPORT(XN1+8,YN1+CHRHIG,XN2-8,YN2-CHRHIG,CLIPON);
-
- WINDOW(XW1,YW1,XW2,YW2+1);
- GOTOXY(1,1);
- WRITE('╔'); FOR I := 2 TO W DO WRITE('═'); WRITE('╗');
- FOR I := 2 TO H+1 DO BEGIN
- GOTOXY(1,I); WRITE('║');
- GOTOXY(W+1,I); WRITE('║');
- END;
- GOTOXY(1,H+1);
- WRITE('╚'); FOR I := 2 TO W DO WRITE('═'); WRITE('╝');
- IF LENGTH(TITEL) > 0 THEN BEGIN
- GOTOXY(SUCC((SUCC(W)-LENGTH(TITEL))) SHR 1,1);
- WRITE(' ',TITEL,' ');
- END;
- WINDOW(XW1+1,YW1+1,XW2-1,YW2-1);
- END;
- WCLOSE : BEGIN
- WINDOW(1,1,NCHARS,NLINES);
- SETVIEWPORT(0,0,GETMAXX,GETMAXY,CLIPON);
- PUTIMAGE(XN1,YN1,SAVSCR^,NORMALPUT);
- FREEMEM(SAVSCR,SIZE);
- SETVIEWPORT(VS.X1,VS.Y1,VS.X2,VS.Y2,VS.CLIP);
- END;
- END; { CASE }
- END;
-
-
- (* ****************************************************************** *)
- {
- FUNKTIONEN ÜBER BIOS- RAM
- }
-
- FUNCTION CHRHIG:BYTE; { ZEICHENHÖHE IN PIXEL }
- BEGIN
- CHRHIG := MEM[$40:$85];
- END;
-
- FUNCTION NCHARS:BYTE; { ANZAHL ZEICHEN PRO ZEILE }
- BEGIN
- NCHARS := MEM[$40:$4A];
- END;
-
- FUNCTION NLINES:BYTE; { ANZAHL ZEILEN PRO BILDSCHIRM }
- BEGIN
- NLINES := SUCC(MEM[$40:$84]);
- END;
-
-
- (* ****************************************************************** *)
- {
- FUNKTIONEN ÜBER INT 10H
- }
-
-
- PROCEDURE LOADFONT(T:FONTTYPE);
- VAR R : REGISTERS;
- BEGIN
- WITH R DO BEGIN
- AH := $11;
- CASE T OF
- GROSS : BEGIN
- AL := $22; { 8 * 14 ZEICHENSATZ }
- MEM[$40:$84] := 24;
- END;
- KLEIN : BEGIN
- AL := $23; { 8 * 8 ZEICHENSATZ }
- MEM[$40:$84] := 42;
- END;
- END; { CASE }
- BL := $00;
- DL := NLINES; { ANZAHL ZEILEN }
- INTR($10,R); { BIOS }
- END; { WITH }
- END;
-
-
-
- END.
-