Revision: 7295
          http://matplotlib.svn.sourceforge.net/matplotlib/?rev=7295&view=rev
Author:   evilguru
Date:     2009-07-26 17:53:54 +0000 (Sun, 26 Jul 2009)

Log Message:
-----------
Make mathtex an optional dependency. Warn when trying to render math when it is 
not available.

Modified Paths:
--------------
    branches/mathtex/lib/matplotlib/backends/backend_agg.py
    branches/mathtex/lib/matplotlib/backends/backend_cairo.py
    branches/mathtex/lib/matplotlib/backends/backend_gdk.py
    branches/mathtex/lib/matplotlib/backends/backend_macosx.py
    branches/mathtex/lib/matplotlib/backends/backend_pdf.py
    branches/mathtex/lib/matplotlib/backends/backend_ps.py
    branches/mathtex/lib/matplotlib/backends/backend_svg.py

Modified: branches/mathtex/lib/matplotlib/backends/backend_agg.py
===================================================================
--- branches/mathtex/lib/matplotlib/backends/backend_agg.py     2009-07-26 
00:06:34 UTC (rev 7294)
+++ branches/mathtex/lib/matplotlib/backends/backend_agg.py     2009-07-26 
17:53:54 UTC (rev 7295)
@@ -21,6 +21,7 @@
   * integrate screen dpi w/ ppi and text
 """
 from __future__ import division
+import warnings
 
 import numpy as npy
 
@@ -37,8 +38,12 @@
 from _backend_agg import RendererAgg as _RendererAgg
 from matplotlib import _png
 
-from mathtex.mathtex_main import Mathtex
-from mathtex.backends.backend_image import MathtexBackendImage
+try:
+    from mathtex.mathtex_main import Mathtex
+    from mathtex.backends.backend_image import MathtexBackendImage
+    HAVE_MATHTEX = True
+except ImportError:
+    HAVE_MATHTEX = False
 
 backend_version = 'v2.2'
 
@@ -104,12 +109,13 @@
         """
         if __debug__: verbose.report('RendererAgg.draw_mathtext',
                                      'debug-annoying')
-        m = Mathtex(s, rcParams['mathtext.fontset'], 
prop.get_size_in_points(), self.dpi)
-        b = MathtexBackendImage()
+        if HAVE_MATHTEX:
+            m = Mathtex(s, rcParams['mathtext.fontset'], 
prop.get_size_in_points(), self.dpi)
+            b = MathtexBackendImage()
 
-        m.render_to_backend(b)
+            m.render_to_backend(b)
 
-        self._renderer.draw_text_image(b.image, int(x), int(y) + 1, angle, gc)
+            self._renderer.draw_text_image(b.image, int(x), int(y) + 1, angle, 
gc)
 
     def draw_text(self, gc, x, y, s, prop, angle, ismath):
         """
@@ -153,8 +159,13 @@
             return w, h, d
 
         if ismath:
-            m = Mathtex(s, rcParams['mathtext.fontset'], 
prop.get_size_in_points(), self.dpi)
-            return m.width, m.height, m.depth
+            if not HAVE_MATHTEX:
+                warnings.warn('matplotlib was compiled without mathtex 
support. ' +
+                              'Math will not be rendered.')
+                return 0.0, 0.0, 0.0
+            else:
+                m = Mathtex(s, rcParams['mathtext.fontset'], 
prop.get_size_in_points(), self.dpi)
+                return m.width, m.height, m.depth
         font = self._get_agg_font(prop)
         font.set_text(s, 0.0, flags=LOAD_FORCE_AUTOHINT)  # the width and 
height of unrotated string
         w, h = font.get_width_height()
@@ -250,7 +261,7 @@
         >>> x1, y1, x2, y2 = region.get_extents()
         >>> renderer.restore_region(region, bbox=(x1+dx, y1, x2, y2),
                                     xy=(x1-dx, y1))
-        
+
         """
         if bbox is not None or xy is not None:
             if bbox is None:

