changeset 22568:6b2a1b2c1576 stable

__gnuplot_draw_axes__.m: Handle case where clim range is 0. * __gnuplot_draw_axes__.m (mapcdata): If clim range (clim(2) - clim(1)) is zero, then all cdata takes on the maximum possible value.
author Rik <rik@octave.org>
date Fri, 30 Sep 2016 17:17:35 -0700
parents d5e775944809
children d3adf6999939
files scripts/plot/util/private/__gnuplot_draw_axes__.m
diffstat 1 files changed, 15 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/plot/util/private/__gnuplot_draw_axes__.m	Fri Sep 30 14:32:37 2016 -0500
+++ b/scripts/plot/util/private/__gnuplot_draw_axes__.m	Fri Sep 30 17:17:35 2016 -0700
@@ -2855,18 +2855,29 @@
 function retval = mapcdata (cdata, mode, clim, cmap_sz)
   if (ndims (cdata) == 3)
     ## True Color, clamp data to 8-bit
+    clim = double (clim);
     cdata = double (cdata);
-    cdata = 255 * (cdata - clim(1)) / (clim(2)-clim(1));
-    cdata(cdata < 0) = 0;  cdata(cdata > 255) = 255;
+    clim_rng = clim(2) - clim(1);
+    if (clim_rng != 0)
+      cdata = 255 * (cdata - clim(1)) / clim_rng;
+      cdata(cdata < 0) = 0;  cdata(cdata > 255) = 255;
+    else
+      cdata(:) = 255;
+    endif
     ## Scale using inverse of gnuplot's cbrange mapping
     retval = 1 + cdata * (cmap_sz-1)/255;
   else
     if (islogical (cdata))
       cdata += 1;
     elseif (strcmp (mode, "scaled"))
+      clim = double (clim);
       cdata = double (cdata);
-      clim = double (clim);
-      cdata = 1 + fix (cmap_sz * (cdata - clim(1)) / (clim(2) - clim(1)));
+      clim_rng = clim(2) - clim(1);
+      if (clim_rng != 0)
+        cdata = 1 + fix (cmap_sz * (cdata - clim(1)) / clim_rng);
+      else
+        cdata(:) = cmap_sz;
+      endif
     else
       if (isinteger (cdata))
         cdata += 1;