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.

254 lines
6.0KB

  1. /*
  2. * DISTRHO Plugin Framework (DPF)
  3. * Copyright (C) 2012-2019 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/LeakDetector.hpp"
  19. #include "../distrho/extra/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. START_NAMESPACE_DGL
  29. // -----------------------------------------------------------------------
  30. // Base DGL enums
  31. /**
  32. Convenience symbols for ASCII control characters.
  33. */
  34. enum Char {
  35. kCharBackspace = 0x08,
  36. kCharEscape = 0x1B,
  37. kCharDelete = 0x7F
  38. };
  39. /**
  40. Keyboard modifier flags.
  41. */
  42. enum Modifier {
  43. kModifierShift = 1 << 0, /**< Shift key */
  44. kModifierControl = 1 << 1, /**< Control key */
  45. kModifierAlt = 1 << 2, /**< Alt/Option key */
  46. kModifierSuper = 1 << 3 /**< Mod4/Command/Windows key */
  47. };
  48. /**
  49. Special (non-Unicode) keyboard keys.
  50. */
  51. enum Key {
  52. kKeyF1 = 1,
  53. kKeyF2,
  54. kKeyF3,
  55. kKeyF4,
  56. kKeyF5,
  57. kKeyF6,
  58. kKeyF7,
  59. kKeyF8,
  60. kKeyF9,
  61. kKeyF10,
  62. kKeyF11,
  63. kKeyF12,
  64. kKeyLeft,
  65. kKeyUp,
  66. kKeyRight,
  67. kKeyDown,
  68. kKeyPageUp,
  69. kKeyPageDown,
  70. kKeyHome,
  71. kKeyEnd,
  72. kKeyInsert,
  73. kKeyShift,
  74. kKeyControl,
  75. kKeyAlt,
  76. kKeySuper
  77. };
  78. /**
  79. Layout-independent keycodes.
  80. These keycodes are relative to an US QWERTY keyboard.
  81. Therefore, the keycode for the letter 'A' on an AZERTY keyboard will be equal to kKeyCodeQ.
  82. */
  83. enum KeyCode {
  84. /* Zero, does not correspond to any key. */
  85. kKeyCodeNone = 0,
  86. kKeyCodeA = 4,
  87. kKeyCodeB = 5,
  88. kKeyCodeC = 6,
  89. kKeyCodeD = 7,
  90. kKeyCodeE = 8,
  91. kKeyCodeF = 9,
  92. kKeyCodeG = 10,
  93. kKeyCodeH = 11,
  94. kKeyCodeI = 12,
  95. kKeyCodeJ = 13,
  96. kKeyCodeK = 14,
  97. kKeyCodeL = 15,
  98. kKeyCodeM = 16,
  99. kKeyCodeN = 17,
  100. kKeyCodeO = 18,
  101. kKeyCodeP = 19,
  102. kKeyCodeQ = 20,
  103. kKeyCodeR = 21,
  104. kKeyCodeS = 22,
  105. kKeyCodeT = 23,
  106. kKeyCodeU = 24,
  107. kKeyCodeV = 25,
  108. kKeyCodeW = 26,
  109. kKeyCodeX = 27,
  110. kKeyCodeY = 28,
  111. kKeyCodeZ = 29,
  112. kKeyCode1 = 30,
  113. kKeyCode2 = 31,
  114. kKeyCode3 = 32,
  115. kKeyCode4 = 33,
  116. kKeyCode5 = 34,
  117. kKeyCode6 = 35,
  118. kKeyCode7 = 36,
  119. kKeyCode8 = 37,
  120. kKeyCode9 = 38,
  121. kKeyCode0 = 39,
  122. kKeyCodeEscape = 41,
  123. kKeyCodeDelete = 42,
  124. kKeyCodeTab = 43,
  125. kKeyCodeSpace = 44,
  126. kKeyCodeMinus = 45,
  127. kKeyCodeEquals = 46,
  128. kKeyCodeLeftBracket = 47,
  129. kKeyCodeRightBracket = 48,
  130. kKeyCodeBackslash = 49,
  131. kKeyCodeSemicolon = 51,
  132. kKeyCodeQuote = 52,
  133. kKeyCodeGrave = 53,
  134. kKeyCodeComma = 54,
  135. kKeyCodePeriod = 55,
  136. kKeyCodeSlash = 56,
  137. kKeyCodeCapsLock = 57,
  138. kKeyCodeF1 = 58,
  139. kKeyCodeF2 = 59,
  140. kKeyCodeF3 = 60,
  141. kKeyCodeF4 = 61,
  142. kKeyCodeF5 = 62,
  143. kKeyCodeF6 = 63,
  144. kKeyCodeF7 = 64,
  145. kKeyCodeF8 = 65,
  146. kKeyCodeF9 = 66,
  147. kKeyCodeF10 = 67,
  148. kKeyCodeF11 = 68,
  149. kKeyCodeF12 = 69,
  150. kKeyCodePrintScreen = 70,
  151. kKeyCodeScrollLock = 71,
  152. kKeyCodePause = 72,
  153. kKeyCodeInsert = 73,
  154. kKeyCodeHome = 74,
  155. kKeyCodePageUp = 75,
  156. kKeyCodeDeleteForward = 76,
  157. kKeyCodeEnd = 77,
  158. kKeyCodePageDown = 78,
  159. kKeyCodeRight = 79,
  160. kKeyCodeLeft = 80,
  161. kKeyCodeDown = 81,
  162. kKeyCodeUp = 82,
  163. kKeyCodeKP_NumLock = 83,
  164. kKeyCodeKP_Divide = 84,
  165. kKeyCodeKP_Multiply = 85,
  166. kKeyCodeKP_Subtract = 86,
  167. kKeyCodeKP_Add = 87,
  168. kKeyCodeKP_Enter = 88,
  169. kKeyCodeKP_1 = 89,
  170. kKeyCodeKP_2 = 90,
  171. kKeyCodeKP_3 = 91,
  172. kKeyCodeKP_4 = 92,
  173. kKeyCodeKP_5 = 93,
  174. kKeyCodeKP_6 = 94,
  175. kKeyCodeKP_7 = 95,
  176. kKeyCodeKP_8 = 96,
  177. kKeyCodeKP_9 = 97,
  178. kKeyCodeKP_0 = 98,
  179. kKeyCodePoint = 99,
  180. kKeyCodeNonUSBackslash = 100,
  181. kKeyCodeKP_Equals = 103,
  182. kKeyCodeF13 = 104,
  183. kKeyCodeF14 = 105,
  184. kKeyCodeF15 = 106,
  185. kKeyCodeF16 = 107,
  186. kKeyCodeF17 = 108,
  187. kKeyCodeF18 = 109,
  188. kKeyCodeF19 = 110,
  189. kKeyCodeF20 = 111,
  190. kKeyCodeF21 = 112,
  191. kKeyCodeF22 = 113,
  192. kKeyCodeF23 = 114,
  193. kKeyCodeF24 = 115,
  194. kKeyCodeHelp = 117,
  195. kKeyCodeMenu = 118,
  196. kKeyCodeMute = 127,
  197. kKeyCodeSysReq = 154,
  198. kKeyCodeReturn = 158,
  199. kKeyCodeKP_Clear = 216,
  200. kKeyCodeKP_Decimal = 220,
  201. kKeyCodeLeftControl = 224,
  202. kKeyCodeLeftShift = 225,
  203. kKeyCodeLeftAlt = 226,
  204. kKeyCodeLeftGUI = 227,
  205. kKeyCodeRightControl = 228,
  206. kKeyCodeRightShift = 229,
  207. kKeyCodeRightAlt = 230,
  208. kKeyCodeRightGUI = 231
  209. };
  210. // -----------------------------------------------------------------------
  211. // Base DGL classes
  212. /**
  213. Graphics context, definition depends on build type.
  214. */
  215. struct GraphicsContext;
  216. /**
  217. Idle callback.
  218. */
  219. class IdleCallback
  220. {
  221. public:
  222. virtual ~IdleCallback() {}
  223. virtual void idleCallback() = 0;
  224. };
  225. // -----------------------------------------------------------------------
  226. END_NAMESPACE_DGL
  227. #ifndef DONT_SET_USING_DGL_NAMESPACE
  228. // If your code uses a lot of DGL classes, then this will obviously save you
  229. // a lot of typing, but can be disabled by setting DONT_SET_USING_DGL_NAMESPACE.
  230. using namespace DGL_NAMESPACE;
  231. #endif
  232. // -----------------------------------------------------------------------
  233. #endif // DGL_BASE_HPP_INCLUDED