Modified: branches/mathtex/lib/matplotlib/backends/backend_cairo.py
===================================================================
--- branches/mathtex/lib/matplotlib/backends/backend_cairo.py   2009-07-26 
00:06:34 UTC (rev 7294)
+++ branches/mathtex/lib/matplotlib/backends/backend_cairo.py   2009-07-26 
17:53:54 UTC (rev 7295)
@@ -47,8 +47,12 @@
 from matplotlib.font_manager import ttfFontProperty
 from matplotlib import rcParams
 
-from mathtex.mathtex_main import Mathtex
-from mathtex.backends.backend_cairo import MathtexBackendCairo
+try:
+    from mathtex.mathtex_main import Mathtex
+    from mathtex.backends.backend_cairo import MathtexBackendCairo
+    HAVE_MATHTEX = True
+except ImportError:
+    HAVE_MATHTEX = False
 
 _debug = False
 #_debug = True
@@ -202,6 +206,7 @@
 
     def _draw_mathtext(self, gc, x, y, s, prop, angle):
         if _debug: print '%s.%s()' % (self.__class__.__name__, _fn_name())
+        if not HAVE_MATHTEX: return
 
         ctx = gc.ctx
 
@@ -234,8 +239,13 @@
     def get_text_width_height_descent(self, s, prop, ismath):
         if _debug: print '%s.%s()' % (self.__class__.__name__, _fn_name())
         if ismath:
-            m = Mathtex(s, rcParams['mathtext.fontset'], 
prop.get_size_in_points(), self.dpi)
-            return m.width, m.height, m.depth
+            if HAVE_MATHTEX:
+                m = Mathtex(s, rcParams['mathtext.fontset'], 
prop.get_size_in_points(), self.dpi)
+                return m.width, m.height, m.depth
+            else:
+                warnings.warn('matplotlib was compiled without mathtex 
support. ' +
+                              'Math will not be rendered.')
+                return 0.0, 0.0, 0.0
 
         ctx = self.text_ctx
         ctx.save()

Modified: branches/mathtex/lib/matplotlib/backends/backend_gdk.py
===================================================================
--- branches/mathtex/lib/matplotlib/backends/backend_gdk.py     2009-07-26 
00:06:34 UTC (rev 7294)
+++ branches/mathtex/lib/matplotlib/backends/backend_gdk.py     2009-07-26 
17:53:54 UTC (rev 7295)
@@ -27,8 +27,12 @@
 from matplotlib.transforms import Affine2D
 from matplotlib.backends._backend_gdk import pixbuf_get_pixels_array
 
-from mathtex.mathtex_main import Mathtex
-from mathtex.backends.backend_image import MathtexBackendImage
+try:
+    from mathtex.mathtex_main import Mathtex
+    from mathtex.backends.backend_image import MathtexBackendImage
+    HAVE_MATHTEX = True
+except ImportError:
+    HAVE_MATHTEX = False
 
 backend_version = "%d.%d.%d" % gtk.pygtk_version
 _debug = False
@@ -159,6 +163,9 @@
 
 
     def _draw_mathtext(self, gc, x, y, s, prop, angle):
+        if not HAVE_MATHTEX:
+            return
+
         m = Mathtex(s, matplotlib.rcParams['mathtext.fontset'],
                     prop.get_size_in_points(), self.dpi)
         b = MathtexBackendImage()
@@ -305,9 +312,14 @@
 
     def get_text_width_height_descent(self, s, prop, ismath):
         if ismath:
-            m = Mathtex(s, matplotlib.rcParams['mathtext.fontset'],
-                        prop.get_size_in_points(), self.dpi)
-            return m.width, m.height, m.depth
+            if not HAVE_MATHTEX:
+                warnings.warn('matplotlib was compiled without mathtex 
support. ' +
+                              'Math will not be rendered.')
+                return 0.0, 0.0, 0.0
+            else:
+                m = Mathtex(s, matplotlib.rcParams['mathtext.fontset'],
+                            prop.get_size_in_points(), self.dpi)
+                return m.width, m.height, m.depth
 
         layout, inkRect, logicalRect = self._get_pango_layout(s, prop)
         l, b, w, h = inkRect

