[cairo] Contributing pyCairoChart

Martin Lesser ml-cairo at bettercom.de
Thu May 25 05:26:19 PDT 2006


Steven Chaplin <stevech1097 at yahoo.com.au> writes:

> 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.
>
> draw_*() methods are not explicitly called, the drawing is done
> automatically by the out2png() method.

There are some parameters I want to keep in the draw_*() methods
(i.e. "dotting" a data-line) so at the moment I think about an instance
member "drawn" as list which contains the parts of the chart which are
already drawn so an explicit call to the draw-methods is no longer
required.

> Modify Chart.__init__ so it does not create the cairo surface, context
> and matrix.

That looks impossible for me: I need the cairo_t at an early stage
especially for accessing the [text|font]_extents methods of pycairo and
calculating the drawable area for the data. Additionally it could be an
option to produce a warning if the text in title and/or legend would be
too large for the given size of a chart.

> Rename out2png() to output() and use something like:

That's a good idea, I did that. But the filename (or fileobject) are now
part of __init__ which then does a call of _cairosetup.

The current version is available at
http://bettercom.de/misc/pycairochart-0.1.1.tar.gz

(The documentation has to be updated but this will be done next week)

>
> def output (self, _file):
>     ...
>     elif _file.endswith('.svg'):
>         if not cairo.HAS_SVG_SURFACE:
>             raise SystemExit ('cairo was not compiled with SVG support')
>         self.img = cairo.SVGSurface (_file, width_in_points, 
>                                      height_in_points)

My pycairo does not have the *SVG* members/methods also I compiled with
SVG-support. But I can import cairo.svg which does not have the needed
members/methods too. I'm using pycairo-1.0.2 built against cairo-1.1.6
Did I miss something?

Martin

-- 
http://bettercom.de/auctiontools/ and http://bettercom.de/


More information about the cairo mailing list