55
66 * capstyles and join styles
77 * dashes
8- * linewidth
8+ * linewidth
99 * lines, rectangles, ellipses
1010 * clipping to a rectangle
1111 * output to RGBA and PNG
1212 * alpha blending
1313 * DPI scaling properly - everything scales properly (dashes, linewidths, etc)
14- * draw polygon
14+ * draw polygon
1515 * freetype2 w/ ft2font
1616
1717TODO:
2121 * allow load from png
2222
2323 * integrate screen dpi w/ ppi and text
24-
25- INSTALLING
24+
25+ INSTALLING
2626
2727 REQUIREMENTs
2828
3232 freetype 2
3333 libpng
3434 libz
35-
35+
3636 Install AGG2 (cut and paste below into xterm should work)
3737
3838 wget http://www.antigrain.com/agg2.tar.gz
4646
4747 Installing backend_agg
4848
49-
49+
5050 Edit setup.py: change aggsrc to point to the agg2 src tree and
5151 replace if 0: with if 1: in the backend_agg section
5252
5959
6060 Using agg backend
6161
62- python somefile.py -dAgg
62+ python somefile.py -dAgg
6363
6464 or
6565
6666 import matplotlib
6767 matplotlib.use('Agg')
68-
68+
6969
7070"""
7171from __future__ import division
9090
9191if matplotlib .numerix .which [0 ] == "numarray" :
9292 from _na_backend_agg import RendererAgg as _RendererAgg
93- else :
93+ elif matplotlib . numerix . which [ 0 ] == "numeric" :
9494 from _nc_backend_agg import RendererAgg as _RendererAgg
95+ else :
96+ from _ns_backend_agg import RendererAgg as _RendererAgg
9597
9698backend_version = 'v2.2'
9799_fontd = {} # a map from fname to font instances
@@ -102,7 +104,7 @@ class RendererAgg(RendererBase):
102104 The renderer handles all the drawing primitives using a graphics
103105 context instance that controls the colors/styles
104106 """
105-
107+
106108 debug = 1
107109 texd = {} # a cache of tex image rasters
108110 def __init__ (self , width , height , dpi ):
@@ -123,8 +125,8 @@ def __init__(self, width, height, dpi):
123125 self .draw_regpoly_collection = self ._renderer .draw_regpoly_collection
124126
125127 self .copy_from_bbox = self ._renderer .copy_from_bbox
126- self .restore_region = self ._renderer .restore_region
127-
128+ self .restore_region = self ._renderer .restore_region
129+
128130
129131 self .texmanager = TexManager ()
130132
@@ -144,7 +146,7 @@ def draw_arc(self, gcEdge, rgbFace, x, y, width, height, angle1, angle2):
144146 if __debug__ : verbose .report ('RendererAgg.draw_arc' , 'debug-annoying' )
145147 self ._renderer .draw_ellipse (
146148 gcEdge , rgbFace , x , y , width / 2 , height / 2 ) # ellipse takes radius
147-
149+
148150
149151 def _draw_image (self , x , y , im ):
150152 """
@@ -153,7 +155,7 @@ def _draw_image(self, x, y, im):
153155 """
154156 if __debug__ : verbose .report ('RendererAgg.draw_image' , 'debug-annoying' )
155157 #self._renderer.draw_image(int(x), int(self.height-y), im)
156- self ._renderer .draw_image (int (x ), int (y ), im )
158+ self ._renderer .draw_image (int (x ), int (y ), im )
157159
158160 def draw_line (self , gc , x1 , y1 , x2 , y2 ):
159161 """
@@ -173,33 +175,33 @@ def draw_point(self, gc, x, y):
173175 if __debug__ : verbose .report ('RendererAgg.draw_point' , 'debug-annoying' )
174176 rgbFace = gc .get_rgb ()
175177 self ._renderer .draw_ellipse (
176- gc , rgbFace , x , y , 0.5 , 0.5 )
178+ gc , rgbFace , x , y , 0.5 , 0.5 )
177179
178- def draw_mathtext (self , gc , x , y , s , prop , angle ):
180+ def draw_mathtext (self , gc , x , y , s , prop , angle ):
179181 """
180182 Draw the math text using matplotlib.mathtext
181183 """
182184 if __debug__ : verbose .report ('RendererAgg.draw_mathtext' , 'debug-annoying' )
183185 size = prop .get_size_in_points ()
184186 width , height , fonts = math_parse_s_ft2font (
185187 s , self .dpi .get (), size , angle )
186-
188+
187189 if angle == 90 :
188190 width , height = height , width
189191 for font in fonts :
190- if angle == 90 :
192+ if angle == 90 :
191193 font .horiz_image_to_vert_image () # <-- Rotate
192194 self ._renderer .draw_text ( font , int (x )- width , int (y )- height , gc )
193195 else :
194- self ._renderer .draw_text ( font , int (x ), int (y )- height , gc )
196+ self ._renderer .draw_text ( font , int (x ), int (y )- height , gc )
195197 if 0 :
196198 self ._renderer .draw_rectangle (gc , None ,
197199 int (x ),
198200 self .height - int (y ),
199201 width , height )
200202
201203
202-
204+
203205 def draw_text (self , gc , x , y , s , prop , angle , ismath ):
204206 """
205207 Render the text
@@ -219,9 +221,9 @@ def draw_text(self, gc, x, y, s, prop, angle, ismath):
219221 font .draw_glyphs_to_bitmap ()
220222
221223 #print x, y, int(x), int(y)
222-
224+
223225 self ._renderer .draw_text (font , int (x ), int (y ), gc )
224-
226+
225227
226228 def get_text_width_height (self , s , prop , ismath , rgb = (0 ,0 ,0 )):
227229 """
@@ -240,7 +242,7 @@ def get_text_width_height(self, s, prop, ismath, rgb=(0,0,0)):
240242 Z = self .texmanager .get_rgba (s , size , dpi , rgb )
241243 m ,n ,tmp = Z .shape
242244 return n ,m
243-
245+
244246 if ismath :
245247 width , height , fonts = math_parse_s_ft2font (
246248 s , self .dpi .get (), prop .get_size_in_points ())
@@ -285,13 +287,13 @@ def func(x):
285287 Z [:,:,3 ] = func (a )
286288 im = fromarray (Z , 1 )
287289 im .flipud_out ()
288- self .texd [key ] = im
290+ self .texd [key ] = im
289291
290292 cliprect = gc .get_clip_rectangle ()
291293 if cliprect is None : bbox = None
292294 else : bbox = lbwh_to_bbox (* cliprect )
293295 self .draw_image (x , self .height - y , im , bbox )
294-
296+
295297 def get_canvas_width_height (self ):
296298 'return the canvas width and height in display coords'
297299 return self .width , self .height
@@ -305,7 +307,7 @@ def _get_agg_font(self, prop):
305307
306308 key = hash (prop )
307309 font = _fontd .get (key )
308-
310+
309311 if font is None :
310312 fname = fontManager .findfont (prop )
311313 font = FT2Font (str (fname ))
@@ -333,16 +335,16 @@ def tostring_rgb(self):
333335 def tostring_argb (self ):
334336 if __debug__ : verbose .report ('RendererAgg.tostring_argb' , 'debug-annoying' )
335337 return self ._renderer .tostring_argb ()
336-
338+
337339 def buffer_rgba (self ,x ,y ):
338340 if __debug__ : verbose .report ('RendererAgg.buffer_rgba' , 'debug-annoying' )
339341 return self ._renderer .buffer_rgba (x ,y )
340-
342+
341343 def clear (self ):
342344 self ._renderer .clear ()
343-
344345
345-
346+
347+
346348def new_figure_manager (num , * args , ** kwargs ):
347349 """
348350 Create a new figure manager instance
@@ -363,7 +365,7 @@ class FigureCanvasAgg(FigureCanvasBase):
363365 Public attribute
364366
365367 figure - A Figure instance
366- """
368+ """
367369
368370 def copy_from_bbox (self , bbox ):
369371 renderer = self .get_renderer ()
@@ -372,7 +374,7 @@ def copy_from_bbox(self, bbox):
372374 def restore_region (self , region ):
373375 renderer = self .get_renderer ()
374376 return renderer .restore_region (region )
375-
377+
376378 def draw (self ):
377379 """
378380 Draw the figure using the renderer
@@ -393,19 +395,19 @@ def get_renderer(self):
393395 self .renderer = RendererAgg (w , h , self .figure .dpi )
394396 self ._lastKey = key
395397 return self .renderer
396-
398+
397399 def tostring_rgb (self ):
398400 if __debug__ : verbose .report ('FigureCanvasAgg.tostring_rgb' , 'debug-annoying' )
399401 return self .renderer .tostring_rgb ()
400402
401403 def tostring_argb (self ):
402404 if __debug__ : verbose .report ('FigureCanvasAgg.tostring_argb' , 'debug-annoying' )
403405 return self .renderer .tostring_argb ()
404-
406+
405407 def buffer_rgba (self ,x ,y ):
406408 if __debug__ : verbose .report ('FigureCanvasAgg.buffer_rgba' , 'debug-annoying' )
407409 return self .renderer .buffer_rgba (x ,y )
408-
410+
409411 def print_figure (self , filename , dpi = 150 ,
410412 facecolor = 'w' , edgecolor = 'w' ,
411413 orientation = 'portrait' ):
@@ -424,7 +426,7 @@ def print_figure(self, filename, dpi=150,
424426 """
425427 if __debug__ : verbose .report ('FigureCanvasAgg.print_figure' , 'debug-annoying' )
426428
427-
429+
428430
429431 # store the orig figure dpi, color and size information so we
430432 # can restore them later. For image creation alone, this is
@@ -455,7 +457,7 @@ def print_figure(self, filename, dpi=150,
455457 if not len (ext ):
456458 ext = '.png'
457459 filename += ext
458-
460+
459461 ext = ext .lower ()
460462 if (ext .find ('rgb' )>= 0 or
461463 ext .find ('raw' )>= 0 or
0 commit comments