Revision: 5934
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=5934&view=rev
Author:   mdboom
Date:     2008-07-31 13:50:58 +0000 (Thu, 31 Jul 2008)

Log Message:
-----------
Deal with markers correctly for interpolating transformations.  (Thanks 
Jae-Joon Lee for finding this.)

Modified Paths:
--------------
    trunk/matplotlib/examples/api/custom_projection_example.py
    trunk/matplotlib/lib/matplotlib/lines.py
    trunk/matplotlib/lib/matplotlib/transforms.py

Modified: trunk/matplotlib/examples/api/custom_projection_example.py
===================================================================
--- trunk/matplotlib/examples/api/custom_projection_example.py  2008-07-31 
11:52:10 UTC (rev 5933)
+++ trunk/matplotlib/examples/api/custom_projection_example.py  2008-07-31 
13:50:58 UTC (rev 5934)
@@ -451,6 +451,7 @@
 from pylab import *
 
 subplot(111, projection="hammer")
+p = plot([-1, 1, 1], [-1, -1, 1], "o-")
 grid(True)
 
 show()

Modified: trunk/matplotlib/lib/matplotlib/lines.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/lines.py    2008-07-31 11:52:10 UTC (rev 
5933)
+++ trunk/matplotlib/lib/matplotlib/lines.py    2008-07-31 13:50:58 UTC (rev 
5934)
@@ -432,7 +432,7 @@
             gc.set_alpha(self._alpha)
             funcname = self._markers.get(self._marker, '_draw_nothing')
             if funcname != '_draw_nothing':
-                tpath, affine = 
self._transformed_path.get_transformed_path_and_affine()
+                tpath, affine = 
self._transformed_path.get_transformed_points_and_affine()
                 markerFunc = getattr(self, funcname)
                 markerFunc(renderer, gc, tpath, affine.frozen())
 

Modified: trunk/matplotlib/lib/matplotlib/transforms.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/transforms.py       2008-07-31 11:52:10 UTC 
(rev 5933)
+++ trunk/matplotlib/lib/matplotlib/transforms.py       2008-07-31 13:50:58 UTC 
(rev 5934)
@@ -2076,18 +2076,35 @@
         self._transform = transform
         self.set_children(transform)
         self._transformed_path = None
+        self._transformed_points = None
 
+    def _revalidate(self):
+        if ((self._invalid & self.INVALID_NON_AFFINE == 
self.INVALID_NON_AFFINE)
+            or self._transformed_path is None):
+            self._transformed_path = \
+                self._transform.transform_path_non_affine(self._path)
+            self._transformed_points = \
+                Path(self._transform.transform_non_affine(self._path.vertices))
+        self._invalid = 0
+
+    def get_transformed_points_and_affine(self):
+        """
+        Return a copy of the child path, with the non-affine part of
+        the transform already applied, along with the affine part of
+        the path necessary to complete the transformation.  Unlike
+        get_transformed_path_and_affine, no interpolation will be
+        performed.
+        """
+        self._revalidate()
+        return self._transformed_points, self.get_affine()
+
     def get_transformed_path_and_affine(self):
         """
         Return a copy of the child path, with the non-affine part of
         the transform already applied, along with the affine part of
         the path necessary to complete the transformation.
         """
-        if ((self._invalid & self.INVALID_NON_AFFINE == 
self.INVALID_NON_AFFINE)
-            or self._transformed_path is None):
-            self._transformed_path = \
-                self._transform.transform_path_non_affine(self._path)
-        self._invalid = 0
+        self._revalidate()
         return self._transformed_path, self.get_affine()
 
     def get_fully_transformed_path(self):


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

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to