TURBO C printing graphics








  PRODUCT  :  TURBO C                                NUMBER  :  453
  VERSION  :  2.0
       OS  :  PC-DOS
     DATE  :  MARCH 10, 1989                           PAGE  :  1/3

    TITLE  :  PRINTING GRAPHICS




  The following code is an example function which prints a graphics
  screen on an Epson compatible printer.


  PROTOTYPE: printimage(int left, int top, int right, int bottom);

  -----------------------------------------------------------------

  #include <graphics.h>
  #include <stdio.h>
  #include <io.h>


  #define        ESC       '\x1B'
  #define        LPT1      0
  #define        LPT2      1

  #define        prn_putc(x)    biosprint(0,(x),LPT1)



  /*  Sets Epson printer to bit image mode.
      Nbytes is the number of bytes to print.  */

  static void bitImage(int Nbytes)
  {

      register int    n1, n2;

      n2 = Nbytes >> 8;
      n1 = Nbytes - (n2 << 8);

      prn_putc(ESC);
      prn_putc('*');
      prn_putc(4);
      prn_putc(n1);
      prn_putc(n2);

  }

  /*  Get pixels from the screen and convert them to
      the printer's pin order.  */














  PRODUCT  :  TURBO C                                NUMBER  :  453
  VERSION  :  2.0
       OS  :  PC-DOS
     DATE  :  MARCH 10, 1989                           PAGE  :  2/3

    TITLE  :  PRINTING GRAPHICS




  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;
  }

  /*  Graphics print function.  */

  int printimage(int left, int top, int right, int bottom)
  {
      int        x, y, width, height;

      width  = right-left;
      height = bottom-top;

      /* Initialize line spacing to 7/72" */
      prn_putc(ESC);
      prn_putc('1');

      for (y=0; y<height; y+=8)
      {
            bitImage(width);

            for (x=0; x<width; x++)
                 prn_putc(getScrBits(x,y));

            prn_putc('\n');
      }
      return     0;
  }

  /****************************************************************














  PRODUCT  :  TURBO C                                NUMBER  :  453
  VERSION  :  2.0
       OS  :  PC-DOS
     DATE  :  MARCH 10, 1989                           PAGE  :  3/3

    TITLE  :  PRINTING GRAPHICS




      An example program which demonstrates a call to the above
      function.

  ****************************************************************/

  main(){

    int driver, mode,x,y;
    driver = DETECT; /* autodetect */
    mode = 0;
    initgraph(&driver, &mode, "");
    x=getmaxx();
    y=getmaxy();

    /* draw some things */
    rectangle(0,0,x,y);
    circle(300,200,100);
    circle(210,110,50);
    circle(390,110,50);
    circle(270,170,10);
    circle(272,173,3);
    circle(330,170,10);
    circle(332,173,3);
    circle(300,200,10);
    moveto(280,220);
    lineto(290,230);
    lineto(310,230);
    lineto(320,220);

    /* Call the graphics print function. */
    printimage(0,0,x,y);  /* Print the entire screen. */

    closegraph();
    return 0;
  }

  DISCLAIMER: You  have the right to use this technical information
  subject to the terms  of  the  No-Nonsense License Statement that
  you received with  the  Borland product to which this information
  pertains.









Comments

Popular posts from this blog

PHILEMON

War of the World TV series