changeset 11090:2adf4736dafa

Do not store flipped image property values when x/ydata descends.
author Ben Abbott <bpabbott@mac.com>
date Fri, 08 Oct 2010 07:39:31 -0400
parents d761f0dc997e
children 5677f3f7b5fa
files scripts/ChangeLog scripts/image/image.m scripts/plot/__go_draw_axes__.m
diffstat 3 files changed, 30 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/ChangeLog
+++ b/scripts/ChangeLog
@@ -1,3 +1,8 @@
+2010-10-08  Ben Abbott <bpabbott@mac.com>
+
+	* image/image.m, plot/__go_draw_axes__.m: Do not store flipped image
+	property values when x/ydata descends.
+
 2010-10-07  John W. Eaton  <jwe@octave.org>
 
 	* signal/periodogram.m: Fix parse errors.
--- a/scripts/image/image.m
+++ b/scripts/image/image.m
@@ -119,25 +119,23 @@
   xdata = [x(1), x(end)];
   ydata = [y(1), y(end)];
 
-  if (diff (xdata) < 0)
-    xdata = fliplr (xdata);
-    img = fliplr (img);
-  elseif (diff (xdata) == 0)
-    xdata = xdata(1) + [0, size(img,2)-1];
-  endif
-  if (diff (ydata) < 0)
-    ydata = fliplr (ydata);
-    img = flipud (img);
-  elseif (diff (ydata) == 0)
-    ydata = ydata(1) + [0, size(img,1)-1];
-  endif
-
   ca = gca ();
 
   tmp = __go_image__ (ca, "cdata", img, "xdata", xdata, "ydata", ydata,
                     "cdatamapping", "direct", varargin {:});
 
   px = __image_pixel_size__ (tmp);
+
+  if (xdata(2) < xdata(1))
+    xdata = xdata(2:-1:1);
+  elseif (xdata(2) == xdata(1))
+    xdata = xdata(1) + [0, size(img,2)-1];
+  endif
+  if (ydata(2) < ydata(1))
+    ydata = ydata(2:-1:1);
+  elseif (ydata(2) == ydata(1))
+    ydata = ydata(1) + [0, size(img,1)-1];
+  endif
   xlim = xdata + [-px(1), px(1)];
   ylim = ydata + [-px(2), px(2)];
 
--- a/scripts/plot/__go_draw_axes__.m
+++ b/scripts/plot/__go_draw_axes__.m
@@ -453,6 +453,19 @@
             have_cdata(data_idx) = false;
             have_3d_patch(data_idx) = false;
 
+            if (img_xdata(2) < img_xdata(1))
+              img_xdata = img_xdata(2:-1:1);
+              img_data = img_data(:,end:-1:1,:);
+            elseif (img_xdata(1) == img_xdata(2))
+              img_xdata = img_xdata(1) + [0, size(img_data,2)-1];
+            endif
+            if (img_ydata(2) < img_ydata(1))
+              img_ydata = img_ydata(2:-1:1);
+              img_data = img_data(end:-1:1,:,:);
+            elseif (img_ydata(1) == img_ydata(2))
+              img_ydata = img_ydata(1) + [0, size(img_data,1)-1];
+            endif
+
             [y_dim, x_dim] = size (img_data(:,:,1));
             if (x_dim > 1)
               dx = abs (img_xdata(2)-img_xdata(1))/(x_dim-1);
@@ -468,6 +481,7 @@
               img_data = [img_data; img_data];
               dy = abs (img_ydata(2)-img_ydata(1));
             endif
+
             x_origin = min (img_xdata);
             y_origin = min (img_ydata);