Revision: 7478
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7478&view=rev
Author:   mdboom
Date:     2009-08-12 19:17:09 +0000 (Wed, 12 Aug 2009)

Log Message:
-----------
New version of Gouraud quadmesh shader with 4 triangles per quad.

Modified Paths:
--------------
    trunk/matplotlib/examples/pylab_examples/quadmesh_demo.py
    trunk/matplotlib/lib/matplotlib/collections.py
    trunk/matplotlib/src/_backend_agg.cpp

Modified: trunk/matplotlib/examples/pylab_examples/quadmesh_demo.py
===================================================================
--- trunk/matplotlib/examples/pylab_examples/quadmesh_demo.py   2009-08-12 
16:53:41 UTC (rev 7477)
+++ trunk/matplotlib/examples/pylab_examples/quadmesh_demo.py   2009-08-12 
19:17:09 UTC (rev 7478)
@@ -38,7 +38,7 @@
 #cmap.set_bad('r', 1.0)
 #ax.pcolormesh(Qx,Qz,Zm, cmap=cmap)
 #  Or use the default, which is transparent:
-col = ax.pcolormesh(Qx,Qz,Zm)
+col = ax.pcolormesh(Qx,Qz,Zm,shading='gouraud')
 ax.set_title('With masked values')
 
 

Modified: trunk/matplotlib/lib/matplotlib/collections.py
===================================================================
--- trunk/matplotlib/lib/matplotlib/collections.py      2009-08-12 16:53:41 UTC 
(rev 7477)
+++ trunk/matplotlib/lib/matplotlib/collections.py      2009-08-12 19:17:09 UTC 
(rev 7478)
@@ -1132,41 +1132,45 @@
     def convert_mesh_to_triangles(self, meshWidth, meshHeight, coordinates):
         """
         Converts a given mesh into a sequence of triangles, each point
-        with its own color
-        :class:`matplotlib.path.Path` objects for easier rendering by
-        backends that do not directly support quadmeshes.
-
-        This function is primarily of use to backend implementers.
+        with its own color.  This is useful for experiments using
+        `draw_qouraud_triangle`.
         """
         Path = mpath.Path
 
         if ma.isMaskedArray(coordinates):
-            c = coordinates.data
+            p = coordinates.data
         else:
-            c = coordinates
+            p = coordinates
 
+        p_a = p[0:-1, 0:-1]
+        p_b = p[0:-1, 1:  ]
+        p_c = p[1:  , 1:  ]
+        p_d = p[1:  , 0:-1]
+        p_center = (p_a + p_b + p_c + p_d) / 4.0
+
         triangles = np.concatenate((
-                c[0:-1, 0:-1],
-                c[0:-1, 1:  ],
-                c[1:  , 1:  ],
-                c[1:  , 1:  ],
-                c[1:  , 0:-1],
-                c[0:-1, 0:-1]
+                p_a, p_b, p_center,
+                p_b, p_c, p_center,
+                p_c, p_d, p_center,
+                p_d, p_a, p_center,
                 ), axis=2)
-        triangles = triangles.reshape((meshWidth * meshHeight * 2, 3, 2))
+        triangles = triangles.reshape((meshWidth * meshHeight * 4, 3, 2))
 
         c = self.get_facecolor().reshape((meshHeight + 1, meshWidth + 1, 4))
+        c_a = c[0:-1, 0:-1]
+        c_b = c[0:-1, 1:  ]
+        c_c = c[1:  , 1:  ]
+        c_d = c[1:  , 0:-1]
+        c_center = (c_a + c_b + c_c + c_d) / 4.0
+
         colors = np.concatenate((
-                c[0:-1, 0:-1],
-                c[0:-1, 1:  ],
-                c[1:  , 1:  ],
-                c[1:  , 1:  ],
-                c[1:  , 0:-1],
-                c[0:-1, 0:-1]
+                c_a, c_b, c_center,
+                c_b, c_c, c_center,
+                c_c, c_d, c_center,
+                c_d, c_a, c_center,
                 ), axis=2)
+        colors = colors.reshape((meshWidth * meshHeight * 4, 3, 4))
 
-        colors = colors.reshape((meshWidth * meshHeight * 2, 3, 4))
-
         return triangles, colors
 
     def get_datalim(self, transData):

Modified: trunk/matplotlib/src/_backend_agg.cpp
===================================================================
--- trunk/matplotlib/src/_backend_agg.cpp       2009-08-12 16:53:41 UTC (rev 
7477)
+++ trunk/matplotlib/src/_backend_agg.cpp       2009-08-12 19:17:09 UTC (rev 
7478)
@@ -1470,6 +1470,10 @@
   Py::Object        colors_obj = args[2];
   agg::trans_affine trans      = 
py_to_agg_transformation_matrix(args[3].ptr());
 
+  theRasterizer.reset_clipping();
+  rendererBase.reset_clipping(true);
+  set_clipbox(gc.cliprect, theRasterizer);
+
   trans *= agg::trans_affine_scaling(1.0, -1.0);
   trans *= agg::trans_affine_translation(0.0, (double)height);
 


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

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day 
trial. Simplify your report design, integration and deployment - and focus on 
what you do best, core application coding. Discover what's new with 
Crystal Reports now.  http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to