* Bug 16445 fixed: colorbar() for Champ.colored='on' 71/21471/3
Samuel GOUGEON [Sat, 23 May 2020 15:48:37 +0000 (17:48 +0200)]
  http://bugzilla.scilab.org/16445

Change-Id: I86ea06defebd7c86d42d648605111a44b23ba456

scilab/CHANGES.md
scilab/modules/graphics/help/en_US/color_management/colorbar.xml
scilab/modules/graphics/macros/colorbar.sci
scilab/modules/graphics/tests/unit_tests/colorbar.tst

index e617522..7cc9457 100644 (file)
@@ -279,6 +279,7 @@ Bug Fixes
 * [#16401](https://bugzilla.scilab.org/16401): global `external_object_java` class was crashing Scilab.
 * [#16403](https://bugzilla.scilab.org/16403): 1D extraction of matrix with implicit index had wrong dimensions.
 * [#16408](https://bugzilla.scilab.org/16408): toJSON(var, indent, filename) is the right call sequence. Documentation has been udpated.
+* [#16445](https://bugzilla.scilab.org/16445): `colorbar(..)` ignored how to guess `umin` and `umax` for a Champ object (with .colored="on").
 
 
 ### Bugs fixed in 6.1.0:
index fb0ceb7..59a3b45 100644 (file)
         </para>
         <para>
             When the current axes embeds an object of graphical type among
-            {"Matplot" "Fec" "Fac3d" "Plot3d" "Grayplot"} and its related U data,
+            {"Matplot" "Fec" "Fac3d" "Plot3d" "Grayplot" "Champ"} and its related U data,
             it is possible to skip <literal>umin</literal> or/and <literal>umax</literal> values.
             <literal>min(U)</literal> or/and <literal>max(U)</literal> are then retrieved
             from data and used to set the color bar. For a "Matplot" object, the case
@@ -662,6 +662,9 @@ exec("SCI/modules/graphics/demos/colormap/colormaps.dem.sce",-1)
                 <link linkend="surf">surf</link>
             </member>
             <member>
+                <link linkend="champ">champ</link>
+            </member>
+            <member>
                 <link linkend="printf_conversion">Cformat rules</link>
             </member>
         </simplelist>
index e022acb..f155625 100644 (file)
@@ -2,7 +2,7 @@
 // Copyright (C) Bruno Pincon
 // Copyright (C) Serge Steer (adaptation to new graphic system)
 // Copyright (C) 2012 - 2016 - Scilab Enterprises
-// Copyright (C) 2017 - 2019 - Samuel GOUGEON
+// Copyright (C) 2017 - 2020 - Samuel GOUGEON
 //
 // This file is hereby licensed under the terms of the GNU GPL v2.0,
 // pursuant to article 5.3.4 of the CeCILL v.2.1.
@@ -50,12 +50,12 @@ function colorbar(umin, umax, colminmax, fmt)
     f = gcf();
     nColorsCM = size(f.color_map,1);
     for h = gca().children'
-        if or(h.type==["Matplot" "Fec" "Fac3d" "Plot3d" "Grayplot"])
+        if or(h.type==["Matplot" "Fec" "Fac3d" "Plot3d" "Grayplot" "Champ"])
             Type = h.type
             break
         end
         for g = h.children'
-            if or(g.type==["Matplot" "Fec" "Fac3d" "Plot3d" "Grayplot"])
+            if or(g.type==["Matplot" "Fec" "Fac3d" "Plot3d" "Grayplot" "Champ"])
                 Type = g.type
                 h = g
                 break
@@ -152,8 +152,12 @@ function colorbar(umin, umax, colminmax, fmt)
         if h.data_mapping=="direct"
             Type = "Matplot"
         end
+
     elseif Type=="Matplot"
         u = h.data
+
+    elseif Type=="Champ"
+        u = sqrt(h.data.fx .^2 + h.data.fy .^2)
     else
         u = []
     end
@@ -165,7 +169,7 @@ function colorbar(umin, umax, colminmax, fmt)
     if ~isdef("umin","l") | type(umin)==0 | umin==[] then
         if u~=[]
             if colminmax~=[] & (length(colminmax)>1 | colminmax~=-1)
-                if Type=="Matplot" | ..
+                if Type=="Matplot" | Type=="Champ" | ..
                    Type=="Fac3d" & or(h.color_flag==[2 3 4]) & h.cdata_mapping == "direct"
                     umin = colminmax(1)
                 else
@@ -205,7 +209,7 @@ function colorbar(umin, umax, colminmax, fmt)
     if ~isdef("umax","l") | type(umax)==0 | umax==[] then
         if u~=[]
             if colminmax~=[] & colminmax~=-1
-                if Type=="Matplot" | ..
+                if Type=="Matplot" | Type=="Champ" | ..
                    Type=="Fac3d" & or(h.color_flag==[2 3 4]) & h.cdata_mapping == "direct"
                     umax = colminmax(2)
                 else
@@ -299,6 +303,7 @@ function colorbar(umin, umax, colminmax, fmt)
     Matplot((colminmax(2):-1:colminmax(1))')
     a_cb.y_location = "right";
     a_cb.tight_limits = "on";
+
     if Type~="Matplot" then
         du = (umax-umin)
         gce().rect = [0.5 umin 1.5 umax];
index dd4f9cf..41e2fd5 100644 (file)
@@ -1,6 +1,6 @@
 // =============================================================================
 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
-// Copyright (C) 2018 - 2019 - Samuel GOUGEON
+// Copyright (C) 2018 - 2020 - Samuel GOUGEON
 //
 //  This file is distributed under the same license as the Scilab package.
 // =============================================================================
@@ -197,6 +197,20 @@ plotSample();
 colorbar(,,[$/2 $]);  // values from 0 to 1
 
 
-// CHECKING gce()
-// ==============
+// 5) champ().colored
+//    ===============
+x = -4:6;
+X = ndgrid(x);
+[fx, fy] =  (rand(X)-0.5, rand(X)-0.5);
+clf
+gcf().color_map = jetcolormap(50);
+champ(x, x, fx, fy)
+gce().colored = "on";
+colorbar  // http://bugzilla.scilab.org/16445 :
+          //   umin >= 0 & umax <= sqrt(0.5)=0.71 should have been guessed
+          //   without error (min and max lengths of vectors)
+
+
+// 6) CHECKING gce()
+//    ==============
 twinkle(gce())  // The colorbar of the last test must twinkle