home *** CD-ROM | disk | FTP | other *** search
/ Resource Library: Graphics / graphics-16000.iso / win3x / viewers / hcsvga / hicolor.h < prev    next >
C/C++ Source or Header  |  1993-12-02  |  7KB  |  221 lines

  1. /*
  2.  * HiColor.H
  3.  *
  4.  * Copyright 1990,1991 Synergrafix Consulting
  5.  *          All Rights Reserved.
  6.  *
  7.  * November 19,1991
  8.  *
  9.  */
  10.  
  11. #ifndef HC_INCLUDE
  12.  
  13. #ifdef __386__
  14. #define ADD2LINADD(a)       ((a)<<4)
  15. #endif
  16.  
  17. #define HC_INCLUDE    1
  18.  
  19. #include <dos.h>
  20. #include <malloc.h>
  21. #include <string.h>
  22. #include <conio.h>
  23.  
  24. #define HC_VESA        1
  25. #define HC_TSENG4   2
  26. #define HC_ATIXL    3
  27.  
  28. #define HC_SVGALO    0   /* 640x350 */ /* Not all modes supported on all */
  29. #define HC_SVGAMED    1   /* 640x400 */ /* graphics hardware!!! */
  30. #define HC_SVGAHI    2   /* 640x480 */
  31. #define HC_SVGAHI2    3   /* 800x600 */
  32. #define HC_SVGAHI3    4   /* 1024x768 */
  33. #define HC_SVGAHI4    5   /* 1280x1024 */
  34.  
  35. #define    XOR    0
  36. #define OR    1
  37. #define COPY    2
  38.  
  39. /* TSENG Modes: 0x2D=640x350; 0x2E=640x480; 0x2F=640x400; 0x30=800x600 */
  40.  
  41. #ifndef FALSE
  42. #define FALSE    0
  43. #define TRUE    !FALSE
  44. #endif
  45.  
  46. #define SCREENSEG    0xA000
  47. #define GCSEGSEL    0x3CD
  48.  
  49. #define DAC_MASK  0x3C6 /* DAC pixel mask reg address, also Sierra
  50.                command reg address when enabled */
  51.  
  52. #define DAC_WADDR 0x3C8  /* DAC write address reg address */
  53.  
  54. #ifndef BYTE
  55. typedef unsigned char BYTE;
  56. #endif
  57. #ifdef __386__
  58. #include <i86.h>
  59. #define ax eax
  60. #define bx ebx
  61. #define cx ecx
  62. #define dx edx
  63. #define di edi
  64. #define si esi
  65. #define int86 int386
  66. #define int86x int386x
  67. #ifndef WORD
  68. typedef unsigned short int WORD;
  69. #endif
  70. #ifndef DWORD
  71. typedef unsigned int DWORD;
  72. #endif
  73. #else
  74. #ifndef WORD
  75. typedef unsigned int WORD;
  76. #endif
  77. #ifndef DWORD
  78. typedef unsigned long DWORD;
  79. #endif
  80. #endif
  81.  
  82. #define RGB256INT(r,g,b)    (WORD)( ( ((r)>>3)<<10 ) | ( ((g)>>3)<<5 ) | ((b)>>3) )
  83. //#define RGB256INT(r,g,b)    (WORD)( _rlu[r] | _glu[g] | _blu[b] )
  84. #define RGBINT(r,g,b)        (WORD)( ((r)<<10) | ((g)<<5) | (b) )
  85. #define INTRED(c)            ((WORD)(c)>>10)
  86. #define INTGREEN(c)            (((WORD)(c)<<5)>>10)
  87. #define INTBLUE(c)            (((WORD)(c)<<10)>>10)
  88. #define INTRED256(c)        (INTRED(c)<<3)
  89. #define INTGREEN256(c)        (INTGREEN(c)<<3)
  90. #define INTBLUE256(c)       (INTBLUE(c)<<3)
  91. #define RGB256GREY(r,g,b)    (((WORD)r*77+(WORD)g*150+(WORD)b*29)>>8)
  92. #define RGBGREY(r,g,b)        (((WORD)(r)*10+(WORD)(g)*18+((WORD)(b)<<2))>>5)
  93. #define SWAP(a,b)        { a^=b; b^=a; a^=b; }
  94.  
  95. void hcmodinx(WORD pt,WORD inx,WORD mask,WORD nwv);
  96.  
  97. #define BANK(b)        { if (b!=hcoldbank) {                  \
  98.                 hcoldbank=b;                \
  99.                 switch (hcgrcard) {                     \
  100.                     case HC_VESA:                   \
  101.                         hcbankregs.x.ax=0x4f05; \
  102.                         hcbankregs.x.bx=0;      \
  103.                         hcbankregs.x.dx=b;      \
  104.                         int86(0x10, &hcbankregs,&hcbankregs);\
  105.                         break;                  \
  106.                     case HC_TSENG4:                 \
  107.                         outp(GCSEGSEL, (b<<4)|b);\
  108.                         break;                  \
  109.                     case HC_ATIXL:                  \
  110.                         hcmodinx(hcatireg,0xb2,0xee,b*0x22);\
  111.                         break;                  \
  112.                     }                               \
  113.                 }                                   \
  114.             }
  115.  
  116. #define DOBANK        BANK(*(((WORD *)&hcbitmap)+1));
  117.  
  118. extern WORD hcoldbank;
  119. extern DWORD hcbitmap;
  120. extern WORD hcmaxx,hcmaxy,hcmaxc;
  121. extern union REGS hcbankregs;
  122.  
  123. /* HICOLOR.C 19/12/91 10.11.22 */
  124.  
  125. int hicolorDAC (void);
  126. int tseng4000 (void);
  127. int hcsetmodetseng (int Mode,int hardcheck);
  128. int atixl (void);
  129. int hcsetmodeatixl(int Mode,int hardcheck);
  130. int vesagetinfo(void);
  131. int vesagetmodeinfo(int nmode);
  132. int vesabytesperline(int mode);
  133. int vesacard (void);
  134. int vesasetmode(int nmode);
  135. int hcsetmodevesa(int Mode,int hardcheck);
  136. int hcgetcard(void);
  137. int hcsetmode(int mode,int hardcheck);
  138. int hcmodesize(int picwidth,int picheight);
  139. char *hccardtype(int card);
  140. char *hcmodetype(int card,int mode);
  141. WORD hcgetcrtmode();
  142. void hctextmode (void);
  143. void hcrestoretxtmode(void);
  144. void hcputpoint (WORD x, WORD y, WORD color);
  145. void hcputpointxor (WORD x, WORD y, WORD color);
  146. void hcputpointrgb (WORD x, WORD y, WORD r, WORD g, WORD b);
  147. WORD rgb265int (WORD r, WORD g, WORD b);
  148. WORD rgbint (WORD r, WORD g, WORD b);
  149. void intrgb256 (WORD color, WORD *r, WORD *g, WORD *b);
  150. void intrgb (WORD color, WORD *r, WORD *g, WORD *b);
  151. WORD hcgetpoint (WORD x, WORD y);
  152. void hcgetpointrgb (WORD x, WORD y, WORD *r, WORD *g, WORD *b);
  153. WORD hcgetmaxx (void);
  154. WORD hcgetmaxy (void);
  155. WORD hcgetmaxcolor (void);
  156. void hchline (WORD x, WORD y, WORD x1, register WORD color);
  157. void hcvline (WORD x, WORD y, WORD y1, register WORD color);
  158. void hchlinexor (WORD x, WORD y, WORD x1, register WORD color);
  159. void hcvlinexor (WORD x, WORD y, WORD y1, register WORD color);
  160. void hcrectangle (WORD x, WORD y, WORD x1, WORD y1, WORD color);
  161. void hcrectanglexor (WORD x, WORD y, WORD x1, WORD y1, WORD color);
  162. void hcline(int a1, int b1, int a2, int b2, WORD lcolor);
  163. void hclinexor(int a1, int b1, int a2, int b2, WORD lcolor);
  164. void hccircle(WORD xc,WORD yc,WORD rad,WORD color);
  165. void hcfillcircle(WORD xc,WORD yc,WORD rad,WORD color);
  166. void hcbar (WORD x, WORD y, WORD x1, WORD y1, register WORD color);
  167. void hcclrscr (WORD color);
  168. void hcputrow (WORD x, WORD y, register WORD w, register WORD *buf);
  169. void hcputrowxor (WORD x, WORD y, register WORD w, register WORD *buf);
  170. void hcputrowor (WORD x, WORD y, register WORD w, register WORD *buf);
  171. void hcgetrow (WORD x, WORD y, register WORD w, register WORD *buf);
  172. DWORD hcgetimagesize (register WORD left, register WORD top, register WORD right,register WORD bottom);
  173. void hcgetimage (WORD left, WORD top, WORD right, WORD bottom, WORD *bitmap);
  174. void hcputimage (WORD left, WORD top, WORD *bitmap, WORD drawtype);
  175. void hcputchr (unsigned char ch, WORD xpos, WORD ypos, WORD fg, WORD background,WORD drawtype);
  176. void hcputstr (char *str, WORD xpos, WORD ypos, WORD fg, WORD background,WORD drawtype);
  177. void hcfill(int x,int y,int ncolor);
  178. void hcpfill(int x,int y,int bordcol,WORD *pat,int pw,int ph);
  179. WORD *hcimagetopattern(WORD *bitmap,WORD *w,WORD *h);
  180.  
  181. /* MOUSE.C */
  182.  
  183. #define GRCURSORSIZEX    11    /* Max. graphics cursor width in pixels */
  184. #define GRCURSORSIZEY    15    /* Max. cursor height in pixels + 1 */
  185. #define GRCURSORNUM    10    /* Max number of default and definable cursors */
  186.  
  187. #define ARROWCURSOR        0    /* Graphics cursor types */
  188. #define SMALLARROWCURSOR    1
  189. #define CROSSHAIR        2
  190. #define SMALLCROSSHAIR        3
  191. #define DIAGCROSSHAIR        4
  192.  
  193. typedef int    grcursortype[GRCURSORSIZEX][GRCURSORSIZEY];
  194. typedef char    mousestr[80];
  195.  
  196.        /* Mouse driver control */
  197.  
  198. int  initmouse(void);                /* Init. mouse driver */
  199. void showmouse(void);                /* Show (text) cursor */
  200. void hidemouse(void);                /* Unshow (text) cursor */
  201. void getmouse(int *x,int *y,int *buttons);/* Get position */
  202. void putmouse(int x,int y);            /* Place mouse */
  203. void getmousebuttonon(int button,int *buttonstate,
  204.               int *numpresses,int *x,int *y);/* Get buttons pressed */
  205. void getmousebuttonoff(int button,int *buttonstate,
  206.                int *numreleases,int  *x,int *y);/* Get buttons released */
  207. void setmouserange(int x,int y,int x1,int y1);    /* Set range */
  208. void getmousemotion(int *x,int *y);        /* Get movement */
  209. void setmousemove(int x,int y);            /* Set sensitivity */
  210.  
  211.        /* Mouse cursor routines for BGI Graphics */
  212.  
  213. void setgrcursor(int index,grcursortype newgrcursor);/* Set cursor bitmap */
  214. void putgrcursor(int x,int y);        /* Place graphics cursor */
  215. void unputgrcursor(void);        /* Remove graphics cursor */
  216. int getgrcursorx(void);                 /* Get current postn */
  217. int getgrcursory(void);
  218. int initgrcursor(int grcursorindex,int color);/* Init. graphics cursor */
  219. void closegrcursor(void);
  220.  
  221. #endif