From: <md...@us...> - 2008-09-09 12:33:07
|
Revision: 6075 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6075&view=rev Author: mdboom Date: 2008-09-09 12:33:03 +0000 (Tue, 09 Sep 2008) Log Message: ----------- Fix small bug with quad curves in PDF backend. Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-09-07 11:28:45 UTC (rev 6074) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-09-09 12:33:03 UTC (rev 6075) @@ -1106,7 +1106,7 @@ cmds.append(Op.lineto) elif code == Path.CURVE3: points = quad2cubic(*(list(last_points[-2:]) + list(points))) - cmds.extend(points) + cmds.extend(points[2:]) cmds.append(Op.curveto) elif code == Path.CURVE4: cmds.extend(points) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jo...@us...> - 2008-10-11 13:48:30
|
Revision: 6179 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6179&view=rev Author: jouni Date: 2008-10-11 13:48:18 +0000 (Sat, 11 Oct 2008) Log Message: ----------- When outputting a pdf file on a file object, flush the file at the end Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-10-10 19:43:34 UTC (rev 6178) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-10-11 13:48:18 UTC (rev 6179) @@ -446,7 +446,9 @@ self.writeMarkers() self.writeXref() self.writeTrailer() - if not self.passed_in_file_object: + if self.passed_in_file_object: + self.fh.flush() + else: self.fh.close() def write(self, data): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <md...@us...> - 2008-10-22 17:51:45
|
Revision: 6296 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6296&view=rev Author: mdboom Date: 2008-10-22 17:51:36 +0000 (Wed, 22 Oct 2008) Log Message: ----------- Fix text alignment in PDF backend. (At suggestion of Stan West). Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-10-22 17:29:41 UTC (rev 6295) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-10-22 17:51:36 UTC (rev 6296) @@ -1268,14 +1268,15 @@ lastx, lasty = x, y output(Op.grestore) - def _setup_textpos(self, x, y, angle, oldx=0, oldy=0, oldangle=0): + def _setup_textpos(self, x, y, descent, angle, oldx=0, oldy=0, olddescent=0, oldangle=0): if angle == oldangle == 0: - self.file.output(x - oldx, y - oldy, Op.textpos) + self.file.output(x - oldx, (y + descent) - (oldy + olddescent), Op.textpos) else: angle = angle / 180.0 * pi self.file.output( cos(angle), sin(angle), -sin(angle), cos(angle), x, y, Op.textmatrix) + self.file.output(0, descent, Op.textpos) def draw_mathtext(self, gc, x, y, s, prop, angle): # TODO: fix positioning and encoding @@ -1305,7 +1306,7 @@ fonttype = global_fonttype if fonttype == 42 or num <= 255: - self._setup_textpos(ox, oy, 0, oldx, oldy) + self._setup_textpos(ox, oy, 0, 0, oldx, oldy) oldx, oldy = ox, oy if (fontname, fontsize) != prev_font: fontsize *= self.dpi/72.0 @@ -1398,7 +1399,7 @@ self.file.output(elt[1], elt[2], Op.selectfont) elif elt[0] == 'text': curx, cury = mytrans.transform((elt[1], elt[2])) - self._setup_textpos(curx, cury, angle, oldx, oldy) + self._setup_textpos(curx, cury, 0, angle, oldx, oldy) oldx, oldy = curx, cury if len(elt[3]) == 1: self.file.output(elt[3][0], Op.show) @@ -1447,13 +1448,13 @@ if rcParams['pdf.use14corefonts']: font = self._get_font_afm(prop) l, b, w, h = font.get_str_bbox(s) - y -= b * fontsize / 1000 + descent = -b * fontsize / 1000 fonttype = 42 else: font = self._get_font_ttf(prop) self.track_characters(font, s) font.set_text(s, 0.0, flags=LOAD_NO_HINTING) - y += font.get_descent() / 64.0 + descent = font.get_descent() / 64.0 fonttype = rcParams['pdf.fonttype'] @@ -1493,7 +1494,7 @@ self.file.fontName(prop), fontsize, Op.selectfont) - self._setup_textpos(x, y, angle) + self._setup_textpos(x, y, descent, angle) self.file.output(self.encode_string(s, fonttype), Op.show, Op.end_text) def draw_text_woven(chunks): @@ -1514,6 +1515,7 @@ # output all the 2-byte characters. for mode in (1, 2): newx = oldx = 0 + olddescent = 0 # Output a 1-byte character chunk if mode == 1: self.file.output(Op.begin_text, @@ -1523,9 +1525,10 @@ for chunk_type, chunk in chunks: if mode == 1 and chunk_type == 1: - self._setup_textpos(newx, 0, 0, oldx, 0, 0) + self._setup_textpos(newx, 0, descent, 0, oldx, 0, olddescent, 0) self.file.output(self.encode_string(chunk, fonttype), Op.show) oldx = newx + olddescent = descent lastgind = None for c in chunk: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <md...@us...> - 2008-10-29 18:26:43
|
Revision: 6349 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6349&view=rev Author: mdboom Date: 2008-10-29 18:26:34 +0000 (Wed, 29 Oct 2008) Log Message: ----------- PDF speed optimization. Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-10-29 17:16:02 UTC (rev 6348) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-10-29 18:26:34 UTC (rev 6349) @@ -112,7 +112,7 @@ result.append(' '.join(strings[lasti:])) return '\n'.join(result) - +_string_escape_regex = re.compile(r'([\\()])') def pdfRepr(obj): """Map Python objects to PDF syntax.""" @@ -138,7 +138,7 @@ # simpler to escape them all. TODO: cut long strings into lines; # I believe there is some maximum line length in PDF. elif is_string_like(obj): - return '(' + re.sub(r'([\\()])', r'\\\1', obj) + ')' + return '(' + _string_escape_regex.sub(r'\\\1', obj) + ')' # Dictionaries. The keys must be PDF names, so if we find strings # there, we make Name objects from them. The values may be @@ -207,12 +207,13 @@ class Name: """PDF name object.""" + _regex = re.compile(r'[^!-~]') def __init__(self, name): if isinstance(name, Name): self.name = name.name else: - self.name = re.sub(r'[^!-~]', Name.hexify, name) + self.name = self._regex.sub(Name.hexify, name) def __repr__(self): return "<Name %s>" % self.name This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lee...@us...> - 2008-11-21 16:52:29
|
Revision: 6430 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6430&view=rev Author: leejjoon Date: 2008-11-21 16:52:25 +0000 (Fri, 21 Nov 2008) Log Message: ----------- fixed a bug the get_text_width_height_descent() method of the pdf backend not returning the correct text height. Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-11-21 11:28:32 UTC (rev 6429) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-11-21 16:52:25 UTC (rev 6430) @@ -1577,7 +1577,8 @@ dvi = dviread.Dvi(dvifile, self.dpi) page = iter(dvi).next() dvi.close() - return page.width, page.height, page.descent + # A total height (including the descent) needs to be returned. + return page.width, page.height+page.descent, page.descent if ismath: w, h, d, glyphs, rects, used_characters = \ self.mathtext_parser.parse(s, self.dpi, prop) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jo...@us...> - 2008-12-29 13:58:28
|
Revision: 6707 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6707&view=rev Author: jouni Date: 2008-12-29 13:58:18 +0000 (Mon, 29 Dec 2008) Log Message: ----------- Fix bug in earlier bugfix Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-12-29 13:48:51 UTC (rev 6706) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-12-29 13:58:18 UTC (rev 6707) @@ -528,7 +528,8 @@ # TODO: font effects such as SlantFont matplotlib.verbose.report( 'Embedding Type 1 font ' + fontinfo.fontfile + - ' with encoding ' + fontinfo.encodingfile, 'debug') + ' with encoding ' + (fontinfo.encodingfile or '(none)'), + 'debug') # Use FT2Font to get several font properties font = FT2Font(fontinfo.fontfile) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jo...@us...> - 2008-12-31 19:42:48
|
Revision: 6727 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6727&view=rev Author: jouni Date: 2008-12-31 19:42:44 +0000 (Wed, 31 Dec 2008) Log Message: ----------- Modernize a little since we can assume Python 2.4 Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-12-31 19:01:41 UTC (rev 6726) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-12-31 19:42:44 UTC (rev 6727) @@ -185,7 +185,7 @@ "Don't know a PDF representation for %s objects." \ % type(obj) -class Reference: +class Reference(object): """PDF reference object. Use PdfFile.reserveObject() to create References. """ @@ -205,8 +205,9 @@ write(pdfRepr(contents)) write("\nendobj\n") -class Name: +class Name(object): """PDF name object.""" + __slots__ = ('name',) _regex = re.compile(r'[^!-~]') def __init__(self, name): @@ -218,15 +219,16 @@ def __repr__(self): return "<Name %s>" % self.name + @staticmethod def hexify(match): return '#%02x' % ord(match.group()) - hexify = staticmethod(hexify) def pdfRepr(self): return '/' + self.name -class Operator: +class Operator(object): """PDF operator object.""" + __slots__ = ('op',) def __init__(self, op): self.op = op @@ -257,12 +259,13 @@ Op = Bunch(**dict([(name, Operator(value)) for name, value in _pdfops.items()])) -class Stream: +class Stream(object): """PDF stream object. This has no pdfRepr method. Instead, call begin(), then output the contents of the stream by calling write(), and finally call end(). """ + __slots__ = ('id', 'len', 'pdfFile', 'file', 'compressobj', 'extra', 'pos') def __init__(self, id, len, file, extra=None): """id: object id of stream; len: an unused Reference object for the @@ -1107,7 +1110,7 @@ self.output(Op.stroke) self.endStream() - #@staticmethod + @staticmethod def pathOperations(path, transform, simplify=None): tpath = transform.transform_path(path) @@ -1131,7 +1134,6 @@ cmds.append(Op.closepath) last_points = points return cmds - pathOperations = staticmethod(pathOperations) def writePath(self, path, transform): cmds = self.pathOperations( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jo...@us...> - 2008-12-31 19:57:00
|
Revision: 6728 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6728&view=rev Author: jouni Date: 2008-12-31 19:56:55 +0000 (Wed, 31 Dec 2008) Log Message: ----------- Don't crash with Microsoft fonts such as Tahoma Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-12-31 19:42:44 UTC (rev 6727) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2008-12-31 19:56:55 UTC (rev 6728) @@ -333,7 +333,7 @@ self.file.write(compressed) self.compressobj = None -class PdfFile: +class PdfFile(object): """PDF file with one page.""" def __init__(self, width, height, dpi, filename): @@ -900,7 +900,14 @@ # Beginning of main embedTTF function... # You are lost in a maze of TrueType tables, all different... - ps_name = Name(font.get_sfnt()[(1,0,0,6)]) + sfnt = font.get_sfnt() + try: + ps_name = sfnt[(1,0,0,6)] # Macintosh scheme + except KeyError: + # Microsoft scheme: + ps_name = sfnt[(3,1,0x0409,6)].decode('utf-16be').encode('ascii','replace') + # (see freetype/ttnameid.h) + ps_name = Name(ps_name) pclt = font.get_sfnt_table('pclt') \ or { 'capHeight': 0, 'xHeight': 0 } post = font.get_sfnt_table('post') \ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <md...@us...> - 2009-01-05 14:47:13
|
Revision: 6736 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6736&view=rev Author: mdboom Date: 2009-01-05 14:47:08 +0000 (Mon, 05 Jan 2009) Log Message: ----------- Fix crash rendering verbose message Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-01-05 14:46:33 UTC (rev 6735) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-01-05 14:47:08 UTC (rev 6736) @@ -545,7 +545,7 @@ def embedType1(self, texname, fontinfo): matplotlib.verbose.report( 'Embedding ' + texname + - ' which is the Type 1 font ' + fontinfo.fontfile + + ' which is the Type 1 font ' + (fontinfo.fontfile or '(none)') + ' with encoding ' + (fontinfo.encodingfile or '(none)') + ' and effects ' + `fontinfo.effects`, 'debug') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jo...@us...> - 2009-01-05 18:11:55
|
Revision: 6738 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=6738&view=rev Author: jouni Date: 2009-01-05 18:11:47 +0000 (Mon, 05 Jan 2009) Log Message: ----------- Remove extra line from backend_pdf.draw_tex Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-01-05 17:48:01 UTC (rev 6737) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-01-05 18:11:47 UTC (rev 6738) @@ -1396,7 +1396,6 @@ pdfname = self.file.fontName(dvifont.texname) if not self.file.dviFontInfo.has_key(dvifont.texname): psfont = self.tex_font_mapping(dvifont.texname) - fontfile = psfont.filename self.file.dviFontInfo[dvifont.texname] = Bunch( fontfile=psfont.filename, basefont=psfont.psname, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jo...@us...> - 2009-09-01 05:24:46
|
Revision: 7622 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7622&view=rev Author: jouni Date: 2009-09-01 05:24:38 +0000 (Tue, 01 Sep 2009) Log Message: ----------- Small fix to Gouraud triangles in pdf Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-08-31 20:10:35 UTC (rev 7621) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-09-01 05:24:38 UTC (rev 7622) @@ -141,6 +141,11 @@ r = "%.10f" % obj return r.rstrip('0').rstrip('.') + # Booleans. Needs to be tested before integers since + # isinstance(True, int) is true. + elif isinstance(obj, bool): + return ['false', 'true'][obj] + # Integers are written as such. elif isinstance(obj, (int, long)): return "%d" % obj @@ -170,10 +175,6 @@ r.append("]") return fill(r) - # Booleans. - elif isinstance(obj, bool): - return ['false', 'true'][obj] - # The null keyword. elif obj is None: return 'null' @@ -1080,7 +1081,7 @@ 'BitsPerComponent': 8, 'BitsPerFlag': 8, 'ColorSpace': Name('DeviceRGB'), - 'AntiAlias': 1, + 'AntiAlias': True, 'Decode': [points_min[0], points_max[0], points_min[1], points_max[1], 0, 1, 0, 1, 0, 1] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <md...@us...> - 2009-09-01 13:03:27
|
Revision: 7624 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7624&view=rev Author: mdboom Date: 2009-09-01 13:03:20 +0000 (Tue, 01 Sep 2009) Log Message: ----------- Use numpy to generate the PDF shading triangles stream, which should be faster and more portable than using struct. Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-09-01 12:13:12 UTC (rev 7623) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-09-01 13:03:20 UTC (rev 7624) @@ -17,7 +17,6 @@ from cStringIO import StringIO from datetime import datetime from math import ceil, cos, floor, pi, sin -import struct try: set except NameError: @@ -1068,11 +1067,10 @@ gouraudDict[name] = ob shape = points.shape flat_points = points.reshape((shape[0] * shape[1], 2)) + flat_colors = colors.reshape((shape[0] * shape[1], 4)) points_min = npy.min(flat_points, axis=0) - (1 << 8) points_max = npy.max(flat_points, axis=0) + (1 << 8) factor = float(0xffffffff) / (points_max - points_min) - adjpoints = npy.array((points - points_min) * factor, dtype=npy.uint32) - adjcolors = npy.array(colors * 255.0, dtype=npy.uint8) self.beginStream( ob.id, None, @@ -1087,10 +1085,16 @@ 0, 1, 0, 1, 0, 1] }) - for tpoints, tcolors in zip(adjpoints, adjcolors): - for p, c in zip(tpoints, tcolors): - values = [int(x) for x in [0] + list(p) + list(c[:3])] - self.write(struct.pack('>BLLBBB', *values)) + streamarr = npy.empty( + (shape[0] * shape[1],), + dtype=[('flags', 'u1'), + ('points', '>u4', (2,)), + ('colors', 'u1', (3,))]) + streamarr['flags'] = 0 + streamarr['points'] = (flat_points - points_min) * factor + streamarr['colors'] = flat_colors[:, :3] * 255.0 + + self.write(streamarr.tostring()) self.endStream() self.writeObject(self.gouraudObject, gouraudDict) @@ -1375,11 +1379,20 @@ colors.reshape((1, 3, 4)), trans) def draw_gouraud_triangles(self, gc, points, colors, trans): + assert len(points) == len(colors) + assert points.ndim == 3 + assert points.shape[1] == 3 + assert points.shape[2] == 2 + assert colors.ndim == 3 + assert colors.shape[1] == 3 + assert colors.shape[2] == 4 + shape = points.shape points = points.reshape((shape[0] * shape[1], 2)) tpoints = trans.transform(points) tpoints = tpoints.reshape(shape) name = self.file.addGouraudTriangles(tpoints, colors) + self.check_gc(gc) self.file.output(name, Op.shading) def _setup_textpos(self, x, y, descent, angle, oldx=0, oldy=0, olddescent=0, oldangle=0): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <md...@us...> - 2009-10-12 13:43:54
|
Revision: 7877 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7877&view=rev Author: mdboom Date: 2009-10-12 13:43:48 +0000 (Mon, 12 Oct 2009) Log Message: ----------- Remove conflict markers accidentally committed in last commit. Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-10-12 13:39:14 UTC (rev 7876) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-10-12 13:43:48 UTC (rev 7877) @@ -1344,13 +1344,9 @@ def draw_path(self, gc, path, transform, rgbFace=None): self.check_gc(gc, rgbFace) -<<<<<<< .working - self.file.writePath(path, transform, (rgbFace is None and gc.get_hatch_path() is None)) -======= self.file.writePath( path, transform, rgbFace is None and gc.get_hatch_path() is None) ->>>>>>> .merge-right.r7874 self.file.output(self.gc.paint()) def draw_markers(self, gc, marker_path, marker_trans, path, trans, rgbFace=None): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <jo...@us...> - 2009-10-21 18:41:48
|
Revision: 7899 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7899&view=rev Author: jouni Date: 2009-10-21 18:41:35 +0000 (Wed, 21 Oct 2009) Log Message: ----------- Raise an error in the pdf backend instead of outputting an invalid path if a Path object lacks initial moveto Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-10-21 18:09:45 UTC (rev 7898) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-10-21 18:41:35 UTC (rev 7899) @@ -1206,8 +1206,12 @@ last_points = None for points, code in path.iter_segments(transform, clip=clip): if code == Path.MOVETO: + # This is allowed anywhere in the path cmds.extend(points) cmds.append(Op.moveto) + elif last_points is None: + # The other operations require a previous point + raise ValueError, 'Path lacks initial MOVETO' elif code == Path.LINETO: cmds.extend(points) cmds.append(Op.lineto) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <as...@us...> - 2009-11-23 03:38:21
|
Revision: 7979 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7979&view=rev Author: astraw Date: 2009-11-23 03:38:11 +0000 (Mon, 23 Nov 2009) Log Message: ----------- bugfix: don't crash PDF backend when not using SVN checkout Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-11-21 00:30:37 UTC (rev 7978) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2009-11-23 03:38:11 UTC (rev 7979) @@ -398,10 +398,14 @@ 'Pages': self.pagesObject } self.writeObject(self.rootObject, root) - revision = '$Rev$'.strip('$').split(':')[1].strip() + svn_special_string = '$Rev$' # on checkout, gets replaced by svn client + if ':' in svn_special_string: + revision = ' r'+svn_special_string.strip('$').split(':')[1].strip() + else: + revision = '' self.infoDict = { 'Creator': 'matplotlib %s, http://matplotlib.sf.net' % __version__, - 'Producer': 'matplotlib pdf backend r%s' % revision, + 'Producer': 'matplotlib pdf backend%s' % revision, 'CreationDate': datetime.today() } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <lee...@us...> - 2010-12-29 08:29:18
|
Revision: 8851 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=8851&view=rev Author: leejjoon Date: 2010-12-29 08:29:11 +0000 (Wed, 29 Dec 2010) Log Message: ----------- pdf backend support affine-transformed image Modified Paths: -------------- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py Modified: trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py =================================================================== --- trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2010-12-29 05:21:56 UTC (rev 8850) +++ trunk/matplotlib/lib/matplotlib/backends/backend_pdf.py 2010-12-29 08:29:11 UTC (rev 8851) @@ -1386,15 +1386,42 @@ def get_image_magnification(self): return self.image_dpi/72.0 - def draw_image(self, gc, x, y, im): + def option_scale_image(self): + """ + pdf backend support arbitrary scaling of image. + """ + return True + + def draw_image(self, gc, x, y, im, dx=None, dy=None, transform=None): self.check_gc(gc) h, w = im.get_size_out() - h, w = 72.0*h/self.image_dpi, 72.0*w/self.image_dpi + + if dx is None: + w = 72.0*w/self.image_dpi + else: + w = dx + + if dy is None: + h = 72.0*h/self.image_dpi + else: + h = dy + imob = self.file.imageObject(im) - self.file.output(Op.gsave, w, 0, 0, h, x, y, Op.concat_matrix, - imob, Op.use_xobject, Op.grestore) + if transform is None: + self.file.output(Op.gsave, + w, 0, 0, h, x, y, Op.concat_matrix, + imob, Op.use_xobject, Op.grestore) + else: + tr1, tr2, tr3, tr4, tr5, tr6 = transform.to_values() + + self.file.output(Op.gsave, + tr1, tr2, tr3, tr4, tr5, tr6, Op.concat_matrix, + w, 0, 0, h, x, y, Op.concat_matrix, + imob, Op.use_xobject, Op.grestore) + + def draw_path(self, gc, path, transform, rgbFace=None): self.check_gc(gc, rgbFace) self.file.writePath( This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |