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