diff -r 4282f62c1cf0 -r fae0809eae98 controls/DebugVariablePanel/DebugVariableItem.py --- 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): """