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