Ниже представлена программа, копирующая содержимое экрана на лазерный принтер, поддерживающий язык PCL.
21 // File Example2.cpp #include <bios.h> #include <conio.h> #include <graphics.h> #include <process.h> #include <stdio.h>
int port = 0; //useLPTI:
inline int print ( char byte )
{
return biosprint ( 0, byte, port);
}
int printStr ( char * str) {
int st;
while (*str != W )
if (( st = print (*str++ )) & 1 ) return st;
4. Работа с основными графическими устройствам
return 0;
}
void printScreenLJ ( int x1, int y1, int x2, int y2 ) {
int numCols -x2-x1 + 1;
int byte; char str [20];
printStr ( "\x1 B*t150R" ); // set density 150 dpi prirfStr ( "\x1 B&a5CH ); // move cursor to col 5 printStr ( "\x1 B*r1 A" ); // begin raster graphics
// prepare line header sprintf ( str, H\x1B*b%dW", (numCols+7)»3);
for ( int y = y1 ; y <= y2; y++ ) {
printStr ( str );
for ( int x = x1; x <= x2; )
{
byte = 0;
for ( int i = 0; i < 8 && x <= x2; i++, x++ ) if ( getpixel ( x, y ) > 0 )
byte |= 0x80 » i;
Print ( byte );
}
}
printStr ("\x1B*rB" );
}
main () {
int driver = DETECT;
int mode; int res;
initgraph ( &driver, &mode, "" ); if ( ( res = graphresult () ) != grOk )
{
printf("\nGraphics error: %s\n", grapherrormsg (res) ); exit ( 1 );
}
line ( 0, 0, 0, getmaxy () ); line ( 0, getmaxy (), getmaxx (), getmaxy () ); line ( getmaxx (), getmaxy (), getmaxx (), 0 ); line ( getmaxx (), 0, 0, 0 );
for ( int i = TRIPLEX_FONT; i <= GCTHiC_FONT; i++ ) {
settextstyle ( i, HORIZ_DIRf 5 ); outtextxy ( 100, 50*i, "Some string" );
}
getch ();
Компьютерная графика. Полигональные модели
printScreenLJ ( 0, 0, getmaxx (), getmaxy ()); closegraph ();
4.5.4. PostScript-устройства Наиболее высококачественные и дорогие устройства вывода (принтеры, фотонаборные автоматы) обычно управляются не набором Esc-последовательностей, а при помощи языка PostScript.
PostScript - это специальный язык для описания страницы. Он является полноценным языком программирования - в нем можно вводить переменные, есть условный оператор и оператор цикла, можно вводить свои функции.