home *** CD-ROM | disk | FTP | other *** search
/ Black Box 4 / BlackBox.cdr / progc / c_all592.arj / TI453.ASC < prev    next >
Text File  |  1992-02-25  |  4KB  |  199 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.   PRODUCT  :  TURBO C                                NUMBER  :  453
  9.   VERSION  :  2.0
  10.        OS  :  PC-DOS
  11.      DATE  :  MARCH 10, 1989                           PAGE  :  1/3
  12.  
  13.     TITLE  :  PRINTING GRAPHICS
  14.  
  15.  
  16.  
  17.  
  18.   The following code is an example function which prints a graphics
  19.   screen on an Epson compatible printer.
  20.  
  21.  
  22.   PROTOTYPE: printimage(int left, int top, int right, int bottom);
  23.  
  24.   -----------------------------------------------------------------
  25.  
  26.   #include <graphics.h>
  27.   #include <stdio.h>
  28.   #include <io.h>
  29.  
  30.  
  31.   #define        ESC       '\x1B'
  32.   #define        LPT1      0
  33.   #define        LPT2      1
  34.  
  35.   #define        prn_putc(x)    biosprint(0,(x),LPT1)
  36.  
  37.  
  38.  
  39.   /*  Sets Epson printer to bit image mode.
  40.       Nbytes is the number of bytes to print.  */
  41.  
  42.   static void bitImage(int Nbytes)
  43.   {
  44.  
  45.       register int    n1, n2;
  46.  
  47.       n2 = Nbytes >> 8;
  48.       n1 = Nbytes - (n2 << 8);
  49.  
  50.       prn_putc(ESC);
  51.       prn_putc('*');
  52.       prn_putc(4);
  53.       prn_putc(n1);
  54.       prn_putc(n2);
  55.  
  56.   }
  57.  
  58.   /*  Get pixels from the screen and convert them to
  59.       the printer's pin order.  */
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.  
  71.  
  72.  
  73.  
  74.   PRODUCT  :  TURBO C                                NUMBER  :  453
  75.   VERSION  :  2.0
  76.        OS  :  PC-DOS
  77.      DATE  :  MARCH 10, 1989                           PAGE  :  2/3
  78.  
  79.     TITLE  :  PRINTING GRAPHICS
  80.  
  81.  
  82.  
  83.  
  84.   static unsigned char getScrBits(int x, int y)
  85.   {
  86.       unsigned char firePins;
  87.  
  88.       firePins  = (getpixel(x, y++)==0)? 0: 0x80;
  89.       firePins |= (getpixel(x, y++)==0)? 0: 0x40;
  90.       firePins |= (getpixel(x, y++)==0)? 0: 0x20;
  91.       firePins |= (getpixel(x, y++)==0)? 0: 0x10;
  92.       firePins |= (getpixel(x, y++)==0)? 0: 0x08;
  93.       firePins |= (getpixel(x, y++)==0)? 0: 0x04;
  94.       firePins |= (getpixel(x, y++)==0)? 0: 0x02;
  95.       firePins |= (getpixel(x, y  )==0)? 0: 0x01;
  96.  
  97.       return     firePins;
  98.   }
  99.  
  100.   /*  Graphics print function.  */
  101.  
  102.   int printimage(int left, int top, int right, int bottom)
  103.   {
  104.       int        x, y, width, height;
  105.  
  106.       width  = right-left;
  107.       height = bottom-top;
  108.  
  109.       /* Initialize line spacing to 7/72" */
  110.       prn_putc(ESC);
  111.       prn_putc('1');
  112.  
  113.       for (y=0; y<height; y+=8)
  114.       {
  115.             bitImage(width);
  116.  
  117.             for (x=0; x<width; x++)
  118.                  prn_putc(getScrBits(x,y));
  119.  
  120.             prn_putc('\n');
  121.       }
  122.       return     0;
  123.   }
  124.  
  125.   /****************************************************************
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.   PRODUCT  :  TURBO C                                NUMBER  :  453
  141.   VERSION  :  2.0
  142.        OS  :  PC-DOS
  143.      DATE  :  MARCH 10, 1989                           PAGE  :  3/3
  144.  
  145.     TITLE  :  PRINTING GRAPHICS
  146.  
  147.  
  148.  
  149.  
  150.       An example program which demonstrates a call to the above
  151.       function.
  152.  
  153.   ****************************************************************/
  154.  
  155.   main(){
  156.  
  157.     int driver, mode,x,y;
  158.     driver = DETECT; /* autodetect */
  159.     mode = 0;
  160.     initgraph(&driver, &mode, "");
  161.     x=getmaxx();
  162.     y=getmaxy();
  163.  
  164.     /* draw some things */
  165.     rectangle(0,0,x,y);
  166.     circle(300,200,100);
  167.     circle(210,110,50);
  168.     circle(390,110,50);
  169.     circle(270,170,10);
  170.     circle(272,173,3);
  171.     circle(330,170,10);
  172.     circle(332,173,3);
  173.     circle(300,200,10);
  174.     moveto(280,220);
  175.     lineto(290,230);
  176.     lineto(310,230);
  177.     lineto(320,220);
  178.  
  179.     /* Call the graphics print function. */
  180.     printimage(0,0,x,y);  /* Print the entire screen. */
  181.  
  182.     closegraph();
  183.     return 0;
  184.   }
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.