--- /dev/null
+#ifndef _VGALIB_HPP\r
+#define _VGALIB_HPP\r
+\r
+class GraphicsAPI;\r
+class VGAGraphicsAPI;\r
+class Chained256;\r
+class Unchained256;\r
+class Planar16;\r
+\r
+class GraphicsAPI\r
+ {\r
+ public:\r
+ enum HJustify { LEFT, HCENTER, RIGHT };\r
+ enum VJustify { TOP, VCENTER, BOTTOM };\r
+\r
+ protected:\r
+ int xres, yres, vxres, vyres, color, colors;\r
+ unsigned char *font, *libID;\r
+ int fontWidth, fontHeight;\r
+ HJustify hJustify;\r
+ VJustify vJustify;\r
+ public:\r
+ GraphicsAPI(int, int, int, int, int);\r
+ virtual ~GraphicsAPI() {}\r
+ virtual char *getLibID() { return libID; }\r
+ virtual int getWidth() { return xres; }\r
+ virtual int getHeight() { return yres; }\r
+ virtual int getVirtualWidth() { return vxres; }\r
+ virtual int getVirtualHeight() { return vyres; }\r
+ virtual long getPageSize() { return long(xres)*yres; }\r
+ virtual int getColors() { return colors; }\r
+ virtual void setColor(int c) { color = c; }\r
+ virtual void setBase(int, int) =0;\r
+ virtual void syncWithRefresh() =0;\r
+ virtual int getColor() { return color; }\r
+ virtual void putPixel(int x, int y) { putPixel(x, y, color); }\r
+ virtual void putPixel(int x, int y, int c) =0;\r
+ virtual int getPixel(int x, int y) =0;\r
+ virtual void hLine(int, int, int);\r
+ virtual void vLine(int, int, int);\r
+ virtual void line(int, int, int, int);\r
+ virtual void rectangle(int, int, int, int);\r
+ virtual void bar(int, int, int, int);\r
+ virtual void wipe();\r
+ virtual void putChar(int, int, int);\r
+ virtual void putText(int, int, char*);\r
+ virtual void setTextJustify(HJustify, VJustify);\r
+ };\r
+\r
+class VGAGraphicsAPI : public GraphicsAPI\r
+ {\r
+ protected:\r
+ int xbytes;\r
+ static unsigned char *videoBuf;\r
+ virtual unsigned getOffset(int, int);\r
+ virtual int getPelPan(int) =0;\r
+ public:\r
+ VGAGraphicsAPI(int, int, int, int, int);\r
+ void syncWithRefresh();\r
+ void setBase(int, int);\r
+ };\r
+\r
+class Chained256 : public VGAGraphicsAPI\r
+ {\r
+ protected:\r
+ int getPelPan(int);\r
+ unsigned getOffset(int, int);\r
+ public:\r
+ Chained256(int, int, int);\r
+ void putPixel(int, int, int);\r
+ int getPixel(int, int);\r
+ virtual void hLine(int, int, int);\r
+ };\r
+\r
+class Unchained256 : public VGAGraphicsAPI\r
+ {\r
+ protected:\r
+ int getPelPan(int);\r
+ public:\r
+ Unchained256(int, int, int);\r
+ void putPixel(int, int, int);\r
+ int getPixel(int, int);\r
+ virtual void hLine(int, int, int);\r
+ };\r
+\r
+class Planar16 : public VGAGraphicsAPI\r
+ {\r
+ protected:\r
+ int getPelPan(int);\r
+ public:\r
+ Planar16(int, int, int);\r
+ void putPixel(int, int, int);\r
+ int getPixel(int, int);\r
+ void hLine(int, int, int);\r
+ };\r
+\r
+#endif
\ No newline at end of file