X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fsp-item-group.h;h=65a51055a79aab462eb760c4a9d1a7cff0dcce82;hb=94d56a52b13080070ff669dad70d404ecc53c68e;hp=578454c9237e6591ad55fa7389c8168ab6cc8d47;hpb=6b15695578f07a3f72c4c9475c1a261a3021472a;p=inkscape.git diff --git a/src/sp-item-group.h b/src/sp-item-group.h index 578454c92..65a51055a 100644 --- a/src/sp-item-group.h +++ b/src/sp-item-group.h @@ -14,7 +14,7 @@ */ #include -#include "sp-item.h" +#include "sp-lpe-item.h" #define SP_TYPE_GROUP (sp_group_get_type ()) #define SP_GROUP(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_GROUP, SPGroup)) @@ -22,32 +22,66 @@ #define SP_IS_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_GROUP)) #define SP_IS_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_GROUP)) -struct SPGroup : public SPItem { - enum LayerMode { GROUP, LAYER }; +#define SP_IS_LAYER(obj) (SP_IS_GROUP(obj) && SP_GROUP(obj)->layerMode() == SPGroup::LAYER) - LayerMode _layer_mode; - std::map _display_modes; +class CGroup; - LayerMode layerMode() const { return _layer_mode; } - void setLayerMode(LayerMode mode); +struct SPGroup : public SPLPEItem { + enum LayerMode { GROUP, LAYER }; - LayerMode effectiveLayerMode(unsigned int display_key) const { - if ( _layer_mode == LAYER ) { - return LAYER; - } else { - return layerDisplayMode(display_key); - } - } + LayerMode _layer_mode; + std::map _display_modes; - LayerMode layerDisplayMode(unsigned int display_key) const; - void setLayerDisplayMode(unsigned int display_key, LayerMode mode); + LayerMode layerMode() const { return _layer_mode; } + void setLayerMode(LayerMode mode); + LayerMode effectiveLayerMode(unsigned int display_key) const { + if ( _layer_mode == LAYER ) { + return LAYER; + } else { + return layerDisplayMode(display_key); + } + } + + LayerMode layerDisplayMode(unsigned int display_key) const; + void setLayerDisplayMode(unsigned int display_key, LayerMode mode); + void translateChildItems(Geom::Translate const &tr); + + CGroup *group; + private: - void _updateLayerMode(unsigned int display_key=0); + void _updateLayerMode(unsigned int display_key=0); }; struct SPGroupClass { - SPItemClass parent_class; + SPLPEItemClass parent_class; +}; + +/* + * Virtual methods of SPGroup + */ +class CGroup { +public: + CGroup(SPGroup *group); + virtual ~CGroup(); + + virtual void onChildAdded(Inkscape::XML::Node *child); + virtual void onChildRemoved(Inkscape::XML::Node *child); + virtual void onUpdate(SPCtx *ctx, unsigned int flags); + virtual void onModified(guint flags); + virtual void calculateBBox(NRRect *bbox, Geom::Matrix const &transform, unsigned const flags); + virtual void onPrint(SPPrintContext *ctx); + virtual void onOrderChanged(Inkscape::XML::Node *child, Inkscape::XML::Node *old_ref, Inkscape::XML::Node *new_ref); + virtual gchar *getDescription(); + virtual NRArenaItem *show (NRArena *arena, unsigned int key, unsigned int flags); + virtual void hide (unsigned int key); + + gint getItemCount(); + +protected: + virtual void _showChildren (NRArena *arena, NRArenaItem *ai, unsigned int key, unsigned int flags); + + SPGroup *_group; }; GType sp_group_get_type (void); @@ -59,3 +93,14 @@ GSList *sp_item_group_item_list (SPGroup *group); SPObject *sp_item_group_get_child_by_name (SPGroup *group, SPObject *ref, const gchar *name); #endif + +/* + Local Variables: + mode:c++ + c-file-style:"stroustrup" + c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) + indent-tabs-mode:nil + fill-column:99 + End: +*/ +// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :