]> git.cworth.org Git - apitrace/blobdiff - glws.hpp
Define all D2D/DWRITE GUIDs
[apitrace] / glws.hpp
index 05654200f7d966d9f443b696a13c8ab8ffde68f6..9afebf4b878a4b639863bb08d8bf12927fbd0495 100644 (file)
--- a/glws.hpp
+++ b/glws.hpp
 #define _GLWS_HPP_
 
 
+#include <vector>
+
+
 namespace glws {
 
 
+enum Profile {
+    PROFILE_COMPAT = 0,
+    PROFILE_CORE,
+    PROFILE_ES1,
+    PROFILE_ES2,
+    PROFILE_MAX
+};
+
+
+extern bool debug;
+
+
+bool
+checkExtension(const char *extName, const char *extString);
+
+
+template< class T >
+class Attributes {
+protected:
+    std::vector<T> attribs;
+
+public:
+    void add(T param) {
+        attribs.push_back(param);
+    }
+
+    void add(T pname, T pvalue) {
+        add(pname);
+        add(pvalue);
+    }
+
+    void end(T terminator = 0) {
+        add(terminator);
+    }
+
+    operator T * (void) {
+        return &attribs[0];
+    }
+
+    operator const T * (void) const {
+        return &attribs[0];
+    }
+};
+
+
 class Visual
 {
 public:
@@ -83,38 +131,37 @@ class Context
 {
 public:
     const Visual *visual;
+    Profile profile;
     
-    Context(const Visual *vis) :
-        visual(vis)
+    Context(const Visual *vis, Profile prof) :
+        visual(vis),
+        profile(prof)
     {}
 
     virtual ~Context() {}
 };
 
 
-class WindowSystem
-{
-public:
-    virtual ~WindowSystem() {}
+void
+init(void);
 
-    virtual Visual *
-    createVisual(bool doubleBuffer = false) = 0;
-    
-    virtual Drawable *
-    createDrawable(const Visual *visual, int width = 32, int height = 32) = 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, Profile profile = PROFILE_COMPAT);
 
-    virtual bool
-    processEvents(void) = 0;
-};
+Drawable *
+createDrawable(const Visual *visual, int width = 32, int height = 32);
+
+Context *
+createContext(const Visual *visual, Context *shareContext = 0, Profile profile = PROFILE_COMPAT);
 
+bool
+makeCurrent(Drawable *drawable, Context *context);
 
-WindowSystem *createNativeWindowSystem(void);
+bool
+processEvents(void);
 
 
 } /* namespace glws */