[cairo] Contributing pyCairoChart
stevech1097 at yahoo.com.au
Wed May 24 20:03:17 PDT 2006
On Tue, 2006-05-23 at 22:54 +0200, Martin Lesser wrote:
> Hi all,
> looking for a python-module to create dynamic charts for several weeks
> with no success resulted in creating my own module based on cairo:
> For me it works like demanded, comments and more are welcome.
It looks very good.
Here's how I would modify it to support output to PNG/PS/PDF/SVG:
Make the draw_bars/data/dots/grid/lines methods private, so the public
API is just to create a Chart, set its attributes, and output the chart.
img = CairoChart.Chart()
draw_*() methods are not explicitly called, the drawing is done
automatically by the out2png() method.
Modify Chart.__init__ so it does not create the cairo surface, context
Rename out2png() to output() and use something like:
def output (self, _file):
self.img = cairo.ImageSurface(cairo.FORMAT_ARGB32,
if not cairo.HAS_PS_SURFACE:
raise SystemExit ('cairo was not compiled with PS support')
self.img = cairo.PSSurface (_file, width_in_points,
if not cairo.HAS_PDF_SURFACE:
raise SystemExit ('cairo was not compiled with PDF support')
self.img = cairo.PDFSurface (_file, width_in_points,
if not cairo.HAS_SVG_SURFACE:
raise SystemExit ('cairo was not compiled with SVG support')
self.img = cairo.SVGSurface (_file, width_in_points,
self.ctx = cairo.Context(self.img)
# draw the chart ...
# save the result:
# for PNG: self.img.write_to_png(_file)
# for PS/PDF/SVG: self.ctx.show_page()
Send instant messages to your online friends http://au.messenger.yahoo.com
More information about the cairo