tmf.ui: Return minimal number of X values in XY viewer
authorGeneviève Bastien <gbastien+lttng@versatic.net>
Wed, 30 Mar 2016 15:59:56 +0000 (11:59 -0400)
committerGenevieve Bastien <gbastien+lttng@versatic.net>
Mon, 11 Apr 2016 14:24:44 +0000 (10:24 -0400)
When the number of time steps is lower than the requested number of X values,
only those steps will be returned.

Change-Id: I94c877906083584546d4921e2bd90d82b5e72c49
Signed-off-by: Geneviève Bastien <gbastien+lttng@versatic.net>
Reviewed-on: https://git.eclipse.org/r/69546
Reviewed-by: Hudson CI
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
tmf/org.eclipse.tracecompass.tmf.ui/src/org/eclipse/tracecompass/tmf/ui/viewers/xycharts/linecharts/TmfCommonXLineChartViewer.java

index ee5a1c0e70879bc40c7d9bb64375992e58717564..6342a2b96aee23c2a82648a592fcb0f242965b04 100644 (file)
@@ -203,8 +203,9 @@ public abstract class TmfCommonXLineChartViewer extends TmfXYChartViewer {
 
     /**
      * Convenience method to compute the values of the X axis for a given time
-     * range. This method will return nb values depending, equally separated
-     * from start to end.
+     * range. This method will return at most nb values, equally separated from
+     * start to end. The step between values will be at least 1.0, so the number
+     * of values returned can be lower than nb.
      *
      * The returned time values are in internal time, ie to get trace time, the
      * time offset needs to be added to those values.
@@ -214,17 +215,23 @@ public abstract class TmfCommonXLineChartViewer extends TmfXYChartViewer {
      * @param end
      *            End time of the range
      * @param nb
-     *            The number of steps in the x axis.
+     *            The maximum number of steps in the x axis.
      * @return The time values (converted to double) to match every step.
      */
     protected static final double[] getXAxis(long start, long end, int nb) {
-
-        double timestamps[] = new double[nb];
         long steps = (end - start);
-        double step = steps / (double) nb;
+        int nbVals = nb;
+        if (steps < nb) {
+            nbVals = (int) steps;
+            if (nbVals <= 0) {
+                nbVals = 1;
+            }
+        }
+        double step = steps / (double) nbVals;
 
+        double timestamps[] = new double[nbVals];
         double curTime = 1;
-        for (int i = 0; i < nb; i++) {
+        for (int i = 0; i < nbVals; i++) {
             timestamps[i] = curTime;
             curTime += step;
         }
This page took 0.025291 seconds and 5 git commands to generate.