Revision: 3826
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=3826&view=rev
Author:   mdboom
Date:     2007-09-10 12:25:21 -0700 (Mon, 10 Sep 2007)

Log Message:
-----------
Running mathtext_demo.py without transforms.py/cpp.  Totally broken,
though.  Not surprising... ;)

Modified Paths:
--------------
    branches/transforms/lib/matplotlib/affine.py
    branches/transforms/lib/matplotlib/axes.py
    branches/transforms/lib/matplotlib/axis.py
    branches/transforms/lib/matplotlib/backend_bases.py
    branches/transforms/lib/matplotlib/backends/backend_agg.py
    branches/transforms/lib/matplotlib/bbox.py
    branches/transforms/lib/matplotlib/figure.py
    branches/transforms/lib/matplotlib/finance.py
    branches/transforms/lib/matplotlib/legend.py
    branches/transforms/lib/matplotlib/lines.py
    branches/transforms/lib/matplotlib/patches.py
    branches/transforms/lib/matplotlib/text.py
    branches/transforms/lib/matplotlib/ticker.py
    branches/transforms/src/_backend_agg.cpp

Modified: branches/transforms/lib/matplotlib/affine.py
===================================================================
--- branches/transforms/lib/matplotlib/affine.py        2007-09-10 18:45:32 UTC 
(rev 3825)
+++ branches/transforms/lib/matplotlib/affine.py        2007-09-10 19:25:21 UTC 
(rev 3826)
@@ -67,7 +67,10 @@
     def from_values(a, b, c, d, e, f):
         return Affine2D(Affine2D.matrix_from_values(a, b, c, d, e, f))
     from_values = staticmethod(from_values)
-        
+
+    def to_values(self):
+       return tuple(self.mtx[:2].swapaxes(0, 1).flatten())
+    
     [EMAIL PROTECTED]
     def matrix_from_values(a, b, c, d, e, f):
        affine = N.zeros((3,3), N.float_)
@@ -92,11 +95,12 @@
 
        # This is nicer for now, however, since we can just keep a
        # regular affine matrix around
+       # MGDTODO: Trap cases where this isn't an array and fix there
+       points = N.array(points, N.float_)
        new_points = points.swapaxes(0, 1)
        new_points = N.vstack((new_points, N.ones((1, points.shape[0]))))
        result = N.dot(self.mtx, new_points)[:2]
-       result.swapaxes(0, 1)
-       return result
+       return result.swapaxes(0, 1)
     
     [EMAIL PROTECTED]
     def _concat(a, b):
@@ -198,10 +202,14 @@
     print transform.inverted()
 
     from bbox import Bbox
+    print "BBOX"
     boxin = Bbox([[10, 10], [320, 240]])
     boxout = Bbox([[25, 25], [640, 400]])
-    trans = bbox_transform(boxin, boxout)
+    print boxin._points, boxin.xmin(), boxin.ymin(), boxin.xmax(), boxin.ymax()
+    print boxout._points, boxout.xmin(), boxout.ymin(), boxout.xmax(), 
boxout.ymax()
+    trans = get_bbox_transform(boxin, boxout)
     print trans
     print trans(N.array([[10, 10], [320, 240]]))
+    print trans([[10, 10]])
     
 __all__ = ['Transform', 'Affine2D']

Modified: branches/transforms/lib/matplotlib/axes.py
===================================================================
--- branches/transforms/lib/matplotlib/axes.py  2007-09-10 18:45:32 UTC (rev 
3825)
+++ branches/transforms/lib/matplotlib/axes.py  2007-09-10 19:25:21 UTC (rev 
3826)
@@ -618,10 +618,10 @@
         martist.Artist.set_figure(self, fig)
 
         l, b, w, h = self._position
-        xmin = fig.bbox.ll().x()
-        xmax = fig.bbox.ur().x()
-        ymin = fig.bbox.ll().y()
-        ymax = fig.bbox.ur().y()
+        xmin = fig.bbox.xmin()
+        xmax = fig.bbox.xmax()
+        ymin = fig.bbox.ymin()
+        ymax = fig.bbox.ymax()
         figw = xmax-xmin
         figh = ymax-ymin
         self.left   =  l*figw
