PRODUCT : Borland C++ NUMBER : 720 VERSION : 2.0 OS : DOS DATE : October 19, 1993 PAGE : 1/3 TITLE : Printing a Graphics Screen to an Epson Printer /************************************************************ Name PrintImage Description Prints an image to an Epson compatible printer, ala GetImage and PutImage. Syntax printimage(int x1, int y1, int x2, int y2); ************************************************************/ #include #include #include #define ESC '\x1B' #define LPT1 0 #define LPT2 1 #define prn_putc(x) biosprint(0,(x),LPT1) /* Sets Epson printer to bit image mode. N is the number of bytes to print. */ static void bitImage(int N) { register int n1, n2; n2 = N >> 8; n1 = N - (n2 << 8); prn_putc(ESC); prn_putc('*'); prn_putc(4); /* K=standard density, L=double density, Y=dbl speed + dbl density, Z=quad density */ prn_putc(n1); prn_putc(n2); } /* Get pixels from the screen and convert them to PRODUCT : Borland C++ NUMBER : 720 VERSION : 2.0 OS : DOS DATE : October 19, 1993 PAGE : 2/3 TITLE : Printing a Graphics Screen to an Epson Printer the printer's pin order. */ static unsigned char getScrBits(int x, int y) { unsigned char firePins; firePins = (getpixel(x, y++)==0)? 0: 0x80; firePins |= (getpixel(x, y++)==0)? 0: 0x40; firePins |= (getpixel(x, y++)==0)? 0: 0x20; firePins |= (getpixel(x, y++)==0)? 0: 0x10; firePins |= (getpixel(x, y++)==0)? 0: 0x08; firePins |= (getpixel(x, y++)==0)? 0: 0x04; firePins |= (getpixel(x, y++)==0)? 0: 0x02; firePins |= (getpixel(x, y )==0)? 0: 0x01; return firePins; } /* Prints the image */ int printimage(int x1, int y1, int x2, int y2) { int x, y, width, height; width = x2-x1; height = y2-y1; for (y=0; y