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