@@ -695,9 +695,11 @@
         ACCEPTS: len(4) sequence of floats
         """
         if which in ('both', 'active'):
-            # Change values within self._position--don't replace it.
-            for num,val in zip(pos, self._position):
-                val.set(num)
+           # MGDTODO
+#             # Change values within self._position--don't replace it.
+#             for num,val in zip(pos, self._position):
+#                 val.set(num)
+           self._position = pos
         if which in ('both', 'original'):
             self._originalPosition = pos
 
@@ -714,7 +716,8 @@
         self.xaxis.cla()
         self.yaxis.cla()
 
-        self.dataLim.ignore(1)
+       # MGDTODO
+        # self.dataLim.ignore(1)
         self.callbacks = cbook.CallbackRegistry(('xlim_changed', 
'ylim_changed'))
 
         if self._sharex is not None:
@@ -1176,7 +1179,9 @@
         # Otherwise, it will compute the bounds of it's current data
         # and the data in xydata
         #print type(x), type(y)
-        self.dataLim.update_numerix(x, y, -1)
+       # MGDTODO
+        ## self.dataLim.update_numerix(x, y, -1)
+       pass
 
     def _get_verts_in_data_coords(self, trans, xys):
         if trans == self.transData:
@@ -1273,8 +1278,9 @@
         if not self.get_visible(): return
         renderer.open_group('axes')
         self.apply_aspect()
-        self.transData.freeze()  # eval the lazy objects
-        self.transAxes.freeze()
+       # MGDTODO
+        # self.transData.freeze()  # eval the lazy objects
+        # self.transAxes.freeze()
         if self.axison and self._frameon: self.axesPatch.draw(renderer)
         artists = []
 
@@ -1330,8 +1336,9 @@
         for zorder, i, a in dsu:
             a.draw(renderer)
 
-        self.transData.thaw()  # release the lazy objects
-        self.transAxes.thaw()  # release the lazy objects
+       # MGDTODO
+       # self.transData.thaw()  # release the lazy objects
+        # self.transAxes.thaw()  # release the lazy objects
         renderer.close_group('axes')
         self._cachedRenderer = renderer
 

Modified: branches/transforms/lib/matplotlib/axis.py
===================================================================
--- branches/transforms/lib/matplotlib/axis.py  2007-09-10 18:45:32 UTC (rev 
3825)
+++ branches/transforms/lib/matplotlib/axis.py  2007-09-10 19:25:21 UTC (rev 
3826)
@@ -261,7 +261,7 @@
             horizontalalignment='center',
             )
 
-       trans = blend_xy_sep_transformation(
+       trans = blend_xy_sep_transform(
            self.axes.transData, self.axes.transAxes)
         # offset the text upward with a post transformation
         trans = trans + Affine2D().translated(0, self._padPixels)
@@ -1037,7 +1037,8 @@
                 bbox = bbox_union(bboxes)
                 bottom = bbox.ymin()
 
-            self.label.set_position( (x, 
bottom-self.LABELPAD*self.figure.dpi.get()/72.0))
+            self.label.set_position( (x, 
bottom-self.LABELPAD*self.figure.dpi/72.0))
+#             self.label.set_position( (x, 
bottom-self.LABELPAD*self.figure.dpi.get()/72.0)) MGDTODO
 
         else:
             if not len(bboxes2):
@@ -1060,8 +1061,9 @@
         else:
             bbox = bbox_union(bboxes)
             bottom = bbox.ymin()
-        self.offsetText.set_position((x, 
bottom-self.OFFSETTEXTPAD*self.figure.dpi.get()/72.0))
-
+        self.offsetText.set_position((x, 
bottom-self.OFFSETTEXTPAD*self.figure.dpi/72.0))
+#         self.offsetText.set_position((x, 
bottom-self.OFFSETTEXTPAD*self.figure.dpi.get()/72.0)) MGDTODO
+       
     def set_ticks_position(self, position):
         """
         Set the ticks position (top, bottom, both or default)
@@ -1227,8 +1229,9 @@
                 bbox = bbox_union(bboxes)
                 left = bbox.xmin()
 
-            self.label.set_position( 
(left-self.LABELPAD*self.figure.dpi.get()/72.0, y))
-
+            self.label.set_position( (left-self.LABELPAD*self.figure.dpi/72.0, 
y))
+           #             self.label.set_position( 
(left-self.LABELPAD*self.figure.dpi.get()/72.0, y)) MGDTODO
+           
         else:
             if not len(bboxes2):
                 right = self.axes.bbox.xmax()
