home *** CD-ROM | disk | FTP | other *** search
/ Virtual Reality Zone / VRZONE.ISO / mac / PC / PCGLOVE / GLOVE / OBJGLV.ZIP / INCLUDE / DEMO4B / VD2.HPP < prev    next >
C/C++ Source or Header  |  1993-05-12  |  4KB  |  120 lines

  1. /* Prototypes for low-level graphics routines */
  2.  
  3. /* Written by Dave Stampe, Summer 1992 */
  4.  
  5. /* Copyright 1992 by Dave Stampe and Bernie Roehl.
  6.    May be freely used to write software for release into the public domain;
  7.    all commercial endeavours MUST contact Bernie Roehl and Dave Stampe
  8.    for permission to incorporate any part of this software into their
  9.    products!
  10.  */
  11.  
  12. #define MAIN_VGA  1  /* for multi-VGA only */
  13. #define LEFT_VGA  2
  14. #define RIGHT_VGA 4
  15. #define ALL_VGA   7
  16.  
  17. #define PUT 0           /* defines of VGA write modes */
  18. #define AND 1           /* for use with setup_hdwe()  */
  19. #define OR  2
  20. #define XOR 3
  21.  
  22.     void *far screen_data();
  23.  
  24. extern "C" {
  25.  
  26.     void far VGA_select(int card);
  27.  
  28.     void far set_clip_rect(int l, int t, int r, int b);
  29.  
  30.     void far vsync();                /* pause till vert. retrace */
  31.  
  32.     void far set_vpage(int page);    /* set video page thru BIOS */
  33.  
  34.  
  35.     void far setup_hdwe(int mode);  /* setup VGA for bunch of line */
  36.                        /* or poly draws: once per set */
  37.  
  38.     void far reset_hdwe();  /* reset VGA to BIOS state after drawing */
  39.  
  40.              /* clear video page to solid color: 10 mS */
  41.              /* returns -1 if bad page #             */
  42.     int far clr_page(int page, int color);
  43.  
  44.             /* copy one page to another for use as */
  45.             /* background: 21 mS per call          */
  46.             /* returns -1 if bad page #            */
  47.     int far copy_page(int source, int dest);
  48.  
  49.             /* fast VGA line draw: about 15600 24-pixel */
  50.             /* vectors/sec (horizontal much faster)     */
  51.     void far vgaline(int x1, int y1, int x2, int y2, int color);
  52.  
  53.             /* VGA point set; no clipping */
  54.     void far vgapoint(int x, int y, int color);
  55.  
  56.             /* does C-S clipping and draws line   */
  57.     void far clipline(int x1, int y1, int x2, int y2, int color);
  58.  
  59.     void far set_gmode(int);              /* enters 320x200x16 mode, clears screen */
  60.     void far exit_gmode();             /* exits to text mode */
  61.  
  62.     int far set_drawpage(int page); /* set page for drawing on (0-7)   */
  63.  
  64.             /* N_SIDED POLY DRAW for up to 20-sided  */
  65.             /* convex polygons.  Pass pointer to int */
  66.             /* array with X, Y coords in that order  */
  67.             /* and count.  No clipping, CCW order    */
  68.  
  69.     void far fastpoly(int count, int far *pcoords, int color);
  70.  
  71.             /* same as fastpoly() but with color cycling */
  72.             /* and masking (halftone).  Color cycles in  */
  73.             /* its lowest 4 bits, up then down.  Bit 8   */
  74.             /* has been added as a "sign" bit for the    */
  75.             /* initial cycle direction. 0000000SHHHHCCC  */
  76.             /* the mask is XOR'ed with the toggle every  */
  77.             /* line for 2x8 halftone patterns            */
  78.     void far m_fastpoly(int count, int far *pcoords, int color, int gmask, int toggle);
  79.  
  80.             /* print text in foreground only-- */
  81.             /* reversed = 1 for right-to-left  */
  82.             /* with x now right side of text   */
  83.     void far printxyr(int x, int y, int color, char far *pstring, int reversed);
  84.  
  85.             /* draw "+" cursor on screen      */
  86.             /* save s screen under cursor     */
  87.     void far draw_cursor(int x, int y, int color, int savebuff);
  88.  
  89.                  /* restores 8x8 area saved when   */
  90.     void far erase_cursor(int savebuff); /* cursor was drawn               */
  91.  
  92.             /* copy any byte-aligned rectangle  */
  93.             /* this is evey 4 pixels for Y mode */
  94.             /* but every 8 for 16-color mode    */
  95.             /* x coords (left) are truncated to */
  96.             /* left byte boundary: x size is    */
  97.             /* bumped up to next full byte count */
  98.     int far copy_block(int spage, int sx, int sy,  /* source */
  99.               int dpage, int dx, int dy,  /* dest   */
  100.               int xs, int ys);            /* # lines, pixels */
  101.  
  102.             /* clear any byte-aligned block       */
  103.             /* 15-30% slower than full page clear */
  104.             /* left edge rounded down, right edge */
  105.             /* rounded up to nearest byte boundary */
  106.     int far clr_block(int left, int top, int right, int bottom,
  107.                int page, int color);
  108.  
  109.             /* 3 entries each for n colors: RGB, 0->63 */
  110.             /* load always starts with slot 0          */
  111.             /* set pal=NULL for default (still give n) */
  112.             /* bw=1 will transform palette into B&W    */
  113. }
  114.  
  115.     void far load_DAC_colors(char far *pal, int n, int bw);
  116.  
  117.     void far read_DAC_colors(char far *pal, int n);
  118.  
  119. /* End of f3dkitd.h */
  120.