Revision: 4440
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4440&view=rev
Author:   mdboom
Date:     2007-11-26 07:30:12 -0800 (Mon, 26 Nov 2007)

Log Message:
-----------
Support mixed-mode rendering in the SVG backend.

Modified Paths:
--------------
    branches/transforms/lib/matplotlib/backend_bases.py
    branches/transforms/lib/matplotlib/backends/backend_mixed.py
    branches/transforms/lib/matplotlib/backends/backend_svg.py

Modified: branches/transforms/lib/matplotlib/backend_bases.py
===================================================================
--- branches/transforms/lib/matplotlib/backend_bases.py 2007-11-26 15:18:40 UTC 
(rev 4439)
+++ branches/transforms/lib/matplotlib/backend_bases.py 2007-11-26 15:30:12 UTC 
(rev 4440)
@@ -380,6 +380,8 @@
         Return the alpha value used for blending - not supported on
         all backends
         """
+        if len(self._rgb) == 4:
+            return self._rgb[3]
         return self._alpha
 
     def get_antialiased(self):

Modified: branches/transforms/lib/matplotlib/backends/backend_mixed.py
===================================================================
--- branches/transforms/lib/matplotlib/backends/backend_mixed.py        
2007-11-26 15:18:40 UTC (rev 4439)
+++ branches/transforms/lib/matplotlib/backends/backend_mixed.py        
2007-11-26 15:30:12 UTC (rev 4440)
@@ -41,11 +41,11 @@
         self._set_current_renderer(vector_renderer)
 
     _methods = """
