changeset 9423:f284e2a26ff9

graphics.cc (convert_cdata): return NaN for NaN values in cdata
author John W. Eaton <jwe@octave.org>
date Wed, 08 Jul 2009 18:31:29 -0400
parents d8d410b08228
children 69d05d1a63b9
files src/ChangeLog src/graphics.cc
diffstat 2 files changed, 20 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Wed Jul 08 17:55:54 2009 -0400
+++ b/src/ChangeLog	Wed Jul 08 18:31:29 2009 -0400
@@ -1,6 +1,6 @@
 2009-07-08  John W. Eaton  <jwe@octave.org>
 
-	* graphics.cc (convert_cdata): Handle NaN values in cdata.
+	* graphics.cc (convert_cdata): Return NaN for NaN values in cdata.
 
 	* pt-assign.cc (maybe_warn_former_built_in_variable): Improve message.
 
--- a/src/graphics.cc	Wed Jul 08 17:55:54 2009 -0400
+++ b/src/graphics.cc	Wed Jul 08 18:31:29 2009 -0400
@@ -437,16 +437,25 @@
       else
 	x = xround (x - 1);
 
-      if (xisnan (x) || x < 0)
-	x = 0;
-      else if (x >= nc)
-	x = (nc - 1);
-
-      octave_idx_type idx = static_cast<octave_idx_type> (x);
-
-      av[i]       = cmapv[idx];
-      av[i+lda]   = cmapv[idx+nc];
-      av[i+2*lda] = cmapv[idx+2*nc];
+      if (xisnan (x))
+	{
+	  av[i]       = x;
+	  av[i+lda]   = x;
+	  av[i+2*lda] = x;
+	}
+      else
+	{
+	  if (x < 0)
+	    x = 0;
+	  else if (x >= nc)
+	    x = (nc - 1);
+
+	  octave_idx_type idx = static_cast<octave_idx_type> (x);
+
+	  av[i]       = cmapv[idx];
+	  av[i+lda]   = cmapv[idx+nc];
+	  av[i+2*lda] = cmapv[idx+2*nc];
+	}
     }
 
   return octave_value (a);