Code

578454c9237e6591ad55fa7389c8168ab6cc8d47
[inkscape.git] / src / sp-item-group.h
1 #ifndef __SP_ITEM_GROUP_H__
2 #define __SP_ITEM_GROUP_H__
4 /*
5  * SVG <g> implementation
6  *
7  * Authors:
8  *   Lauris Kaplinski <lauris@kaplinski.com>
9  *
10  * Copyright (C) 1999-2002 authors
11  * Copyright (C) 2000-2001 Ximian, Inc.
12  *
13  * Released under GNU GPL, read the file 'COPYING' for more information
14  */
16 #include <map>
17 #include "sp-item.h"
19 #define SP_TYPE_GROUP            (sp_group_get_type ())
20 #define SP_GROUP(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_GROUP, SPGroup))
21 #define SP_GROUP_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_GROUP, SPGroupClass))
22 #define SP_IS_GROUP(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_GROUP))
23 #define SP_IS_GROUP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_GROUP))
25 struct SPGroup : public SPItem {
26         enum LayerMode { GROUP, LAYER };
28         LayerMode _layer_mode;
29         std::map<unsigned int, LayerMode> _display_modes;
31         LayerMode layerMode() const { return _layer_mode; }
32         void setLayerMode(LayerMode mode);
34         LayerMode effectiveLayerMode(unsigned int display_key) const {
35                 if ( _layer_mode == LAYER ) {
36                         return LAYER;
37                 } else {
38                         return layerDisplayMode(display_key);
39                 }
40         }
42         LayerMode layerDisplayMode(unsigned int display_key) const;
43         void setLayerDisplayMode(unsigned int display_key, LayerMode mode);
45 private:
46         void _updateLayerMode(unsigned int display_key=0);
47 };
49 struct SPGroupClass {
50         SPItemClass parent_class;
51 };
53 GType sp_group_get_type (void);
55 void sp_item_group_ungroup (SPGroup *group, GSList **children, bool do_done = true);
58 GSList *sp_item_group_item_list (SPGroup *group);
59 SPObject *sp_item_group_get_child_by_name (SPGroup *group, SPObject *ref, const gchar *name);
61 #endif