diff options
Diffstat (limited to 'libs/dgl/Base.hpp')
-rw-r--r-- | libs/dgl/Base.hpp | 98 |
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 |