@@ -1246,8 +1249,9 @@
         """
         x,y = self.offsetText.get_position()
         top = self.axes.bbox.ymax()
-        self.offsetText.set_position((x, 
top+self.OFFSETTEXTPAD*self.figure.dpi.get()/72.0))
-
+        self.offsetText.set_position((x, 
top+self.OFFSETTEXTPAD*self.figure.dpi/72.0))
+#         self.offsetText.set_position((x, 
top+self.OFFSETTEXTPAD*self.figure.dpi.get()/72.0)) MGDTODO
+       
     def set_offset_position(self, position):
         assert position == 'left' or position == 'right'
 

Modified: branches/transforms/lib/matplotlib/backend_bases.py
===================================================================
--- branches/transforms/lib/matplotlib/backend_bases.py 2007-09-10 18:45:32 UTC 
(rev 3825)
+++ branches/transforms/lib/matplotlib/backend_bases.py 2007-09-10 19:25:21 UTC 
(rev 3826)
@@ -1178,11 +1178,13 @@
         if dpi is None:
             dpi = rcParams['savefig.dpi']
             
-        origDPI = self.figure.dpi.get()
+        origDPI = self.figure.dpi
         origfacecolor = self.figure.get_facecolor()
         origedgecolor = self.figure.get_edgecolor()
 
-        self.figure.dpi.set(dpi)
+       # MGDTODO
+        # self.figure.dpi.set(dpi)
+        self.figure.dpi = dpi
         self.figure.set_facecolor(facecolor)
         self.figure.set_edgecolor(edgecolor)
 
@@ -1195,7 +1197,9 @@
                 orientation=orientation,
                 **kwargs)
         finally:
-            self.figure.dpi.set(origDPI)
+           # MGDTODO
+            # self.figure.dpi.set(origDPI)
+            self.figure.dpi = origDPI
             self.figure.set_facecolor(origfacecolor)
             self.figure.set_edgecolor(origedgecolor)
             self.figure.set_canvas(self)

Modified: branches/transforms/lib/matplotlib/backends/backend_agg.py
===================================================================
--- branches/transforms/lib/matplotlib/backends/backend_agg.py  2007-09-10 
18:45:32 UTC (rev 3825)
+++ branches/transforms/lib/matplotlib/backends/backend_agg.py  2007-09-10 
19:25:21 UTC (rev 3826)
@@ -106,14 +106,17 @@
         self.height = height
         if __debug__: verbose.report('RendererAgg.__init__ width=%s, \
                         height=%s'%(width, height), 'debug-annoying')
-        self._renderer = _RendererAgg(int(width), int(height), dpi.get(),
-                                    debug=False)
+       # MGDTODO
+#         self._renderer = _RendererAgg(int(width), int(height), dpi.get(),
+#                                    debug=False)
+        self._renderer = _RendererAgg(int(width), int(height), dpi,
+                                     debug=False)
         if __debug__: verbose.report('RendererAgg.__init__ _RendererAgg done',
                                      'debug-annoying')
         self.draw_polygon = self._renderer.draw_polygon
         self.draw_rectangle = self._renderer.draw_rectangle
         self.draw_path = self._renderer.draw_path
-        self.draw_lines = self._renderer.draw_lines
+        # self.draw_lines = self._renderer.draw_lines
         self.draw_markers = self._renderer.draw_markers
         self.draw_image = self._renderer.draw_image
         self.draw_line_collection = self._renderer.draw_line_collection
@@ -156,6 +159,9 @@
         y = npy.array([y1,y2], float)
         self._renderer.draw_lines(gc, x, y)
 
+    def draw_lines(self, gc, x, y, transform):
+       return self._renderer.draw_lines(gc, x, y, transform.to_values())
+       
 
     def draw_point(self, gc, x, y):
         """
@@ -173,7 +179,9 @@
         if __debug__: verbose.report('RendererAgg.draw_mathtext',
                                      'debug-annoying')
         ox, oy, width, height, descent, font_image, used_characters = \
-            self.mathtext_parser.parse(s, self.dpi.get(), prop)
+            self.mathtext_parser.parse(s, self.dpi, prop)
+#         ox, oy, width, height, descent, font_image, used_characters = \
+#             self.mathtext_parser.parse(s, self.dpi.get(), prop) MGDTODO
         
         x = int(x) + ox
         y = int(y) - oy
@@ -228,7 +236,9 @@
 
         if ismath:
             ox, oy, width, height, descent, fonts, used_characters = \
-                self.mathtext_parser.parse(s, self.dpi.get(), prop)
+                self.mathtext_parser.parse(s, self.dpi, prop)
+#             ox, oy, width, height, descent, fonts, used_characters = \
+#                 self.mathtext_parser.parse(s, self.dpi.get(), prop) MGDTODO
             return width, height, descent
         font = self._get_agg_font(prop)
         font.set_text(s, 0.0, flags=LOAD_DEFAULT)  # the width and height of 
