DistrhoUIStub.cpp (3980B)
1 /* 2 * DISTRHO Plugin Framework (DPF) 3 * Copyright (C) 2012-2022 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 #include "DistrhoUIInternal.hpp" 18 19 START_NAMESPACE_DISTRHO 20 21 // -------------------------------------------------------------------------------------------------------------------- 22 23 #if ! DISTRHO_PLUGIN_WANT_STATE 24 static constexpr const setStateFunc setStateCallback = nullptr; 25 #endif 26 #if ! DISTRHO_PLUGIN_WANT_MIDI_INPUT 27 static constexpr const sendNoteFunc sendNoteCallback = nullptr; 28 #endif 29 30 // -------------------------------------------------------------------------------------------------------------------- 31 32 /** 33 * Stub UI class, does nothing but serving as example code for other implementations. 34 */ 35 class UIStub 36 { 37 public: 38 UIStub(const intptr_t winId, 39 const double sampleRate, 40 const char* const bundlePath, 41 void* const dspPtr, 42 const float scaleFactor) 43 : fUI(this, winId, sampleRate, 44 editParameterCallback, 45 setParameterCallback, 46 setStateCallback, 47 sendNoteCallback, 48 setSizeCallback, 49 fileRequestCallback, 50 bundlePath, dspPtr, scaleFactor) 51 { 52 } 53 54 // ---------------------------------------------------------------------------------------------------------------- 55 56 private: 57 // Stub stuff here 58 59 // Plugin UI (after Stub stuff so the UI can call into us during its constructor) 60 UIExporter fUI; 61 62 // ---------------------------------------------------------------------------------------------------------------- 63 // DPF callbacks 64 65 void editParameter(uint32_t, bool) const 66 { 67 } 68 69 static void editParameterCallback(void* const ptr, const uint32_t rindex, const bool started) 70 { 71 static_cast<UIStub*>(ptr)->editParameter(rindex, started); 72 } 73 74 void setParameterValue(uint32_t, float) 75 { 76 } 77 78 static void setParameterCallback(void* const ptr, const uint32_t rindex, const float value) 79 { 80 static_cast<UIStub*>(ptr)->setParameterValue(rindex, value); 81 } 82 83 void setSize(uint, uint) 84 { 85 } 86 87 static void setSizeCallback(void* const ptr, const uint width, const uint height) 88 { 89 static_cast<UIStub*>(ptr)->setSize(width, height); 90 } 91 92 #if DISTRHO_PLUGIN_WANT_STATE 93 void setState(const char*, const char*) 94 { 95 } 96 97 static void setStateCallback(void* const ptr, const char* key, const char* value) 98 { 99 static_cast<UIStub*>(ptr)->setState(key, value); 100 } 101 #endif 102 103 #if DISTRHO_PLUGIN_WANT_MIDI_INPUT 104 void sendNote(const uint8_t channel, const uint8_t note, const uint8_t velocity) 105 { 106 } 107 108 static void sendNoteCallback(void* const ptr, const uint8_t channel, const uint8_t note, const uint8_t velocity) 109 { 110 static_cast<UIStub*>(ptr)->sendNote(channel, note, velocity); 111 } 112 #endif 113 114 bool fileRequest(const char*) 115 { 116 return true; 117 } 118 119 static bool fileRequestCallback(void* const ptr, const char* const key) 120 { 121 return static_cast<UIStub*>(ptr)->fileRequest(key); 122 } 123 }; 124 125 // -------------------------------------------------------------------------------------------------------------------- 126 127 END_NAMESPACE_DISTRHO