- make vga buildable on msvc.
[reactos.git] / reactos / drivers / video / displays / vga / vgavideo / vgavideo.h
1 // FIXME: Make these variables so we can also use modes like 800x600
2 #define SCREEN_X 640
3 #define SCREEN_Y 480
4
5 #define SCREEN_STRIDE 80
6
7 #define VGA_NORMAL 0
8 #define VGA_AND 8
9 #define VGA_OR 16
10 #define VGA_XOR 24
11
12 //This is in mingw standard headers
13 //typedef struct { int quot, rem; } div_t;
14
15 extern int maskbit[640];
16 extern int y80[480];
17 extern int xconv[640];
18 extern int bit8[640];
19 extern int startmasks[8];
20 extern int endmasks[8];
21
22 extern UCHAR PreCalcReverseByte[256];
23
24 extern PBYTE vidmem;
25
26 #define MISC 0x3c2
27 #define SEQ 0x3c4
28 #define CRTC 0x3d4
29 #define GRAPHICS 0x3ce
30 #define FEATURE 0x3da
31 #define ATTRIB 0x3c0
32 #define STATUS 0x3da
33
34 typedef struct _VideoMode {
35 unsigned short VidSeg;
36 unsigned char Misc;
37 unsigned char Feature;
38 unsigned char Seq[5];
39 unsigned char Crtc[25];
40 unsigned char Gfx[9];
41 unsigned char Attrib[21];
42 } VideoMode;
43
44 VOID vgaPreCalc();
45 VOID vgaPutPixel(INT x, INT y, UCHAR c);
46 VOID vgaPutByte(INT x, INT y, UCHAR c);
47 VOID vgaGetByte(ULONG offset,
48 UCHAR *b, UCHAR *g,
49 UCHAR *r, UCHAR *i);
50 INT vgaGetPixel(INT x, INT y);
51 BOOL vgaHLine(INT x, INT y, INT len, UCHAR c);
52 BOOL vgaVLine(INT x, INT y, INT len, UCHAR c);
53 INT __cdecl abs(INT nm);
54 BOOL VGADDIIntersectRect(PRECTL prcDst, PRECTL prcSrc1, PRECTL prcSrc2);
55
56 #define SEQ_I 0x3C4 /* Sequencer Index */
57 #define SEQ_D 0x3C5 /* Sequencer Data Register */
58
59 #define GRA_I 0x3CE /* Graphics Controller Index */
60 #define GRA_D 0x3CF /* Graphics Controller Data Register */
61
62 #define LowByte(w) (*((unsigned char *)&(w) + 0))
63 #define HighByte(w) (*((unsigned char *)&(w) + 1))
64
65 #define ASSIGNVP4(x, y, vp) vp = vidmem /* VBUF */ + (((x) + (y)*SCREEN_X) >> 3);
66 #define ASSIGNMK4(x, y, mask) mask = 0x80 >> ((x) & 7);
67
68 void get_masks(int x, int w);
69
70 #define mod8(n) ((n)&7)
71 #define mod2(n) ((n)&1)
72 void DIB_BltFromVGA(int x, int y, int w, int h, void *b, int Dest_lDelta);
73 void DIB_BltToVGA(int x, int y, int w, int h, void *b, int Source_lDelta, int StartMod);
74 void DIB_BltToVGAWithXlate(int x, int y, int w, int h, void *b, int Source_lDelta, XLATEOBJ* Xlate);
75 void DIB_TransparentBltToVGA(int x, int y, int w, int h, void *b, int Source_lDelta, ULONG trans);