Mercurial > MadButterfly
diff include/mb_shapes.h @ 186:530bb7728546 include_mb_test
Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
This is the solution that I dicussed with FourDollars, last night.
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Wed, 05 Nov 2008 15:24:01 +0800 |
parents | include/mb/shapes.h@c7e5b8779bb5 |
children | bcad1ccdf45c |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/mb_shapes.h Wed Nov 05 15:24:01 2008 +0800 @@ -0,0 +1,72 @@ +/*! \file + * \brief Declare interfaces of shapes. + * + * \todo Add ellipse shape. + * \todo Add circle shape. + */ +#ifndef __SHAPES_H_ +#define __SHAPES_H_ + +#include <cairo.h> +#include "mb_types.h" +#include "mb_redraw_man.h" + +/*! \page define_shape How to Define Shapes + * + * A shape implementation must include + * - rdman_shape_*_new() + * - clear memory for shape_t member. + * - assign *_free() to \ref shape_t::free. + * - make new object been managed by a redraw manager. + * - call rdman_shape_man() + * - *_free() + * - assigned to \ref shape_t::free. + * - *_transform() + * - *_draw() + * - first member variable of a shape type must be a shape_t. + * + * Must modify + * - event.c::draw_shape_path() + * - redraw_man.c::clean_shape() + * - redraw_man.c::draw_shape() + */ + +/*! \defgroup shapes Shapes + * @{ + */ + +/*! \defgroup shape_path Shape of Path + * @{ + */ +extern shape_t *rdman_shape_path_new(redraw_man_t *rdman, char *data); +extern void sh_path_transform(shape_t *shape); +extern void sh_path_draw(shape_t *shape, cairo_t *cr); +/* @} */ + +/*! \defgroup shape_text Shape of Text + * @{ + */ +extern shape_t *rdman_shape_text_new(redraw_man_t *rdman, + const char *txt, co_aix x, co_aix y, + co_aix font_size, + cairo_font_face_t *face); +extern void sh_text_set_text(shape_t *shape, const char *txt); +extern void sh_text_transform(shape_t *shape); +extern void sh_text_draw(shape_t *shape, cairo_t *cr); +/* @} */ + +/*! \defgroup shape_rect Shape of Rectangle + * @{ + */ +extern shape_t *rdman_shape_rect_new(redraw_man_t *rdman, + co_aix x, co_aix y, + co_aix w, co_aix h, + co_aix rx, co_aix ry); +extern void sh_rect_transform(shape_t *shape); +extern void sh_rect_draw(shape_t *shape, cairo_t *cr); +extern void sh_rect_set(shape_t *shape, co_aix x, co_aix y, + co_aix w, co_aix h, co_aix rx, co_aix ry); +/* @} */ +/* @} */ + +#endif /* __SHAPES_H_ */