controls/DebugVariablePanel/DebugVariableItem.py
changeset 1267 fae0809eae98
parent 1220 16c283246241
child 1268 f049c901c85b
--- a/controls/DebugVariablePanel/DebugVariableItem.py	Tue Jun 18 09:55:45 2013 +0200
+++ b/controls/DebugVariablePanel/DebugVariableItem.py	Wed Jun 19 22:13:44 2013 +0200
@@ -172,24 +172,33 @@
         """
         return self.MinValue, self.MaxValue
     
-    def OrthogonalDataAndRange(self, start_tick, end_tick):
-        """
-        Return variable value range
+    def GetDataAndValueRange(self, start_tick, end_tick, full_range=True):
+        """
+        Return variable data and value range for a given tick range
         @param start_tick: Start tick of given range (default None, first data)
         @param end_tick: end tick of given range (default None, last data)
+        @param full_range: Value range is calculated on whole data (False: only
+        calculated on data in given range)
         @return: (numpy.array([(tick, value, forced),...]), 
                   min_value, max_value)
         """
-        # Calculate min_value and max_value so that range size is greater
-        # than 1.0
-        if self.MinValue is not None and self.MaxValue is not None:
-            center = (self.MinValue + self.MaxValue) / 2.
-            range = max(1.0, self.MaxValue - self.MinValue)
-        else:
-            center = 0.5
-            range = 1.0
-        return (self.GetData(start_tick, end_tick), 
-                center - range * 0.55, center + range * 0.55)
+        # Get data in given tick range
+        data = self.GetData(start_tick, end_tick)
+        
+        # Value range is calculated on whole data
+        if full_range:
+            return data, self.MinValue, self.MaxValue
+        
+        # Check that data in given range is not empty
+        values = data[:, 1]
+        if len(values) > 0:
+            # Return value range for data in given tick range
+            return (data,
+                    data[numpy.argmin(values), 1],
+                    data[numpy.argmax(values), 1])
+        
+        # Return default values
+        return data, None, None
     
     def ResetData(self):
         """