From: <md...@us...> - 2007-12-05 18:56:25
|
Revision: 4625 http://matplotlib.svn.sourceforge.net/matplotlib/?rev=4625&view=rev Author: mdboom Date: 2007-12-05 10:56:18 -0800 (Wed, 05 Dec 2007) Log Message: ----------- Make things more robust to changes in dpi. Modified Paths: -------------- branches/transforms/lib/matplotlib/axis.py branches/transforms/lib/matplotlib/backends/backend_agg.py branches/transforms/lib/matplotlib/backends/backend_cairo.py branches/transforms/lib/matplotlib/text.py Modified: branches/transforms/lib/matplotlib/axis.py =================================================================== --- branches/transforms/lib/matplotlib/axis.py 2007-12-05 18:14:38 UTC (rev 4624) +++ branches/transforms/lib/matplotlib/axis.py 2007-12-05 18:56:18 UTC (rev 4625) @@ -86,8 +86,6 @@ self._loc = loc self._size = size - self._padPixels = self.figure.dpi * self._pad * (1/72.0) - self.tick1line = self._get_tick1line() self.tick2line = self._get_tick2line() self.gridline = self._get_gridline() @@ -115,6 +113,9 @@ self.gridline.set_clip_path(clippath, transform) set_clip_path.__doc__ = Artist.set_clip_path.__doc__ + def get_pad_pixels(self): + return self.figure.dpi * self._pad / 72.0 + def contains(self, mouseevent): """Test whether the mouse event occured in the Tick marks. @@ -222,7 +223,7 @@ # get the affine as an a,b,c,d,tx,ty list # x in data coords, y in axes coords #t = Text( - trans, vert, horiz = self.axes.get_xaxis_text1_transform(self._padPixels) + trans, vert, horiz = self.axes.get_xaxis_text1_transform(self.get_pad_pixels()) t = TextWithDash( x=0, y=0, @@ -244,7 +245,7 @@ 'Get the default Text 2 instance' # x in data coords, y in axes coords #t = Text( - trans, vert, horiz = self.axes.get_xaxis_text2_transform(self._padPixels) + trans, vert, horiz = self.axes.get_xaxis_text2_transform(self.get_pad_pixels()) t = TextWithDash( x=0, y=1, @@ -341,7 +342,7 @@ 'Get the default Text instance' # x in axes coords, y in data coords #t = Text( - trans, vert, horiz = self.axes.get_yaxis_text1_transform(self._padPixels) + trans, vert, horiz = self.axes.get_yaxis_text1_transform(self.get_pad_pixels()) t = TextWithDash( x=0, y=0, @@ -361,7 +362,7 @@ 'Get the default Text instance' # x in axes coords, y in data coords #t = Text( - trans, vert, horiz = self.axes.get_yaxis_text2_transform(self._padPixels) + trans, vert, horiz = self.axes.get_yaxis_text2_transform(self.get_pad_pixels()) t = TextWithDash( x=1, y=0, @@ -1173,7 +1174,7 @@ """ bbox, bbox2 = self.get_ticklabel_extents(renderer) # MGDTODO: Need a better way to get the pad - padPixels = self.majorTicks[0]._padPixels + padPixels = self.majorTicks[0].get_pad_pixels() above = 0.0 if bbox2.height: @@ -1409,7 +1410,7 @@ def get_text_widths(self, renderer): bbox, bbox2 = self.get_ticklabel_extents(renderer) # MGDTODO: Need a better way to get the pad - padPixels = self.majorTicks[0]._padPixels + padPixels = self.majorTicks[0].get_pad_pixels() left = 0.0 if bbox.width: Modified: branches/transforms/lib/matplotlib/backends/backend_agg.py =================================================================== --- branches/transforms/lib/matplotlib/backends/backend_agg.py 2007-12-05 18:14:38 UTC (rev 4624) +++ branches/transforms/lib/matplotlib/backends/backend_agg.py 2007-12-05 18:56:18 UTC (rev 4625) @@ -146,10 +146,9 @@ def draw_tex(self, gc, x, y, s, prop, angle): # todo, handle props, angle, origins size = prop.get_size_in_points() - dpi = self.dpi texmanager = self.get_texmanager() - key = s, size, dpi, angle, texmanager.get_font_config() + key = s, size, self.dpi, angle, texmanager.get_font_config() im = self.texd.get(key) if im is None: Z = texmanager.get_grey(s, size, dpi) @@ -285,10 +284,16 @@ def print_raw(self, filename, *args, **kwargs): FigureCanvasAgg.draw(self) - self.get_renderer()._renderer.write_rgba(str(filename)) + original_dpi = renderer.dpi + renderer.dpi = self.figure.dpi + renderer._renderer.write_rgba(str(filename)) + renderer.dpi = original_dpi print_rgba = print_raw def print_png(self, filename, *args, **kwargs): FigureCanvasAgg.draw(self) - self.get_renderer()._renderer.write_png(filename, self.figure.dpi) - + renderer = self.get_renderer() + original_dpi = renderer.dpi + renderer.dpi = self.figure.dpi + renderer._renderer.write_png(filename, self.figure.dpi) + renderer.dpi = original_dpi Modified: branches/transforms/lib/matplotlib/backends/backend_cairo.py =================================================================== --- branches/transforms/lib/matplotlib/backends/backend_cairo.py 2007-12-05 18:14:38 UTC (rev 4624) +++ branches/transforms/lib/matplotlib/backends/backend_cairo.py 2007-12-05 18:56:18 UTC (rev 4625) @@ -182,7 +182,6 @@ self.fontangles [prop.get_style()], self.fontweights[prop.get_weight()]) - # size = prop.get_size_in_points() * self.dpi.get() / 96.0 size = prop.get_size_in_points() * self.dpi / 72.0 ctx.save() @@ -214,7 +213,6 @@ self.fontangles [fontProp.style], self.fontweights[fontProp.weight]) - # size = prop.get_size_in_points() * self.dpi.get() / 96.0 size = fontsize * self.dpi / 72.0 ctx.set_font_size(size) ctx.show_text(s.encode("utf-8")) @@ -257,7 +255,6 @@ # Cairo (says it) uses 1/96 inch user space units, ref: cairo_gstate.c # but if /96.0 is used the font is too small - #size = prop.get_size_in_points() * self.dpi.get() / 96.0 size = prop.get_size_in_points() * self.dpi / 72.0 # problem - scale remembers last setting and font can become Modified: branches/transforms/lib/matplotlib/text.py =================================================================== --- branches/transforms/lib/matplotlib/text.py 2007-12-05 18:14:38 UTC (rev 4624) +++ branches/transforms/lib/matplotlib/text.py 2007-12-05 18:56:18 UTC (rev 4625) @@ -384,7 +384,8 @@ x, y = self.get_position() return (x, y, self._text, self._color, self._verticalalignment, self._horizontalalignment, - hash(self._fontproperties), self._rotation + hash(self._fontproperties), self._rotation, + self._renderer.dpi ) def get_text(self): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |