add a script to multi-split regions
[ardour.git] / gtk2_ardour / port_matrix_types.h
index 16fb440ace04087438803d76fba3bcc958988af5..dafbc858b66d67a6b93385ed89f1799cb8a8e8fd 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2009 Paul Davis 
+    Copyright (C) 2009 Paul Davis
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 
 #include "ardour/bundle.h"
 
-struct PortMatrixBundleChannel {
-       PortMatrixBundleChannel () : channel (0) {}
-       PortMatrixBundleChannel (boost::shared_ptr<ARDOUR::Bundle> b, uint32_t c)
-               : bundle (b), channel (c) {}
-       
-       bool operator== (PortMatrixBundleChannel const& other) const {
-               return bundle == other.bundle && channel == other.channel;
-       }
-       bool operator!= (PortMatrixBundleChannel const& other) const {
-               return bundle != other.bundle || channel != other.channel;
-       }
-
-       uint32_t nchannels (ARDOUR::BundleList const& bl) const {
-               uint32_t n = 0;
-               ARDOUR::BundleList::const_iterator i = bl.begin();
-               while (i != bl.end() && *i != bundle) {
-                       n += (*i)->nchannels ();
-                       ++i;
-               }
-               n += channel;
-               return n;
-       }
-       
-       boost::shared_ptr<ARDOUR::Bundle> bundle;
-       uint32_t channel;
-};
-
-struct PortMatrixNode {
+class PortMatrixNode
+{
+public:
        PortMatrixNode () {}
-       PortMatrixNode (PortMatrixBundleChannel r, PortMatrixBundleChannel c) : row (r), column (c) {}
-       
+       PortMatrixNode (ARDOUR::BundleChannel r, ARDOUR::BundleChannel c) : row (r), column (c) {}
+
        bool operator== (PortMatrixNode const& other) const {
                return row == other.row && column == other.column;
        }
        bool operator!= (PortMatrixNode const& other) const {
                return row != other.row || column != other.column;
        }
-       
-       PortMatrixBundleChannel row;
-       PortMatrixBundleChannel column;
+
+       ARDOUR::BundleChannel row;
+       ARDOUR::BundleChannel column;
+
+       enum State {
+               ASSOCIATED,     ///< the ports are associated
+               NOT_ASSOCIATED, ///< the ports are not associated
+               PARTIAL         ///< used when we are examining bundles; the bundles are partially associated
+       };
 };
 
 #endif