~mc.../inkscape/inkscape

« back to all changes in this revision

Viewing changes to src/sp-item-group.h

  • Committer: mental
  • Date: 2006-01-16 02:36:01 UTC
  • Revision ID: mental@users.sourceforge.net-20060116023601-wkr0h7edl5veyudq
moving trunk for module inkscape

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef __SP_ITEM_GROUP_H__
 
2
#define __SP_ITEM_GROUP_H__
 
3
 
 
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
 */
 
15
 
 
16
#include <map>
 
17
#include "sp-item.h"
 
18
 
 
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))
 
24
 
 
25
struct SPGroup : public SPItem {
 
26
        enum LayerMode { GROUP, LAYER };
 
27
 
 
28
        LayerMode _layer_mode;
 
29
        std::map<unsigned int, LayerMode> _display_modes;
 
30
 
 
31
        LayerMode layerMode() const { return _layer_mode; }
 
32
        void setLayerMode(LayerMode mode);
 
33
 
 
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
        }
 
41
 
 
42
        LayerMode layerDisplayMode(unsigned int display_key) const;
 
43
        void setLayerDisplayMode(unsigned int display_key, LayerMode mode);
 
44
 
 
45
private:
 
46
        void _updateLayerMode(unsigned int display_key=0);
 
47
};
 
48
 
 
49
struct SPGroupClass {
 
50
        SPItemClass parent_class;
 
51
};
 
52
 
 
53
GType sp_group_get_type (void);
 
54
 
 
55
void sp_item_group_ungroup (SPGroup *group, GSList **children, bool do_done = true);
 
56
 
 
57
 
 
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);
 
60
 
 
61
#endif