]> 4ch.mooo.com Git - 16.git/blob - 16/tweak16/VGALIB.HPP
more
[16.git] / 16 / tweak16 / VGALIB.HPP
1 #ifndef _VGALIB_HPP\r
2 #define _VGALIB_HPP\r
3 \r
4 class GraphicsAPI;\r
5 class VGAGraphicsAPI;\r
6 class Chained256;\r
7 class Unchained256;\r
8 class Planar16;\r
9 \r
10 class GraphicsAPI\r
11         {\r
12         public:\r
13                 enum HJustify   { LEFT, HCENTER, RIGHT };\r
14                 enum VJustify   { TOP, VCENTER, BOTTOM };\r
15 \r
16         protected:\r
17                 int xres, yres, vxres, vyres, color, colors;\r
18                 unsigned char *font, *libID;\r
19                 int fontWidth, fontHeight;\r
20                 HJustify hJustify;\r
21                 VJustify vJustify;\r
22         public:\r
23                 GraphicsAPI(int, int, int, int, int);\r
24                 virtual ~GraphicsAPI()                          {}\r
25                 virtual char *getLibID()                        { return libID; }\r
26                 virtual int getWidth()                          { return xres; }\r
27                 virtual int getHeight()                         { return yres; }\r
28                 virtual int getVirtualWidth()           { return vxres; }\r
29                 virtual int getVirtualHeight()          { return vyres; }\r
30                 virtual long getPageSize()                      { return long(xres)*yres; }\r
31                 virtual int getColors()                         { return colors; }\r
32                 virtual void setColor(int c)            { color = c; }\r
33                 virtual void setBase(int, int)          =0;\r
34                 virtual void syncWithRefresh()          =0;\r
35                 virtual int getColor()                          { return color; }\r
36                 virtual void putPixel(int x, int y)     { putPixel(x, y, color); }\r
37                 virtual void putPixel(int x, int y, int c) =0;\r
38                 virtual int getPixel(int x, int y)      =0;\r
39                 virtual void hLine(int, int, int);\r
40                 virtual void vLine(int, int, int);\r
41                 virtual void line(int, int, int, int);\r
42                 virtual void rectangle(int, int, int, int);\r
43                 virtual void bar(int, int, int, int);\r
44                 virtual void wipe();\r
45                 virtual void putChar(int, int, int);\r
46                 virtual void putText(int, int, char*);\r
47                 virtual void setTextJustify(HJustify, VJustify);\r
48         };\r
49 \r
50 class VGAGraphicsAPI : public GraphicsAPI\r
51         {\r
52         protected:\r
53                 int xbytes;\r
54                 static unsigned char *videoBuf;\r
55         virtual unsigned getOffset(int, int);\r
56                 virtual int getPelPan(int) =0;\r
57         public:\r
58                 VGAGraphicsAPI(int, int, int, int, int);\r
59                 void syncWithRefresh();\r
60                 void setBase(int, int);\r
61         };\r
62 \r
63 class Chained256 : public VGAGraphicsAPI\r
64         {\r
65         protected:\r
66                 int getPelPan(int);\r
67                 unsigned getOffset(int, int);\r
68         public:\r
69                 Chained256(int, int, int);\r
70                 void putPixel(int, int, int);\r
71                 int getPixel(int, int);\r
72                 virtual void hLine(int, int, int);\r
73         };\r
74 \r
75 class Unchained256 : public VGAGraphicsAPI\r
76         {\r
77         protected:\r
78                 int getPelPan(int);\r
79         public:\r
80                 Unchained256(int, int, int);\r
81                 void putPixel(int, int, int);\r
82                 int getPixel(int, int);\r
83                 virtual void hLine(int, int, int);\r
84         };\r
85 \r
86 class Planar16 : public VGAGraphicsAPI\r
87         {\r
88         protected:\r
89                 int getPelPan(int);\r
90         public:\r
91                 Planar16(int, int, int);\r
92                 void putPixel(int, int, int);\r
93                 int getPixel(int, int);\r
94                 void hLine(int, int, int);\r
95         };\r
96 \r
97 #endif