> In
> element.h, I find the following:
>
> void element_update_handles(Element *elem);
> /* What does this do? */
> void element_update_boundingbox(Element *elem);
> /* What does that do? */
> void element_init(Element *elem, int num_handles,
> int num_connections);
> void element_destroy(Element *elem);
> void element_copy(Element *from, Element *to);
> void element_move_handle(Element *elem, HandleId id,
> Point *to, HandleMoveReason reason);
> /* Here goes much functionality. How to implement standard
> behaviour? (As described in Part III) */
> void element_move_handle_aspect(Element *elem, HandleId id,
> Point *to, real aspect_ratio);
> /* Why this? Does this differ from move_handle? Do we need it? */
>
> void element_save(Element *elem, ObjectNode obj_node);
> void element_load(Element *elem, ObjectNode obj_node);
> /* This certainly belongs to the parser, right? It seems that this
> relies on DOM to work. How to integrate SAX here? */
>
> /* Do we have to implement more stuff? If so, what stuff? How much
> and what code can we C&P from custom shapes? */
>
> I'm glad you've read this far. If you know some answers, please post.
> I hope we can go into the implementation once these Qs are answered.
> cu Andre
>
> 8<-----------------------------UrShape.h--------------------->8
>
> /* urshape.h : defining the generic UrShape */
> #ifndef URSHAPE_H
> #define URSHAPE_H
>
> #include "element.h"
> /* What else has to be included? */
>
> typedef enum _UrContainerType UrContainerType;
> typedef struct _UrContainer UrContainer;
> typedef struct _UrShape UrShape;
>
> enum _UrContainerType {
> SINGLE,
> HORIZANTAL_ARRAY,
> VERTICAL_ARRAY,
> TABLE
> };
>
> struct _UrContainer {
> Point relative_position;
> UrContainerType type; /* This will define behaviour */
> GList *rows; /* The left border of rows */
> GList *columns; /* The upper border of columns */
> }
>
> struct _UrShape {
> Element element; /* Inheritance (C sometimes sucks ;) */
>
This is why I want to use GObject since it brings OO to C in a more
complete manner well, more standardized (by GTK+) manner. I guess we can
wait until the rest of Dia moves to GObject and GTK 2.0 compliance.
>
> /* UrShape container stuff */
> UrContainer *embedding; /* NULL if free,
> "parent's" container else */
> int row,column; /* For all but SINGLE, it'll be nice to know in what
> row/column the UrShape is embedded. */
> GList *childrenContainers; /* The containers I have */
>
> /* The miniDOM. Thanx to Cyrille, now it _is_ mini. */
> UrShape *parent_shape;
> GList *self; /* this->self->data == this */
> GList *children; /* (this->children->data->parent_shape == this ||
> this->children == NULL) */
> };
>
> #endif
>
> _______________________________________________
> Dia-list mailing list
> Dia-list gnome org
> http://mail.gnome.org/mailman/listinfo/dia-list
--J5