[lasem] svg: add an element category property to the SvgElementClass.



commit 52b910f5bdf36ee4f533d9da0479da4213a8245a
Author: Emmanuel Pacaud <emmanuel gnome org>
Date:   Sun Aug 8 21:41:05 2010 +0200

    svg: add an element category property to the SvgElementClass.

 src/lsmsvgcircleelement.c         |    5 +++++
 src/lsmsvgclippathelement.c       |    2 ++
 src/lsmsvgdefselement.c           |    4 ++++
 src/lsmsvgelement.c               |   16 ++++++++++++++++
 src/lsmsvgelement.h               |    4 ++++
 src/lsmsvgellipseelement.c        |    5 +++++
 src/lsmsvgenums.h                 |   16 ++++++++++++++++
 src/lsmsvggelement.c              |    5 +++++
 src/lsmsvgimageelement.c          |    4 ++++
 src/lsmsvglineargradientelement.c |    2 ++
 src/lsmsvglineelement.c           |    5 +++++
 src/lsmsvgmarkerelement.c         |    2 ++
 src/lsmsvgmaskelement.c           |    2 ++
 src/lsmsvgpathelement.c           |    4 ++++
 src/lsmsvgpatternelement.c        |    2 ++
 src/lsmsvgpolygonelement.c        |    5 +++++
 src/lsmsvgpolylineelement.c       |    5 +++++
 src/lsmsvgradialgradientelement.c |    2 ++
 src/lsmsvgrectelement.c           |    5 +++++
 src/lsmsvgstopelement.c           |    2 ++
 src/lsmsvgsvgelement.c            |    4 ++++
 src/lsmsvgsymbolelement.c         |    5 +++++
 src/lsmsvgtextelement.c           |    4 ++++
 src/lsmsvgtspanelement.c          |    4 ++++
 src/lsmsvguseelement.c            |    5 +++++
 25 files changed, 119 insertions(+), 0 deletions(-)
---
diff --git a/src/lsmsvgcircleelement.c b/src/lsmsvgcircleelement.c
index 1cce8c4..2e5b933 100644
--- a/src/lsmsvgcircleelement.c
+++ b/src/lsmsvgcircleelement.c
@@ -129,6 +129,11 @@ lsm_svg_circle_element_class_init (LsmSvgCircleElementClass *s_rect_class)
 
 	d_node_class->get_node_name = lsm_svg_circle_element_get_node_name;
 
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_GRAPHICS |
+		LSM_SVG_ELEMENT_CATEGORY_SHAPE |
+		LSM_SVG_ELEMENT_CATEGORY_BASIC_SHAPE;
+
 	s_element_class->render = lsm_svg_circle_element_render;
 	s_element_class->get_extents = lsm_svg_circle_element_get_extents;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
diff --git a/src/lsmsvgclippathelement.c b/src/lsmsvgclippathelement.c
index 70ac631..9a8aa54 100644
--- a/src/lsmsvgclippathelement.c
+++ b/src/lsmsvgclippathelement.c
@@ -117,6 +117,8 @@ lsm_svg_clip_path_element_class_init (LsmSvgClipPathElementClass *klass)
 
 	d_node_class->get_node_name = _clip_path_element_get_node_name;
 
+	s_element_class->category = LSM_SVG_ELEMENT_CATEGORY_NONE;
+
 	s_element_class->render = lsm_svg_clip_path_element_render;
 	s_element_class->enable_rendering = lsm_svg_clip_path_element_enable_rendering;
 
diff --git a/src/lsmsvgdefselement.c b/src/lsmsvgdefselement.c
index 50e34dc..cd4c092 100644
--- a/src/lsmsvgdefselement.c
+++ b/src/lsmsvgdefselement.c
@@ -63,6 +63,10 @@ lsm_svg_defs_element_class_init (LsmSvgDefsElementClass *s_g_class)
 
 	d_node_class->get_node_name = lsm_svg_defs_element_get_node_name;
 
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_CONTAINER |
+		LSM_SVG_ELEMENT_CATEGORY_STRUCTURAL;
+
 	s_element_class->render = NULL;
 }
 
