DISTRHO Plugin Framework
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

131 lines
3.0KB

  1. /*
  2. * DISTRHO Plugin Framework (DPF)
  3. * Copyright (C) 2012-2014 Filipe Coelho <falktx@falktx.com>
  4. *
  5. * Permission to use, copy, modify, and/or distribute this software for any purpose with
  6. * or without fee is hereby granted, provided that the above copyright notice and this
  7. * permission notice appear in all copies.
  8. *
  9. * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
  10. * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
  11. * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
  12. * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
  13. * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
  14. * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  15. */
  16. #ifndef DGL_BASE_HPP_INCLUDED
  17. #define DGL_BASE_HPP_INCLUDED
  18. #include "../distrho/extra/d_leakdetector.hpp"
  19. #include "../distrho/extra/d_scopedpointer.hpp"
  20. // -----------------------------------------------------------------------
  21. // Define namespace
  22. #ifndef DGL_NAMESPACE
  23. # define DGL_NAMESPACE DGL
  24. #endif
  25. #define START_NAMESPACE_DGL namespace DGL_NAMESPACE {
  26. #define END_NAMESPACE_DGL }
  27. #define USE_NAMESPACE_DGL using namespace DGL_NAMESPACE;
  28. // -----------------------------------------------------------------------
  29. // OpenGL includes
  30. #ifdef DISTRHO_OS_MAC
  31. # include "OpenGL/gl.h"
  32. #else
  33. # include "GL/gl.h"
  34. #endif
  35. // -----------------------------------------------------------------------
  36. // Missing OpenGL defines
  37. #if defined(GL_BGR_EXT) && ! defined(GL_BGR)
  38. # define GL_BGR GL_BGR_EXT
  39. #endif
  40. #if defined(GL_BGRA_EXT) && ! defined(GL_BGRA)
  41. # define GL_BGRA GL_BGRA_EXT
  42. #endif
  43. #ifndef GL_CLAMP_TO_BORDER
  44. # define GL_CLAMP_TO_BORDER 0x812D
  45. #endif
  46. START_NAMESPACE_DGL
  47. // -----------------------------------------------------------------------
  48. // Base DGL enums
  49. /**
  50. Convenience symbols for ASCII control characters.
  51. */
  52. enum Char {
  53. CHAR_BACKSPACE = 0x08,
  54. CHAR_ESCAPE = 0x1B,
  55. CHAR_DELETE = 0x7F
  56. };
  57. /**
  58. Special (non-Unicode) keyboard keys.
  59. */
  60. enum Key {
  61. KEY_F1 = 1,
  62. KEY_F2,
  63. KEY_F3,
  64. KEY_F4,
  65. KEY_F5,
  66. KEY_F6,
  67. KEY_F7,
  68. KEY_F8,
  69. KEY_F9,
  70. KEY_F10,
  71. KEY_F11,
  72. KEY_F12,
  73. KEY_LEFT,
  74. KEY_UP,
  75. KEY_RIGHT,
  76. KEY_DOWN,
  77. KEY_PAGE_UP,
  78. KEY_PAGE_DOWN,
  79. KEY_HOME,
  80. KEY_END,
  81. KEY_INSERT,
  82. KEY_SHIFT,
  83. KEY_CTRL,
  84. KEY_ALT,
  85. KEY_SUPER
  86. };
  87. /**
  88. Keyboard modifier flags.
  89. */
  90. enum Modifier {
  91. MODIFIER_SHIFT = 1 << 0, /**< Shift key */
  92. MODIFIER_CTRL = 1 << 1, /**< Control key */
  93. MODIFIER_ALT = 1 << 2, /**< Alt/Option key */
  94. MODIFIER_SUPER = 1 << 3 /**< Mod4/Command/Windows key */
  95. };
  96. // -----------------------------------------------------------------------
  97. // Base DGL classes
  98. /**
  99. Idle callback.
  100. */
  101. class IdleCallback
  102. {
  103. public:
  104. virtual ~IdleCallback() {}
  105. virtual void idleCallback() = 0;
  106. };
  107. // -----------------------------------------------------------------------
  108. END_NAMESPACE_DGL
  109. #endif // DGL_BASE_HPP_INCLUDED