-        open_group close_group draw_path draw_markers
-        draw_path_collection draw_quad_mesh get_image_magnification
-        draw_image draw_tex draw_text flipy option_image_nocomposite
-        get_texmanager get_text_width_height_descent new_gc
-        points_to_pixels strip_math finalize
+        close_group draw_image draw_markers draw_path
+        draw_path_collection draw_quad_mesh draw_tex draw_text
+        finalize flipy get_canvas_width_height get_image_magnification
+        get_texmanager get_text_width_height_descent new_gc open_group
+        option_image_nocomposite points_to_pixels strip_math
         """.split()
     def _set_current_renderer(self, renderer):
         self._renderer = renderer
@@ -93,7 +93,3 @@
                 self._renderer.draw_image(l, height - b - h, image, None)
             self._raster_renderer = None
             self._rasterizing = False
-
-    def get_canvas_width_height(self):
-        'return the canvas width and height in display coords'
-        return self._width, self._height

Modified: branches/transforms/lib/matplotlib/backends/backend_svg.py
===================================================================
--- branches/transforms/lib/matplotlib/backends/backend_svg.py  2007-11-26 
15:18:40 UTC (rev 4439)
+++ branches/transforms/lib/matplotlib/backends/backend_svg.py  2007-11-26 
15:30:12 UTC (rev 4440)
@@ -5,6 +5,7 @@
 from matplotlib import verbose, __version__, rcParams
 from matplotlib.backend_bases import RendererBase, GraphicsContextBase,\
      FigureManagerBase, FigureCanvasBase
+from matplotlib.backends.backend_mixed import MixedModeRenderer
 from matplotlib.cbook import is_string_like, is_writable_file_like
 from matplotlib.colors import rgb2hex
 from matplotlib.figure import Figure
@@ -93,7 +94,7 @@
             return 'fill: %s; stroke: %s; stroke-width: %s; ' \
                 'stroke-linejoin: %s; stroke-linecap: %s; %s opacity: %s' % (
                          fill,
-                         rgb2hex(gc.get_rgb()),
+                         rgb2hex(gc.get_rgb()[:3]),
                          linewidth,
                          gc.get_joinstyle(),
                          _capstyle_d[gc.get_capstyle()],
@@ -288,14 +289,12 @@
         font.set_text(s, 0.0, flags=LOAD_NO_HINTING)
         y -= font.get_descent() / 64.0
         
-        thetext = escape_xml_text(s)
-        fontfamily = font.family_name
-        fontstyle = prop.get_style()
         fontsize = prop.get_size_in_points()
-        color = rgb2hex(gc.get_rgb())
+        color = rgb2hex(gc.get_rgb()[:3])
 
         if rcParams['svg.embed_char_paths']:
-            svg = ['<g transform="']
+
+            svg = ['<g style="fill: %s" transform="' % color]
             if angle != 0:
                 svg.append('translate(%s,%s)rotate(%1.1f)' % (x,y,-angle))
             elif x != 0 or y != 0:
@@ -330,6 +329,10 @@
             svg.append('</g>\n')
             svg = ''.join(svg)
         else:
+            thetext = escape_xml_text(s)
+            fontfamily = font.family_name
+            fontstyle = prop.get_style()
+
             style = 'font-size: %f; font-family: %s; font-style: %s; fill: 
%s;'%(fontsize, fontfamily,fontstyle, color)
             if angle!=0:
                 transform = 'transform="translate(%s,%s) rotate(%1.1f) 
translate(%s,%s)"' % (x,y,-angle,-x,-y)
@@ -393,7 +396,7 @@
             self.mathtext_parser.parse(s, 72, prop)
         svg_glyphs = svg_elements.svg_glyphs
         svg_rects = svg_elements.svg_rects
-        color = rgb2hex(gc.get_rgb())
+        color = rgb2hex(gc.get_rgb()[:3])
 
         self.open_group("mathtext")
 
@@ -466,7 +469,7 @@
         self._svgwriter.write (''.join(svg))
         self.close_group("mathtext")
 
-    def finish(self):
+    def finalize(self):
         write = self._svgwriter.write
         if len(self._char_defs):
             write('<defs id="fontpaths">\n')
@@ -501,34 +504,23 @@
                  'svgz': 'Scalable Vector Graphics'}
 
     def print_svg(self, filename, *args, **kwargs):
-        if is_string_like(filename):
-            fh_to_close = svgwriter = codecs.open(filename, 'w', 'utf-8')
-        elif is_writable_file_like(filename):
-            svgwriter = codecs.EncodedFile(filename, 'utf-8')
-            fh_to_close = None
-        else:
-            raise ValueError("filename must be a path or a file-like object")
-        return self._print_svg(filename, svgwriter, fh_to_close)
-            
+        svgwriter = codecs.open(filename, 'w', 'utf-8')
+        return self._print_svg(filename, svgwriter)
+
     def print_svgz(self, filename, *args, **kwargs):
-        if is_string_like(filename):
-            gzipwriter = gzip.GzipFile(filename, 'w')
-            fh_to_close = svgwriter = codecs.EncodedFile(gzipwriter, 'utf-8')
-        elif is_writable_file_like(filename):
-            fh_to_close = gzipwriter = gzip.GzipFile(fileobj=filename, 
mode='w')
-            svgwriter = codecs.EncodedFile(gzipwriter, 'utf-8')
-        else:
-            raise ValueError("filename must be a path or a file-like object")
-        return self._print_svg(filename, svgwriter, fh_to_close)
+        gzipwriter = gzip.GzipFile(filename, 'w')
+        svgwriter = codecs.EncodedFile(gzipwriter, 'utf-8')
+        return self._print_svg(filename, svgwriter)
     
     def _print_svg(self, filename, svgwriter, fh_to_close=None):
         self.figure.set_dpi(72.0)
         width, height = self.figure.get_size_inches()
         w, h = width*72, height*72
 
-        renderer = RendererSVG(w, h, svgwriter, filename)
+        renderer = MixedModeRenderer(
+            width, height, 72.0, RendererSVG(w, h, svgwriter, filename))
         self.figure.draw(renderer)
-        renderer.finish()
+        renderer.finalize()
         if fh_to_close is not None:
             svgwriter.close()
         


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: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to