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

Reply via email to