|
|
@@ -131,32 +131,6 @@ void DistrhoUIProM::uiIdle() |
|
|
|
|
|
|
|
void DistrhoUIProM::uiReshape(uint width, uint height) |
|
|
|
{ |
|
|
|
#if 0 |
|
|
|
glEnable(GL_BLEND); |
|
|
|
glEnable(GL_LINE_SMOOTH); |
|
|
|
glEnable(GL_POINT_SMOOTH); |
|
|
|
|
|
|
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
|
|
|
glShadeModel(GL_SMOOTH); |
|
|
|
|
|
|
|
glMatrixMode(GL_TEXTURE); |
|
|
|
glLoadIdentity(); |
|
|
|
|
|
|
|
glMatrixMode(GL_PROJECTION); |
|
|
|
glLoadIdentity(); |
|
|
|
glOrtho(0, width, height, 0, 0.0f, 1.0f); |
|
|
|
glViewport(0, 0, width, height); |
|
|
|
|
|
|
|
glMatrixMode(GL_MODELVIEW); |
|
|
|
glLoadIdentity(); |
|
|
|
|
|
|
|
glDrawBuffer(GL_BACK); |
|
|
|
glReadBuffer(GL_BACK); |
|
|
|
|
|
|
|
glClearColor(0.0f, 0.0f, 0.0f, 0.0f); |
|
|
|
glLineStipple(2, 0xAAAA); |
|
|
|
#endif |
|
|
|
|
|
|
|
if (fPM == nullptr) |
|
|
|
{ |
|
|
|
#ifdef PROJECTM_DATA_DIR |
|
|
@@ -188,11 +162,86 @@ void DistrhoUIProM::onDisplay() |
|
|
|
fPM->renderFrame(); |
|
|
|
} |
|
|
|
|
|
|
|
static projectMKeycode dgl2pmkey(const DGL_NAMESPACE::Key key) noexcept |
|
|
|
{ |
|
|
|
switch (key) |
|
|
|
{ |
|
|
|
case DGL_NAMESPACE::kKeyBackspace: |
|
|
|
return PROJECTM_K_BACKSPACE; |
|
|
|
case DGL_NAMESPACE::kKeyEscape: |
|
|
|
return PROJECTM_K_ESCAPE; |
|
|
|
case DGL_NAMESPACE::kKeyDelete: |
|
|
|
return PROJECTM_K_DELETE; |
|
|
|
case DGL_NAMESPACE::kKeyF1: |
|
|
|
return PROJECTM_K_F1; |
|
|
|
case DGL_NAMESPACE::kKeyF2: |
|
|
|
return PROJECTM_K_F2; |
|
|
|
case DGL_NAMESPACE::kKeyF3: |
|
|
|
return PROJECTM_K_F3; |
|
|
|
case DGL_NAMESPACE::kKeyF4: |
|
|
|
return PROJECTM_K_F4; |
|
|
|
case DGL_NAMESPACE::kKeyF5: |
|
|
|
return PROJECTM_K_F5; |
|
|
|
case DGL_NAMESPACE::kKeyF6: |
|
|
|
return PROJECTM_K_F6; |
|
|
|
case DGL_NAMESPACE::kKeyF7: |
|
|
|
return PROJECTM_K_F7; |
|
|
|
case DGL_NAMESPACE::kKeyF8: |
|
|
|
return PROJECTM_K_F8; |
|
|
|
case DGL_NAMESPACE::kKeyF9: |
|
|
|
return PROJECTM_K_F9; |
|
|
|
case DGL_NAMESPACE::kKeyF10: |
|
|
|
return PROJECTM_K_F10; |
|
|
|
case DGL_NAMESPACE::kKeyF11: |
|
|
|
return PROJECTM_K_F11; |
|
|
|
case DGL_NAMESPACE::kKeyF12: |
|
|
|
return PROJECTM_K_F12; |
|
|
|
case DGL_NAMESPACE::kKeyLeft: |
|
|
|
return PROJECTM_K_LEFT; |
|
|
|
case DGL_NAMESPACE::kKeyUp: |
|
|
|
return PROJECTM_K_UP; |
|
|
|
case DGL_NAMESPACE::kKeyRight: |
|
|
|
return PROJECTM_K_RIGHT; |
|
|
|
case DGL_NAMESPACE::kKeyDown: |
|
|
|
return PROJECTM_K_DOWN; |
|
|
|
case DGL_NAMESPACE::kKeyPageUp: |
|
|
|
return PROJECTM_K_PAGEUP; |
|
|
|
case DGL_NAMESPACE::kKeyPageDown: |
|
|
|
return PROJECTM_K_PAGEDOWN; |
|
|
|
case DGL_NAMESPACE::kKeyHome: |
|
|
|
return PROJECTM_K_HOME; |
|
|
|
case DGL_NAMESPACE::kKeyEnd: |
|
|
|
return PROJECTM_K_END; |
|
|
|
case DGL_NAMESPACE::kKeyInsert: |
|
|
|
return PROJECTM_K_INSERT; |
|
|
|
case DGL_NAMESPACE::kKeyShiftL: |
|
|
|
return PROJECTM_K_LSHIFT; |
|
|
|
case DGL_NAMESPACE::kKeyShiftR: |
|
|
|
return PROJECTM_K_RSHIFT; |
|
|
|
case DGL_NAMESPACE::kKeyControlL: |
|
|
|
return PROJECTM_K_LCTRL; |
|
|
|
case DGL_NAMESPACE::kKeyControlR: |
|
|
|
case DGL_NAMESPACE::kKeyAltL: |
|
|
|
case DGL_NAMESPACE::kKeyAltR: |
|
|
|
case DGL_NAMESPACE::kKeySuperL: |
|
|
|
case DGL_NAMESPACE::kKeySuperR: |
|
|
|
case DGL_NAMESPACE::kKeyMenu: |
|
|
|
case DGL_NAMESPACE::kKeyCapsLock: |
|
|
|
case DGL_NAMESPACE::kKeyScrollLock: |
|
|
|
case DGL_NAMESPACE::kKeyNumLock: |
|
|
|
case DGL_NAMESPACE::kKeyPrintScreen: |
|
|
|
case DGL_NAMESPACE::kKeyPause: |
|
|
|
default: |
|
|
|
return PROJECTM_K_NONE; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
bool DistrhoUIProM::onKeyboard(const KeyboardEvent& ev) |
|
|
|
{ |
|
|
|
if (fPM == nullptr) |
|
|
|
return false; |
|
|
|
|
|
|
|
#if 0 |
|
|
|
if (ev.press && (ev.key == '1' || ev.key == '+' || ev.key == '-')) |
|
|
|
{ |
|
|
|
if (ev.key == '1') |
|
|
@@ -217,40 +266,28 @@ bool DistrhoUIProM::onKeyboard(const KeyboardEvent& ev) |
|
|
|
|
|
|
|
return true; |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
projectMKeycode pmKey = PROJECTM_K_NONE; |
|
|
|
projectMModifier pmMod = PROJECTM_KMOD_LSHIFT; |
|
|
|
projectMKeycode pmKey = PROJECTM_K_NONE; |
|
|
|
|
|
|
|
if ((ev.key >= PROJECTM_K_0 && ev.key <= PROJECTM_K_9) || |
|
|
|
(ev.key >= PROJECTM_K_A && ev.key <= PROJECTM_K_Z) || |
|
|
|
(ev.key >= PROJECTM_K_a && ev.key <= PROJECTM_K_z)) |
|
|
|
{ |
|
|
|
pmKey = static_cast<projectMKeycode>(ev.key); |
|
|
|
|
|
|
|
if (ev.mod & DGL_NAMESPACE::kModifierShift) |
|
|
|
pmKey = static_cast<projectMKeycode>(pmKey + (PROJECTM_K_a - PROJECTM_K_A)); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
switch (ev.key) |
|
|
|
{ |
|
|
|
case DGL_NAMESPACE::kKeyBackspace: |
|
|
|
pmKey = PROJECTM_K_BACKSPACE; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyEscape: |
|
|
|
pmKey = PROJECTM_K_ESCAPE; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyDelete: |
|
|
|
pmKey = PROJECTM_K_DELETE; |
|
|
|
break; |
|
|
|
} |
|
|
|
pmKey = dgl2pmkey(static_cast<DGL_NAMESPACE::Key>(ev.key)); |
|
|
|
} |
|
|
|
|
|
|
|
if (pmKey == PROJECTM_K_NONE) |
|
|
|
return false; |
|
|
|
|
|
|
|
if (ev.mod & DGL_NAMESPACE::kModifierControl) |
|
|
|
pmMod = PROJECTM_KMOD_LCTRL; |
|
|
|
|
|
|
|
fPM->key_handler(ev.press ? PROJECTM_KEYUP : PROJECTM_KEYDOWN, pmKey, pmMod); |
|
|
|
|
|
|
|
fPM->default_key_handler(ev.press ? PROJECTM_KEYUP : PROJECTM_KEYDOWN, pmKey); |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
@@ -259,93 +296,12 @@ bool DistrhoUIProM::onSpecial(const SpecialEvent& ev) |
|
|
|
if (fPM == nullptr) |
|
|
|
return false; |
|
|
|
|
|
|
|
projectMKeycode pmKey = PROJECTM_K_NONE; |
|
|
|
projectMModifier pmMod = PROJECTM_KMOD_LSHIFT; |
|
|
|
|
|
|
|
switch (ev.key) |
|
|
|
{ |
|
|
|
case DGL_NAMESPACE::kKeyF1: |
|
|
|
pmKey = PROJECTM_K_F1; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyF2: |
|
|
|
pmKey = PROJECTM_K_F2; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyF3: |
|
|
|
pmKey = PROJECTM_K_F3; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyF4: |
|
|
|
pmKey = PROJECTM_K_F4; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyF5: |
|
|
|
pmKey = PROJECTM_K_F5; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyF6: |
|
|
|
pmKey = PROJECTM_K_F6; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyF7: |
|
|
|
pmKey = PROJECTM_K_F7; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyF8: |
|
|
|
pmKey = PROJECTM_K_F8; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyF9: |
|
|
|
pmKey = PROJECTM_K_F9; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyF10: |
|
|
|
pmKey = PROJECTM_K_F10; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyF11: |
|
|
|
pmKey = PROJECTM_K_F11; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyF12: |
|
|
|
pmKey = PROJECTM_K_F12; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyLeft: |
|
|
|
pmKey = PROJECTM_K_LEFT; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyUp: |
|
|
|
pmKey = PROJECTM_K_UP; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyRight: |
|
|
|
pmKey = PROJECTM_K_RIGHT; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyDown: |
|
|
|
pmKey = PROJECTM_K_DOWN; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyPageUp: |
|
|
|
pmKey = PROJECTM_K_PAGEUP; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyPageDown: |
|
|
|
pmKey = PROJECTM_K_PAGEDOWN; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyHome: |
|
|
|
pmKey = PROJECTM_K_HOME; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyEnd: |
|
|
|
pmKey = PROJECTM_K_END; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyInsert: |
|
|
|
pmKey = PROJECTM_K_INSERT; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyShift: |
|
|
|
pmKey = PROJECTM_K_LSHIFT; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyControl: |
|
|
|
pmKey = PROJECTM_K_LCTRL; |
|
|
|
break; |
|
|
|
case DGL_NAMESPACE::kKeyAlt: |
|
|
|
case DGL_NAMESPACE::kKeySuper: |
|
|
|
break; |
|
|
|
} |
|
|
|
const projectMKeycode pmKey = dgl2pmkey(ev.key); |
|
|
|
|
|
|
|
if (pmKey == PROJECTM_K_NONE) |
|
|
|
return false; |
|
|
|
|
|
|
|
if (ev.mod & DGL_NAMESPACE::kModifierControl) |
|
|
|
pmMod = PROJECTM_KMOD_LCTRL; |
|
|
|
|
|
|
|
fPM->key_handler(ev.press ? PROJECTM_KEYUP : PROJECTM_KEYDOWN, pmKey, pmMod); |
|
|
|
|
|
|
|
fPM->default_key_handler(ev.press ? PROJECTM_KEYUP : PROJECTM_KEYDOWN, pmKey); |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|