summaryrefslogtreecommitdiff
path: root/libs/dgl/Base.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/dgl/Base.hpp')
-rw-r--r--libs/dgl/Base.hpp98
1 files changed, 87 insertions, 11 deletions
diff --git a/libs/dgl/Base.hpp b/libs/dgl/Base.hpp
index 14e142f..0d62d72 100644
--- a/libs/dgl/Base.hpp
+++ b/libs/dgl/Base.hpp
@@ -18,10 +18,11 @@
#define DGL_BASE_HPP_INCLUDED
#include "../distrho/extra/d_leakdetector.hpp"
+#include "../distrho/extra/d_scopedpointer.hpp"
// -----------------------------------------------------------------------
+// Define namespace
-/* Define namespace */
#ifndef DGL_NAMESPACE
# define DGL_NAMESPACE DGL
#endif
@@ -30,14 +31,59 @@
#define END_NAMESPACE_DGL }
#define USE_NAMESPACE_DGL using namespace DGL_NAMESPACE;
-/* GL includes */
+#ifdef DISTRHO_OS_WINDOWS
+// -----------------------------------------------------------------------
+// Fix OpenGL includes for Windows, based on glfw code
+
+#ifndef APIENTRY
+# define APIENTRY __stdcall
+#endif // APIENTRY
+
+/* We need WINGDIAPI defined */
+#ifndef WINGDIAPI
+# if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__POCC__)
+# define WINGDIAPI __declspec(dllimport)
+# elif defined(__LCC__)
+# define WINGDIAPI __stdcall
+# else
+# define WINGDIAPI extern
+# endif
+# define DGL_WINGDIAPI_DEFINED
+#endif // WINGDIAPI
+
+/* Some <GL/glu.h> files also need CALLBACK defined */
+#ifndef CALLBACK
+# if defined(_MSC_VER)
+# if (defined(_M_MRX000) || defined(_M_IX86) || defined(_M_ALPHA) || defined(_M_PPC)) && !defined(MIDL_PASS)
+# define CALLBACK __stdcall
+# else
+# define CALLBACK
+# endif
+# else
+# define CALLBACK __stdcall
+# endif
+# define DGL_CALLBACK_DEFINED
+#endif // CALLBACK
+
+/* Most GL/glu.h variants on Windows need wchar_t */
+#include <cstddef>
+
+#endif // DISTRHO_OS_WINDOWS
+
+// -----------------------------------------------------------------------
+// OpenGL includes
+
#ifdef DISTRHO_OS_MAC
-# include <OpenGL/gl.h>
+# include "OpenGL/gl.h"
#else
-# include <GL/gl.h>
+# define GL_GLEXT_PROTOTYPES
+# include "GL/gl.h"
+# include "GL/glext.h"
#endif
-/* missing GL defines */
+// -----------------------------------------------------------------------
+// Missing OpenGL defines
+
#if defined(GL_BGR_EXT) && ! defined(GL_BGR)
# define GL_BGR GL_BGR_EXT
#endif
@@ -50,12 +96,29 @@
# define GL_CLAMP_TO_BORDER 0x812D
#endif
+#ifdef DISTRHO_OS_WINDOWS
+// -----------------------------------------------------------------------
+// Fix OpenGL includes for Windows, based on glfw code
+
+#ifdef DGL_WINGDIAPI_DEFINED
+# undef WINGDIAPI
+# undef DGL_WINGDIAPI_DEFINED
+#endif
+
+#ifdef DGL_CALLBACK_DEFINED
+# undef CALLBACK
+# undef DGL_CALLBACK_DEFINED
+#endif
+
+#endif // DISTRHO_OS_WINDOWS
+
START_NAMESPACE_DGL
// -----------------------------------------------------------------------
+// Base DGL enums
-/*
- * Convenience symbols for ASCII control characters.
+/**
+ Convenience symbols for ASCII control characters.
*/
enum Char {
CHAR_BACKSPACE = 0x08,
@@ -63,8 +126,8 @@ enum Char {
CHAR_DELETE = 0x7F
};
-/*
- * Special (non-Unicode) keyboard keys.
+/**
+ Special (non-Unicode) keyboard keys.
*/
enum Key {
KEY_F1 = 1,
@@ -94,8 +157,8 @@ enum Key {
KEY_SUPER
};
-/*
- * Keyboard modifier flags.
+/**
+ Keyboard modifier flags.
*/
enum Modifier {
MODIFIER_SHIFT = 1 << 0, /**< Shift key */
@@ -105,6 +168,19 @@ enum Modifier {
};
// -----------------------------------------------------------------------
+// Base DGL classes
+
+/**
+ Idle callback.
+ */
+class IdleCallback
+{
+public:
+ virtual ~IdleCallback() {}
+ virtual void idleCallback() = 0;
+};
+
+// -----------------------------------------------------------------------
END_NAMESPACE_DGL