Bug 13679 fixed: Invalid subticks in log scale after copy 51/16251/2
Calixte DENIZET [Thu, 26 Mar 2015 14:32:37 +0000 (15:32 +0100)]
Change-Id: I17be711f31c5dd3949954abf63507668fe6fcc89

scilab/CHANGES_5.5.X
scilab/modules/graphics/tests/nonreg_tests/bug_13679.tst [new file with mode: 0644]
scilab/modules/scirenderer/src/org/scilab/forge/scirenderer/ruler/graduations/AbstractGraduations.java
scilab/modules/scirenderer/src/org/scilab/forge/scirenderer/ruler/graduations/LogarithmicGraduations.java

index e6f2287..1d4ba4d 100644 (file)
@@ -96,6 +96,8 @@ Scilab Bug Fixes
 
 * Bug #13677 fixed - Indentation of examples in assert_checkerror help page was not correct.
 
+* Bug #13679 fixed - Invalid subticks in log scale after copy.
+
 * Bug #13681 fixed - Calling cdfnor to get the X vector could produced a vector with some NaN values.
 
 * Bug #13684 fixed - SciNotes editor component did not fill all the window content pane when wrap-lines
diff --git a/scilab/modules/graphics/tests/nonreg_tests/bug_13679.tst b/scilab/modules/graphics/tests/nonreg_tests/bug_13679.tst
new file mode 100644 (file)
index 0000000..3199a68
--- /dev/null
@@ -0,0 +1,27 @@
+// =============================================================================
+// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
+// Copyright (C) 2015 - Scilab Enterprises - Calixte DENIZET
+//
+//  This file is distributed under the same license as the Scilab package.
+// =============================================================================
+
+// <-- TEST WITH GRAPHIC -->
+
+// <-- INTERACTIVE TEST -->
+
+// <-- Non-regression test for bug 13679 -->
+//
+// <-- Bugzilla URL -->
+// http://bugzilla.scilab.org/13679
+//
+// <-- Short Description -->
+// Invalid subticks in log scale after copy
+
+// Check that there are 3 horizontal dashed lines between 2 graduations on y-axis
+plot2d(linspace(1,1000,100), linspace(1d-18,1d-55,100));
+a = gca();
+a.axes_bounds=[0 0.37 1 0.3];
+a.grid=[1 1];
+a.grid_style = [3 3];
+a.sub_ticks = [1 3];
+a.log_flags="lln";
\ No newline at end of file
index 31150cb..4a97ceb 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2009-2011 - DIGITEO - Pierre Lando
- * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ * Copyright (C) 2013-2015 - Scilab Enterprises - Calixte DENIZET
  *
  * This file must be used under the terms of the CeCILL.
  * This source file is licensed as described in the file COPYING, which
@@ -45,7 +45,7 @@ public abstract class AbstractGraduations implements Graduations {
 
     private final Graduations parentGraduations;
     private DecimalFormat numberFormat;
-    private List<Double> subValues;
+    protected List<Double> subValues;
 
     /**
      * Constructor from parent graduations.
@@ -226,7 +226,7 @@ public abstract class AbstractGraduations implements Graduations {
         } else {
             upperBoundBracket = LEFT_BRACKET;
         }
-        return "Graduation " + lowerBoundBracket
+        return getClass().getSimpleName() + lowerBoundBracket
                + getFormat().format(lowerBound) + ", "
                + getFormat().format(upperBound) + upperBoundBracket;
     }
index d923ec1..63e162f 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
  * Copyright (C) 2009-2011 - DIGITEO - Pierre Lando
- * Copyright (C) 2013 - Scilab Enterprises - Calixte DENIZET
+ * Copyright (C) 2013-2015 - Scilab Enterprises - Calixte DENIZET
  *
  * This file must be used under the terms of the CeCILL.
  * This source file is licensed as described in the file COPYING, which
@@ -12,6 +12,7 @@
 
 package org.scilab.forge.scirenderer.ruler.graduations;
 
+import java.util.Collections;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -128,6 +129,33 @@ public final class LogarithmicGraduations extends AbstractGraduations implements
     }
 
     @Override
+    public List<Double> getSubGraduations(final int N) {
+        if (subValues == null) {
+            List<Double> ticksValue = getAllValues();
+            if (N == 0 || ticksValue.size() == 0) {
+                subValues = new LinkedList<Double>();
+            } else {
+                Collections.sort(ticksValue);
+                subValues = new LinkedList<Double>();
+
+                for (int i = 0; i < ticksValue.size() - 1; i++) {
+                    final double first = Math.log10(ticksValue.get(i));
+                    final double second = Math.log10(ticksValue.get(i + 1));
+                    final double step = (second - first) / (N + 1);
+                    double v = first;
+                    for (int j = 0; j <= N; j++) {
+                        subValues.add(Math.pow(10, v));
+                        v += step;
+                    }
+                }
+                subValues.add(ticksValue.get(ticksValue.size() - 1));
+            }
+        }
+
+        return subValues;
+    }
+
+    @Override
     public int getSubDensity() {
         if (stepExponent >= 3) {
             return 3;
@@ -138,6 +166,14 @@ public final class LogarithmicGraduations extends AbstractGraduations implements
         }
     }
 
+    @Override
+    public String toString() {
+        String s = super.toString();
+        s += "; stepExponent=" + stepExponent + "; parent=" + getParentGraduations();
+
+        return s;
+    }
+
     /**
      * This class manage linear graduation between 10^n and 10^(n+1)
      */