| @@ -2,26 +2,26 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef __DISTRHO_PLUGIN_HPP__ | |||
| #define __DISTRHO_PLUGIN_HPP__ | |||
| #ifndef DISTRHO_PLUGIN_HPP_INCLUDED | |||
| #define DISTRHO_PLUGIN_HPP_INCLUDED | |||
| #include "DistrhoUtils.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Parameter Hints | |||
| const uint32_t PARAMETER_IS_AUTOMABLE = 1 << 0; | |||
| @@ -30,7 +30,7 @@ const uint32_t PARAMETER_IS_INTEGER = 1 << 2; | |||
| const uint32_t PARAMETER_IS_LOGARITHMIC = 1 << 3; | |||
| const uint32_t PARAMETER_IS_OUTPUT = 1 << 4; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Parameter Ranges | |||
| struct ParameterRanges { | |||
| @@ -41,7 +41,7 @@ struct ParameterRanges { | |||
| float stepSmall; | |||
| float stepLarge; | |||
| ParameterRanges() | |||
| ParameterRanges() noexcept | |||
| : def(0.0f), | |||
| min(0.0f), | |||
| max(1.0f), | |||
| @@ -49,7 +49,7 @@ struct ParameterRanges { | |||
| stepSmall(0.00001f), | |||
| stepLarge(0.01f) {} | |||
| ParameterRanges(float def, float min, float max) | |||
| ParameterRanges(float def, float min, float max) noexcept | |||
| : step(0.001f), | |||
| stepSmall(0.00001f), | |||
| stepLarge(0.01f) | |||
| @@ -59,7 +59,7 @@ struct ParameterRanges { | |||
| this->max = max; | |||
| } | |||
| ParameterRanges(float def, float min, float max, float step, float stepSmall, float stepLarge) | |||
| ParameterRanges(float def, float min, float max, float step, float stepSmall, float stepLarge) noexcept | |||
| { | |||
| this->def = def; | |||
| this->min = min; | |||
| @@ -69,7 +69,7 @@ struct ParameterRanges { | |||
| this->stepLarge = stepLarge; | |||
| } | |||
| void clear() | |||
| void clear() noexcept | |||
| { | |||
| def = 0.0f; | |||
| min = 0.0f; | |||
| @@ -79,7 +79,7 @@ struct ParameterRanges { | |||
| stepLarge = 0.01f; | |||
| } | |||
| void fixValue(float& value) const | |||
| void fixValue(float& value) const noexcept | |||
| { | |||
| if (value < min) | |||
| value = min; | |||
| @@ -87,7 +87,7 @@ struct ParameterRanges { | |||
| value = max; | |||
| } | |||
| float fixedValue(const float& value) const | |||
| float getFixedValue(const float& value) const noexcept | |||
| { | |||
| if (value < min) | |||
| return min; | |||
| @@ -96,25 +96,24 @@ struct ParameterRanges { | |||
| return value; | |||
| } | |||
| float normalizedValue(const float& value) const | |||
| float getNormalizedValue(const float& value) const noexcept | |||
| { | |||
| const float newValue((value - min) / (max - min)); | |||
| if (newValue < 0.0f) | |||
| if (newValue <= 0.0f) | |||
| return 0.0f; | |||
| else if (newValue > 1.0f) | |||
| if (newValue >= 1.0f) | |||
| return 1.0f; | |||
| return newValue; | |||
| } | |||
| float unnormalizedValue(const float& value) const | |||
| float getUnnormalizedValue(const float& value) const noexcept | |||
| { | |||
| return value * (max - min) + min; | |||
| } | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Parameter | |||
| struct Parameter { | |||
| @@ -127,7 +126,7 @@ struct Parameter { | |||
| Parameter() | |||
| : hints(0x0) {} | |||
| void clear() | |||
| void clear() noexcept | |||
| { | |||
| hints = 0x0; | |||
| name = ""; | |||
| @@ -137,7 +136,7 @@ struct Parameter { | |||
| } | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // MidiEvent | |||
| struct MidiEvent { | |||
| @@ -145,12 +144,12 @@ struct MidiEvent { | |||
| uint8_t buf[4]; | |||
| uint8_t size; | |||
| MidiEvent() | |||
| MidiEvent() noexcept | |||
| { | |||
| clear(); | |||
| } | |||
| void clear() | |||
| void clear() noexcept | |||
| { | |||
| frame = 0; | |||
| buf[0] = 0; | |||
| @@ -161,7 +160,7 @@ struct MidiEvent { | |||
| } | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // TimePos | |||
| struct TimePos { | |||
| @@ -169,13 +168,13 @@ struct TimePos { | |||
| uint64_t frame; | |||
| double bpm; | |||
| TimePos() | |||
| TimePos() noexcept | |||
| : playing(false), | |||
| frame(0), | |||
| bpm(120.0) {} | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Plugin | |||
| class Plugin | |||
| @@ -184,30 +183,30 @@ public: | |||
| Plugin(uint32_t parameterCount, uint32_t programCount, uint32_t stateCount); | |||
| virtual ~Plugin(); | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // Host state | |||
| uint32_t d_bufferSize() const; | |||
| double d_sampleRate() const; | |||
| uint32_t d_getBufferSize() const noexcept; | |||
| double d_getSampleRate() const noexcept; | |||
| #if DISTRHO_PLUGIN_WANT_TIMEPOS | |||
| const TimePos& d_timePos() const; | |||
| const TimePos& d_getTimePos() const noexcept; | |||
| #endif | |||
| #if DISTRHO_PLUGIN_WANT_LATENCY | |||
| void d_setLatency(uint32_t frames); | |||
| void d_setLatency(uint32_t frames) noexcept; | |||
| #endif | |||
| protected: | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // Information | |||
| virtual const char* d_name() const { return DISTRHO_PLUGIN_NAME; } | |||
| virtual const char* d_label() const = 0; | |||
| virtual const char* d_maker() const = 0; | |||
| virtual const char* d_license() const = 0; | |||
| virtual uint32_t d_version() const = 0; | |||
| virtual long d_uniqueId() const = 0; | |||
| virtual const char* d_getName() const noexcept { return DISTRHO_PLUGIN_NAME; } | |||
| virtual const char* d_getLabel() const noexcept = 0; | |||
| virtual const char* d_getMaker() const noexcept = 0; | |||
| virtual const char* d_getLicense() const noexcept = 0; | |||
| virtual uint32_t d_getVersion() const noexcept = 0; | |||
| virtual long d_getUniqueId() const noexcept = 0; | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // Init | |||
| virtual void d_initParameter(uint32_t index, Parameter& parameter) = 0; | |||
| @@ -218,10 +217,10 @@ protected: | |||
| virtual void d_initStateKey(uint32_t index, d_string& stateKey) = 0; | |||
| #endif | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // Internal data | |||
| virtual float d_parameterValue(uint32_t index) = 0; | |||
| virtual float d_getParameterValue(uint32_t index) const = 0; | |||
| virtual void d_setParameterValue(uint32_t index, float value) = 0; | |||
| #if DISTRHO_PLUGIN_WANT_PROGRAMS | |||
| virtual void d_setProgram(uint32_t index) = 0; | |||
| @@ -230,20 +229,20 @@ protected: | |||
| virtual void d_setState(const char* key, const char* value) = 0; | |||
| #endif | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // Process | |||
| virtual void d_activate() {} | |||
| virtual void d_deactivate() {} | |||
| virtual void d_run(float** inputs, float** outputs, uint32_t frames, uint32_t midiEventCount, const MidiEvent* midiEvents) = 0; | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // Callbacks (optional) | |||
| virtual void d_bufferSizeChanged(uint32_t newBufferSize); | |||
| virtual void d_sampleRateChanged(double newSampleRate); | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| private: | |||
| struct PrivateData; | |||
| @@ -251,12 +250,13 @@ private: | |||
| friend class PluginInternal; | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Create plugin, entry point | |||
| Plugin* createPlugin(); | |||
| extern Plugin* createPlugin(); | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| #endif // __DISTRHO_PLUGIN_HPP__ | |||
| #endif // DISTRHO_PLUGIN_HPP_INCLUDED | |||
| @@ -2,23 +2,23 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "src/DistrhoPlugin.cpp" | |||
| #if defined(DISTRHO_PLUGIN_TARGET_JACK) | |||
| # include "src/DistrhoPluginJACK.cpp" | |||
| #elif defined(DISTRHO_PLUGIN_TARGET_LADSPA) || defined(DISTRHO_PLUGIN_TARGET_DSSI) | |||
| #elif (defined(DISTRHO_PLUGIN_TARGET_LADSPA) || defined(DISTRHO_PLUGIN_TARGET_DSSI)) | |||
| # include "src/DistrhoPluginLADSPA+DSSI.cpp" | |||
| #elif defined(DISTRHO_PLUGIN_TARGET_LV2) | |||
| # include "src/DistrhoPluginLV2.cpp" | |||
| @@ -2,26 +2,26 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef __DISTRHO_UI_HPP__ | |||
| #define __DISTRHO_UI_HPP__ | |||
| #ifndef DISTRHO_UI_HPP_INCLUDED | |||
| #define DISTRHO_UI_HPP_INCLUDED | |||
| #include "DistrhoUtils.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // UI | |||
| class UI | |||
| @@ -30,10 +30,10 @@ public: | |||
| UI(); | |||
| virtual ~UI(); | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // Host DSP State | |||
| double d_sampleRate() const; | |||
| double d_getSampleRate() const noexcept; | |||
| void d_editParameter(uint32_t index, bool started); | |||
| void d_setParameterValue(uint32_t index, float value); | |||
| #if DISTRHO_PLUGIN_WANT_STATE | |||
| @@ -43,20 +43,20 @@ public: | |||
| void d_sendNote(bool onOff, uint8_t channel, uint8_t note, uint8_t velocity); | |||
| #endif | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // Host UI State | |||
| void d_uiResize(unsigned int width, unsigned int height); | |||
| protected: | |||
| // --------------------------------------------- | |||
| // Information | |||
| // ------------------------------------------------------------------- | |||
| // Basic Information | |||
| virtual const char* d_name() const { return DISTRHO_PLUGIN_NAME; } | |||
| virtual unsigned int d_width() const = 0; | |||
| virtual unsigned int d_height() const = 0; | |||
| virtual const char* d_getName() const noexcept { return DISTRHO_PLUGIN_NAME; } | |||
| virtual unsigned int d_getWidth() const noexcept = 0; | |||
| virtual unsigned int d_getHeight() const noexcept = 0; | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // DSP Callbacks | |||
| virtual void d_parameterChanged(uint32_t index, float value) = 0; | |||
| @@ -70,12 +70,12 @@ protected: | |||
| virtual void d_noteReceived(bool onOff, uint8_t channel, uint8_t note, uint8_t velocity) = 0; | |||
| #endif | |||
| // --------------------------------------------- | |||
| // UI Callbacks | |||
| // ------------------------------------------------------------------- | |||
| // UI Callbacks (optional) | |||
| virtual void d_uiIdle() = 0; | |||
| virtual void d_uiIdle() {} | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| private: | |||
| struct PrivateData; | |||
| @@ -83,12 +83,13 @@ private: | |||
| friend class UIInternal; | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Create UI, entry point | |||
| UI* createUI(); | |||
| extern UI* createUI(); | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| #endif // __DISTRHO_UI_HPP__ | |||
| #endif // DISTRHO_UI_HPP_INCLUDED | |||
| @@ -2,28 +2,28 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef __DISTRHO_UI_EXTERNAL_HPP__ | |||
| #define __DISTRHO_UI_EXTERNAL_HPP__ | |||
| #ifndef DISTRHO_UI_EXTERNAL_HPP_INCLUDED | |||
| #define DISTRHO_UI_EXTERNAL_HPP_INCLUDED | |||
| #include "DistrhoUI.hpp" | |||
| #include <lo/lo.h> | |||
| //#include <lo/lo.h> | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // External UI | |||
| class ExternalUI : public UI | |||
| @@ -33,16 +33,18 @@ public: | |||
| virtual ~ExternalUI() override; | |||
| protected: | |||
| virtual const char* d_externalFilename() const = 0; | |||
| // ------------------------------------------------------------------- | |||
| // Information (External) | |||
| virtual const char* d_getExternalFilename() const = 0; | |||
| private: | |||
| friend class UIInternal; | |||
| // ------------------------------------------------------------------- | |||
| // Implement stuff not needed for external UIs | |||
| // --------------------------------------------- | |||
| // not needed for external UIs | |||
| unsigned int d_getWidth() const noexcept override { return 0; } | |||
| unsigned int d_getHeight() const noexcept override { return 0; } | |||
| unsigned int d_width() const override { return 0; } | |||
| unsigned int d_height() const override { return 0; } | |||
| void d_parameterChanged(uint32_t, float) override {} | |||
| #if DISTRHO_PLUGIN_WANT_PROGRAMS | |||
| void d_programChanged(uint32_t) override {} | |||
| @@ -53,11 +55,15 @@ private: | |||
| #if DISTRHO_PLUGIN_IS_SYNTH | |||
| void d_noteReceived(bool, uint8_t, uint8_t, uint8_t) override {} | |||
| #endif | |||
| void d_uiIdle() override {} | |||
| friend class UIInternal; | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| #endif // __DISTRHO_UI_EXTERNAL_HPP__ | |||
| #endif // DISTRHO_UI_EXTERNAL_HPP_INCLUDED | |||
| @@ -2,16 +2,16 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "src/DistrhoUI.cpp" | |||
| @@ -30,6 +30,6 @@ | |||
| # include "src/DistrhoUIExternal.cpp" | |||
| #elif defined(DISTRHO_UI_OPENGL) | |||
| # include "src/DistrhoUIOpenGL.cpp" | |||
| #else | |||
| #elif defined(DISTRHO_UI_QT) | |||
| # include "src/DistrhoUIQt.cpp" | |||
| #endif | |||
| @@ -2,30 +2,30 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef __DISTRHO_UI_OPENGL_HPP__ | |||
| #define __DISTRHO_UI_OPENGL_HPP__ | |||
| #ifndef DISTRHO_UI_OPENGL_HPP_INCLUDED | |||
| #define DISTRHO_UI_OPENGL_HPP_INCLUDED | |||
| #include "DistrhoUI.hpp" | |||
| #include "dgl/Widget.hpp" | |||
| USE_NAMESPACE_DGL | |||
| using DGL::Widget; | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // OpenGL UI | |||
| class OpenGLUI : public UI, | |||
| @@ -35,38 +35,12 @@ public: | |||
| OpenGLUI(); | |||
| virtual ~OpenGLUI() override; | |||
| protected: | |||
| // --------------------------------------------- | |||
| // Information | |||
| virtual unsigned int d_width() const override = 0; | |||
| virtual unsigned int d_height() const override = 0; | |||
| // --------------------------------------------- | |||
| // DSP Callbacks | |||
| virtual void d_parameterChanged(uint32_t index, float value) override = 0; | |||
| #if DISTRHO_PLUGIN_WANT_PROGRAMS | |||
| virtual void d_programChanged(uint32_t index) override = 0; | |||
| #endif | |||
| #if DISTRHO_PLUGIN_WANT_STATE | |||
| virtual void d_stateChanged(const char* key, const char* value) override = 0; | |||
| #endif | |||
| #if DISTRHO_PLUGIN_IS_SYNTH | |||
| virtual void d_noteReceived(bool onOff, uint8_t channel, uint8_t note, uint8_t velocity) override = 0; | |||
| #endif | |||
| // --------------------------------------------- | |||
| // UI Callbacks | |||
| virtual void d_uiIdle() override {} | |||
| private: | |||
| friend class UIInternal; | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| #endif // __DISTRHO_UI_OPENGL_HPP__ | |||
| #endif // DISTRHO_UI_OPENGL_HPP_INCLUDED | |||
| @@ -2,20 +2,20 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef __DISTRHO_UI_QT_HPP__ | |||
| #define __DISTRHO_UI_QT_HPP__ | |||
| #ifndef DISTRHO_UI_QT_HPP_INCLUDED | |||
| #define DISTRHO_UI_QT_HPP_INCLUDED | |||
| #include "DistrhoUI.hpp" | |||
| @@ -29,7 +29,7 @@ | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Qt UI | |||
| class QtUI : public UI, | |||
| @@ -39,47 +39,31 @@ public: | |||
| QtUI(); | |||
| virtual ~QtUI() override; | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // UI Helpers | |||
| void setSize(unsigned int width, unsigned int height); | |||
| protected: | |||
| // --------------------------------------------- | |||
| // Information | |||
| virtual bool d_resizable() const { return false; } | |||
| virtual uint d_minimumWidth() const { return 100; } | |||
| virtual uint d_minimumHeight() const { return 100; } | |||
| // ------------------------------------------------------------------- | |||
| // Information (Qt) | |||
| // --------------------------------------------- | |||
| // DSP Callbacks | |||
| virtual bool d_isResizable() const noexcept { return false; } | |||
| virtual uint d_getMinimumWidth() const noexcept { return 100; } | |||
| virtual uint d_getMinimumHeight() const noexcept { return 100; } | |||
| virtual void d_parameterChanged(uint32_t index, float value) override = 0; | |||
| #if DISTRHO_PLUGIN_WANT_PROGRAMS | |||
| virtual void d_programChanged(uint32_t index) override = 0; | |||
| #endif | |||
| #if DISTRHO_PLUGIN_WANT_STATE | |||
| virtual void d_stateChanged(const char* key, const char* value) override = 0; | |||
| #endif | |||
| #if DISTRHO_PLUGIN_IS_SYNTH | |||
| virtual void d_noteReceived(bool onOff, uint8_t channel, uint8_t note, uint8_t velocity) override = 0; | |||
| #endif | |||
| // --------------------------------------------- | |||
| // UI Callbacks | |||
| private: | |||
| // ------------------------------------------------------------------- | |||
| // Implemented internally | |||
| virtual void d_uiIdle() override {} | |||
| unsigned int d_getWidth() const noexcept override { return width(); } | |||
| unsigned int d_getHeight() const noexcept override { return height(); } | |||
| private: | |||
| friend class UIInternal; | |||
| unsigned int d_width() const override { return width(); } | |||
| unsigned int d_height() const override { return height(); } | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| #endif // __DISTRHO_UI_QT_HPP__ | |||
| #endif // DISTRHO_UI_QT_HPP_INCLUDED | |||
| @@ -2,20 +2,20 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef __DISTRHO_UTILS_HPP__ | |||
| #define __DISTRHO_UTILS_HPP__ | |||
| #ifndef DISTRHO_UTILS_HPP_INCLUDED | |||
| #define DISTRHO_UTILS_HPP_INCLUDED | |||
| #include "src/DistrhoDefines.h" | |||
| @@ -51,17 +51,17 @@ inline float | |||
| } | |||
| #endif | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // misc functions | |||
| static inline | |||
| long d_cconst(int a, int b, int c, int d) | |||
| long d_cconst(int a, int b, int c, int d) noexcept | |||
| { | |||
| return (a << 24) | (b << 16) | (c << 8) | (d << 0); | |||
| } | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // string print functions | |||
| #ifndef DEBUG | |||
| # define d_debug(...) | |||
| @@ -71,15 +71,9 @@ void d_debug(const char* const fmt, ...) | |||
| { | |||
| va_list args; | |||
| va_start(args, fmt); | |||
| # ifndef DISTRHO_OS_WINDOWS | |||
| std::fprintf(stdout, "\x1b[30;1m"); | |||
| # endif | |||
| std::vfprintf(stdout, fmt, args); | |||
| # ifndef DISTRHO_OS_WINDOWS | |||
| std::fprintf(stdout, "\x1b[0m\n"); | |||
| # else | |||
| std::fprintf(stdout, "\n"); | |||
| # endif | |||
| va_end(args); | |||
| } | |||
| #endif | |||
| @@ -109,19 +103,14 @@ void d_stderr2(const char* const fmt, ...) | |||
| { | |||
| va_list args; | |||
| va_start(args, fmt); | |||
| #ifndef DISTRHO_OS_WINDOWS | |||
| std::fprintf(stderr, "\x1b[31m"); | |||
| #endif | |||
| std::vfprintf(stderr, fmt, args); | |||
| #ifndef DISTRHO_OS_WINDOWS | |||
| std::fprintf(stderr, "\x1b[0m\n"); | |||
| #else | |||
| std::fprintf(stderr, "\n"); | |||
| #endif | |||
| va_end(args); | |||
| } | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // d_*sleep | |||
| static inline | |||
| void d_sleep(unsigned int secs) | |||
| @@ -143,12 +132,13 @@ void d_msleep(unsigned int msecs) | |||
| #endif | |||
| } | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // d_string class | |||
| class d_string | |||
| { | |||
| public: | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // constructors (no explicit conversions allowed) | |||
| explicit d_string() | |||
| @@ -171,7 +161,8 @@ public: | |||
| explicit d_string(const int value) | |||
| { | |||
| char strBuf[0xff] = { '\0' }; | |||
| char strBuf[0xff+1]; | |||
| std::memset(strBuf, 0, (0xff+1)*sizeof(char)); | |||
| std::snprintf(strBuf, 0xff, "%d", value); | |||
| _init(); | |||
| @@ -180,7 +171,8 @@ public: | |||
| explicit d_string(const unsigned int value, const bool hexadecimal = false) | |||
| { | |||
| char strBuf[0xff] = { '\0' }; | |||
| char strBuf[0xff+1]; | |||
| std::memset(strBuf, 0, (0xff+1)*sizeof(char)); | |||
| std::snprintf(strBuf, 0xff, hexadecimal ? "0x%x" : "%u", value); | |||
| _init(); | |||
| @@ -189,7 +181,8 @@ public: | |||
| explicit d_string(const long int value) | |||
| { | |||
| char strBuf[0xff] = { '\0' }; | |||
| char strBuf[0xff+1]; | |||
| std::memset(strBuf, 0, (0xff+1)*sizeof(char)); | |||
| std::snprintf(strBuf, 0xff, "%ld", value); | |||
| _init(); | |||
| @@ -198,7 +191,8 @@ public: | |||
| explicit d_string(const unsigned long int value, const bool hexadecimal = false) | |||
| { | |||
| char strBuf[0xff] = { '\0' }; | |||
| char strBuf[0xff+1]; | |||
| std::memset(strBuf, 0, (0xff+1)*sizeof(char)); | |||
| std::snprintf(strBuf, 0xff, hexadecimal ? "0x%lx" : "%lu", value); | |||
| _init(); | |||
| @@ -207,7 +201,8 @@ public: | |||
| explicit d_string(const float value) | |||
| { | |||
| char strBuf[0xff] = { '\0' }; | |||
| char strBuf[0xff+1]; | |||
| std::memset(strBuf, 0, (0xff+1)*sizeof(char)); | |||
| std::snprintf(strBuf, 0xff, "%f", value); | |||
| _init(); | |||
| @@ -216,49 +211,50 @@ public: | |||
| explicit d_string(const double value) | |||
| { | |||
| char strBuf[0xff] = { '\0' }; | |||
| char strBuf[0xff+1]; | |||
| std::memset(strBuf, 0, (0xff+1)*sizeof(char)); | |||
| std::snprintf(strBuf, 0xff, "%g", value); | |||
| _init(); | |||
| _dup(strBuf); | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // non-explicit constructor | |||
| d_string(const d_string& str) | |||
| { | |||
| _init(); | |||
| _dup(str.buffer); | |||
| _dup(str.fBuffer); | |||
| } | |||
| // --------------------------------------------- | |||
| // deconstructor | |||
| // ------------------------------------------------------------------- | |||
| // destructor | |||
| ~d_string() | |||
| { | |||
| assert(buffer != nullptr); | |||
| assert(fBuffer != nullptr); | |||
| delete[] buffer; | |||
| buffer = nullptr; | |||
| delete[] fBuffer; | |||
| fBuffer = nullptr; | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // public methods | |||
| size_t length() const | |||
| size_t length() const noexcept | |||
| { | |||
| return bufferLen; | |||
| return fBufferLen; | |||
| } | |||
| bool isEmpty() const | |||
| bool isEmpty() const noexcept | |||
| { | |||
| return (bufferLen == 0); | |||
| return (fBufferLen == 0); | |||
| } | |||
| bool isNotEmpty() const | |||
| bool isNotEmpty() const noexcept | |||
| { | |||
| return (bufferLen != 0); | |||
| return (fBufferLen != 0); | |||
| } | |||
| #ifdef __USE_GNU | |||
| @@ -268,14 +264,14 @@ public: | |||
| return false; | |||
| if (ignoreCase) | |||
| return (strcasestr(buffer, strBuf) != nullptr); | |||
| return (strcasestr(fBuffer, strBuf) != nullptr); | |||
| else | |||
| return (std::strstr(buffer, strBuf) != nullptr); | |||
| return (std::strstr(fBuffer, strBuf) != nullptr); | |||
| } | |||
| bool contains(const d_string& str, const bool ignoreCase = false) const | |||
| { | |||
| return contains(str.buffer, ignoreCase); | |||
| return contains(str.fBuffer, ignoreCase); | |||
| } | |||
| #else | |||
| bool contains(const char* const strBuf) const | |||
| @@ -283,21 +279,21 @@ public: | |||
| if (strBuf == nullptr) | |||
| return false; | |||
| return (std::strstr(buffer, strBuf) != nullptr); | |||
| return (std::strstr(fBuffer, strBuf) != nullptr); | |||
| } | |||
| bool contains(const d_string& str) const | |||
| { | |||
| return contains(str.buffer); | |||
| return contains(str.fBuffer); | |||
| } | |||
| #endif | |||
| bool isDigit(const size_t pos) const | |||
| bool isDigit(const size_t pos) const noexcept | |||
| { | |||
| if (pos >= bufferLen) | |||
| if (pos >= fBufferLen) | |||
| return false; | |||
| return (buffer[pos] >= '0' && buffer[pos] <= '9'); | |||
| return (fBuffer[pos] >= '0' && fBuffer[pos] <= '9'); | |||
| } | |||
| bool startsWith(const char* const prefix) const | |||
| @@ -307,10 +303,10 @@ public: | |||
| const size_t prefixLen(std::strlen(prefix)); | |||
| if (bufferLen < prefixLen) | |||
| if (fBufferLen < prefixLen) | |||
| return false; | |||
| return (std::strncmp(buffer + (bufferLen-prefixLen), prefix, prefixLen) == 0); | |||
| return (std::strncmp(fBuffer + (fBufferLen-prefixLen), prefix, prefixLen) == 0); | |||
| } | |||
| bool endsWith(const char* const suffix) const | |||
| @@ -320,124 +316,144 @@ public: | |||
| const size_t suffixLen(std::strlen(suffix)); | |||
| if (bufferLen < suffixLen) | |||
| if (fBufferLen < suffixLen) | |||
| return false; | |||
| return (std::strncmp(buffer + (bufferLen-suffixLen), suffix, suffixLen) == 0); | |||
| return (std::strncmp(fBuffer + (fBufferLen-suffixLen), suffix, suffixLen) == 0); | |||
| } | |||
| void clear() | |||
| void clear() noexcept | |||
| { | |||
| truncate(0); | |||
| } | |||
| size_t find(const char c) const | |||
| size_t find(const char c) const noexcept | |||
| { | |||
| for (size_t i=0; i < bufferLen; ++i) | |||
| for (size_t i=0; i < fBufferLen; ++i) | |||
| { | |||
| if (buffer[i] == c) | |||
| if (fBuffer[i] == c) | |||
| return i; | |||
| } | |||
| return 0; | |||
| } | |||
| size_t rfind(const char c) const | |||
| size_t rfind(const char c) const noexcept | |||
| { | |||
| for (size_t i=bufferLen; i > 0; --i) | |||
| for (size_t i=fBufferLen; i > 0; --i) | |||
| { | |||
| if (buffer[i-1] == c) | |||
| if (fBuffer[i-1] == c) | |||
| return i-1; | |||
| } | |||
| return 0; | |||
| } | |||
| void replace(const char before, const char after) | |||
| size_t rfind(const char* const strBuf) const | |||
| { | |||
| if (strBuf == nullptr || strBuf[0] == '\0') | |||
| return fBufferLen; | |||
| size_t ret = fBufferLen+1; | |||
| const char* tmpBuf = fBuffer; | |||
| for (size_t i=0; i < fBufferLen; ++i) | |||
| { | |||
| if (std::strstr(tmpBuf, strBuf) == nullptr) | |||
| break; | |||
| --ret; | |||
| ++tmpBuf; | |||
| } | |||
| return (ret > fBufferLen) ? fBufferLen : fBufferLen-ret; | |||
| } | |||
| void replace(const char before, const char after) noexcept | |||
| { | |||
| if (after == '\0') | |||
| return; | |||
| for (size_t i=0; i < bufferLen; ++i) | |||
| for (size_t i=0; i < fBufferLen; ++i) | |||
| { | |||
| if (buffer[i] == before) | |||
| buffer[i] = after; | |||
| else if (buffer[i] == '\0') | |||
| if (fBuffer[i] == before) | |||
| fBuffer[i] = after; | |||
| else if (fBuffer[i] == '\0') | |||
| break; | |||
| } | |||
| } | |||
| void truncate(const size_t n) | |||
| void truncate(const size_t n) noexcept | |||
| { | |||
| if (n >= bufferLen) | |||
| if (n >= fBufferLen) | |||
| return; | |||
| for (size_t i=n; i < bufferLen; ++i) | |||
| buffer[i] = '\0'; | |||
| for (size_t i=n; i < fBufferLen; ++i) | |||
| fBuffer[i] = '\0'; | |||
| bufferLen = n; | |||
| fBufferLen = n; | |||
| } | |||
| void toBasic() | |||
| void toBasic() noexcept | |||
| { | |||
| for (size_t i=0; i < bufferLen; ++i) | |||
| for (size_t i=0; i < fBufferLen; ++i) | |||
| { | |||
| if (buffer[i] >= '0' && buffer[i] <= '9') | |||
| if (fBuffer[i] >= '0' && fBuffer[i] <= '9') | |||
| continue; | |||
| if (buffer[i] >= 'A' && buffer[i] <= 'Z') | |||
| if (fBuffer[i] >= 'A' && fBuffer[i] <= 'Z') | |||
| continue; | |||
| if (buffer[i] >= 'a' && buffer[i] <= 'z') | |||
| if (fBuffer[i] >= 'a' && fBuffer[i] <= 'z') | |||
| continue; | |||
| if (buffer[i] == '_') | |||
| if (fBuffer[i] == '_') | |||
| continue; | |||
| buffer[i] = '_'; | |||
| fBuffer[i] = '_'; | |||
| } | |||
| } | |||
| void toLower() | |||
| void toLower() noexcept | |||
| { | |||
| static const char kCharDiff = 'a' - 'A'; | |||
| static const char kCharDiff('a' - 'A'); | |||
| for (size_t i=0; i < bufferLen; ++i) | |||
| for (size_t i=0; i < fBufferLen; ++i) | |||
| { | |||
| if (buffer[i] >= 'A' && buffer[i] <= 'Z') | |||
| buffer[i] += kCharDiff; | |||
| if (fBuffer[i] >= 'A' && fBuffer[i] <= 'Z') | |||
| fBuffer[i] += kCharDiff; | |||
| } | |||
| } | |||
| void toUpper() | |||
| void toUpper() noexcept | |||
| { | |||
| static const char kCharDiff = 'a' - 'A'; | |||
| static const char kCharDiff('a' - 'A'); | |||
| for (size_t i=0; i < bufferLen; ++i) | |||
| for (size_t i=0; i < fBufferLen; ++i) | |||
| { | |||
| if (buffer[i] >= 'a' && buffer[i] <= 'z') | |||
| buffer[i] -= kCharDiff; | |||
| if (fBuffer[i] >= 'a' && fBuffer[i] <= 'z') | |||
| fBuffer[i] -= kCharDiff; | |||
| } | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // public operators | |||
| operator const char*() const | |||
| operator const char*() const noexcept | |||
| { | |||
| return buffer; | |||
| return fBuffer; | |||
| } | |||
| char& operator[](const size_t pos) | |||
| char& operator[](const size_t pos) const noexcept | |||
| { | |||
| return buffer[pos]; | |||
| return fBuffer[pos]; | |||
| } | |||
| bool operator==(const char* const strBuf) const | |||
| { | |||
| return (strBuf != nullptr && std::strcmp(buffer, strBuf) == 0); | |||
| return (strBuf != nullptr && std::strcmp(fBuffer, strBuf) == 0); | |||
| } | |||
| bool operator==(const d_string& str) const | |||
| { | |||
| return operator==(str.buffer); | |||
| return operator==(str.fBuffer); | |||
| } | |||
| bool operator!=(const char* const strBuf) const | |||
| @@ -447,7 +463,7 @@ public: | |||
| bool operator!=(const d_string& str) const | |||
| { | |||
| return !operator==(str.buffer); | |||
| return !operator==(str.fBuffer); | |||
| } | |||
| d_string& operator=(const char* const strBuf) | |||
| @@ -459,15 +475,15 @@ public: | |||
| d_string& operator=(const d_string& str) | |||
| { | |||
| return operator=(str.buffer); | |||
| return operator=(str.fBuffer); | |||
| } | |||
| d_string& operator+=(const char* const strBuf) | |||
| { | |||
| const size_t newBufSize = bufferLen + ((strBuf != nullptr) ? std::strlen(strBuf) : 0) + 1; | |||
| const size_t newBufSize = fBufferLen + ((strBuf != nullptr) ? std::strlen(strBuf) : 0) + 1; | |||
| char newBuf[newBufSize]; | |||
| std::strcpy(newBuf, buffer); | |||
| std::strcpy(newBuf, fBuffer); | |||
| std::strcat(newBuf, strBuf); | |||
| _dup(newBuf, newBufSize-1); | |||
| @@ -477,15 +493,15 @@ public: | |||
| d_string& operator+=(const d_string& str) | |||
| { | |||
| return operator+=(str.buffer); | |||
| return operator+=(str.fBuffer); | |||
| } | |||
| d_string operator+(const char* const strBuf) | |||
| { | |||
| const size_t newBufSize = bufferLen + ((strBuf != nullptr) ? std::strlen(strBuf) : 0) + 1; | |||
| const size_t newBufSize = fBufferLen + ((strBuf != nullptr) ? std::strlen(strBuf) : 0) + 1; | |||
| char newBuf[newBufSize]; | |||
| std::strcpy(newBuf, buffer); | |||
| std::strcpy(newBuf, fBuffer); | |||
| std::strcat(newBuf, strBuf); | |||
| return d_string(newBuf); | |||
| @@ -493,21 +509,21 @@ public: | |||
| d_string operator+(const d_string& str) | |||
| { | |||
| return operator+(str.buffer); | |||
| return operator+(str.fBuffer); | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| private: | |||
| char* buffer; | |||
| size_t bufferLen; | |||
| bool firstInit; | |||
| char* fBuffer; | |||
| size_t fBufferLen; | |||
| bool fFirstInit; | |||
| void _init() | |||
| void _init() noexcept | |||
| { | |||
| buffer = nullptr; | |||
| bufferLen = 0; | |||
| firstInit = true; | |||
| fBuffer = nullptr; | |||
| fBufferLen = 0; | |||
| fFirstInit = true; | |||
| } | |||
| // allocate string strBuf if not null | |||
| @@ -517,22 +533,22 @@ private: | |||
| if (strBuf != nullptr) | |||
| { | |||
| // don't recreate string if contents match | |||
| if (firstInit || std::strcmp(buffer, strBuf) != 0) | |||
| if (fFirstInit || std::strcmp(fBuffer, strBuf) != 0) | |||
| { | |||
| if (! firstInit) | |||
| if (! fFirstInit) | |||
| { | |||
| assert(buffer != nullptr); | |||
| delete[] buffer; | |||
| assert(fBuffer != nullptr); | |||
| delete[] fBuffer; | |||
| } | |||
| bufferLen = (size > 0) ? size : std::strlen(strBuf); | |||
| buffer = new char[bufferLen+1]; | |||
| fBufferLen = (size > 0) ? size : std::strlen(strBuf); | |||
| fBuffer = new char[fBufferLen+1]; | |||
| std::strcpy(buffer, strBuf); | |||
| std::strcpy(fBuffer, strBuf); | |||
| buffer[bufferLen] = '\0'; | |||
| fBuffer[fBufferLen] = '\0'; | |||
| firstInit = false; | |||
| fFirstInit = false; | |||
| } | |||
| } | |||
| else | |||
| @@ -540,31 +556,31 @@ private: | |||
| assert(size == 0); | |||
| // don't recreate null string | |||
| if (firstInit || bufferLen != 0) | |||
| if (fFirstInit || fBufferLen != 0) | |||
| { | |||
| if (! firstInit) | |||
| if (! fFirstInit) | |||
| { | |||
| assert(buffer != nullptr); | |||
| delete[] buffer; | |||
| assert(fBuffer != nullptr); | |||
| delete[] fBuffer; | |||
| } | |||
| bufferLen = 0; | |||
| buffer = new char[1]; | |||
| buffer[0] = '\0'; | |||
| fBufferLen = 0; | |||
| fBuffer = new char[1]; | |||
| fBuffer[0] = '\0'; | |||
| firstInit = false; | |||
| fFirstInit = false; | |||
| } | |||
| } | |||
| } | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| static inline | |||
| d_string operator+(const d_string& strBefore, const char* const strBufAfter) | |||
| { | |||
| const char* const strBufBefore = (const char*)strBefore; | |||
| const size_t newBufSize = strBefore.length() + ((strBufAfter != nullptr) ? std::strlen(strBufAfter) : 0) + 1; | |||
| const size_t newBufSize = strBefore.length() + ((strBufAfter != nullptr) ? std::strlen(strBufAfter) : 0) + 1; | |||
| char newBuf[newBufSize]; | |||
| std::strcpy(newBuf, strBufBefore); | |||
| @@ -577,7 +593,7 @@ static inline | |||
| d_string operator+(const char* const strBufBefore, const d_string& strAfter) | |||
| { | |||
| const char* const strBufAfter = (const char*)strAfter; | |||
| const size_t newBufSize = ((strBufBefore != nullptr) ? std::strlen(strBufBefore) : 0) + strAfter.length() + 1; | |||
| const size_t newBufSize = ((strBufBefore != nullptr) ? std::strlen(strBufBefore) : 0) + strAfter.length() + 1; | |||
| char newBuf[newBufSize]; | |||
| std::strcpy(newBuf, strBufBefore); | |||
| @@ -586,8 +602,6 @@ d_string operator+(const char* const strBufBefore, const d_string& strAfter) | |||
| return d_string(newBuf); | |||
| } | |||
| // ------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| // ----------------------------------------------------------------------- | |||
| #endif // __DISTRHO_UTILS_HPP__ | |||
| #endif // DISTRHO_UTILS_HPP_INCLUDED | |||
| @@ -2,20 +2,20 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef __DISTRHO_DEFINES_H__ | |||
| #define __DISTRHO_DEFINES_H__ | |||
| #ifndef DISTRHO_DEFINES_H_INCLUDED | |||
| #define DISTRHO_DEFINES_H_INCLUDED | |||
| #include "DistrhoPluginInfo.h" | |||
| @@ -115,4 +115,4 @@ | |||
| #define DISTRHO_UI_URI DISTRHO_PLUGIN_URI "#UI" | |||
| #endif // __DISTRHO_DEFINES_H__ | |||
| #endif // DISTRHO_DEFINES_H_INCLUDED | |||
| @@ -2,35 +2,35 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "DistrhoPluginInternal.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Static data | |||
| uint32_t d_lastBufferSize = 0; | |||
| double d_lastSampleRate = 0.0; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Static, fallback data | |||
| const d_string PluginInternal::sFallbackString; | |||
| const ParameterRanges PluginInternal::sFallbackRanges; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Plugin | |||
| Plugin::Plugin(uint32_t parameterCount, uint32_t programCount, uint32_t stateCount) | |||
| @@ -39,7 +39,7 @@ Plugin::Plugin(uint32_t parameterCount, uint32_t programCount, uint32_t stateCou | |||
| if (parameterCount > 0) | |||
| { | |||
| pData->parameterCount = parameterCount; | |||
| pData->parameters = new Parameter[parameterCount]; | |||
| pData->parameters = new Parameter[parameterCount]; | |||
| } | |||
| if (programCount > 0) | |||
| @@ -64,34 +64,34 @@ Plugin::~Plugin() | |||
| delete pData; | |||
| } | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Host state | |||
| uint32_t Plugin::d_bufferSize() const | |||
| uint32_t Plugin::d_getBufferSize() const noexcept | |||
| { | |||
| return pData->bufferSize; | |||
| } | |||
| double Plugin::d_sampleRate() const | |||
| double Plugin::d_getSampleRate() const noexcept | |||
| { | |||
| return pData->sampleRate; | |||
| } | |||
| #if DISTRHO_PLUGIN_WANT_TIMEPOS | |||
| const TimePos& Plugin::d_timePos() const | |||
| const TimePos& Plugin::d_getTimePos() const noexcept | |||
| { | |||
| return pData->timePos; | |||
| } | |||
| #endif | |||
| #if DISTRHO_PLUGIN_WANT_LATENCY | |||
| void Plugin::d_setLatency(uint32_t frames) | |||
| void Plugin::d_setLatency(uint32_t frames) noexcept | |||
| { | |||
| pData->latency = frames; | |||
| } | |||
| #endif | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Callbacks | |||
| void Plugin::d_bufferSizeChanged(uint32_t) | |||
| @@ -102,6 +102,6 @@ void Plugin::d_sampleRateChanged(double) | |||
| { | |||
| } | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| @@ -2,26 +2,26 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef __DISTRHO_PLUGIN_INTERNAL_HPP__ | |||
| #define __DISTRHO_PLUGIN_INTERNAL_HPP__ | |||
| #ifndef DISTRHO_PLUGIN_INTERNAL_HPP_INCLUDED | |||
| #define DISTRHO_PLUGIN_INTERNAL_HPP_INCLUDED | |||
| #include "../DistrhoPlugin.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| #define MAX_MIDI_EVENTS 512 | |||
| @@ -79,14 +79,14 @@ struct Plugin::PrivateData { | |||
| ~PrivateData() | |||
| { | |||
| if (parameterCount > 0 && parameters != nullptr) | |||
| if (parameters != nullptr) | |||
| { | |||
| delete[] parameters; | |||
| parameters = nullptr; | |||
| } | |||
| #if DISTRHO_PLUGIN_WANT_PROGRAMS | |||
| if (programCount > 0 && programNames != nullptr) | |||
| if (programNames != nullptr) | |||
| { | |||
| delete[] programNames; | |||
| programNames = nullptr; | |||
| @@ -94,7 +94,7 @@ struct Plugin::PrivateData { | |||
| #endif | |||
| #if DISTRHO_PLUGIN_WANT_STATE | |||
| if (stateCount > 0 && stateKeys != nullptr) | |||
| if (stateKeys != nullptr) | |||
| { | |||
| delete[] stateKeys; | |||
| stateKeys = nullptr; | |||
| @@ -103,268 +103,268 @@ struct Plugin::PrivateData { | |||
| } | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| class PluginInternal | |||
| { | |||
| public: | |||
| PluginInternal() | |||
| : kPlugin(createPlugin()), | |||
| kData((kPlugin != nullptr) ? kPlugin->pData : nullptr) | |||
| : fPlugin(createPlugin()), | |||
| fData((fPlugin != nullptr) ? fPlugin->pData : nullptr) | |||
| { | |||
| assert(kPlugin != nullptr); | |||
| assert(fPlugin != nullptr); | |||
| if (kPlugin == nullptr) | |||
| if (fPlugin == nullptr) | |||
| return; | |||
| for (uint32_t i=0, count=kData->parameterCount; i < count; ++i) | |||
| kPlugin->d_initParameter(i, kData->parameters[i]); | |||
| for (uint32_t i=0, count=fData->parameterCount; i < count; ++i) | |||
| fPlugin->d_initParameter(i, fData->parameters[i]); | |||
| #if DISTRHO_PLUGIN_WANT_PROGRAMS | |||
| for (uint32_t i=0, count=kData->programCount; i < count; ++i) | |||
| kPlugin->d_initProgramName(i, kData->programNames[i]); | |||
| for (uint32_t i=0, count=fData->programCount; i < count; ++i) | |||
| fPlugin->d_initProgramName(i, fData->programNames[i]); | |||
| #endif | |||
| #if DISTRHO_PLUGIN_WANT_STATE | |||
| for (uint32_t i=0, count=kData->stateCount; i < count; ++i) | |||
| kPlugin->d_initStateKey(i, kData->stateKeys[i]); | |||
| for (uint32_t i=0, count=fData->stateCount; i < count; ++i) | |||
| fPlugin->d_initStateKey(i, fData->stateKeys[i]); | |||
| #endif | |||
| } | |||
| ~PluginInternal() | |||
| { | |||
| if (kPlugin != nullptr) | |||
| delete kPlugin; | |||
| if (fPlugin != nullptr) | |||
| delete fPlugin; | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| const char* name() const | |||
| const char* getName() const | |||
| { | |||
| assert(kPlugin != nullptr); | |||
| return (kPlugin != nullptr) ? kPlugin->d_name() : ""; | |||
| assert(fPlugin != nullptr); | |||
| return (fPlugin != nullptr) ? fPlugin->d_getName() : ""; | |||
| } | |||
| const char* label() const | |||
| const char* getLabel() const | |||
| { | |||
| assert(kPlugin != nullptr); | |||
| return (kPlugin != nullptr) ? kPlugin->d_label() : ""; | |||
| assert(fPlugin != nullptr); | |||
| return (fPlugin != nullptr) ? fPlugin->d_getLabel() : ""; | |||
| } | |||
| const char* maker() const | |||
| const char* getMaker() const | |||
| { | |||
| assert(kPlugin != nullptr); | |||
| return (kPlugin != nullptr) ? kPlugin->d_maker() : ""; | |||
| assert(fPlugin != nullptr); | |||
| return (fPlugin != nullptr) ? fPlugin->d_getMaker() : ""; | |||
| } | |||
| const char* license() const | |||
| const char* getLicense() const | |||
| { | |||
| assert(kPlugin != nullptr); | |||
| return (kPlugin != nullptr) ? kPlugin->d_license() : ""; | |||
| assert(fPlugin != nullptr); | |||
| return (fPlugin != nullptr) ? fPlugin->d_getLicense() : ""; | |||
| } | |||
| uint32_t version() const | |||
| uint32_t getVersion() const | |||
| { | |||
| assert(kPlugin != nullptr); | |||
| return (kPlugin != nullptr) ? kPlugin->d_version() : 1000; | |||
| assert(fPlugin != nullptr); | |||
| return (fPlugin != nullptr) ? fPlugin->d_getVersion() : 1000; | |||
| } | |||
| long uniqueId() const | |||
| long getUniqueId() const | |||
| { | |||
| assert(kPlugin != nullptr); | |||
| return (kPlugin != nullptr) ? kPlugin->d_uniqueId() : 0; | |||
| assert(fPlugin != nullptr); | |||
| return (fPlugin != nullptr) ? fPlugin->d_getUniqueId() : 0; | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| #if DISTRHO_PLUGIN_WANT_LATENCY | |||
| uint32_t latency() const | |||
| uint32_t getLatency() const | |||
| { | |||
| assert(kData != nullptr); | |||
| return (kData != nullptr) ? kData->latency : 0; | |||
| assert(fData != nullptr); | |||
| return (fData != nullptr) ? fData->getLatency : 0; | |||
| } | |||
| #endif | |||
| uint32_t parameterCount() const | |||
| uint32_t getParameterCount() const | |||
| { | |||
| assert(kData != nullptr); | |||
| return (kData != nullptr) ? kData->parameterCount : 0; | |||
| assert(fData != nullptr); | |||
| return (fData != nullptr) ? fData->parameterCount : 0; | |||
| } | |||
| uint32_t parameterHints(const uint32_t index) const | |||
| uint32_t getParameterHints(const uint32_t index) const | |||
| { | |||
| assert(kData != nullptr && index < kData->parameterCount); | |||
| return (kData != nullptr && index < kData->parameterCount) ? kData->parameters[index].hints : 0x0; | |||
| assert(fData != nullptr && index < fData->parameterCount); | |||
| return (fData != nullptr && index < fData->parameterCount) ? fData->parameters[index].hints : 0x0; | |||
| } | |||
| bool parameterIsOutput(const uint32_t index) const | |||
| bool isParameterIsOutput(const uint32_t index) const | |||
| { | |||
| return (parameterHints(index) & PARAMETER_IS_OUTPUT); | |||
| return (getParameterHints(index) & PARAMETER_IS_OUTPUT); | |||
| } | |||
| const d_string& parameterName(const uint32_t index) const | |||
| const d_string& getParameterName(const uint32_t index) const | |||
| { | |||
| assert(kData != nullptr && index < kData->parameterCount); | |||
| return (kData != nullptr && index < kData->parameterCount) ? kData->parameters[index].name : sFallbackString; | |||
| assert(fData != nullptr && index < fData->parameterCount); | |||
| return (fData != nullptr && index < fData->parameterCount) ? fData->parameters[index].name : sFallbackString; | |||
| } | |||
| const d_string& parameterSymbol(const uint32_t index) const | |||
| const d_string& getParameterSymbol(const uint32_t index) const | |||
| { | |||
| assert(kData != nullptr && index < kData->parameterCount); | |||
| return (kData != nullptr && index < kData->parameterCount) ? kData->parameters[index].symbol : sFallbackString; | |||
| assert(fData != nullptr && index < fData->parameterCount); | |||
| return (fData != nullptr && index < fData->parameterCount) ? fData->parameters[index].symbol : sFallbackString; | |||
| } | |||
| const d_string& parameterUnit(const uint32_t index) const | |||
| const d_string& getParameterUnit(const uint32_t index) const | |||
| { | |||
| assert(kData != nullptr && index < kData->parameterCount); | |||
| return (kData != nullptr && index < kData->parameterCount) ? kData->parameters[index].unit : sFallbackString; | |||
| assert(fData != nullptr && index < fData->parameterCount); | |||
| return (fData != nullptr && index < fData->parameterCount) ? fData->parameters[index].unit : sFallbackString; | |||
| } | |||
| const ParameterRanges& parameterRanges(const uint32_t index) const | |||
| const ParameterRanges& getParameterRanges(const uint32_t index) const | |||
| { | |||
| assert(kData != nullptr && index < kData->parameterCount); | |||
| return (kData != nullptr && index < kData->parameterCount) ? kData->parameters[index].ranges : sFallbackRanges; | |||
| assert(fData != nullptr && index < fData->parameterCount); | |||
| return (fData != nullptr && index < fData->parameterCount) ? fData->parameters[index].ranges : sFallbackRanges; | |||
| } | |||
| float parameterValue(const uint32_t index) | |||
| float getParameterValue(const uint32_t index) const | |||
| { | |||
| assert(kPlugin != nullptr && index < kData->parameterCount); | |||
| return (kPlugin != nullptr && index < kData->parameterCount) ? kPlugin->d_parameterValue(index) : 0.0f; | |||
| assert(fPlugin != nullptr && index < fData->parameterCount); | |||
| return (fPlugin != nullptr && index < fData->parameterCount) ? fPlugin->d_getParameterValue(index) : 0.0f; | |||
| } | |||
| void setParameterValue(const uint32_t index, const float value) | |||
| { | |||
| assert(kPlugin != nullptr && index < kData->parameterCount); | |||
| assert(fPlugin != nullptr && index < fData->parameterCount); | |||
| if (kPlugin != nullptr && index < kData->parameterCount) | |||
| kPlugin->d_setParameterValue(index, value); | |||
| if (fPlugin != nullptr && index < fData->parameterCount) | |||
| fPlugin->d_setParameterValue(index, value); | |||
| } | |||
| #if DISTRHO_PLUGIN_WANT_PROGRAMS | |||
| uint32_t programCount() const | |||
| uint32_t getProgramCount() const | |||
| { | |||
| assert(kData != nullptr); | |||
| return (kData != nullptr) ? kData->programCount : 0; | |||
| assert(fData != nullptr); | |||
| return (fData != nullptr) ? fData->programCount : 0; | |||
| } | |||
| const d_string& programName(const uint32_t index) const | |||
| const d_string& getProgramName(const uint32_t index) const | |||
| { | |||
| assert(kData != nullptr && index < kData->programCount); | |||
| return (kData != nullptr && index < kData->programCount) ? kData->programNames[index] : sFallbackString; | |||
| assert(fData != nullptr && index < fData->programCount); | |||
| return (fData != nullptr && index < fData->programCount) ? fData->programNames[index] : sFallbackString; | |||
| } | |||
| void setProgram(const uint32_t index) | |||
| { | |||
| assert(kPlugin != nullptr && index < kData->programCount); | |||
| assert(fPlugin != nullptr && index < fData->programCount); | |||
| if (kPlugin != nullptr && index < kData->programCount) | |||
| kPlugin->d_setProgram(index); | |||
| if (fPlugin != nullptr && index < fData->programCount) | |||
| fPlugin->d_setProgram(index); | |||
| } | |||
| #endif | |||
| #if DISTRHO_PLUGIN_WANT_STATE | |||
| uint32_t stateCount() const | |||
| uint32_t getStateCount() const | |||
| { | |||
| assert(kData != nullptr); | |||
| return kData != nullptr ? kData->stateCount : 0; | |||
| assert(fData != nullptr); | |||
| return fData != nullptr ? fData->stateCount : 0; | |||
| } | |||
| const d_string& stateKey(const uint32_t index) const | |||
| const d_string& getStateKey(const uint32_t index) const | |||
| { | |||
| assert(kData != nullptr && index < kData->stateCount); | |||
| return (kData != nullptr && index < kData->stateCount) ? kData->stateKeys[index] : sFallbackString; | |||
| assert(fData != nullptr && index < fData->stateCount); | |||
| return (fData != nullptr && index < fData->stateCount) ? fData->stateKeys[index] : sFallbackString; | |||
| } | |||
| void setState(const char* const key, const char* const value) | |||
| { | |||
| assert(kPlugin != nullptr && key != nullptr && value != nullptr); | |||
| assert(fPlugin != nullptr && key != nullptr && value != nullptr); | |||
| if (kPlugin != nullptr && key != nullptr && value != nullptr) | |||
| kPlugin->d_setState(key, value); | |||
| if (fPlugin != nullptr && key != nullptr && value != nullptr) | |||
| fPlugin->d_setState(key, value); | |||
| } | |||
| #endif | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| void activate() | |||
| { | |||
| assert(kPlugin != nullptr); | |||
| assert(fPlugin != nullptr); | |||
| if (kPlugin != nullptr) | |||
| kPlugin->d_activate(); | |||
| if (fPlugin != nullptr) | |||
| fPlugin->d_activate(); | |||
| } | |||
| void deactivate() | |||
| { | |||
| assert(kPlugin != nullptr); | |||
| assert(fPlugin != nullptr); | |||
| if (kPlugin != nullptr) | |||
| kPlugin->d_deactivate(); | |||
| if (fPlugin != nullptr) | |||
| fPlugin->d_deactivate(); | |||
| } | |||
| void run(float** const inputs, float** const outputs, const uint32_t frames, const uint32_t midiEventCount, const MidiEvent* const midiEvents) | |||
| { | |||
| assert(kPlugin != nullptr); | |||
| assert(fPlugin != nullptr); | |||
| if (kPlugin != nullptr) | |||
| kPlugin->d_run(inputs, outputs, frames, midiEventCount, midiEvents); | |||
| if (fPlugin != nullptr) | |||
| fPlugin->d_run(inputs, outputs, frames, midiEventCount, midiEvents); | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| void setBufferSize(const uint32_t bufferSize, bool doCallback = false) | |||
| { | |||
| assert(kData != nullptr && kPlugin != nullptr && bufferSize >= 2); | |||
| assert(fData != nullptr && fPlugin != nullptr && bufferSize >= 2); | |||
| if (kData != nullptr) | |||
| if (fData != nullptr) | |||
| { | |||
| if (doCallback && kData->bufferSize == bufferSize) | |||
| if (doCallback && fData->bufferSize == bufferSize) | |||
| doCallback = false; | |||
| kData->bufferSize = bufferSize; | |||
| fData->bufferSize = bufferSize; | |||
| } | |||
| if (kPlugin != nullptr && doCallback) | |||
| if (fPlugin != nullptr && doCallback) | |||
| { | |||
| kPlugin->d_deactivate(); | |||
| kPlugin->d_bufferSizeChanged(bufferSize); | |||
| kPlugin->d_activate(); | |||
| fPlugin->d_deactivate(); | |||
| fPlugin->d_bufferSizeChanged(bufferSize); | |||
| fPlugin->d_activate(); | |||
| } | |||
| } | |||
| void setSampleRate(const double sampleRate, bool doCallback = false) | |||
| { | |||
| assert(kData != nullptr && kPlugin != nullptr && sampleRate > 0.0); | |||
| assert(fData != nullptr && fPlugin != nullptr && sampleRate > 0.0); | |||
| if (kData != nullptr) | |||
| if (fData != nullptr) | |||
| { | |||
| if (doCallback && kData->sampleRate == sampleRate) | |||
| if (doCallback && fData->sampleRate == sampleRate) | |||
| doCallback = false; | |||
| kData->sampleRate = sampleRate; | |||
| fData->sampleRate = sampleRate; | |||
| } | |||
| if (kPlugin != nullptr && doCallback) | |||
| if (fPlugin != nullptr && doCallback) | |||
| { | |||
| kPlugin->d_deactivate(); | |||
| kPlugin->d_sampleRateChanged(sampleRate); | |||
| kPlugin->d_activate(); | |||
| fPlugin->d_deactivate(); | |||
| fPlugin->d_sampleRateChanged(sampleRate); | |||
| fPlugin->d_activate(); | |||
| } | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| protected: | |||
| Plugin* const kPlugin; | |||
| Plugin::PrivateData* const kData; | |||
| Plugin* const fPlugin; | |||
| Plugin::PrivateData* const fData; | |||
| private: | |||
| static const d_string sFallbackString; | |||
| static const ParameterRanges sFallbackRanges; | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| #endif // __DISTRHO_PLUGIN_INTERNAL_HPP__ | |||
| #endif // DISTRHO_PLUGIN_INTERNAL_HPP_INCLUDED | |||
| @@ -2,16 +2,16 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "DistrhoPluginInternal.hpp" | |||
| @@ -32,11 +32,11 @@ | |||
| # warning LADSPA/DSSI does not support TimePos | |||
| #endif | |||
| // ------------------------------------------------- | |||
| typedef LADSPA_Data* LADSPA_DataPtr; | |||
| START_NAMESPACE_DISTRHO | |||
| typedef LADSPA_Data* LADSPA_DataPtr; | |||
| // ----------------------------------------------------------------------- | |||
| class PluginLadspaDssi | |||
| { | |||
| @@ -52,7 +52,7 @@ public: | |||
| fPortAudioOuts[i] = nullptr; | |||
| { | |||
| const uint32_t count(fPlugin.parameterCount()); | |||
| const uint32_t count(fPlugin.getParameterCount()); | |||
| fPortControls = new LADSPA_DataPtr[count];; | |||
| fLastControlValues = new LADSPA_Data[count];; | |||
| @@ -60,7 +60,7 @@ public: | |||
| for (uint32_t i=0; i < count; ++i) | |||
| { | |||
| fPortControls[i] = nullptr; | |||
| fLastControlValues[i] = fPlugin.parameterValue(i); | |||
| fLastControlValues[i] = fPlugin.getParameterValue(i); | |||
| } | |||
| } | |||
| @@ -84,7 +84,7 @@ public: | |||
| } | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| void ladspa_connect_port(const unsigned long port, const LADSPA_DataPtr dataLocation) | |||
| { | |||
| @@ -116,7 +116,7 @@ public: | |||
| } | |||
| #endif | |||
| for (unsigned long i=0, count=fPlugin.parameterCount(); i < count; ++i) | |||
| for (unsigned long i=0, count=fPlugin.getParameterCount(); i < count; ++i) | |||
| { | |||
| if (port == index++) | |||
| { | |||
| @@ -126,7 +126,7 @@ public: | |||
| } | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| #ifdef DISTRHO_PLUGIN_TARGET_DSSI | |||
| # if DISTRHO_PLUGIN_WANT_STATE | |||
| @@ -145,14 +145,14 @@ public: | |||
| # if DISTRHO_PLUGIN_WANT_PROGRAMS | |||
| const DSSI_Program_Descriptor* dssi_get_program(const unsigned long index) | |||
| { | |||
| if (index >= fPlugin.programCount()) | |||
| if (index >= fPlugin.getProgramCount()) | |||
| return nullptr; | |||
| static DSSI_Program_Descriptor desc; | |||
| desc.Bank = index / 128; | |||
| desc.Program = index % 128; | |||
| desc.Name = fPlugin.programName(index); | |||
| desc.Name = fPlugin.getProgramName(index); | |||
| return &desc; | |||
| } | |||
| @@ -161,7 +161,7 @@ public: | |||
| { | |||
| const unsigned long realProgram(bank * 128 + program); | |||
| if (realProgram >= fPlugin.programCount()) | |||
| if (realProgram >= fPlugin.getProgramCount()) | |||
| return; | |||
| fPlugin.setProgram(realProgram); | |||
| @@ -169,19 +169,19 @@ public: | |||
| // Update parameters | |||
| for (uint32_t i=0, count=fPlugin.parameterCount(); i < count; ++i) | |||
| { | |||
| if (! fPlugin.parameterIsOutput(i)) | |||
| { | |||
| fLastControlValues[i] = fPlugin.parameterValue(i); | |||
| if (fPlugin.isParameterIsOutput(i)) | |||
| continue; | |||
| if (fPortControls[i] != nullptr) | |||
| *fPortControls[i] = fLastControlValues[i]; | |||
| } | |||
| fLastControlValues[i] = fPlugin.getParameterValue(i); | |||
| if (fPortControls[i] != nullptr) | |||
| *fPortControls[i] = fLastControlValues[i]; | |||
| } | |||
| } | |||
| # endif | |||
| #endif | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| void ladspa_activate() | |||
| { | |||
| @@ -207,13 +207,13 @@ public: | |||
| // Check for updated parameters | |||
| float curValue; | |||
| for (uint32_t i=0, count=fPlugin.parameterCount(); i < count; ++i) | |||
| for (uint32_t i=0, count=fPlugin.getParameterCount(); i < count; ++i) | |||
| { | |||
| assert(fPortControls[i] != nullptr); | |||
| curValue = *fPortControls[i]; | |||
| if (fLastControlValues[i] != curValue && ! fPlugin.parameterIsOutput(i)) | |||
| if (fLastControlValues[i] != curValue && ! fPlugin.isParameterIsOutput(i)) | |||
| { | |||
| fLastControlValues[i] = curValue; | |||
| fPlugin.setParameterValue(i, curValue); | |||
| @@ -301,7 +301,7 @@ public: | |||
| updateParameterOutputs(); | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| private: | |||
| PluginInternal fPlugin; | |||
| @@ -315,19 +315,19 @@ private: | |||
| LADSPA_Data* fLastControlValues; | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| void updateParameterOutputs() | |||
| { | |||
| for (uint32_t i=0, count=fPlugin.parameterCount(); i < count; ++i) | |||
| for (uint32_t i=0, count=fPlugin.getParameterCount(); i < count; ++i) | |||
| { | |||
| if (fPlugin.parameterIsOutput(i)) | |||
| { | |||
| fLastControlValues[i] = fPlugin.parameterValue(i); | |||
| if (! fPlugin.isParameterIsOutput(i)) | |||
| continue; | |||
| if (fPortControls[i] != nullptr) | |||
| *fPortControls[i] = fLastControlValues[i]; | |||
| } | |||
| fLastControlValues[i] = fPlugin.getParameterValue(i); | |||
| if (fPortControls[i] != nullptr) | |||
| *fPortControls[i] = fLastControlValues[i]; | |||
| } | |||
| #if DISTRHO_PLUGIN_WANT_LATENCY | |||
| @@ -337,7 +337,7 @@ private: | |||
| } | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| static LADSPA_Handle ladspa_instantiate(const LADSPA_Descriptor*, unsigned long sampleRate) | |||
| { | |||
| @@ -405,7 +405,7 @@ static void dssi_run_synth(LADSPA_Handle instance, unsigned long sampleCount, sn | |||
| #undef instancePtr | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| static LADSPA_Descriptor sLadspaDescriptor = { | |||
| /* UniqueID */ 0, | |||
| @@ -458,7 +458,7 @@ static DSSI_Descriptor sDssiDescriptor = { | |||
| }; | |||
| #endif | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| class DescriptorInitializer | |||
| { | |||
| @@ -474,11 +474,11 @@ public: | |||
| // Get port count, init | |||
| unsigned long port = 0; | |||
| unsigned long portCount = DISTRHO_PLUGIN_NUM_INPUTS + DISTRHO_PLUGIN_NUM_OUTPUTS + plugin.parameterCount(); | |||
| unsigned long portCount = DISTRHO_PLUGIN_NUM_INPUTS + DISTRHO_PLUGIN_NUM_OUTPUTS + plugin.getParameterCount(); | |||
| #if DISTRHO_PLUGIN_WANT_LATENCY | |||
| portCount += 1; | |||
| #endif | |||
| const char** const portNames = new const char*[portCount]; | |||
| const char** const portNames = new const char*[portCount]; | |||
| LADSPA_PortDescriptor* portDescriptors = new LADSPA_PortDescriptor[portCount]; | |||
| LADSPA_PortRangeHint* portRangeHints = new LADSPA_PortRangeHint [portCount]; | |||
| @@ -519,18 +519,18 @@ public: | |||
| ++port; | |||
| #endif | |||
| for (unsigned long i=0, count=plugin.parameterCount(); i < count; ++i, ++port) | |||
| for (unsigned long i=0, count=plugin.getParameterCount(); i < count; ++i, ++port) | |||
| { | |||
| portNames[port] = strdup((const char*)plugin.parameterName(i)); | |||
| portNames[port] = strdup((const char*)plugin.getParameterName(i)); | |||
| portDescriptors[port] = LADSPA_PORT_CONTROL; | |||
| if (plugin.parameterIsOutput(i)) | |||
| if (plugin.isParameterIsOutput(i)) | |||
| portDescriptors[port] |= LADSPA_PORT_OUTPUT; | |||
| else | |||
| portDescriptors[port] |= LADSPA_PORT_INPUT; | |||
| { | |||
| const ParameterRanges& ranges(plugin.parameterRanges(i)); | |||
| const ParameterRanges& ranges(plugin.getParameterRanges(i)); | |||
| const float defValue(ranges.def); | |||
| portRangeHints[port].HintDescriptor = LADSPA_HINT_BOUNDED_BELOW | LADSPA_HINT_BOUNDED_ABOVE; | |||
| @@ -565,7 +565,7 @@ public: | |||
| } | |||
| { | |||
| const uint32_t hints(plugin.parameterHints(i)); | |||
| const uint32_t hints(plugin.getParameterHints(i)); | |||
| if (hints & PARAMETER_IS_BOOLEAN) | |||
| portRangeHints[port].HintDescriptor |= LADSPA_HINT_TOGGLED; | |||
| @@ -577,11 +577,11 @@ public: | |||
| } | |||
| // Set data | |||
| sLadspaDescriptor.UniqueID = plugin.uniqueId(); | |||
| sLadspaDescriptor.Label = strdup(plugin.label()); | |||
| sLadspaDescriptor.Name = strdup(plugin.name()); | |||
| sLadspaDescriptor.Maker = strdup(plugin.maker()); | |||
| sLadspaDescriptor.Copyright = strdup(plugin.license()); | |||
| sLadspaDescriptor.UniqueID = plugin.getUniqueId(); | |||
| sLadspaDescriptor.Label = strdup(plugin.getLabel()); | |||
| sLadspaDescriptor.Name = strdup(plugin.getName()); | |||
| sLadspaDescriptor.Maker = strdup(plugin.getMaker()); | |||
| sLadspaDescriptor.Copyright = strdup(plugin.getLicense()); | |||
| sLadspaDescriptor.PortCount = portCount; | |||
| sLadspaDescriptor.PortNames = portNames; | |||
| sLadspaDescriptor.PortDescriptors = portDescriptors; | |||
| @@ -645,9 +645,9 @@ public: | |||
| static DescriptorInitializer sDescInit; | |||
| END_NAMESPACE_DISTRHO | |||
| // ----------------------------------------------------------------------- | |||
| // ------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| DISTRHO_PLUGIN_EXPORT | |||
| const LADSPA_Descriptor* ladspa_descriptor(unsigned long index) | |||
| @@ -2,16 +2,16 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "DistrhoPluginInternal.hpp" | |||
| @@ -47,12 +47,12 @@ | |||
| #define DISTRHO_LV2_USE_EVENTS_IN (DISTRHO_PLUGIN_IS_SYNTH || DISTRHO_PLUGIN_WANT_STATE || DISTRHO_PLUGIN_WANT_TIMEPOS) | |||
| #define DISTRHO_LV2_USE_EVENTS_OUT (DISTRHO_PLUGIN_WANT_STATE) | |||
| // ------------------------------------------------- | |||
| typedef float* floatptr; | |||
| typedef std::map<d_string,d_string> StringMap; | |||
| START_NAMESPACE_DISTRHO | |||
| typedef float* floatptr; | |||
| typedef std::map<d_string,d_string> stringMap; | |||
| // ----------------------------------------------------------------------- | |||
| class PluginLv2 | |||
| { | |||
| @@ -493,7 +493,7 @@ private: | |||
| } | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| static LV2_Handle lv2_instantiate(const LV2_Descriptor*, double sampleRate, const char*, const LV2_Feature* const* features) | |||
| { | |||
| @@ -638,7 +638,7 @@ static const void* lv2_extension_data(const char* uri) | |||
| #undef instancePtr | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| static LV2_Descriptor sLv2Descriptor = { | |||
| DISTRHO_PLUGIN_URI, | |||
| @@ -651,9 +651,9 @@ static LV2_Descriptor sLv2Descriptor = { | |||
| lv2_extension_data | |||
| }; | |||
| END_NAMESPACE_DISTRHO | |||
| // ----------------------------------------------------------------------- | |||
| // ------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| DISTRHO_PLUGIN_EXPORT | |||
| const LV2_Descriptor* lv2_descriptor(uint32_t index) | |||
| @@ -2,16 +2,16 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "DistrhoPluginInternal.hpp" | |||
| @@ -51,7 +51,7 @@ | |||
| #define DISTRHO_LV2_USE_EVENTS_IN (DISTRHO_PLUGIN_IS_SYNTH || DISTRHO_PLUGIN_WANT_STATE || DISTRHO_PLUGIN_WANT_TIMEPOS) | |||
| #define DISTRHO_LV2_USE_EVENTS_OUT (DISTRHO_PLUGIN_WANT_STATE) | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| DISTRHO_PLUGIN_EXPORT | |||
| void lv2_generate_ttl(const char* const basename) | |||
| @@ -2,16 +2,16 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "DistrhoPluginInternal.hpp" | |||
| @@ -38,7 +38,7 @@ | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| #if DISTRHO_PLUGIN_HAS_UI | |||
| @@ -133,7 +133,7 @@ public: | |||
| } | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| void idle() | |||
| { | |||
| @@ -172,7 +172,7 @@ public: | |||
| return fUi.height(); | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // functions called from the plugin side, RT no block | |||
| void setParameterValueFromPlugin(uint32_t index, float perValue) | |||
| @@ -192,7 +192,7 @@ public: | |||
| } | |||
| #endif | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| protected: | |||
| intptr_t hostCallback(int32_t opcode, int32_t index, intptr_t value, void* ptr, float opt) | |||
| @@ -264,7 +264,7 @@ private: | |||
| MidiEvent fMidiEvents[MAX_MIDI_EVENTS]; | |||
| #endif | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // Callbacks | |||
| #define handlePtr ((UIVst*)ptr) | |||
| @@ -298,7 +298,7 @@ private: | |||
| }; | |||
| #endif | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| class PluginVst | |||
| { | |||
| @@ -498,7 +498,7 @@ public: | |||
| #endif | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| private: | |||
| // VST stuff | |||
| @@ -556,7 +556,7 @@ private: | |||
| #endif | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| #define handlePtr ((PluginVst*)effect->object) | |||
| @@ -707,9 +707,9 @@ static void vst_processReplacingCallback(AEffect* effect, float** inputs, float* | |||
| #undef handlePtr | |||
| END_NAMESPACE_DISTRHO | |||
| // ----------------------------------------------------------------------- | |||
| // ------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| DISTRHO_PLUGIN_EXPORT | |||
| const AEffect* VSTPluginMain(audioMasterCallback audioMaster) | |||
| @@ -762,5 +762,3 @@ const AEffect* VSTPluginMain(audioMasterCallback audioMaster) | |||
| return effect; | |||
| } | |||
| // ------------------------------------------------- | |||
| @@ -2,28 +2,28 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "DistrhoUIInternal.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Static data | |||
| double d_lastUiSampleRate = 0.0; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // UI | |||
| UI::UI() | |||
| @@ -36,10 +36,10 @@ UI::~UI() | |||
| delete pData; | |||
| } | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Host DSP State | |||
| double UI::d_sampleRate() const | |||
| double UI::d_getSampleRate() const noexcept | |||
| { | |||
| return pData->sampleRate; | |||
| } | |||
| @@ -68,7 +68,7 @@ void UI::d_sendNote(bool onOff, uint8_t channel, uint8_t note, uint8_t velocity) | |||
| } | |||
| #endif | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Host UI State | |||
| void UI::d_uiResize(unsigned int width, unsigned int height) | |||
| @@ -76,6 +76,6 @@ void UI::d_uiResize(unsigned int width, unsigned int height) | |||
| pData->uiResizeCallback(width, height); | |||
| } | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| @@ -2,16 +2,16 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "DistrhoUIInternal.hpp" | |||
| @@ -32,7 +32,7 @@ | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| struct OscData { | |||
| lo_address addr; | |||
| @@ -93,7 +93,7 @@ struct OscData { | |||
| } | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| #ifdef DISTRHO_UI_QT | |||
| class UIDssi : public QMainWindow | |||
| @@ -170,7 +170,7 @@ public: | |||
| #endif | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| #if DISTRHO_PLUGIN_WANT_STATE | |||
| void dssiui_configure(const char* key, const char* value) | |||
| @@ -251,7 +251,7 @@ public: | |||
| #endif | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| protected: | |||
| void setParameterValue(uint32_t rindex, float value) | |||
| @@ -321,7 +321,7 @@ private: | |||
| const OscData& fOscData; | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| // Callbacks | |||
| #define uiPtr ((UIDssi*)ptr) | |||
| @@ -349,7 +349,7 @@ private: | |||
| #undef uiPtr | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| static OscData gOscData; | |||
| static const char* gUiTitle = nullptr; | |||
| @@ -366,7 +366,7 @@ static void initUiIfNeeded() | |||
| globalUI = new UIDssi(gOscData, gUiTitle); | |||
| } | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| int osc_debug_handler(const char* path, const char*, lo_arg**, int, lo_message, void*) | |||
| { | |||
| @@ -492,6 +492,8 @@ int osc_quit_handler(const char*, const char*, lo_arg**, int, lo_message, void*) | |||
| END_NAMESPACE_DISTRHO | |||
| // ----------------------------------------------------------------------- | |||
| int main(int argc, char* argv[]) | |||
| { | |||
| USE_NAMESPACE_DISTRHO | |||
| @@ -2,23 +2,23 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "DistrhoUIInternal.hpp" | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // External UI | |||
| ExternalUI::ExternalUI() | |||
| @@ -30,6 +30,6 @@ ExternalUI::~ExternalUI() | |||
| { | |||
| } | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| @@ -2,22 +2,22 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifndef __DISTRHO_UI_INTERNAL_HPP__ | |||
| #define __DISTRHO_UI_INTERNAL_HPP__ | |||
| #ifndef DISTRHO_UI_INTERNAL_HPP_INCLUDED | |||
| #define DISTRHO_UI_INTERNAL_HPP_INCLUDED | |||
| #include "DistrhoDefines.h" | |||
| # include "../DistrhoUI.hpp" | |||
| #if defined(DISTRHO_UI_EXTERNAL) | |||
| # include "../DistrhoUIExternal.hpp" | |||
| @@ -33,7 +33,7 @@ | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| typedef void (*editParamFunc) (void* ptr, uint32_t index, bool started); | |||
| typedef void (*setParamFunc) (void* ptr, uint32_t index, float value); | |||
| @@ -43,7 +43,7 @@ typedef void (*uiResizeFunc) (void* ptr, unsigned int width, unsigned int heigh | |||
| extern double d_lastUiSampleRate; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| struct UI::PrivateData { | |||
| // DSP | |||
| @@ -73,15 +73,11 @@ struct UI::PrivateData { | |||
| #if defined(DISTRHO_PLUGIN_TARGET_DSSI) || defined(DISTRHO_PLUGIN_TARGET_LV2) | |||
| parameterOffset += DISTRHO_PLUGIN_NUM_INPUTS + DISTRHO_PLUGIN_NUM_OUTPUTS; | |||
| # if DISTRHO_PLUGIN_WANT_LATENCY | |||
| parameterOffset += 1; // latency | |||
| parameterOffset += 1; | |||
| # endif | |||
| #endif | |||
| } | |||
| ~PrivateData() | |||
| { | |||
| } | |||
| void editParamCallback(uint32_t index, bool started) | |||
| { | |||
| if (editParamCallbackFunc != nullptr) | |||
| @@ -113,7 +109,7 @@ struct UI::PrivateData { | |||
| } | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| class UIInternal | |||
| { | |||
| @@ -122,15 +118,15 @@ public: | |||
| #ifdef DISTRHO_UI_OPENGL | |||
| : glApp(), | |||
| glWindow(&glApp, winId), | |||
| kUi(createUI()), | |||
| fUi(createUI()), | |||
| #else | |||
| : kUi(createUI()), | |||
| : fUi(createUI()), | |||
| #endif | |||
| kData((kUi != nullptr) ? kUi->pData : nullptr) | |||
| fData((fUi != nullptr) ? fUi->pData : nullptr) | |||
| { | |||
| assert(kUi != nullptr); | |||
| assert(fUi != nullptr); | |||
| if (kUi == nullptr) | |||
| if (fUi == nullptr) | |||
| return; | |||
| #ifdef DISTRHO_UI_QT | |||
| @@ -140,88 +136,88 @@ public: | |||
| return; | |||
| #endif | |||
| kData->ptr = ptr; | |||
| kData->editParamCallbackFunc = editParamCall; | |||
| kData->setParamCallbackFunc = setParamCall; | |||
| kData->setStateCallbackFunc = setStateCall; | |||
| kData->sendNoteCallbackFunc = sendNoteCall; | |||
| kData->uiResizeCallbackFunc = uiResizeCall; | |||
| fData->ptr = ptr; | |||
| fData->editParamCallbackFunc = editParamCall; | |||
| fData->setParamCallbackFunc = setParamCall; | |||
| fData->setStateCallbackFunc = setStateCall; | |||
| fData->sendNoteCallbackFunc = sendNoteCall; | |||
| fData->uiResizeCallbackFunc = uiResizeCall; | |||
| } | |||
| ~UIInternal() | |||
| { | |||
| if (kUi != nullptr) | |||
| delete kUi; | |||
| if (fUi != nullptr) | |||
| delete fUi; | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| const char* name() const | |||
| const char* getName() const | |||
| { | |||
| assert(kUi != nullptr); | |||
| return (kUi != nullptr) ? kUi->d_name() : ""; | |||
| assert(fUi != nullptr); | |||
| return (fUi != nullptr) ? fUi->d_getName() : ""; | |||
| } | |||
| unsigned int width() const | |||
| unsigned int getWidth() const | |||
| { | |||
| assert(kUi != nullptr); | |||
| return (kUi != nullptr) ? kUi->d_width() : 0; | |||
| assert(fUi != nullptr); | |||
| return (fUi != nullptr) ? fUi->d_getWidth() : 0; | |||
| } | |||
| unsigned int height() const | |||
| unsigned int getHeight() const | |||
| { | |||
| assert(kUi != nullptr); | |||
| return (kUi != nullptr) ? kUi->d_height() : 0; | |||
| assert(fUi != nullptr); | |||
| return (fUi != nullptr) ? fUi->d_getHeight() : 0; | |||
| } | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| void parameterChanged(uint32_t index, float value) | |||
| { | |||
| assert(kUi != nullptr); | |||
| assert(fUi != nullptr); | |||
| if (kUi != nullptr) | |||
| kUi->d_parameterChanged(index, value); | |||
| if (fUi != nullptr) | |||
| fUi->d_parameterChanged(index, value); | |||
| } | |||
| #if DISTRHO_PLUGIN_WANT_PROGRAMS | |||
| void programChanged(uint32_t index) | |||
| { | |||
| assert(kUi != nullptr); | |||
| assert(fUi != nullptr); | |||
| if (kUi != nullptr) | |||
| kUi->d_programChanged(index); | |||
| if (fUi != nullptr) | |||
| fUi->d_programChanged(index); | |||
| } | |||
| #endif | |||
| #if DISTRHO_PLUGIN_WANT_STATE | |||
| void stateChanged(const char* key, const char* value) | |||
| { | |||
| assert(kUi != nullptr); | |||
| assert(fUi != nullptr); | |||
| if (kUi != nullptr) | |||
| kUi->d_stateChanged(key, value); | |||
| if (fUi != nullptr) | |||
| fUi->d_stateChanged(key, value); | |||
| } | |||
| #endif | |||
| #if DISTRHO_PLUGIN_IS_SYNTH | |||
| void noteReceived(bool onOff, uint8_t channel, uint8_t note, uint8_t velocity) | |||
| { | |||
| assert(kUi != nullptr); | |||
| assert(fUi != nullptr); | |||
| if (kUi != nullptr) | |||
| kUi->d_noteReceived(onOff, channel, note, velocity); | |||
| if (fUi != nullptr) | |||
| fUi->d_noteReceived(onOff, channel, note, velocity); | |||
| } | |||
| #endif | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| void idle() | |||
| { | |||
| assert(kUi != nullptr); | |||
| assert(fUi != nullptr); | |||
| if (kUi != nullptr) | |||
| kUi->d_uiIdle(); | |||
| if (fUi != nullptr) | |||
| fUi->d_uiIdle(); | |||
| #ifdef DISTRHO_UI_OPENGL | |||
| glApp.idle(); | |||
| @@ -229,7 +225,7 @@ public: | |||
| } | |||
| #if defined(DISTRHO_UI_EXTERNAL) | |||
| // needed? | |||
| // not needed | |||
| #elif defined(DISTRHO_UI_OPENGL) | |||
| App& getApp() | |||
| { | |||
| @@ -246,24 +242,24 @@ public: | |||
| return glWindow.getWindowId(); | |||
| } | |||
| void fixSize() | |||
| void fixWindowSize() | |||
| { | |||
| assert(kUi != nullptr); | |||
| glWindow.setSize(kUi->d_width(), kUi->d_height()); | |||
| assert(fUi != nullptr); | |||
| glWindow.setSize(fUi->d_getWidth(), fUi->d_getHeight()); | |||
| } | |||
| #else | |||
| #elif defined(DISTRHO_UI_QT) | |||
| QtUI* getQtUI() const | |||
| { | |||
| return (QtUI*)kUi; | |||
| return (QtUI*)fUi; | |||
| } | |||
| bool resizable() const | |||
| bool isResizable() const | |||
| { | |||
| return ((QtUI*)kUi)->d_resizable(); | |||
| return ((QtUI*)fUi)->d_isResizable(); | |||
| } | |||
| #endif | |||
| // --------------------------------------------- | |||
| // ------------------------------------------------------------------- | |||
| #ifdef DISTRHO_UI_OPENGL | |||
| private: | |||
| @@ -272,12 +268,12 @@ private: | |||
| #endif | |||
| protected: | |||
| UI* const kUi; | |||
| UI::PrivateData* const kData; | |||
| UI* const fUi; | |||
| UI::PrivateData* const fData; | |||
| }; | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| #endif // __DISTRHO_UI_INTERNAL_HPP__ | |||
| #endif // DISTRHO_UI_INTERNAL_HPP_INCLUDED | |||
| @@ -2,16 +2,16 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "DistrhoUIInternal.hpp" | |||
| @@ -22,7 +22,7 @@ END_NAMESPACE_DGL | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // OpenGL UI | |||
| OpenGLUI::OpenGLUI() | |||
| @@ -38,6 +38,6 @@ OpenGLUI::~OpenGLUI() | |||
| { | |||
| } | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| @@ -2,16 +2,16 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #include "DistrhoUIInternal.hpp" | |||
| @@ -20,7 +20,7 @@ | |||
| START_NAMESPACE_DISTRHO | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| // Qt UI | |||
| QtUI::QtUI() | |||
| @@ -33,11 +33,11 @@ QtUI::~QtUI() | |||
| { | |||
| } | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| void QtUI::setSize(unsigned int width, unsigned int height) | |||
| { | |||
| if (d_resizable()) | |||
| if (d_isResizable()) | |||
| resize(width, height); | |||
| else | |||
| setFixedSize(width, height); | |||
| @@ -45,6 +45,6 @@ void QtUI::setSize(unsigned int width, unsigned int height) | |||
| d_uiResize(width, height); | |||
| } | |||
| // ------------------------------------------------- | |||
| // ----------------------------------------------------------------------- | |||
| END_NAMESPACE_DISTRHO | |||
| @@ -2,16 +2,16 @@ | |||
| * DISTRHO Plugin Toolkit (DPT) | |||
| * Copyright (C) 2012-2013 Filipe Coelho <falktx@falktx.com> | |||
| * | |||
| * This program is free software; you can redistribute it and/or | |||
| * modify it under the terms of the GNU Lesser General Public | |||
| * License as published by the Free Software Foundation. | |||
| * Permission to use, copy, modify, and/or distribute this software for any purpose with | |||
| * or without fee is hereby granted, provided that the above copyright notice and this | |||
| * permission notice appear in all copies. | |||
| * | |||
| * 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 Lesser General Public License for more details. | |||
| * | |||
| * For a full copy of the license see the LGPL.txt file | |||
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD | |||
| * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN | |||
| * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL | |||
| * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | |||
| * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN | |||
| * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
| */ | |||
| #ifdef DISTRHO_PLUGIN_TARGET_JACK | |||
| @@ -477,7 +477,7 @@ static inline | |||
| CarlaString operator+(const CarlaString& strBefore, const char* const strBufAfter) | |||
| { | |||
| const char* const strBufBefore = (const char*)strBefore; | |||
| const size_t newBufSize = strBefore.length() + ((strBufAfter != nullptr) ? std::strlen(strBufAfter) : 0) + 1; | |||
| const size_t newBufSize = strBefore.length() + ((strBufAfter != nullptr) ? std::strlen(strBufAfter) : 0) + 1; | |||
| char newBuf[newBufSize]; | |||
| std::strcpy(newBuf, strBufBefore); | |||
| @@ -490,7 +490,7 @@ static inline | |||
| CarlaString operator+(const char* const strBufBefore, const CarlaString& strAfter) | |||
| { | |||
| const char* const strBufAfter = (const char*)strAfter; | |||
| const size_t newBufSize = ((strBufBefore != nullptr) ? std::strlen(strBufBefore) : 0) + strAfter.length() + 1; | |||
| const size_t newBufSize = ((strBufBefore != nullptr) ? std::strlen(strBufBefore) : 0) + strAfter.length() + 1; | |||
| char newBuf[newBufSize]; | |||
| std::strcpy(newBuf, strBufBefore); | |||
| @@ -411,4 +411,6 @@ void carla_zeroStruct(T* const structure, const size_t count) | |||
| std::memset(structure, 0, count*sizeof(T)); | |||
| } | |||
| // ----------------------------------------------------------------------- | |||
| #endif // CARLA_UTILS_HPP_INCLUDED | |||