X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=glws.hpp;h=47fdc7f40729f24e4a7905a2a914b3877ffbe8e3;hb=02bf5b48c041ef6fb575953b911e4268a44a9a9f;hp=bfd34480613e4713ddb24a77e9a7ee85f38a3715;hpb=c017dded3f1b3ebe3043b0e217bb3cd76a4e1a4e;p=apitrace diff --git a/glws.hpp b/glws.hpp index bfd3448..47fdc7f 100644 --- a/glws.hpp +++ b/glws.hpp @@ -31,9 +31,48 @@ #define _GLWS_HPP_ +#include + + namespace glws { +extern bool debug; + + +bool +checkExtension(const char *extName, const char *extString); + + +template< class T > +class Attributes { +protected: + std::vector attribs; + +public: + void add(T param) { + attribs.push_back(param); + } + + void add(T pname, T pvalue) { + add(pname); + add(pvalue); + } + + void end(void) { + add(0); + } + + operator T * (void) { + return &attribs[0]; + } + + operator const T * (void) const { + return &attribs[0]; + } +}; + + class Visual { public: @@ -53,11 +92,13 @@ public: const Visual *visual; int width; int height; + bool visible; Drawable(const Visual *vis, int w, int h) : visual(vis), width(w), - height(h) + height(h), + visible(false) {} virtual ~Drawable() {} @@ -68,6 +109,11 @@ public: height = h; } + virtual void + show(void) { + visible = true; + } + virtual void swapBuffers(void) = 0; }; @@ -85,29 +131,26 @@ public: }; -class WindowSystem -{ -public: - virtual ~WindowSystem() {} +void +init(void); - virtual Visual * - createVisual(bool doubleBuffer = false) = 0; - - virtual Drawable * - createDrawable(const Visual *visual, int width = 256, int height = 256) = 0; +void +cleanup(void); - virtual Context * - createContext(const Visual *visual, Context *shareContext = NULL) = 0; - - virtual bool - makeCurrent(Drawable *drawable, Context *context) = 0; +Visual * +createVisual(bool doubleBuffer = false); - virtual bool - processEvents(void) = 0; -}; +Drawable * +createDrawable(const Visual *visual, int width = 32, int height = 32); + +Context * +createContext(const Visual *visual, Context *shareContext = 0); +bool +makeCurrent(Drawable *drawable, Context *context); -WindowSystem *createNativeWindowSystem(void); +bool +processEvents(void); } /* namespace glws */