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 17 #ifndef DGL_BASE_HPP_INCLUDED 18 #define DGL_BASE_HPP_INCLUDED 19 20 #include "../distrho/extra/LeakDetector.hpp" 21 #include "../distrho/extra/ScopedPointer.hpp" 22 23 // ----------------------------------------------------------------------- 24 // Define namespace 25 26 #ifndef DGL_NAMESPACE 27 # define DGL_NAMESPACE DGL 28 #endif 29 30 #define START_NAMESPACE_DGL namespace DGL_NAMESPACE { 31 #define END_NAMESPACE_DGL } 32 #define USE_NAMESPACE_DGL using namespace DGL_NAMESPACE; 33 34 START_NAMESPACE_DGL 35 36 // ----------------------------------------------------------------------- 37 // Base DGL enums 38 39 /** 40 Convenience symbols for ASCII control characters. 41 */ 42 enum Char { 43 kCharBackspace = 0x08, 44 kCharEscape = 0x1B, 45 kCharDelete = 0x7F 46 }; 47 48 /** 49 Keyboard modifier flags. 50 */ 51 enum Modifier { 52 kModifierShift = 1 << 0, /**< Shift key */ 53 kModifierControl = 1 << 1, /**< Control key */ 54 kModifierAlt = 1 << 2, /**< Alt/Option key */ 55 kModifierSuper = 1 << 3 /**< Mod4/Command/Windows key */ 56 }; 57 58 /** 59 Special (non-Unicode) keyboard keys. 60 */ 61 enum Key { 62 kKeyF1 = 1, 63 kKeyF2, 64 kKeyF3, 65 kKeyF4, 66 kKeyF5, 67 kKeyF6, 68 kKeyF7, 69 kKeyF8, 70 kKeyF9, 71 kKeyF10, 72 kKeyF11, 73 kKeyF12, 74 kKeyLeft, 75 kKeyUp, 76 kKeyRight, 77 kKeyDown, 78 kKeyPageUp, 79 kKeyPageDown, 80 kKeyHome, 81 kKeyEnd, 82 kKeyInsert, 83 kKeyShift, 84 kKeyControl, 85 kKeyAlt, 86 kKeySuper 87 }; 88 89 // ----------------------------------------------------------------------- 90 // Base DGL classes 91 92 /** 93 Graphics context, definition depends on build type. 94 */ 95 struct GraphicsContext; 96 97 /** 98 Idle callback. 99 */ 100 class IdleCallback 101 { 102 public: ~IdleCallback()103 virtual ~IdleCallback() {} 104 virtual void idleCallback() = 0; 105 }; 106 107 // ----------------------------------------------------------------------- 108 109 END_NAMESPACE_DGL 110 111 #ifndef DONT_SET_USING_DGL_NAMESPACE 112 // If your code uses a lot of DGL classes, then this will obviously save you 113 // a lot of typing, but can be disabled by setting DONT_SET_USING_DGL_NAMESPACE. 114 using namespace DGL_NAMESPACE; 115 #endif 116 117 // ----------------------------------------------------------------------- 118 119 #endif // DGL_BASE_HPP_INCLUDED 120