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.
-------------------------------------------------------------------------
SF.Net email is sponsored by: The Future of Linux Business White Paper
from Novell. From the desktop to the data center, Linux is going
mainstream. Let it simplify your IT future.
http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins