I'm off with family for the holidays, so my response will have to be somewhat 
brief.  

I'm excited about the ideas you bring up...  I first heard about sympy at SciPy 
and was very impressed.  Let's try to collaborate in any way possible.  I know 
that "3D in matplotlib" already has some history of which I'm not aware, so 
I'll 
leave that for others to comment on.

As for the C++ dependencies, Agg is a pretty strong one.  Yes, it is possible 
to 
do rendering with Gtk or Wx alone, but it's not very pretty (no-aa).  Gtk/Cairo 
is 
a good high-quality combination, but it (at least currently) leaves out all the 
other GUI frameworks, and is not BSD-like licensed.  The other important 
C/C++ requirement is matplotlib's interface to freetype (FT2Font).  That would 
be really painful to reimplement in pure Python -- freetype is a complex and 
mature piece of software.  In the trunk, there is a required framework for 
transformations, and in the "transforms branch" there is a framework for 
polycurve manipulations, both of which are required to do any plotting.  Those 
would have a major performance penalty going to Python, and even 
notwithstanding, are non-trivial bits of code to reimplement.  Beyond that, 
there 
are utilities for contours and images etc., which are reasonably optional but 
people use all the time.  In short, there's a not of C/C++ in the core of 
matplotlib -- maybe the time would be better spent resolving any build issues 
that make portability difficult...?  I'm not sure it's realistic to expect 
matplotlib to 
be pure Python at this point without losing a lot of features, but I agree it 
would 
be nice...

As for the mathtext Python math rendering engine, it isn't *really* pure 
Python.  
It relies on matplotlib's interface to Freetype.  Ideally, it would be nice to 
have a 
general-purpose Python interface to freetype (I know the PyCairo folks are 
wanting such a thing), and then the mathtext engine could use that.  
Unfortunately, the existing freetype wrapper in matplotlib is very incomplete 
and pretty tied to matplotlib-specific ways of doing things.  IMHO, you 
wouldn't 
really gain much by releasing FT2Font as a separate project unless it were 
generalized.  I've sort of gone into a holding pattern, hoping someone else 
will 
release a Python freetype wrapper that matplotlib could use...  Alternatively, 
the 
dependency on freetype could be removed by extracting and hardcoding all the 
font metrics from the math fonts into Python dictionaries etc. -- but then of 
course it would only work with a fixed set of fonts.  This is what jsMath, (a 
pure-Javascript math rendering engine) does, for instance.

With the exception of that issue, removing the mathtext engine from matplotlib 
should be possible, and I think it's a great idea.  There are some matplotlib-
specific bits mixed in there, but they should be reasonably straightforward to 
factor out.  It already has support for rendering math to an in-memory image 
bitmap, which has been used for displaying math on GUI widgets, for example.

Anyway -- cool ideas.  Let's keep up the discussion.

Cheers,
Mike

-------------------------------------------------------------------------
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-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to