summaryrefslogtreecommitdiff
path: root/attic/muse_qt4_evolution/muse/route.h
diff options
context:
space:
mode:
Diffstat (limited to 'attic/muse_qt4_evolution/muse/route.h')
-rw-r--r--attic/muse_qt4_evolution/muse/route.h108
1 files changed, 108 insertions, 0 deletions
diff --git a/attic/muse_qt4_evolution/muse/route.h b/attic/muse_qt4_evolution/muse/route.h
new file mode 100644
index 00000000..386ea636
--- /dev/null
+++ b/attic/muse_qt4_evolution/muse/route.h
@@ -0,0 +1,108 @@
+//=============================================================================
+// MusE
+// Linux Music Editor
+// $Id:$
+//
+// Copyright (C) 2002-2006 by Werner Schweer and others
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License version 2.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+//=============================================================================
+
+#ifndef __ROUTE_H__
+#define __ROUTE_H__
+
+class Track;
+class AuxPluginIF;
+
+namespace AL {
+ class Xml;
+ };
+using AL::Xml;
+
+#include "driver.h"
+
+//---------------------------------------------------------
+// RouteNode
+// this describes one endpoint of a route
+// Track
+// Track/Channel
+// AuxPlugin
+// Port
+//---------------------------------------------------------
+
+struct RouteNode {
+ enum RouteNodeType {
+ TRACK, AUDIOPORT, JACKMIDIPORT, AUXPLUGIN
+ };
+
+ Port port;
+ union {
+ Track* track;
+ AuxPluginIF* plugin;
+ };
+ int channel;
+ RouteNodeType type;
+
+ RouteNode();
+ RouteNode(Port, int, RouteNodeType);
+ RouteNode(Port, RouteNodeType);
+ RouteNode(Track*);
+ RouteNode(Track*, int, RouteNodeType t = TRACK);
+ RouteNode(AuxPluginIF*);
+
+ bool isPortType() const {
+ return type==AUDIOPORT || type == JACKMIDIPORT;
+ }
+ bool isValid() const {
+ return (isPortType() && !port.isZero())
+ || ((type == TRACK) && track)
+ || ((type == AUXPLUGIN) && plugin);
+ }
+ QString name() const;
+ void read(QDomNode node);
+ void write(Xml&, const char* name) const;
+
+ bool operator==(const RouteNode& a) const;
+ void dump() const;
+ const char* tname() const;
+ static const char* tname(RouteNodeType);
+ };
+
+//---------------------------------------------------------
+// Route
+//---------------------------------------------------------
+
+struct Route {
+ RouteNode src;
+ RouteNode dst;
+ bool disconnected; // if true, do not remove route in graphChanged()
+ // or removeConnection()
+
+ Route() { disconnected = false;}
+ Route(const RouteNode& s, const RouteNode& d) : src(s), dst(d) { disconnected = false;}
+ bool operator==(const Route& a) const {
+ return (src==a.src) && (dst==a.dst);
+ }
+ };
+
+Q_DECLARE_METATYPE(struct Route);
+
+typedef QList<Route> RouteList;
+typedef RouteList::iterator iRoute;
+typedef RouteList::const_iterator ciRoute;
+
+extern bool addRoute(const Route&);
+extern void removeRoute(const Route&);
+
+#endif
+