unrotated string
@@ -302,7 +312,8 @@
 
         font.clear()
         size = prop.get_size_in_points()
-        font.set_size(size, self.dpi.get())
+        font.set_size(size, self.dpi)
+        # font.set_size(size, self.dpi.get()) MGDTODO
 
         return font
 
@@ -380,7 +391,9 @@
 
     def get_renderer(self):
         l,b,w,h = self.figure.bbox.get_bounds()
-        key = w, h, self.figure.dpi.get()
+       # MGDTODO
+        # key = w, h, self.figure.dpi.get()
+        key = w, h, self.figure.dpi
         try: self._lastKey, self.renderer
         except AttributeError: need_new_renderer = True
         else:  need_new_renderer = (self._lastKey != key)

Modified: branches/transforms/lib/matplotlib/bbox.py
===================================================================
--- branches/transforms/lib/matplotlib/bbox.py  2007-09-10 18:45:32 UTC (rev 
3825)
+++ branches/transforms/lib/matplotlib/bbox.py  2007-09-10 19:25:21 UTC (rev 
3826)
@@ -6,9 +6,31 @@
 
 import numpy as N
 
+class Interval:
+    def __init__(self, bounds):
+       self._bounds = N.array(bounds, N.float_)
+
+    def contains(self, value):
+       bounds = self._bounds
+       return value >= bounds[0] and value <= bounds[1]
+
+    def contains_open(self, value):
+       bounds = self._bounds
+       return value > bounds[0] and value < bounds[1]
+
+    def get_bounds(self):
+       return self._bounds
+
+    def set_bounds(self, lower, upper):
+       self._bounds = lower, upper
+
+    def span(self):
+       bounds = self._bounds
+       return bounds[1] - bounds[0]
+       
 class Bbox:
     def __init__(self, points):
-       self._points = N.array(points)
+       self._points = N.array(points, N.float_)
 
     [EMAIL PROTECTED]
     def unit():
@@ -23,7 +45,10 @@
     [EMAIL PROTECTED]
     def from_lbrt(left, bottom, right, top):
        return Bbox([[left, bottom], [right, top]])
-    from_lbwh = staticmethod(from_lbwh)
+    from_lbrt = staticmethod(from_lbrt)
+
+    def copy(self):
+       return Bbox(self._points.copy())
     
     # MGDTODO: Probably a more efficient ways to do this...
     def xmin(self):
@@ -45,15 +70,29 @@
        return self.ymax() - self.ymin()
 
     def transform(self, transform):
-       return Bbox(transform(points))
+       return Bbox(transform(self._points))
 
     def inverse_transform(self, transform):
-       return Bbox(transform.inverted()(points))
+       return Bbox(transform.inverted()(self._points))
 
     def get_bounds(self):
        return (self.xmin(), self.ymin(),
                self.xmax() - self.xmin(), self.ymax() - self.ymin())
-    
+
+    def intervalx(self):
+       return Interval(self._points[0])
+
+    def intervaly(self):
+       return Interval(self._points[1])
+
+    def scaled(self, sw, sh):
+       width = self.width()
+       height = self.height()
+       deltaw = (sw * width - width) / 2.0
+       deltah = (sh * height - height) / 2.0
+       a = N.array([[-deltaw, -deltah], [deltaw, deltah]])
+       return Bbox(self._points + a)
+       
 def lbwh_to_bbox(left, bottom, width, height):
     return Bbox([[left, bottom], [left + width, bottom + height]])
     
@@ -67,18 +106,18 @@
        return bboxes[0]
 
     bbox = bboxes[0]
-    xmin = bbox.xmin
-    ymin = bbox.ymin
-    xmax = bbox.xmax
-    ymax = bbox.ymax
+    xmin = bbox.xmin()
+    ymin = bbox.ymin()
+    xmax = bbox.xmax()
+    ymax = bbox.ymax()
 
     for bbox in bboxes[1:]:
-       xmin = min(xmin, bbox.xmin)
-       ymin = min(ymin, bbox.ymin)
-       xmax = max(xmax, bbox.xmax)
-       ymax = max(ymax, bbox.ymax)
+       xmin = min(xmin, bbox.xmin())
+       ymin = min(ymin, bbox.ymin())
+       xmax = max(xmax, bbox.xmax())
+       ymax = max(ymax, bbox.ymax())
 