Modified: branches/mathtex/lib/matplotlib/backends/backend_macosx.py
===================================================================
--- branches/mathtex/lib/matplotlib/backends/backend_macosx.py  2009-07-26 
00:06:34 UTC (rev 7294)
+++ branches/mathtex/lib/matplotlib/backends/backend_macosx.py  2009-07-26 
17:53:54 UTC (rev 7295)
@@ -11,8 +11,12 @@
 from matplotlib.path import Path
 from matplotlib.colors import colorConverter
 
-from mathtex.mathtex_main import Mathtex
-from mathtex.backends.backend_image import MathtexBackendImage
+try:
+    from mathtex.mathtex_main import Mathtex
+    from mathtex.backends.backend_image import MathtexBackendImage
+    HAVE_MATHTEX = True
+except ImportError:
+    HAVE_MATHTEX = False
 
 from matplotlib.widgets import SubplotTool
 
@@ -90,6 +94,9 @@
         gc.draw_mathtext(x, y, angle, Z)
 
     def _draw_mathtext(self, gc, x, y, s, prop, angle):
+        if not HAVE_MATHTEX:
+            return
+
         m = Mathtex(s, rcParams['mathtext.fontset'], 
prop.get_size_in_points(), self.dpi)
         b = MathtexBackendImage()
         m.render_to_backend(b)
@@ -116,9 +123,14 @@
                                                                renderer=self)
             return w, h, d
         if ismath:
-            m = Mathtex(s, rcParams['mathtext.fontset'],
-                        prop.get_size_in_points(), self.dpi)
-            return m.width, m.height, m.depth
+            if HAVE_MATHTEX:
+                m = Mathtex(s, rcParams['mathtext.fontset'],
+                            prop.get_size_in_points(), self.dpi)
+                return m.width, m.height, m.depth
+            else:
+                warnings.warn('matplotlib was compiled without mathtex 
support. ' +
+                              'Math will not be rendered.')
+                return 0.0, 0.0, 0.0
         family =  prop.get_family()
         weight = prop.get_weight()
         style = prop.get_style()

Modified: branches/mathtex/lib/matplotlib/backends/backend_pdf.py
===================================================================
--- branches/mathtex/lib/matplotlib/backends/backend_pdf.py     2009-07-26 
00:06:34 UTC (rev 7294)
+++ branches/mathtex/lib/matplotlib/backends/backend_pdf.py     2009-07-26 
17:53:54 UTC (rev 7295)
@@ -1,7 +1,7 @@
 # -*- coding: iso-8859-1 -*-
 """
 A PDF matplotlib backend (not yet complete)
-Author: Jouni K Sepp\xE4nen <[email protected]>
+Author: Jouni K Sepp�nen <[email protected]>
 """
 from __future__ import division
 
@@ -42,7 +42,11 @@
 from matplotlib.path import Path
 from matplotlib import ttconv
 
-from mathtex.mathtex_main import Mathtex
+try:
+    from mathtex.mathtex_main import Mathtex
+    HAVE_MATHTEX = True
+except ImportError:
+    HAVE_MATHTEX = False
 
 # Overview
 #
@@ -1344,6 +1348,9 @@
 
     def draw_mathtext(self, gc, x, y, s, prop, angle):
         # TODO: fix positioning and encoding
+        if not HAVE_MATHTEX:
+            return
+
         m = Mathtex(s, rcParams['mathtext.fontset'], 
prop.get_size_in_points(), 72.0)
 
         # Generate the dict of used characters
@@ -1654,9 +1661,15 @@
             return w, h, d
 
         if ismath:
-            m = Mathtex(s, rcParams['mathtext.fontset'],
-                        prop.get_size_in_points(), 72.0)
-            w, h, d = m.width, m.height, m.depth
+            # Ensure mathtex is available
+            if not HAVE_MATHTEX:
+                warnings.warn('matplotlib was compiled without mathtex 
support. ' +
+                              'Math will not be rendered.')
+                w, h, d = 0.0, 0.0, 0.0
+            else:
+                m = Mathtex(s, rcParams['mathtext.fontset'],
+                            prop.get_size_in_points(), 72.0)
+                w, h, d = m.width, m.height, m.depth
 
         elif rcParams['pdf.use14corefonts']:
             font = self._get_font_afm(prop)

Modified: branches/mathtex/lib/matplotlib/backends/backend_ps.py
===================================================================
--- branches/mathtex/lib/matplotlib/backends/backend_ps.py      2009-07-26 
00:06:34 UTC (rev 7294)
+++ branches/mathtex/lib/matplotlib/backends/backend_ps.py      2009-07-26 
17:53:54 UTC (rev 7295)
@@ -3,7 +3,7 @@
 """
 
 from __future__ import division
-import glob, math, os, shutil, sys, time
+import glob, math, os, shutil, sys, time, warnings
 def _fn_name(): return sys._getframe(1).f_code.co_name
 
 try:
@@ -34,7 +34,11 @@
 
 from matplotlib.backends.backend_mixed import MixedModeRenderer
 
-from mathtex.mathtex_main import Mathtex
+try:
+    from mathtex.mathtex_main import Mathtex
+    HAVE_MATHTEX = True
+except ImportError:
+    HAVE_MATHTEX = False
 
 import numpy as npy
 import binascii
@@ -277,8 +281,13 @@
             return w, h, d
 
         if ismath:
-            m = Mathtex(s, rcParams['mathtext.fontset'], 
prop.get_size_in_points(), 72.0)
-            return m.width, m.height, m.depth
+            if HAVE_MATHTEX:
+                m = Mathtex(s, rcParams['mathtext.fontset'], 
prop.get_size_in_points(), 72.0)
+                return m.width, m.height, m.depth
+            else:
+                warnings.warn('matplotlib was compiled without mathtex 
support. ' +
+                              'Math will not be rendered.')
+                return 0.0, 0.0, 0.0
 
         if rcParams['ps.useafm']:
             if ismath: s = s[1:-1]
@@ -738,6 +747,8 @@
         """
         if debugPS:
             self._pswriter.write("% mathtext\n")
+        if not HAVE_MATHTEX:
+            return
 
         m = Mathtex(s, rcParams['mathtext.fontset'], 
prop.get_size_in_points(), 72.0)
 

Modified: branches/mathtex/lib/matplotlib/backends/backend_svg.py
===================================================================
--- branches/mathtex/lib/matplotlib/backends/backend_svg.py     2009-07-26 
00:06:34 UTC (rev 7294)
+++ branches/mathtex/lib/matplotlib/backends/backend_svg.py     2009-07-26 
17:53:54 UTC (rev 7295)
@@ -1,6 +1,6 @@
 from __future__ import division
 
-import os, codecs, base64, tempfile, urllib, gzip, cStringIO
+import os, codecs, base64, tempfile, urllib, gzip, cStringIO, warnings
 
 try:
     from hashlib import md5
@@ -20,7 +20,11 @@
 from matplotlib.transforms import Affine2D
 from matplotlib import _png
 
-from mathtex.mathtex_main import Mathtex
+try:
+    from mathtex.mathtex_main import Mathtex
+    HAVE_MATHTEX = True
+except ImportError:
+    HAVE_MATHTEX = False
 
 from xml.sax.saxutils import escape as escape_xml_text
 
@@ -487,6 +491,9 @@
         """
         Draw math text using mathtex
         """
+        if not HAVE_MATHTEX:
+            return
+
         m = Mathtex(s, rcParams['mathtext.fontset'], 
prop.get_size_in_points(), 72.0)
 
         # Extract the glyphs and rects to render
@@ -592,9 +599,14 @@
 
     def get_text_width_height_descent(self, s, prop, ismath):
         if ismath:
-            m = Mathtex(s, rcParams['mathtext.fontset'],
-                        prop.get_size_in_points(), 72.0)
-            return m.width, m.height, m.depth
+            if HAVE_MATHTEX:
+                m = Mathtex(s, rcParams['mathtext.fontset'],
+                            prop.get_size_in_points(), 72.0)
+                return m.width, m.height, m.depth
+            else:
+                warnings.warn('matplotlib was compiled without mathtex 
support. ' +
+                              'Math will not be rendered.')
+                return 0.0, 0.0, 0.0
         font = self._get_font(prop)
         font.set_text(s, 0.0, flags=LOAD_NO_HINTING)
         w, h = font.get_width_height()


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

------------------------------------------------------------------------------
_______________________________________________
Matplotlib-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/matplotlib-checkins

Reply via email to