Signed-off-by: falkTX <falktx@falktx.com>tags/22.06
| @@ -1 +1 @@ | |||
| Subproject commit 67c699162d3b16526684560af55bc0e6f30f075d | |||
| Subproject commit e78faac205539ea0e240a096ca7da7cfdfd3211d | |||
| @@ -1 +1 @@ | |||
| Subproject commit 6c11b17d5f794c224fd0ee8aa872c54e36279123 | |||
| Subproject commit df80ab802d7e758eeead02e3ad7d80e4ff332b14 | |||
| @@ -1 +1 @@ | |||
| Subproject commit ac9b574f6f8294fbfaf0aab1c943ab33de7afce2 | |||
| Subproject commit 0c04a07e562f502324bb417fb56dbaab7911b010 | |||
| @@ -0,0 +1 @@ | |||
| ../custom/glfw.cpp | |||
| @@ -0,0 +1 @@ | |||
| ../custom/glfw.cpp | |||
| @@ -0,0 +1 @@ | |||
| ../custom/glfw.cpp | |||
| @@ -39,148 +39,6 @@ | |||
| #include "PluginContext.hpp" | |||
| #include "WindowParameters.hpp" | |||
| GLFWAPI int glfwGetKeyScancode(int) { return 0; } | |||
| GLFWAPI const char* glfwGetClipboardString(GLFWwindow*) | |||
| { | |||
| CardinalPluginContext* const context = static_cast<CardinalPluginContext*>(APP); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context != nullptr, nullptr); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context->ui != nullptr, nullptr); | |||
| size_t dataSize; | |||
| return static_cast<const char*>(context->ui->getClipboard(dataSize)); | |||
| } | |||
| GLFWAPI void glfwSetClipboardString(GLFWwindow*, const char* const text) | |||
| { | |||
| DISTRHO_SAFE_ASSERT_RETURN(text != nullptr,); | |||
| CardinalPluginContext* const context = static_cast<CardinalPluginContext*>(APP); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context != nullptr,); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context->ui != nullptr,); | |||
| context->ui->setClipboard(nullptr, text, std::strlen(text)+1); | |||
| } | |||
| GLFWAPI void glfwSetCursor(GLFWwindow*, GLFWcursor* const cursor) | |||
| { | |||
| CardinalPluginContext* const context = static_cast<CardinalPluginContext*>(APP); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context != nullptr,); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context->ui != nullptr,); | |||
| context->ui->setCursor(cursor != nullptr ? kMouseCursorDiagonal : kMouseCursorArrow); | |||
| } | |||
| GLFWAPI double glfwGetTime(void) | |||
| { | |||
| CardinalPluginContext* const context = static_cast<CardinalPluginContext*>(APP); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context != nullptr, 0.0); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context->ui != nullptr, 0.0); | |||
| return context->ui->getApp().getTime(); | |||
| } | |||
| GLFWAPI const char* glfwGetKeyName(const int key, int) | |||
| { | |||
| switch (key) | |||
| { | |||
| case '\"': return "\""; | |||
| case '\'': return "\'"; | |||
| case '\\': return "\\"; | |||
| case ' ': return " "; | |||
| case '!': return "!"; | |||
| case '#': return "#"; | |||
| case '$': return "$"; | |||
| case '%': return "%"; | |||
| case '&': return "&"; | |||
| case '(': return "("; | |||
| case ')': return ")"; | |||
| case '*': return "*"; | |||
| case '+': return "+"; | |||
| case ',': return ","; | |||
| case '-': return "-"; | |||
| case '.': return "."; | |||
| case '/': return "/"; | |||
| case '0': return "0"; | |||
| case '1': return "1"; | |||
| case '2': return "2"; | |||
| case '3': return "3"; | |||
| case '4': return "4"; | |||
| case '5': return "5"; | |||
| case '6': return "6"; | |||
| case '7': return "7"; | |||
| case '8': return "8"; | |||
| case '9': return "9"; | |||
| case ':': return ":"; | |||
| case ';': return ";"; | |||
| case '<': return "<"; | |||
| case '=': return "="; | |||
| case '>': return ">"; | |||
| case '?': return "?"; | |||
| case '@': return "@"; | |||
| /* Rack expects lowercase, forced below | |||
| case 'A': return "A"; | |||
| case 'B': return "B"; | |||
| case 'C': return "C"; | |||
| case 'D': return "D"; | |||
| case 'E': return "E"; | |||
| case 'F': return "F"; | |||
| case 'G': return "G"; | |||
| case 'H': return "H"; | |||
| case 'I': return "I"; | |||
| case 'J': return "J"; | |||
| case 'K': return "K"; | |||
| case 'L': return "L"; | |||
| case 'M': return "M"; | |||
| case 'N': return "N"; | |||
| case 'O': return "O"; | |||
| case 'P': return "P"; | |||
| case 'Q': return "Q"; | |||
| case 'R': return "R"; | |||
| case 'S': return "S"; | |||
| case 'T': return "T"; | |||
| case 'U': return "U"; | |||
| case 'V': return "V"; | |||
| case 'W': return "W"; | |||
| case 'X': return "X"; | |||
| case 'Y': return "Y"; | |||
| case 'Z': return "Z"; | |||
| */ | |||
| case '[': return "["; | |||
| case ']': return "]"; | |||
| case '^': return "^"; | |||
| case '_': return "_"; | |||
| case '`': return "`"; | |||
| case 'a': case 'A': return "a"; | |||
| case 'b': case 'B': return "b"; | |||
| case 'c': case 'C': return "c"; | |||
| case 'd': case 'D': return "d"; | |||
| case 'e': case 'E': return "e"; | |||
| case 'f': case 'F': return "f"; | |||
| case 'g': case 'G': return "g"; | |||
| case 'h': case 'H': return "h"; | |||
| case 'i': case 'I': return "i"; | |||
| case 'j': case 'J': return "j"; | |||
| case 'k': case 'K': return "k"; | |||
| case 'l': case 'L': return "l"; | |||
| case 'm': case 'M': return "m"; | |||
| case 'n': case 'N': return "n"; | |||
| case 'o': case 'O': return "o"; | |||
| case 'p': case 'P': return "p"; | |||
| case 'q': case 'Q': return "q"; | |||
| case 'r': case 'R': return "r"; | |||
| case 's': case 'S': return "s"; | |||
| case 't': case 'T': return "t"; | |||
| case 'u': case 'U': return "u"; | |||
| case 'v': case 'V': return "v"; | |||
| case 'w': case 'W': return "w"; | |||
| case 'x': case 'X': return "x"; | |||
| case 'y': case 'Y': return "y"; | |||
| case 'z': case 'Z': return "z"; | |||
| default: return nullptr; | |||
| } | |||
| } | |||
| namespace rack { | |||
| namespace app { | |||
| widget::Widget* createMenuBar(bool isStandalone); | |||
| @@ -48,6 +48,8 @@ endif # STATIC_BUILD | |||
| # -------------------------------------------------------------- | |||
| # Import base definitions | |||
| NVG_DISABLE_SKIPPING_WHITESPACE = true | |||
| NVG_FONT_TEXTURE_FLAGS = NVG_IMAGE_NEAREST | |||
| USE_NANOVG_FBO = true | |||
| include ../../dpf/Makefile.base.mk | |||
| @@ -80,6 +82,7 @@ FILES_DSP += RemoteNanoVG.cpp | |||
| FILES_DSP += RemoteWindow.cpp | |||
| else | |||
| FILES_UI = CardinalUI.cpp | |||
| FILES_UI += glfw.cpp | |||
| FILES_UI += Window.cpp | |||
| endif | |||
| @@ -120,9 +123,6 @@ endif | |||
| # -------------------------------------------------------------- | |||
| # Do some magic | |||
| NVG_DISABLE_SKIPPING_WHITESPACE = true | |||
| NVG_FONT_TEXTURE_FLAGS = NVG_IMAGE_NEAREST | |||
| USE_NANOVG_FBO = true | |||
| USE_VST2_BUNDLE = true | |||
| include ../../dpf/Makefile.plugins.mk | |||
| @@ -0,0 +1,163 @@ | |||
| /* | |||
| * DISTRHO Cardinal Plugin | |||
| * Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU General Public License as | |||
| * published by the Free Software Foundation; either version 3 of | |||
| * the License, or any later version. | |||
| * | |||
| * This program is distributed in the hope that it will be useful, | |||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
| * GNU General Public License for more details. | |||
| * | |||
| * For a full copy of the GNU General Public License see the LICENSE file. | |||
| */ | |||
| #include "Application.hpp" | |||
| #include "PluginContext.hpp" | |||
| #include <GLFW/glfw3.h> | |||
| GLFWAPI int glfwGetKeyScancode(int) { return 0; } | |||
| GLFWAPI const char* glfwGetClipboardString(GLFWwindow*) | |||
| { | |||
| CardinalPluginContext* const context = static_cast<CardinalPluginContext*>(APP); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context != nullptr, nullptr); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context->ui != nullptr, nullptr); | |||
| size_t dataSize; | |||
| return static_cast<const char*>(context->ui->getClipboard(dataSize)); | |||
| } | |||
| GLFWAPI void glfwSetClipboardString(GLFWwindow*, const char* const text) | |||
| { | |||
| DISTRHO_SAFE_ASSERT_RETURN(text != nullptr,); | |||
| CardinalPluginContext* const context = static_cast<CardinalPluginContext*>(APP); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context != nullptr,); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context->ui != nullptr,); | |||
| context->ui->setClipboard(nullptr, text, std::strlen(text)+1); | |||
| } | |||
| GLFWAPI void glfwSetCursor(GLFWwindow*, GLFWcursor* const cursor) | |||
| { | |||
| CardinalPluginContext* const context = static_cast<CardinalPluginContext*>(APP); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context != nullptr,); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context->ui != nullptr,); | |||
| context->ui->setCursor(cursor != nullptr ? kMouseCursorDiagonal : kMouseCursorArrow); | |||
| } | |||
| GLFWAPI double glfwGetTime(void) | |||
| { | |||
| CardinalPluginContext* const context = static_cast<CardinalPluginContext*>(APP); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context != nullptr, 0.0); | |||
| DISTRHO_SAFE_ASSERT_RETURN(context->ui != nullptr, 0.0); | |||
| return context->ui->getApp().getTime(); | |||
| } | |||
| GLFWAPI const char* glfwGetKeyName(const int key, int) | |||
| { | |||
| switch (key) | |||
| { | |||
| case '\"': return "\""; | |||
| case '\'': return "\'"; | |||
| case '\\': return "\\"; | |||
| case ' ': return " "; | |||
| case '!': return "!"; | |||
| case '#': return "#"; | |||
| case '$': return "$"; | |||
| case '%': return "%"; | |||
| case '&': return "&"; | |||
| case '(': return "("; | |||
| case ')': return ")"; | |||
| case '*': return "*"; | |||
| case '+': return "+"; | |||
| case ',': return ","; | |||
| case '-': return "-"; | |||
| case '.': return "."; | |||
| case '/': return "/"; | |||
| case '0': return "0"; | |||
| case '1': return "1"; | |||
| case '2': return "2"; | |||
| case '3': return "3"; | |||
| case '4': return "4"; | |||
| case '5': return "5"; | |||
| case '6': return "6"; | |||
| case '7': return "7"; | |||
| case '8': return "8"; | |||
| case '9': return "9"; | |||
| case ':': return ":"; | |||
| case ';': return ";"; | |||
| case '<': return "<"; | |||
| case '=': return "="; | |||
| case '>': return ">"; | |||
| case '?': return "?"; | |||
| case '@': return "@"; | |||
| /* Rack expects lowercase, forced below | |||
| case 'A': return "A"; | |||
| case 'B': return "B"; | |||
| case 'C': return "C"; | |||
| case 'D': return "D"; | |||
| case 'E': return "E"; | |||
| case 'F': return "F"; | |||
| case 'G': return "G"; | |||
| case 'H': return "H"; | |||
| case 'I': return "I"; | |||
| case 'J': return "J"; | |||
| case 'K': return "K"; | |||
| case 'L': return "L"; | |||
| case 'M': return "M"; | |||
| case 'N': return "N"; | |||
| case 'O': return "O"; | |||
| case 'P': return "P"; | |||
| case 'Q': return "Q"; | |||
| case 'R': return "R"; | |||
| case 'S': return "S"; | |||
| case 'T': return "T"; | |||
| case 'U': return "U"; | |||
| case 'V': return "V"; | |||
| case 'W': return "W"; | |||
| case 'X': return "X"; | |||
| case 'Y': return "Y"; | |||
| case 'Z': return "Z"; | |||
| */ | |||
| case '[': return "["; | |||
| case ']': return "]"; | |||
| case '^': return "^"; | |||
| case '_': return "_"; | |||
| case '`': return "`"; | |||
| case 'a': case 'A': return "a"; | |||
| case 'b': case 'B': return "b"; | |||
| case 'c': case 'C': return "c"; | |||
| case 'd': case 'D': return "d"; | |||
| case 'e': case 'E': return "e"; | |||
| case 'f': case 'F': return "f"; | |||
| case 'g': case 'G': return "g"; | |||
| case 'h': case 'H': return "h"; | |||
| case 'i': case 'I': return "i"; | |||
| case 'j': case 'J': return "j"; | |||
| case 'k': case 'K': return "k"; | |||
| case 'l': case 'L': return "l"; | |||
| case 'm': case 'M': return "m"; | |||
| case 'n': case 'N': return "n"; | |||
| case 'o': case 'O': return "o"; | |||
| case 'p': case 'P': return "p"; | |||
| case 'q': case 'Q': return "q"; | |||
| case 'r': case 'R': return "r"; | |||
| case 's': case 'S': return "s"; | |||
| case 't': case 'T': return "t"; | |||
| case 'u': case 'U': return "u"; | |||
| case 'v': case 'V': return "v"; | |||
| case 'w': case 'W': return "w"; | |||
| case 'x': case 'X': return "x"; | |||
| case 'y': case 'Y': return "y"; | |||
| case 'z': case 'Z': return "z"; | |||
| default: return nullptr; | |||
| } | |||
| } | |||