-    return Bbox(xmin, ymin, xmax, ymax)
+    return Bbox.from_lbrt(xmin, ymin, xmax, ymax)
 
 # MGDTODO: There's probably a better place for this
 def nonsingular(vmin, vmax, expander=0.001, tiny=1e-15, increasing=True):

Modified: branches/transforms/lib/matplotlib/figure.py
===================================================================
--- branches/transforms/lib/matplotlib/figure.py        2007-09-10 18:45:32 UTC 
(rev 3825)
+++ branches/transforms/lib/matplotlib/figure.py        2007-09-10 19:25:21 UTC 
(rev 3826)
@@ -129,9 +129,10 @@
         if edgecolor is None: edgecolor = rcParams['figure.edgecolor']
 
         self.dpi = dpi
+       self.figsize = figsize
        self.bbox = Bbox.from_lbwh(0, 0,
-                                  self.figsize[0] * dpi,
-                                  self.figsize[1] * dpi)
+                                  figsize[0] * dpi,
+                                  figsize[1] * dpi)
        
         self.frameon = frameon
 
@@ -581,7 +582,8 @@
         #print 'figure draw'
         if not self.get_visible(): return
         renderer.open_group('figure')
-        self.transFigure.freeze()  # eval the lazy objects
+       # MGDTODO
+        # self.transFigure.freeze()  # eval the lazy objects
 
         if self.frameon: self.figurePatch.draw(renderer)
 
@@ -615,7 +617,8 @@
         for legend in self.legends:
             legend.draw(renderer)
 
-        self.transFigure.thaw()  # release the lazy objects
+       # MGDTODO
+       # self.transFigure.thaw()  # release the lazy objects
         renderer.close_group('figure')
 
         self._cachedRenderer = renderer

Modified: branches/transforms/lib/matplotlib/finance.py
===================================================================
--- branches/transforms/lib/matplotlib/finance.py       2007-09-10 18:45:32 UTC 
(rev 3825)
+++ branches/transforms/lib/matplotlib/finance.py       2007-09-10 19:25:21 UTC 
(rev 3826)
@@ -22,8 +22,7 @@
 from matplotlib.colors import colorConverter
 from lines import Line2D, TICKLEFT, TICKRIGHT
 from patches import Rectangle
-from matplotlib.transforms import scale_transform, Value, zero, one, \
-     scale_sep_transform, blend_xy_sep_transform
+from matplotlib.affine import Affine2D
 
 
 
@@ -335,9 +334,9 @@
     offsetsClose = [ (i, close) for i, close in zip(xrange(len(closes)), 
closes) if close != -1 ]
 
 
-    scale = ax.figure.dpi * Value(1/72.0)
+    scale = ax.figure.dpi * (1.0/72.0)
 
-    tickTransform = scale_transform( scale, zero())
+    tickTransform = Affine2D().scaled(scale, 0.0)
 
     r,g,b = colorConverter.to_rgb(colorup)
     colorup = r,g,b,1
@@ -424,10 +423,10 @@
 
     offsetsBars = [ (i, open) for i,open in zip(xrange(len(opens)), opens) if 
open != -1 ]
 
-    sx = ax.figure.dpi * Value(1/72.0)  # scale for points
+    sx = ax.figure.dpi * (1.0/72.0)  # scale for points
     sy = (ax.bbox.ur().y() - ax.bbox.ll().y()) / (ax.viewLim.ur().y() - 
ax.viewLim.ll().y())
 
-    barTransform = scale_sep_transform(sx,sy)
+    barTransform = Affine2D().scaled(sx,sy)
 
 
 
@@ -512,10 +511,10 @@
 
     bars = [ ( (left, 0), (left, v), (right, v), (right, 0)) for v in volumes 
if v != -1 ]
 
-    sx = ax.figure.dpi * Value(1/72.0)  # scale for points
+    sx = ax.figure.dpi * (1.0/72.0)  # scale for points
     sy = (ax.bbox.ur().y() - ax.bbox.ll().y()) / (ax.viewLim.ur().y() - 
ax.viewLim.ll().y())
 
-    barTransform = scale_sep_transform(sx,sy)
+    barTransform = Affine2D().scaled(sx,sy)
 
     offsetsBars = [ (i, 0) for i,v in enumerate(volumes) if v != -1 ]
 
@@ -602,10 +601,10 @@
 
     bars = [ ( (left, 0), (left, volume), (right, volume), (right, 0)) for d, 
open, close, high, low, volume in quotes]
 
