home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* GRAPHHC.PAS *)
- (* Prozedur zum Grafikausdruck eines beliebigen *)
- (* Bildschirmbereichs *)
- (* (c) 1989 Christian Ramsauer & TOOLBOX *)
- (* ------------------------------------------------------ *)
- UNIT GraphHC;
-
- INTERFACE
-
- USES Crt, Graph, Printer;
-
- PROCEDURE GraphHardcopy;
- (* Diese Prozedur muß aufgerufen werden, um in einem *)
- (* eigenen Programm eine Grafikhardcopy am Drucker *)
- (* auszugeben ! *)
-
- IMPLEMENTATION
-
- PROCEDURE GraphHardcopy;
-
- VAR x1, x2, y1, y2, xmax, ymax, grmode : INTEGER;
- ch : CHAR;
- gr : WORD;
- bits : BYTE;
- p : POINTER;
-
- PROCEDURE Hardcopy(x1, y1, x2, y2 : WORD);
- CONST bt : ARRAY[1..6] OF BYTE = (128,64,32,16,8,4);
- VAR i, j, k : INTEGER;
- BEGIN
- k := x2 - x1 + 1;
- WriteLn(LST, #27, 'A', #6, #27, '2');
- REPEAT
- Write(LST,#27,'L',Chr(k MOD 256),Chr(k DIV 256));
- FOR i := x1 TO x2 DO BEGIN
- bits := 0;
- j := 0;
- WHILE (y1 +j <= y2) AND (j < 6) DO BEGIN
- j := j + 1;
- IF GetPixel(i, y1 + j - 1) <> 0 THEN
- bits := bits + bt[j];
- END;
- Write(LST, Chr(bits));
- END;
- WriteLn(LST);
- y1 := y1 + 6;
- UNTIL y1 >= y2;
- END;
-
- BEGIN
- xmax := GetMaxX;
- ymax := GetMaxY;
- gr := ImageSize(0, 0, xmax, ymax);
- GetMem(p, gr);
- GetImage(0, 0, xmax, ymax, p^);
- grmode := GetGraphMode;
- RestoreCrtMode;
- ClrScr;
- REPEAT
- WriteLn('Grafik-Hardcopy-Routine:');
- WriteLn;
- Write('x-Koordinate der linken oberen Ecke: ');
- ReadLn(x1);
- Write('y-Koordinate der linken oberen Ecke: ');
- ReadLn(y1);
- Write('x-Koordinate der rechten unteren Ecke: ');
- ReadLn(x2);
- Write('y-Koordinate der rechten unteren Ecke: ');
- ReadLn(y2);
- WriteLn;
- UNTIL (x1 > -1) AND (x2 < xmax) AND (x1 <= x2) AND
- (y1 > -1) AND (y2 < ymax) AND (y1 <= y2);
- Write('Hardcopy ausführen ? (J/N) ');
- ch := ReadKey;
- SetGraphMode(grmode);
- PutImage(0, 0, p^, 0);
- FreeMem(p, gr);
- IF UpCase(ch) = 'J' THEN Hardcopy(x1, y1, x2, y2);
- END;
-
- END.
- (* ------------------------------------------------- *)
- (* Ende von GRAPHHC.PAS *)