Revision: 8585
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8585&view=rev
Author:   mdboom
Date:     2010-07-28 18:33:11 +0000 (Wed, 28 Jul 2010)

Log Message:
-----------
Fix problems displaying images with zero (logical) width.

Modified Paths:
--------------
    branches/v1_0_maint/lib/matplotlib/image.py
    
branches/v1_0_maint/lib/matplotlib/tests/baseline_images/test_image/image_clip.svg
    branches/v1_0_maint/src/_image.cpp

Modified: branches/v1_0_maint/lib/matplotlib/image.py
===================================================================
--- branches/v1_0_maint/lib/matplotlib/image.py 2010-07-27 17:28:58 UTC (rev 
8584)
+++ branches/v1_0_maint/lib/matplotlib/image.py 2010-07-28 18:33:11 UTC (rev 
8585)
@@ -147,8 +147,14 @@
         dyintv = ymax-ymin
 
         # the viewport scale factor
-        sx = dxintv/viewlim.width
-        sy = dyintv/viewlim.height
+        if viewlim.width == 0.0 and dxintv == 0.0:
+            sx = 1.0
+        else:
+            sx = dxintv/viewlim.width
+        if viewlim.height == 0.0 and dyintv == 0.0:
+            sy = 1.0
+        else:
+            sy = dyintv/viewlim.height
         numrows, numcols = A.shape[:2]
         if sx > 2:
             x0 = (viewlim.x0-xmin)/dxintv * numcols
@@ -576,9 +582,17 @@
         im.set_resample(self._resample)
 
         # the viewport translation
-        tx = (xmin-transformed_viewLim.x0)/dxintv * numcols
-        ty = (ymin-transformed_viewLim.y0)/dyintv * numrows
+        if dxintv == 0.0:
+            tx = 0.0
+        else:
+            tx = (xmin-transformed_viewLim.x0)/dxintv * numcols
+        if dyintv == 0.0:
+            ty = 0.0
+        else:
+            ty = (ymin-transformed_viewLim.y0)/dyintv * numrows
 
+        im.apply_translation(tx, ty)
+
         l, b, r, t = self.axes.bbox.extents
         widthDisplay = (round(r*magnification) + 0.5) - 
(round(l*magnification) - 0.5)
         heightDisplay = (round(t*magnification) + 0.5) - 
(round(b*magnification) - 0.5)
@@ -586,7 +600,7 @@
 
         # resize viewport to display
         rx = widthDisplay / numcols
-        ry = heightDisplay  / numrows
+        ry = heightDisplay / numrows
         im.apply_scaling(rx*sx, ry*sy)
         im.resize(int(widthDisplay+0.5), int(heightDisplay+0.5),
                   norm=self._filternorm, radius=self._filterrad)

Modified: 
branches/v1_0_maint/lib/matplotlib/tests/baseline_images/test_image/image_clip.svg
===================================================================
--- 
branches/v1_0_maint/lib/matplotlib/tests/baseline_images/test_image/image_clip.svg
  2010-07-27 17:28:58 UTC (rev 8584)
+++ 
branches/v1_0_maint/lib/matplotlib/tests/baseline_images/test_image/image_clip.svg
  2010-07-28 18:33:11 UTC (rev 8585)
@@ -25,7 +25,19 @@
 C122.400000 261.827096 140.607298 305.783402 173.011948 338.188052
 C205.416598 370.592702 249.372904 388.800000 295.200000 388.800000z"/>
 </g>
-<image x="122.400000" y="41.800000" width="347.000000" height="347.000000"  
xlink:href="data:image/png;base64,
+<defs>
+  <clipPath id="p904278a4c1c81ab8b13ccb57b319fa38">
+<path d="M295.200000 388.800000
+C341.027096 388.800000 384.983402 370.592702 417.388052 338.188052
+C449.792702 305.783402 468.000000 261.827096 468.000000 216.000000
+C468.000000 170.172904 449.792702 126.216598 417.388052 93.811948
+C384.983402 61.407298 341.027096 43.200000 295.200000 43.200000
+C249.372904 43.200000 205.416598 61.407298 173.011948 93.811948
+C140.607298 126.216598 122.400000 170.172904 122.400000 216.000000
+C122.400000 261.827096 140.607298 305.783402 173.011948 338.188052
+C205.416598 370.592702 249.372904 388.800000 295.200000 388.800000z"/>
+  </clipPath>
+</defs><image x="122.400000" y="41.800000" width="347.000000" 
height="347.000000"  clip-path="url(#p904278a4c1c81ab8b13ccb57b319fa38)" 
xlink:href="data:image/png;base64,
 iVBORw0KGgoAAAANSUhEUgAAAVsAAAFbCAYAAAB7zy3tAAAABHNCSVQICAgIfAhkiAAAIABJREFU
 eJztfeGS4zzLLNp67vvc+XJ+WECDkJ2ZjTJvfdNdtRtbQggpcbuNZc8Q+X8qxPsxhsiwzyHy54v7
 Q64ygbq6/6++v9LXru+dr+/sC2z/edh/1fd35uex73+Y++98z9/9HXz1u5DLLXEGf346AIIgiN8A
@@ -608,7 +620,7 @@
 </g>
 <g id="ytick8">
 <g id="text19">
-<g style="fill: #000000; opacity: 1.000000" 
transform="translate(118.332060,125.327188)scale(0.120000)">
+<g style="fill: #000000; opacity: 1.000000" 
transform="translate(118.332060,125.327187)scale(0.120000)">
 <use xlink:href="#c_3dcfa38a02242cb63ec6726c6e70be7a"/>
 <use xlink:href="#c_7a2040fe3b94fcd41d0a72c84e93b115" x="63.623047"/>
 <use xlink:href="#c_40880da00a2fb346f185ce8104650367" x="127.246094"/>

Modified: branches/v1_0_maint/src/_image.cpp
===================================================================
--- branches/v1_0_maint/src/_image.cpp  2010-07-27 17:28:58 UTC (rev 8584)
+++ branches/v1_0_maint/src/_image.cpp  2010-07-28 18:33:11 UTC (rev 8585)
@@ -392,7 +392,6 @@
 
     // the image path
     agg::path_storage path;
-    agg::int8u *bufferPad = NULL;
     agg::rendering_buffer rbufPad;
 
     double x0, y0, x1, y1;
@@ -541,9 +540,7 @@
 
     }
 
-    delete [] bufferPad;
     return Py::Object();
-
 }
 
 


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
The Palm PDK Hot Apps Program offers developers who use the
Plug-In Development Kit to bring their C/C++ apps to Palm for a share
of $1 Million in cash or HP Products. Visit us here for more details:
http://p.sf.net/sfu/dev2dev-palm
_______________________________________________
Matplotlib-checkins mailing list
Matplotlib-checkins@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to