diff --git a/src/lsmsvgelement.c b/src/lsmsvgelement.c
index 5b18d6a..3995b00 100644
--- a/src/lsmsvgelement.c
+++ b/src/lsmsvgelement.c
@@ -46,6 +46,12 @@ lsm_svg_element_can_append_child (LsmDomNode *self, LsmDomNode *child)
 static gboolean
 lsm_svg_element_child_changed (LsmDomNode *parent, LsmDomNode *child)
 {
+#if 0
+	if (LSM_IS_SVG_ELEMENT (child) &&
+	    lsm_svg_element_get_category (LSM_SVG_ELEMENT (child)) == 0)
+		g_warning ("Category not defined for '%s'", lsm_dom_node_get_node_name (child));
+#endif
+
 	return TRUE;
 }
 
@@ -93,6 +99,14 @@ lsm_svg_element_get_attribute (LsmDomElement *self, const char *name)
 
 /* LsmSvgElement implementation */
 
+LsmSvgElementCategory
+lsm_svg_element_get_category (LsmSvgElement *element)
+{
+	LsmSvgElementClass *s_element_class = LSM_SVG_ELEMENT_GET_CLASS (element);
+
+	return s_element_class != NULL ? s_element_class->category : 0;
+}
+
 static void
 _render (LsmSvgElement *element, LsmSvgView *view)
 {
@@ -301,6 +315,8 @@ lsm_svg_element_class_init (LsmSvgElementClass *s_element_class)
 	d_element_class->get_attribute = lsm_svg_element_get_attribute;
 	d_element_class->set_attribute = lsm_svg_element_set_attribute;
 
+	s_element_class->category = 0;
+
 	s_element_class->render = _render;
 	s_element_class->get_extents = _get_extents;
 	s_element_class->attribute_manager = lsm_attribute_manager_new (G_N_ELEMENTS (lsm_svg_attribute_infos),
diff --git a/src/lsmsvgelement.h b/src/lsmsvgelement.h
index 43f9f8f..2716bd8 100644
--- a/src/lsmsvgelement.h
+++ b/src/lsmsvgelement.h
@@ -57,6 +57,8 @@ struct _LsmSvgElementClass {
 
 	LsmAttributeManager *attribute_manager;
 
+	LsmSvgElementCategory category;
+
 	void		(*enable_rendering)	(LsmSvgElement *element);
 	void 		(*render)		(LsmSvgElement *element, LsmSvgView *view);
 	void 		(*get_extents)		(LsmSvgElement *element, LsmSvgView *view, LsmExtents *extents);
@@ -64,6 +66,8 @@ struct _LsmSvgElementClass {
 
 GType lsm_svg_element_get_type (void);
 
+LsmSvgElementCategory	lsm_svg_element_get_category	(LsmSvgElement *element);
+
 void 		lsm_svg_element_render 		(LsmSvgElement *element, LsmSvgView *view);
 void 		lsm_svg_element_force_render 	(LsmSvgElement *element, LsmSvgView *view);
 void		lsm_svg_element_get_extents	(LsmSvgElement *element, LsmSvgView *view, LsmExtents *extents);
diff --git a/src/lsmsvgellipseelement.c b/src/lsmsvgellipseelement.c
index dd51854..549fed0 100644
--- a/src/lsmsvgellipseelement.c
+++ b/src/lsmsvgellipseelement.c
@@ -118,6 +118,11 @@ lsm_svg_ellipse_element_class_init (LsmSvgEllipseElementClass *s_rect_class)
 
 	d_node_class->get_node_name = lsm_svg_ellipse_element_get_node_name;
 
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_GRAPHICS |
+		LSM_SVG_ELEMENT_CATEGORY_SHAPE |
+		LSM_SVG_ELEMENT_CATEGORY_BASIC_SHAPE;
+
 	s_element_class->render = lsm_svg_ellipse_element_render;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
 
diff --git a/src/lsmsvgenums.h b/src/lsmsvgenums.h
index 18e150d..1337be1 100644
--- a/src/lsmsvgenums.h
+++ b/src/lsmsvgenums.h
@@ -195,6 +195,22 @@ typedef enum {
 const char * 		lsm_svg_comp_op_to_string 	(LsmSvgCompOp comp_op);
 LsmSvgCompOp		lsm_svg_comp_op_from_string	(const char *string);
 
+typedef enum {
+	LSM_SVG_ELEMENT_CATEGORY_NONE			= 1 << 0,
+	LSM_SVG_ELEMENT_CATEGORY_DESCRIPTIVE		= 1 << 1,
+	LSM_SVG_ELEMENT_CATEGORY_CONTAINER		= 1 << 2,
+	LSM_SVG_ELEMENT_CATEGORY_STRUCTURAL		= 1 << 3,
+	LSM_SVG_ELEMENT_CATEGORY_GRAPHICS_REFERENCING	= 1 << 4,
+	LSM_SVG_ELEMENT_CATEGORY_GRAPHICS		= 1 << 5,
+	LSM_SVG_ELEMENT_CATEGORY_SHAPE			= 1 << 6,
+	LSM_SVG_ELEMENT_CATEGORY_BASIC_SHAPE		= 1 << 7,
+	LSM_SVG_ELEMENT_CATEGORY_TEXT_CONTENT		= 1 << 8,
+	LSM_SVG_ELEMENT_CATEGORY_TEXT_CONTENT_CHILD	= 1 << 9,
+	LSM_SVG_ELEMENT_CATEGORY_GRADIENT		= 1 << 10,
+	LSM_SVG_ELEMENT_CATEGORY_FILTER_PRIMITIVE	= 1 << 11,
+	LSM_SVG_ELEMENT_CATEGORY_ANIMATION		= 1 << 12
+} LsmSvgElementCategory;
+
 G_END_DECLS
 
 #endif
diff --git a/src/lsmsvggelement.c b/src/lsmsvggelement.c
index 9cb136f..e52eb6d 100644
--- a/src/lsmsvggelement.c
+++ b/src/lsmsvggelement.c
@@ -58,10 +58,15 @@ static void
 lsm_svg_g_element_class_init (LsmSvgGElementClass *s_g_class)
 {
 	LsmDomNodeClass *d_node_class = LSM_DOM_NODE_CLASS (s_g_class);
+	LsmSvgElementClass *s_element_class = LSM_SVG_ELEMENT_CLASS (s_g_class);
 
 	parent_class = g_type_class_peek_parent (s_g_class);
 
 	d_node_class->get_node_name = lsm_svg_g_element_get_node_name;
+
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_CONTAINER |
+		LSM_SVG_ELEMENT_CATEGORY_STRUCTURAL;
 }
 
 G_DEFINE_TYPE (LsmSvgGElement, lsm_svg_g_element, LSM_TYPE_SVG_ELEMENT)
diff --git a/src/lsmsvgimageelement.c b/src/lsmsvgimageelement.c
index 15a7003..6201a71 100644
--- a/src/lsmsvgimageelement.c
+++ b/src/lsmsvgimageelement.c
@@ -217,6 +217,10 @@ lsm_svg_image_element_class_init (LsmSvgImageElementClass *klass)
 
 	d_element_class->set_attribute = lsm_svg_image_element_set_attribute;
 
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_GRAPHICS |
+		LSM_SVG_ELEMENT_CATEGORY_GRAPHICS_REFERENCING;
+
 	s_element_class->render = lsm_svg_image_element_render;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
 
diff --git a/src/lsmsvglineargradientelement.c b/src/lsmsvglineargradientelement.c
index d38bcc3..ac92e72 100644
--- a/src/lsmsvglineargradientelement.c
+++ b/src/lsmsvglineargradientelement.c
@@ -136,6 +136,8 @@ lsm_svg_linear_gradient_element_class_init (LsmSvgLinearGradientElementClass *s_
 
 	d_node_class->get_node_name = lsm_svg_linear_gradient_element_get_node_name;
 
+	s_element_class->category = LSM_SVG_ELEMENT_CATEGORY_GRADIENT;
+
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
 
 	lsm_attribute_manager_add_attributes (s_element_class->attribute_manager,
diff --git a/src/lsmsvglineelement.c b/src/lsmsvglineelement.c
index 663da64..a0e62bc 100644
--- a/src/lsmsvglineelement.c
+++ b/src/lsmsvglineelement.c
@@ -112,6 +112,11 @@ lsm_svg_line_element_class_init (LsmSvgLineElementClass *s_rect_class)
 
 	d_node_class->get_node_name = lsm_svg_line_element_get_node_name;
 
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_GRAPHICS |
+		LSM_SVG_ELEMENT_CATEGORY_SHAPE |
+		LSM_SVG_ELEMENT_CATEGORY_BASIC_SHAPE;
+
 	s_element_class->render = lsm_svg_line_element_render;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
 
diff --git a/src/lsmsvgmarkerelement.c b/src/lsmsvgmarkerelement.c
index 4e40e8a..8643551 100644
--- a/src/lsmsvgmarkerelement.c
+++ b/src/lsmsvgmarkerelement.c
@@ -236,6 +236,8 @@ lsm_svg_marker_element_class_init (LsmSvgMarkerElementClass *klass)
 
 	d_node_class->get_node_name = lsm_svg_marker_element_get_node_name;
 
+	s_element_class->category = LSM_SVG_ELEMENT_CATEGORY_CONTAINER;
+
 	s_element_class->render = _marker_element_render;
 	s_element_class->enable_rendering = lsm_svg_marker_element_enable_rendering;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
diff --git a/src/lsmsvgmaskelement.c b/src/lsmsvgmaskelement.c
index d7f6ebf..fe2ba84 100644
--- a/src/lsmsvgmaskelement.c
+++ b/src/lsmsvgmaskelement.c
@@ -210,6 +210,8 @@ lsm_svg_mask_element_class_init (LsmSvgMaskElementClass *klass)
 
 	d_node_class->get_node_name = _mask_element_get_node_name;
 
+	s_element_class->category = LSM_SVG_ELEMENT_CATEGORY_CONTAINER;
+
 	s_element_class->render = lsm_svg_mask_element_render;
 	s_element_class->enable_rendering = lsm_svg_mask_element_enable_rendering;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
diff --git a/src/lsmsvgpathelement.c b/src/lsmsvgpathelement.c
index 652134f..d5c3d2d 100644
--- a/src/lsmsvgpathelement.c
+++ b/src/lsmsvgpathelement.c
@@ -98,6 +98,10 @@ lsm_svg_path_element_class_init (LsmSvgPathElementClass *s_rect_class)
 
 	d_node_class->get_node_name = lsm_svg_path_element_get_node_name;
 
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_GRAPHICS |
+		LSM_SVG_ELEMENT_CATEGORY_SHAPE;
+
 	s_element_class->render = lsm_svg_path_element_render;
 	s_element_class->get_extents = lsm_svg_path_element_get_extents;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
diff --git a/src/lsmsvgpatternelement.c b/src/lsmsvgpatternelement.c
index 6a123a5..eee642a 100644
--- a/src/lsmsvgpatternelement.c
+++ b/src/lsmsvgpatternelement.c
@@ -252,6 +252,8 @@ lsm_svg_pattern_element_class_init (LsmSvgPatternElementClass *klass)
 
 	d_node_class->get_node_name = _pattern_element_get_node_name;
 
+	s_element_class->category = LSM_SVG_ELEMENT_CATEGORY_CONTAINER;
+
 	s_element_class->render = lsm_svg_pattern_element_render;
 	s_element_class->enable_rendering = lsm_svg_pattern_element_enable_rendering;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
diff --git a/src/lsmsvgpolygonelement.c b/src/lsmsvgpolygonelement.c
index 9768c8f..1b07826 100644
--- a/src/lsmsvgpolygonelement.c
+++ b/src/lsmsvgpolygonelement.c
@@ -78,6 +78,11 @@ lsm_svg_polygon_element_class_init (LsmSvgPolygonElementClass *s_rect_class)
 
 	d_node_class->get_node_name = lsm_svg_polygon_element_get_node_name;
 
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_GRAPHICS |
+		LSM_SVG_ELEMENT_CATEGORY_SHAPE |
+		LSM_SVG_ELEMENT_CATEGORY_BASIC_SHAPE;
+
 	s_element_class->render = lsm_svg_polygon_element_render;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
 
diff --git a/src/lsmsvgpolylineelement.c b/src/lsmsvgpolylineelement.c
index 1df16c2..90b6ee8 100644
--- a/src/lsmsvgpolylineelement.c
+++ b/src/lsmsvgpolylineelement.c
@@ -78,6 +78,11 @@ lsm_svg_polyline_element_class_init (LsmSvgPolylineElementClass *s_rect_class)
 
 	d_node_class->get_node_name = lsm_svg_polyline_element_get_node_name;
 
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_GRAPHICS |
+		LSM_SVG_ELEMENT_CATEGORY_SHAPE |
+		LSM_SVG_ELEMENT_CATEGORY_BASIC_SHAPE;
+
 	s_element_class->render = lsm_svg_polyline_element_render;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
 
diff --git a/src/lsmsvgradialgradientelement.c b/src/lsmsvgradialgradientelement.c
index 387104f..d554bc1 100644
--- a/src/lsmsvgradialgradientelement.c
+++ b/src/lsmsvgradialgradientelement.c
@@ -165,6 +165,8 @@ lsm_svg_radial_gradient_element_class_init (LsmSvgRadialGradientElementClass *s_
 
 	d_node_class->get_node_name = lsm_svg_radial_gradient_element_get_node_name;
 
+	s_element_class->category = LSM_SVG_ELEMENT_CATEGORY_GRADIENT;
+
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
 
 	lsm_attribute_manager_add_attributes (s_element_class->attribute_manager,
diff --git a/src/lsmsvgrectelement.c b/src/lsmsvgrectelement.c
index 2400636..4d66755 100644
--- a/src/lsmsvgrectelement.c
+++ b/src/lsmsvgrectelement.c
@@ -164,6 +164,11 @@ lsm_svg_rect_element_class_init (LsmSvgRectElementClass *s_rect_class)
 
 	d_node_class->get_node_name = lsm_svg_rect_element_get_node_name;
 
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_GRAPHICS |
+		LSM_SVG_ELEMENT_CATEGORY_SHAPE |
+		LSM_SVG_ELEMENT_CATEGORY_BASIC_SHAPE;
+
 	s_element_class->render = lsm_svg_rect_element_render;
 	s_element_class->get_extents = lsm_svg_rect_element_get_extents;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
diff --git a/src/lsmsvgstopelement.c b/src/lsmsvgstopelement.c
index 0291324..de15419 100644
--- a/src/lsmsvgstopelement.c
+++ b/src/lsmsvgstopelement.c
@@ -91,6 +91,8 @@ lsm_svg_stop_element_class_init (LsmSvgStopElementClass *klass)
 
 	d_node_class->get_node_name = lsm_svg_stop_element_get_node_name;
 
+	s_element_class->category = LSM_SVG_ELEMENT_CATEGORY_NONE;
+
 	s_element_class->render = lsm_svg_stop_element_render;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
 
diff --git a/src/lsmsvgsvgelement.c b/src/lsmsvgsvgelement.c
index 4fff145..7c30134 100644
--- a/src/lsmsvgsvgelement.c
+++ b/src/lsmsvgsvgelement.c
@@ -231,6 +231,10 @@ lsm_svg_svg_element_class_init (LsmSvgSvgElementClass *s_svg_class)
 
 	d_node_class->get_node_name = lsm_svg_svg_element_get_node_name;
 
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_CONTAINER |
+		LSM_SVG_ELEMENT_CATEGORY_STRUCTURAL;
+
 	s_element_class->render = _svg_element_render;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
 
diff --git a/src/lsmsvgsymbolelement.c b/src/lsmsvgsymbolelement.c
index 4eeadd3..d6f2243 100644
--- a/src/lsmsvgsymbolelement.c
+++ b/src/lsmsvgsymbolelement.c
@@ -59,10 +59,15 @@ static void
 lsm_svg_symbol_element_class_init (LsmSvgSymbolElementClass *klass)
 {
 	LsmDomNodeClass *d_node_class = LSM_DOM_NODE_CLASS (klass);
+	LsmSvgElementClass *s_element_class = LSM_SVG_ELEMENT_CLASS (klass);
 
 	parent_class = g_type_class_peek_parent (klass);
 
 	d_node_class->get_node_name = lsm_svg_symbol_element_get_node_name;
+
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_CONTAINER |
+		LSM_SVG_ELEMENT_CATEGORY_STRUCTURAL;
 }
 
 G_DEFINE_TYPE (LsmSvgSymbolElement, lsm_svg_symbol_element, LSM_TYPE_SVG_ELEMENT)
diff --git a/src/lsmsvgtextelement.c b/src/lsmsvgtextelement.c
index 3e5647d..6d85c2e 100644
--- a/src/lsmsvgtextelement.c
+++ b/src/lsmsvgtextelement.c
@@ -129,6 +129,10 @@ lsm_svg_text_element_class_init (LsmSvgTextElementClass *s_text_class)
 	d_node_class->get_node_name = lsm_svg_text_element_get_node_name;
 	d_node_class->can_append_child = lsm_svg_text_element_can_append_child;
 
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_GRAPHICS |
+		LSM_SVG_ELEMENT_CATEGORY_TEXT_CONTENT;
+
 	s_element_class->render = lsm_svg_text_element_render;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
 
diff --git a/src/lsmsvgtspanelement.c b/src/lsmsvgtspanelement.c
index 776cb07..561fd02 100644
--- a/src/lsmsvgtspanelement.c
+++ b/src/lsmsvgtspanelement.c
@@ -127,6 +127,10 @@ lsm_svg_tspan_element_class_init (LsmSvgTspanElementClass *s_tspan_class)
 	d_node_class->get_node_name = lsm_svg_tspan_element_get_node_name;
 	d_node_class->can_append_child = lsm_svg_tspan_element_can_append_child;
 
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_TEXT_CONTENT |
+		LSM_SVG_ELEMENT_CATEGORY_TEXT_CONTENT_CHILD;
+
 	s_element_class->render = lsm_svg_tspan_element_render;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);
 
diff --git a/src/lsmsvguseelement.c b/src/lsmsvguseelement.c
index f040ed1..cda706b 100644
--- a/src/lsmsvguseelement.c
+++ b/src/lsmsvguseelement.c
@@ -203,6 +203,11 @@ lsm_svg_use_element_class_init (LsmSvgUseElementClass *klass)
 	d_node_class->get_node_name = lsm_svg_use_element_get_node_name;
 	d_node_class->can_append_child = lsm_svg_use_can_append_child;
 
+	s_element_class->category =
+		LSM_SVG_ELEMENT_CATEGORY_GRAPHICS |
+		LSM_SVG_ELEMENT_CATEGORY_GRAPHICS_REFERENCING |
+		LSM_SVG_ELEMENT_CATEGORY_STRUCTURAL;
+
 	s_element_class->render = lsm_svg_use_element_render;
 	s_element_class->get_extents = lsm_svg_use_element_get_extents;
 	s_element_class->attribute_manager = lsm_attribute_manager_duplicate (s_element_class->attribute_manager);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]