-    sx = ax.figure.dpi * Value(1/72.0)  # scale for points
+    sx = ax.figure.dpi * (1.0/72.0)  # scale for points
     sy = (ax.bbox.ur().y() - ax.bbox.ll().y()) / (ax.viewLim.ur().y() - 
ax.viewLim.ll().y())
 
-    barTransform = scale_sep_transform(sx,sy)
+    barTransform = Affine2D().scaled(sx,sy)
 
     dates = [d for d, open, close, high, low, volume in quotes]
     offsetsBars = [(d, 0) for d in dates]
@@ -662,10 +661,10 @@
 
     bars = [ ( (left, 0), (left, v), (right, v), (right, 0)) for v in vals if 
v != -1 ]
 
-    sx = ax.figure.dpi * Value(1/72.0)  # scale for points
+    sx = ax.figure.dpi * (1.0/72.0)  # scale for points
     sy = (ax.bbox.ur().y() - ax.bbox.ll().y()) / (ax.viewLim.ur().y() - 
ax.viewLim.ll().y())
 
-    barTransform = scale_sep_transform(sx,sy)
+    barTransform = Affine2D().scaled(sx,sy)
 
     offsetsBars = [ (i, 0) for i,v in enumerate(vals) if v != -1 ]
 

Modified: branches/transforms/lib/matplotlib/legend.py
===================================================================
--- branches/transforms/lib/matplotlib/legend.py        2007-09-10 18:45:32 UTC 
(rev 3825)
+++ branches/transforms/lib/matplotlib/legend.py        2007-09-10 19:25:21 UTC 
(rev 3826)
@@ -224,7 +224,7 @@
         a.set_transform(self.get_transform())
 
     def _approx_text_height(self):
-        return 
self.fontsize/72.0*self.figure.dpi.get()/self.parent.bbox.height()
+        return self.fontsize/72.0*self.figure.dpi/self.parent.bbox.height()
 
 
     def draw(self, renderer):
@@ -531,7 +531,7 @@
         if not len(self.legendHandles) and not len(self.texts): return
         def get_tbounds(text):  #get text bounds in axes coords
             bbox = text.get_window_extent(renderer)
-            bboxa = inverse_transform_bbox(self.get_transform(), bbox)
+            bboxa = bbox.inverse_transform(self.get_transform())
             return bboxa.get_bounds()
 
         hpos = []
@@ -559,9 +559,11 @@
                 handle.set_height(h/2)
 
         # Set the data for the legend patch
-        bbox = self._get_handle_text_bbox(renderer).deepcopy()
+       # MGDTODO: This copy may no longer be needed now that Bboxes are
+       # essentially immutable
+        bbox = self._get_handle_text_bbox(renderer).copy()
 
-        bbox.scale(1 + self.pad, 1 + self.pad)
+        bbox = bbox.scaled(1 + self.pad, 1 + self.pad)
         l,b,w,h = bbox.get_bounds()
         self.legendPatch.set_bounds(l,b,w,h)
 

Modified: branches/transforms/lib/matplotlib/lines.py
===================================================================
--- branches/transforms/lib/matplotlib/lines.py 2007-09-10 18:45:32 UTC (rev 
3825)
+++ branches/transforms/lib/matplotlib/lines.py 2007-09-10 19:25:21 UTC (rev 
3826)
@@ -362,8 +362,13 @@
         else:
             x, y = self._get_plottable()
 
-
-        x, y = self.get_transform().numerix_x_y(x, y)
+       # MGDTODO: Put this in a single Nx2 array, rather than these
+       # separate ones
+       #### Conversion code
+       a = npy.vstack((x, y)).swapaxes(0, 1)
+       ####
+        x, y = self.get_transform()(a)
+       
         #x, y = self.get_transform().seq_x_y(x, y)
 
         left = min(x)
@@ -373,7 +378,8 @@
 
         # correct for marker size, if any
         if self._marker is not None:
-            ms = self._markersize/72.0*self.figure.dpi.get()
+            ms = self._markersize/72.0*self.figure.dpi
+            # ms = self._markersize/72.0*self.figure.dpi.get() MGDTODO
             left -= ms/2
             bottom -= ms/2
             width += ms

Modified: branches/transforms/lib/matplotlib/patches.py
===================================================================
--- branches/transforms/lib/matplotlib/patches.py       2007-09-10 18:45:32 UTC 
(rev 3825)
+++ branches/transforms/lib/matplotlib/patches.py       2007-09-10 19:25:21 UTC 
(rev 3826)
@@ -209,8 +209,13 @@
             gc.set_hatch(self._hatch )
 
         verts = self.get_verts()
