From 1f783253b79501d156f4e254814c092cbdce21c7 Mon Sep 17 00:00:00 2001
From: Paul McCarthy <pauldmccarthy@gmail.com>
Date: Sun, 21 Jan 2018 12:11:01 +0000
Subject: [PATCH] One mesh vertex set can be set on __init__. Vertex set keys
 are optional. New method to query current vertex set.

---
 fsl/data/mesh.py | 28 +++++++++++++++++++++++-----
 1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/fsl/data/mesh.py b/fsl/data/mesh.py
index 454b3fb09..2bc563b87 100644
--- a/fsl/data/mesh.py
+++ b/fsl/data/mesh.py
@@ -136,7 +136,7 @@ class Mesh(notifier.Notifier, meta.Meta):
     """
 
 
-    def __init__(self, indices, name='mesh', dataSource=None):
+    def __init__(self, indices, name='mesh', dataSource=None, vertices=None):
         """Create a ``Mesh`` instance.
 
         Before a ``Mesh`` can be used, some vertices must be added via the
@@ -147,7 +147,10 @@ class Mesh(notifier.Notifier, meta.Meta):
 
         :arg name:       A name for this ``Mesh``.
 
-        :arg dataSource: the data source for this ``Mesh``.
+        :arg dataSource: The data source for this ``Mesh``.
+
+        :arg vertices:   Initial vertex set to add - given the key
+                         ``'default'``.
         """
 
         self.__name       = name
@@ -184,6 +187,11 @@ class Mesh(notifier.Notifier, meta.Meta):
         # in the trimesh method
         self.__trimesh = collections.OrderedDict()
 
+        # Add initial vertex
+        # set if provided
+        if vertices is not None:
+            self.addVertices(vertices)
+
 
     def __repr__(self):
         """Returns a string representation of this ``Mesh`` instance. """
@@ -295,13 +303,14 @@ class Mesh(notifier.Notifier, meta.Meta):
         return lo, hi
 
 
-    def addVertices(self, vertices, key, select=True, fixWinding=False):
+    def addVertices(self, vertices, key=None, select=True, fixWinding=False):
         """Adds a set of vertices to this ``Mesh``.
 
         :arg vertices:   A `(n, 3)` array containing ``n`` vertices, compatible
                          with the indices specified in :meth:`__init__`.
 
-        :arg key:        A key for this vertex set.
+        :arg key:        A key for this vertex set. If ``None`` defaults to
+                         ``'default'``.
 
         :arg select:     If ``True`` (the default), this vertex set is
                          made the currently selected vertex set.
@@ -311,6 +320,9 @@ class Mesh(notifier.Notifier, meta.Meta):
                          all have outward-facing normal vectors.
         """
 
+        if key is None:
+            key = 'default'
+
         vertices = np.asarray(vertices)
         lo       = vertices.min(axis=0)
         hi       = vertices.max(axis=0)
@@ -338,11 +350,17 @@ class Mesh(notifier.Notifier, meta.Meta):
                     self.__faceNormals[k] = fn * -1
 
 
+
+    def selectedVertices(self):
+        """Returns the key of the currently selected vertex set. """
+        return self.__selected
+
+
     def addVertexData(self, key, vdata):
         """Adds a vertex-wise data set to the ``Mesh``. It can be retrieved
         by passing the specified ``key`` to the :meth:`getVertexData` method.
         """
-        self.__vertexData[key] = vdata
+        self.__vertexData[key] = vdata.reshape(vdata.shape[0], -1)
 
 
     def getVertexData(self, key):
-- 
GitLab