17#include "DistrhoPluginProM.hpp"
18#include "DistrhoUIProM.hpp"
20#include "libprojectM/projectM.hpp"
27static const projectM::Settings kSettings = {
34 "/usr/share/projectM/presets",
35 "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSans.ttf",
36 "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf",
49DistrhoUIProM::DistrhoUIProM()
54DistrhoUIProM::~DistrhoUIProM()
56 if (DistrhoPluginProM*
const dspPtr = (DistrhoPluginProM*)getPluginInstancePointer())
58 const MutexLocker csm(dspPtr->fMutex);
59 dspPtr->fPM =
nullptr;
66void DistrhoUIProM::parameterChanged(
uint32_t,
float)
73void DistrhoUIProM::uiIdle()
80 if (DistrhoPluginProM*
const dspPtr = (DistrhoPluginProM*)getPluginInstancePointer())
82 if (dspPtr->fPM !=
nullptr)
85 const MutexLocker csm(dspPtr->fMutex);
93 glEnable(GL_LINE_SMOOTH);
94 glEnable(GL_POINT_SMOOTH);
96 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
97 glShadeModel(GL_SMOOTH);
99 glMatrixMode(GL_TEXTURE);
102 glMatrixMode(GL_PROJECTION);
107 glMatrixMode(GL_MODELVIEW);
110 glDrawBuffer(GL_BACK);
111 glReadBuffer(GL_BACK);
113 glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
114 glLineStipple(2, 0xAAAA);
118 fPM =
new projectM(
"/usr/share/projectM/config.inp");
126void DistrhoUIProM::onDisplay()
134bool DistrhoUIProM::onKeyboard(
const KeyboardEvent& ev)
139 if (ev.press && (ev.key ==
'1' || ev.key ==
'+' || ev.key ==
'-'))
143 if (getWidth() != 512 || getHeight() != 512)
146 else if (ev.key ==
'+')
148 if (getWidth() < 1100 && getHeight() < 1100)
149 setSize(getWidth()+100, getHeight()+100);
150 else if (getWidth() != 1100 || getHeight() != 1100)
153 else if (ev.key ==
'-')
155 if (getWidth() >= 200 && getHeight() >= 200)
156 setSize(getWidth()-100, getHeight()-100);
157 else if (getWidth() != 100 || getHeight() != 100)
164 projectMKeycode pmKey = PROJECTM_K_NONE;
165 projectMModifier pmMod = PROJECTM_KMOD_LSHIFT;
167 if ((ev.key >= PROJECTM_K_0 && ev.key <= PROJECTM_K_9) ||
168 (ev.key >= PROJECTM_K_A && ev.key <= PROJECTM_K_Z) ||
169 (ev.key >= PROJECTM_K_a && ev.key <= PROJECTM_K_z))
171 pmKey =
static_cast<projectMKeycode
>(ev.key);
177 case DGL_NAMESPACE::kCharBackspace:
178 pmKey = PROJECTM_K_BACKSPACE;
180 case DGL_NAMESPACE::kCharEscape:
181 pmKey = PROJECTM_K_ESCAPE;
183 case DGL_NAMESPACE::kCharDelete:
184 pmKey = PROJECTM_K_DELETE;
189 if (pmKey == PROJECTM_K_NONE)
192 if (ev.mod & DGL_NAMESPACE::kModifierControl)
193 pmMod = PROJECTM_KMOD_LCTRL;
195 fPM->key_handler(ev.press ? PROJECTM_KEYUP : PROJECTM_KEYDOWN, pmKey, pmMod);
200bool DistrhoUIProM::onSpecial(
const SpecialEvent& ev)
205 projectMKeycode pmKey = PROJECTM_K_NONE;
206 projectMModifier pmMod = PROJECTM_KMOD_LSHIFT;
210 case DGL_NAMESPACE::kKeyF1:
211 pmKey = PROJECTM_K_F1;
213 case DGL_NAMESPACE::kKeyF2:
214 pmKey = PROJECTM_K_F2;
216 case DGL_NAMESPACE::kKeyF3:
217 pmKey = PROJECTM_K_F3;
219 case DGL_NAMESPACE::kKeyF4:
220 pmKey = PROJECTM_K_F4;
222 case DGL_NAMESPACE::kKeyF5:
223 pmKey = PROJECTM_K_F5;
225 case DGL_NAMESPACE::kKeyF6:
226 pmKey = PROJECTM_K_F6;
228 case DGL_NAMESPACE::kKeyF7:
229 pmKey = PROJECTM_K_F7;
231 case DGL_NAMESPACE::kKeyF8:
232 pmKey = PROJECTM_K_F8;
234 case DGL_NAMESPACE::kKeyF9:
235 pmKey = PROJECTM_K_F9;
237 case DGL_NAMESPACE::kKeyF10:
238 pmKey = PROJECTM_K_F10;
240 case DGL_NAMESPACE::kKeyF11:
241 pmKey = PROJECTM_K_F11;
243 case DGL_NAMESPACE::kKeyF12:
244 pmKey = PROJECTM_K_F12;
246 case DGL_NAMESPACE::kKeyLeft:
247 pmKey = PROJECTM_K_LEFT;
249 case DGL_NAMESPACE::kKeyUp:
250 pmKey = PROJECTM_K_UP;
252 case DGL_NAMESPACE::kKeyRight:
253 pmKey = PROJECTM_K_RIGHT;
255 case DGL_NAMESPACE::kKeyDown:
256 pmKey = PROJECTM_K_DOWN;
258 case DGL_NAMESPACE::kKeyPageUp:
259 pmKey = PROJECTM_K_PAGEUP;
261 case DGL_NAMESPACE::kKeyPageDown:
262 pmKey = PROJECTM_K_PAGEDOWN;
264 case DGL_NAMESPACE::kKeyHome:
265 pmKey = PROJECTM_K_HOME;
267 case DGL_NAMESPACE::kKeyEnd:
268 pmKey = PROJECTM_K_END;
270 case DGL_NAMESPACE::kKeyInsert:
271 pmKey = PROJECTM_K_INSERT;
273 case DGL_NAMESPACE::kKeyShift:
274 pmKey = PROJECTM_K_LSHIFT;
276 case DGL_NAMESPACE::kKeyControl:
277 pmKey = PROJECTM_K_LCTRL;
279 case DGL_NAMESPACE::kKeyAlt:
280 case DGL_NAMESPACE::kKeySuper:
284 if (pmKey == PROJECTM_K_NONE)
287 if (ev.mod & DGL_NAMESPACE::kModifierControl)
288 pmMod = PROJECTM_KMOD_LCTRL;
290 fPM->key_handler(ev.press ? PROJECTM_KEYUP : PROJECTM_KEYDOWN, pmKey, pmMod);
299 return new DistrhoUIProM();
unsigned int uint
Definition CarlaDefines.h:327
#define END_NAMESPACE_DISTRHO
Definition DistrhoDefines.h:191
#define START_NAMESPACE_DISTRHO
Definition DistrhoDefines.h:190
UI * createUI()
Definition DistrhoUIProM.cpp:297
static int int height
Definition pugl.h:1594
static int width
Definition pugl.h:1593
unsigned int uint32_t
Definition mid.cpp:100