-        tverts = self.get_transform().seq_xy_tups(verts)
+        tverts = self.get_transform()(verts)
 
+       # MGDTODO: This result is an Nx2 numpy array, which could be passed
+       # directly to renderer.draw_polygon.  However, it currently expects
+       # a list of tuples so we're converting it to that now.
+       tverts = [tuple(x) for x in tverts]
+       
         renderer.draw_polygon(gc, rgbFace, tverts)
 
 

Modified: branches/transforms/lib/matplotlib/text.py
===================================================================
--- branches/transforms/lib/matplotlib/text.py  2007-09-10 18:45:32 UTC (rev 
3825)
+++ branches/transforms/lib/matplotlib/text.py  2007-09-10 19:25:21 UTC (rev 
3826)
@@ -151,7 +151,7 @@
     def _get_xy_display(self):
         'get the (possibly unit converted) transformed x,y in display coords'
         x, y = self.get_position()
-        return self.get_transform().xy_tup((x,y))
+        return self.get_transform()([[x,y]])[0]
 
     def _get_multialignment(self):
         if self._multialignment is not None: return self._multialignment
@@ -275,7 +275,8 @@
         ty = [float(v[1][0])+offsety for v in xys]
 
         # now inverse transform back to data coords
-        xys = [self.get_transform().inverse_xy_tup( xy ) for xy in zip(tx, ty)]
+       inverse_transform = self.get_transform().inverted()
+        xys = inverse_transform(zip(tx, ty))
 
         xs, ys = zip(*xys)
 
@@ -328,7 +329,7 @@
             return
 
         for line, wh, x, y in info:
-            x, y = trans.xy_tup((x, y))
+            x, y = trans([[x, y]])[0]
 
             if renderer.flipy():
                 canvasw, canvash = renderer.get_canvas_width_height()
@@ -405,7 +406,7 @@
         return (x, y, self._text, self._color,
                 self._verticalalignment, self._horizontalalignment,
                 hash(self._fontproperties), self._rotation,
-                self.get_transform().as_vec6_val(),
+                self.get_transform().to_values(),
                 )
 
     def get_text(self):

Modified: branches/transforms/lib/matplotlib/ticker.py
===================================================================
--- branches/transforms/lib/matplotlib/ticker.py        2007-09-10 18:45:32 UTC 
(rev 3825)
+++ branches/transforms/lib/matplotlib/ticker.py        2007-09-10 19:25:21 UTC 
(rev 3826)
@@ -115,12 +115,11 @@
 import matplotlib as mpl
 from matplotlib import verbose, rcParams
 from matplotlib import cbook
-from matplotlib import transforms as mtrans
+from matplotlib import bbox as mbbox
 
 
 
 
-
 class TickHelper:
 
     viewInterval = None
