[rrd-developers] Re: abstraction from libart

Gifford Hesketh gifford.hesketh at gmail.com
Mon May 16 23:56:31 MEST 2005


On 5/16/05, Tobias Oetiker <oetiker at ee.ethz.ch> wrote:
> Hi Gifford,
> 
> 
> > 1.  libart is relatively unmaintained
> > The author has been busy with his thesis, and gnome developers seem to
> > be leaning toward cairo (at least Novell's mono team).
> 
> the problem is that when I last looked at cairo it was not exactly
> attractive to be used as a replacement ... sort of 'not there yet'
> 
> what seemed to be a more attractive option was
> 
> http://antigrain.com/index.html
> 
> this unfortunately is very c++ so I gave up on it ... but if
> someone wants to contribute C bindings this looks VERY cool.

Yes, I would still call cairo "experimental" -- but I like the amount
of attention it is getting from Novell.  I had also found AGG and,
like you, not wanted to mess with the C++ integration -- at least not
yet.

> 
> > 2.  other packages may offer more features
> > For some, it may be desirable to sacrifice some performance in order
> > to gain more capability.  I do not know how the performance of
> > ImageMagick, for example, compares with libart, but ImageMagick offers
> > many more output formats.
> 
> the question is what features you are looking for ...

There are not additional features that I need right now, but maybe
someone else wants something that ImageMagick or other software can
offer.  Being able to generate MPEG movies might be cool.

> > I have been reviewing rrdtool, libart, cairo, and GDI+ and have some
> > specific suggestions to make, if they would be useful.
> 
> sure by all means ...
> 
> as soon as 1.2.x slows in bug pace I will open 1.3.x and new things
> can be tried ...
> 
> cheers
> tobi

I will try to complete and maintain the work I have been doing for
1.2.x until the 1.3 branch.  My rrd_gfx interface definitions
currently look like this:


struct gfx_point_t
{
	double x;
	double y;
};
typedef struct gfx_point_t gfx_point_t;

struct gfx_rect_t
{
	double x;
	double y;
	double width;
	double height;
};
typedef struct gfx_rect_t gfx_rect_t;

struct gfx_size_t
{
	double width;
	double height;
};
typedef struct gfx_size_t gfx_size_t;


#ifdef HAVE_CAIRO
#include "rrd_gfx_cairo.h"
#endif

#ifdef HAVE_GDIPLUS
#include "rrd_gfx_gdiplus.h"
#endif

#ifdef HAVE_IMAGEMAGICK
#include "rrd_gfx_imagemagick.h"
#endif

#ifdef HAVE_LIBART
#include "rrd_gfx_libart.h"
#endif


//
// canvas
//
gfx_canvas_t * gfx_canvas_create( gfx_image_t * image );
int gfx_canvas_delete( gfx_canvas_t * canvas ); 
int gfx_canvas_render( gfx_canvas_t * canvas, gfx_image_t * image ); 

//
// circle
//
int gfx_circ_draw( gfx_canvas_t * canvas, gfx_pen_t * pen, gfx_point_t
* center, double radius );

//
// color
//
gfx_color_t * gfx_color_create( unsigned int rgb, unsigned int alpha );
int gfx_color_delete( gfx_color_t * color ); 

//
// font
//
gfx_font_t * gfx_font_create( gfx_canvas_t * canvas, char * face, double size );
int gfx_font_delete( gfx_font_t * font );

//
// image
//
gfx_image_t * gfx_image_create( char * filename, char * format,
unsigned int width, unsigned int height );
int gfx_image_delete( gfx_image_t * image );
gfx_size_t gfx_image_size( char * filename );

//
// line
//
int gfx_line_dash( gfx_canvas_t * canvas, gfx_pen_t * pen, gfx_point_t
* p1, gfx_point_t * p2 );
int gfx_line_draw( gfx_canvas_t * canvas, gfx_pen_t * pen, gfx_point_t
* p1, gfx_point_t * p2 );

//
// path
//
int gfx_path_append( gfx_path_t * path, gfx_point_t * point, int options );
gfx_path_t * gfx_path_create( gfx_canvas_t * canvas, unsigned int size );
int gfx_path_finish( gfx_path_t * path );
int gfx_path_delete( gfx_path_t * path );

//
// pen
//
gfx_pen_t * gfx_pen_create( gfx_canvas_t * canvas, gfx_color_t *
color, double width );
int gfx_pen_delete( gfx_pen_t * pen );

//
// rectangle
//
int gfx_rect_draw( gfx_canvas_t * canvas, gfx_pen_t * pen, gfx_rect_t * rect );

//
// text
//
int gfx_text_draw( gfx_canvas_t * canvas, gfx_font_t * font,
gfx_rect_t * rect, char * text, int tabsize, float rotation );
gfx_size_t gfx_text_size( gfx_canvas_t * canvas, gfx_font_t * font,
char * text, int tabsize, float rotation );

--
Unsubscribe mailto:rrd-developers-request at list.ee.ethz.ch?subject=unsubscribe
Help        mailto:rrd-developers-request at list.ee.ethz.ch?subject=help
Archive     http://lists.ee.ethz.ch/rrd-developers
WebAdmin    http://lists.ee.ethz.ch/lsg2.cgi



More information about the rrd-developers mailing list