diff options
Diffstat (limited to 'src/libs/client/NodeModel.cpp')
-rw-r--r-- | src/libs/client/NodeModel.cpp | 224 |
1 files changed, 0 insertions, 224 deletions
diff --git a/src/libs/client/NodeModel.cpp b/src/libs/client/NodeModel.cpp deleted file mode 100644 index ac0c8e68..00000000 --- a/src/libs/client/NodeModel.cpp +++ /dev/null @@ -1,224 +0,0 @@ -/* This file is part of Ingen. - * Copyright (C) 2007 Dave Robillard <http://drobilla.net> - * - * Ingen is free software; you can redistribute it and/or modify it under the - * terms of the GNU General Public License as published by the Free Software - * Foundation; either version 2 of the License, or (at your option) any later - * version. - * - * Ingen is distributed in the hope that it will be useful, but WITHOUT ANY - * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include CONFIG_H_PATH - -#include <cassert> -#include <cmath> -#include "interface/Port.hpp" -#include "NodeModel.hpp" -#include "PatchModel.hpp" - -namespace Ingen { -namespace Client { - - -NodeModel::NodeModel(SharedPtr<PluginModel> plugin, const Path& path) - : ObjectModel(path) - , _plugin_uri(plugin->uri()) - , _plugin(plugin) - , _num_values(0) - , _min_values(0) - , _max_values(0) -{ -} - -NodeModel::NodeModel(const string& plugin_uri, const Path& path) - : ObjectModel(path) - , _plugin_uri(plugin_uri) - , _num_values(0) - , _min_values(0) - , _max_values(0) -{ -} - - -NodeModel::NodeModel(const NodeModel& copy) - : ObjectModel(copy) - , _plugin_uri(copy._plugin_uri) - , _num_values(copy._num_values) - , _min_values((float*)malloc(sizeof(float) * _num_values)) - , _max_values((float*)malloc(sizeof(float) * _num_values)) -{ - memcpy(_min_values, copy._min_values, sizeof(float) * _num_values); - memcpy(_max_values, copy._max_values, sizeof(float) * _num_values); -} - - -NodeModel::~NodeModel() -{ - clear(); -} - - -void -NodeModel::remove_port(SharedPtr<PortModel> port) -{ - // FIXME: slow - for (Ports::iterator i = _ports.begin(); i != _ports.end(); ++i) { - if ((*i) == port) { - _ports.erase(i); - break; - } - } - signal_removed_port.emit(port); -} - - -void -NodeModel::remove_port(const Path& port_path) -{ - // FIXME: slow - for (Ports::iterator i = _ports.begin(); i != _ports.end(); ++i) { - if ((*i)->path() == port_path) { - _ports.erase(i); - break; - } - } -} - - -void -NodeModel::clear() -{ - _ports.clear(); - assert(_ports.empty()); - delete[] _min_values; - delete[] _max_values; - _min_values = 0; - _max_values = 0; -} - - -void -NodeModel::add_child(SharedPtr<ObjectModel> c) -{ - assert(c->parent().get() == this); - - //ObjectModel::add_child(c); - - SharedPtr<PortModel> pm = PtrCast<PortModel>(c); - assert(pm); - add_port(pm); -} - - -bool -NodeModel::remove_child(SharedPtr<ObjectModel> c) -{ - assert(c->path().is_child_of(_path)); - assert(c->parent().get() == this); - - //bool ret = ObjectModel::remove_child(c); - - SharedPtr<PortModel> pm = PtrCast<PortModel>(c); - assert(pm); - remove_port(pm); - - //return ret; - return true; -} - - -void -NodeModel::add_port(SharedPtr<PortModel> pm) -{ - assert(pm); - assert(pm->path().is_child_of(_path)); - assert(pm->parent().get() == this); - - Ports::iterator existing = find(_ports.begin(), _ports.end(), pm); - - // Store should have handled this by merging the two - assert(existing == _ports.end()); - - _ports.push_back(pm); - signal_new_port.emit(pm); -} - - -SharedPtr<PortModel> -NodeModel::get_port(const string& port_name) const -{ - assert(port_name.find("/") == string::npos); - for (Ports::const_iterator i = _ports.begin(); i != _ports.end(); ++i) - if ((*i)->path().name() == port_name) - return (*i); - return SharedPtr<PortModel>(); -} - - -Shared::Port* -NodeModel::port(uint32_t index) const -{ - assert(index < num_ports()); - return dynamic_cast<Shared::Port*>(_ports[index].get()); -} - - -void -NodeModel::port_value_range(SharedPtr<PortModel> port, float& min, float& max) -{ - assert(port->parent().get() == this); - -#ifdef HAVE_SLV2 - // Plugin value first - if (_plugin && _plugin->type() == PluginModel::LV2) { - - if (!_min_values) { - - Glib::Mutex::Lock lock(PluginModel::rdf_world()->mutex()); - - _num_values = slv2_plugin_get_num_ports(_plugin->slv2_plugin()); - _min_values = new float[_num_values]; - _max_values = new float[_num_values]; - slv2_plugin_get_port_ranges_float(_plugin->slv2_plugin(), - _min_values, _max_values, 0); - } - - if (!std::isnan(_min_values[port->index()])) - min = _min_values[port->index()]; - if (!std::isnan(_max_values[port->index()])) - max = _max_values[port->index()]; - } -#endif - - // Possibly overriden - const Atom& min_atom = port->get_variable("ingen:minimum"); - const Atom& max_atom = port->get_variable("ingen:maximum"); - if (min_atom.type() == Atom::FLOAT) - min = min_atom.get_float(); - if (max_atom.type() == Atom::FLOAT) - max = max_atom.get_float(); -} - - -void -NodeModel::set(SharedPtr<ObjectModel> model) -{ - SharedPtr<NodeModel> node = PtrCast<NodeModel>(model); - if (node) { - _plugin_uri = node->_plugin_uri; - _plugin = node->_plugin; - } - - ObjectModel::set(model); -} - - -} // namespace Client -} // namespace Ingen |