@@ -149,8 +148,8 @@
         cases where the Intervals do not need to be updated
         automatically.
         '''
-        self.dataInterval = mtrans.Interval(mtrans.Value(vmin), 
mtrans.Value(vmax))
-        self.viewInterval = mtrans.Interval(mtrans.Value(vmin), 
mtrans.Value(vmax))
+        self.dataInterval = mbbox.Interval([vmin, vmax])
+        self.viewInterval = mbbox.Interval([vmin, vmax])
 
 class Formatter(TickHelper):
     """
@@ -572,7 +571,7 @@
     def autoscale(self):
         'autoscale the view limits'
         self.verify_intervals()
-        return mtrans.nonsingular(*self.dataInterval.get_bounds())
+        return mbbox.nonsingular(*self.dataInterval.get_bounds())
 
     def pan(self, numsteps):
         'Pan numticks (can be positive or negative)'
@@ -714,7 +713,7 @@
         vmin = math.floor(scale*vmin)/scale
         vmax = math.ceil(scale*vmax)/scale
 
-        return mtrans.nonsingular(vmin, vmax)
+        return mbbox.nonsingular(vmin, vmax)
 
 
 def closeto(x,y):
@@ -798,7 +797,7 @@
             vmin -=1
             vmax +=1
 
-        return mtrans.nonsingular(vmin, vmax)
+        return mbbox.nonsingular(vmin, vmax)
 
 def scale_range(vmin, vmax, n = 1, threshold=100):
     dv = abs(vmax - vmin)
@@ -866,13 +865,13 @@
     def __call__(self):
         self.verify_intervals()
         vmin, vmax = self.viewInterval.get_bounds()
-        vmin, vmax = mtrans.nonsingular(vmin, vmax, expander = 0.05)
+        vmin, vmax = mbbox.nonsingular(vmin, vmax, expander = 0.05)
         return self.bin_boundaries(vmin, vmax)
 
     def autoscale(self):
         self.verify_intervals()
         dmin, dmax = self.dataInterval.get_bounds()
-        dmin, dmax = mtrans.nonsingular(dmin, dmax, expander = 0.05)
+        dmin, dmax = mbbox.nonsingular(dmin, dmax, expander = 0.05)
         return npy.take(self.bin_boundaries(dmin, dmax), [0,-1])
 
 
@@ -973,7 +972,7 @@
         if vmin==vmax:
             vmin = decade_down(vmin,self._base)
             vmax = decade_up(vmax,self._base)
-        return mtrans.nonsingular(vmin, vmax)
+        return mbbox.nonsingular(vmin, vmax)
 
 class AutoLocator(MaxNLocator):
     def __init__(self):

Modified: branches/transforms/src/_backend_agg.cpp
===================================================================
--- branches/transforms/src/_backend_agg.cpp    2007-09-10 18:45:32 UTC (rev 
3825)
+++ branches/transforms/src/_backend_agg.cpp    2007-09-10 19:25:21 UTC (rev 
3826)
@@ -44,6 +44,27 @@
 #define M_PI_2     1.57079632679489661923
 #endif
 
+agg::trans_affine py_sequence_to_agg_transformation_matrix(const Py::Object& 
obj) {
+  Py::SeqBase<Py::Float> seq;
+  try {
+    seq = obj;
+  } catch(...) {
+    throw Py::ValueError("Transformation matrix must be given as a 6-element 
list.");
+  }
+
+  if (seq.size() != 6) {
+    throw Py::ValueError("Transformation matrix must be given as a 6-element 
list.");
+  }
+
+  agg::trans_affine xytrans = agg::trans_affine
+    (Py::Float(seq[0]), 
+     Py::Float(seq[1]), 
+     Py::Float(seq[2]), 
+     Py::Float(seq[3]), 
+     Py::Float(seq[4]), 
+     Py::Float(seq[5]));
+}
+
 GCAgg::GCAgg(const Py::Object &gc, double dpi, bool snapto) :
   dpi(dpi), snapto(snapto), isaa(true), linewidth(1.0), alpha(1.0),
   cliprect(NULL), clippath(NULL), 
@@ -646,7 +667,8 @@
   Py::SeqBase<Py::Object> linewidths = args[4];
   Py::SeqBase<Py::Object> linestyle = args[5];
   Py::SeqBase<Py::Object> antialiaseds = args[6];
-  
+
+  // MGDTODO: Verify we don't need this offset stuff anymore
   bool usingOffsets = args[7].ptr()!=Py_None;
   Py::SeqBase<Py::Object> offsets;
   Transformation* transOffset=NULL;
@@ -1534,24 +1556,14 @@
   //path_t transpath(path, xytrans);
   _process_alpha_mask(gc);
 
-  Transformation* mpltransform = static_cast<Transformation*>(args[3].ptr());
+  agg::trans_affine xytrans = 
py_sequence_to_agg_transformation_matrix(args[3]);
 
-  double a, b, c, d, tx, ty;
-  try {
-    mpltransform->affine_params_api(&a, &b, &c, &d, &tx, &ty);
-  }
-  catch(...) {
-    throw Py::ValueError("Domain error on affine_params_api in 
RendererAgg::draw_lines");
-  }
-
-  agg::trans_affine xytrans = agg::trans_affine(a,b,c,d,tx,ty);
-
-
   agg::path_storage path;
 
+  // MGDTODO
+  bool needNonlinear = false;
+  // mpltransform->need_nonlinear_api();
 
-  bool needNonlinear = mpltransform->need_nonlinear_api();
-
   double thisx(0.0), thisy(0.0);
   double origdx(0.0), origdy(0.0), origdNorm2(0);
   bool moveto = true;
@@ -1584,7 +1596,8 @@
 
     if (needNonlinear)
       try {
-        mpltransform->nonlinear_only_api(&thisx, &thisy);
+       // MGDTODO
+        // mpltransform->nonlinear_only_api(&thisx, &thisy);
       }
       catch (...) {
         moveto = true;


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Matplotlib-checkins mailing list
Matplotlib-checkins@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to