Browse Source

Update carla format code, fix license

pull/64/head
falkTX 5 years ago
parent
commit
dee2b4a854
1 changed files with 67 additions and 11 deletions
  1. +67
    -11
      distrho/src/DistrhoPluginCarla.cpp

+ 67
- 11
distrho/src/DistrhoPluginCarla.cpp View File

@@ -1,17 +1,17 @@
/*
* DISTRHO Plugin Framework (DPF)
* Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com>
* Copyright (C) 2012-2018 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"
@@ -30,6 +30,9 @@ START_NAMESPACE_DISTRHO
// -----------------------------------------------------------------------
// Carla UI

#if ! DISTRHO_PLUGIN_WANT_MIDI_OUTPUT
static const writeMidiFunc writeMidiCallback = nullptr;
#endif
#if ! DISTRHO_PLUGIN_WANT_STATE
static const setStateFunc setStateCallback = nullptr;
#endif
@@ -104,15 +107,19 @@ protected:
fHost->ui_parameter_changed(fHost->handle, rindex, value);
}

#if DISTRHO_PLUGIN_WANT_STATE
void handleSetState(const char* const key, const char* const value)
{
fHost->ui_custom_data_changed(fHost->handle, key, value);
}
#endif

#if DISTRHO_PLUGIN_IS_SYNTH
void handleSendNote(const uint8_t, const uint8_t, const uint8_t)
{
// TODO
}
#endif

void handleSetSize(const uint width, const uint height)
{
@@ -175,7 +182,9 @@ class PluginCarla : public NativePluginClass
{
public:
PluginCarla(const NativeHostDescriptor* const host)
: NativePluginClass(host)
: NativePluginClass(host),
fPlugin(this, writeMidiCallback),
fScalePointsCache(nullptr)
{
#if DISTRHO_PLUGIN_HAS_UI
fUiPtr = nullptr;
@@ -191,6 +200,12 @@ public:
fUiPtr = nullptr;
}
#endif

if (fScalePointsCache != nullptr)
{
delete[] fScalePointsCache;
fScalePointsCache = nullptr;
}
}

protected:
@@ -240,6 +255,32 @@ protected:
param.ranges.max = ranges.max;
}

{
const ParameterEnumerationValues& enumValues(fPlugin.getParameterEnumValues(index));

if (const uint32_t scalePointCount = enumValues.count)
{
NativeParameterScalePoint* const scalePoints = new NativeParameterScalePoint[scalePointCount];

for (uint32_t i=0; i<scalePointCount; ++i)
{
scalePoints[i].label = enumValues.values[i].label.buffer();
scalePoints[i].value = enumValues.values[i].value;
}

param.scalePoints = scalePoints;
param.scalePointCount = scalePointCount;

if (enumValues.restrictedMode)
param.hints = static_cast<NativeParameterHints>(param.hints|::NATIVE_PARAMETER_USES_SCALEPOINTS);
}
else if (fScalePointsCache != nullptr)
{
delete[] fScalePointsCache;
fScalePointsCache = nullptr;
}
}

return &param;
}

@@ -440,6 +481,7 @@ protected:

private:
PluginExporter fPlugin;
mutable NativeParameterScalePoint* fScalePointsCache;

#if DISTRHO_PLUGIN_HAS_UI
// UI
@@ -455,6 +497,20 @@ private:
}
#endif

#if DISTRHO_PLUGIN_WANT_MIDI_OUTPUT
static bool writeMidiCallback(void* ptr, const MidiEvent& midiEvent)
{
if (midiEvent.size > 4)
return;

const NativeMidiEvent event = {
midiEvent.frame, 0, midiEvent.size, midiEvent.data
};

return ((PluginCarla*)ptr)->fPlugin.writeMidiEvent(midiEvent);
}
#endif

CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(PluginCarla)

// -------------------------------------------------------------------


Loading…
Cancel
Save