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

BOTTOM LIVE script

Fawlty Towers script for "A Touch of Class"