Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit b3c85d0

Browse files
committed
fixed agg backend switch bug on svg failure
svn path=/trunk/matplotlib/; revision=3272
1 parent cbb3c18 commit b3c85d0

2 files changed

Lines changed: 17 additions & 7 deletions

File tree

lib/matplotlib/backends/backend_agg.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,7 @@ def print_figure(self, filename, dpi=None, facecolor='w', edgecolor='w',
455455
# render the printed figure
456456
self.draw()
457457

458+
printfunc = None
458459
if not is_string_like(filename):
459460
# assume png and write to fileobject
460461
self.renderer._renderer.write_png(filename)
@@ -479,23 +480,33 @@ def print_figure(self, filename, dpi=None, facecolor='w', edgecolor='w',
479480
elif ext.find('svg')>=0:
480481
from backend_svg import FigureCanvasSVG
481482
svg = self.switch_backends(FigureCanvasSVG)
482-
svg.print_figure(filename, dpi, facecolor, edgecolor,
483-
orientation, **kwargs)
483+
printfunc = svg.print_figure
484484
elif ext.find('ps')>=0 or ext.find('ep')>=0:
485485
from backend_ps import FigureCanvasPS # lazy import
486486
ps = self.switch_backends(FigureCanvasPS)
487-
ps.print_figure(filename, dpi, facecolor, edgecolor,
488-
orientation, **kwargs)
487+
printfunc = ps.print_figure
489488
elif ext.find('pdf')>=0:
490489
from backend_pdf import FigureCanvasPdf
491490
pdf = self.switch_backends(FigureCanvasPdf)
492-
pdf.print_figure(filename, dpi, facecolor, edgecolor,
493-
orientation, **kwargs)
491+
printfunc = pdf.print_figure
494492
else:
495493
raise IOError('Do not know know to handle extension *%s' % ext)
496494

495+
if printfunc is not None:
496+
try:
497+
printfunc(filename, dpi, facecolor, edgecolor, orientation, **kwargs)
498+
except:
499+
# restore the original figure properties
500+
self.figure.dpi.set(origDPI)
501+
self.figure.set_facecolor(origfacecolor)
502+
self.figure.set_edgecolor(origedgecolor)
503+
self.figure.set_canvas(self)
504+
raise
505+
497506
# restore the original figure properties
498507
self.figure.dpi.set(origDPI)
499508
self.figure.set_facecolor(origfacecolor)
500509
self.figure.set_edgecolor(origedgecolor)
501510
self.figure.set_canvas(self)
511+
512+

lib/matplotlib/backends/backend_gtkagg.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ def print_figure(self, filename, dpi=None, facecolor='w', edgecolor='w',
116116
error_msg_gtk('Failed to save\nError message: %s'%(msg,), self)
117117
except:
118118
self.figure.set_canvas(self)
119-
raise
120119

121120
self.figure.set_canvas(self)
122121
if DEBUG: print 'FigureCanvasGTKAgg.print_figure done'

0 commit comments

Comments
 (0)