[lasem/properties] [SVG] Property list WIP.



commit 94c0da85f52044a7717176b9fbab8351c3017834
Author: Emmanuel Pacaud <emmanuel pacaud lapp in2p3 fr>
Date:   Fri Aug 7 10:21:31 2009 +0200

    [SVG] Property list WIP.

 src/lsmproperties.c         |    3 ---
 src/lsmsvgclippathelement.c |   43 ++++++++-----------------------------------
 src/lsmsvgelement.c         |    6 ++++--
 src/lsmsvgmaskelement.c     |   19 +++++++++++++------
 src/lsmsvgpatternelement.c  |   20 ++++++++++++++------
 5 files changed, 39 insertions(+), 52 deletions(-)
---
diff --git a/src/lsmproperties.c b/src/lsmproperties.c
index 1a1406b..4f8dd35 100644
--- a/src/lsmproperties.c
+++ b/src/lsmproperties.c
@@ -317,9 +317,6 @@ void lsm_property_manager_init_default_style (LsmPropertyManager *property_manag
 		property_infos = &property_manager->property_infos[i];
 		trait_class = property_infos->trait_class;
 
-		lsm_debug ("Init default property '%s' with '%s'",
-			   property_infos->name, property_infos->trait_default);
-
 		property = g_slice_alloc0 (PROPERTY_SIZE (trait_class));
 		property->id = property_infos->id;
 		property->value = g_strdup (property_infos->trait_default);
diff --git a/src/lsmsvgclippathelement.c b/src/lsmsvgclippathelement.c
index bb8079c..9409733 100644
--- a/src/lsmsvgclippathelement.c
+++ b/src/lsmsvgclippathelement.c
@@ -36,34 +36,22 @@ _clip_path_element_get_node_name (LsmDomNode *node)
 
 /* LsmSvgElement implementation */
 
-#if 0
-static void
-_clip_path_element_update (LsmSvgElement *self, LsmSvgStyle *parent_style)
-{
-	LsmSvgClipPathElement *pattern = LSM_SVG_CLIP_PATH_ELEMENT (self);
-	LsmSvgPatternUnits units;
-
-	units = LSM_SVG_PATTERN_UNITS_USER_SPACE_ON_USE;
-	lsm_svg_pattern_units_attribute_parse (&pattern->units, &units);
-
-	LSM_SVG_ELEMENT_CLASS (parent_class)->update (self, parent_style);
-}
-#endif
-
-/*static void*/
-/*_clip_path_element_render_clip (LsmSvgElement *self, LsmSvgView *view)*/
 static void
 lsm_svg_clip_path_element_render (LsmSvgElement *self, LsmSvgView *view)
 {
 	LsmSvgClipPathElement *clip = LSM_SVG_CLIP_PATH_ELEMENT (self);
 	gboolean is_object_bounding_box;
+	LsmSvgStyle *style;
 
 	if (!clip->enable_rendering) {
 		lsm_debug ("[LsmSvgClipPathElement::render] Direct rendering not allowed");
 		return;
+	} else {
+		clip->enable_rendering = FALSE;
 	}
 
-	clip->enable_rendering = FALSE;
+	style = lsm_svg_style_new_inherited (NULL, &self->property_bag);
+	lsm_svg_view_push_style (view, style);
 
 	is_object_bounding_box = (clip->units.value == LSM_SVG_PATTERN_UNITS_OBJECT_BOUNDING_BOX);
 
@@ -84,6 +72,9 @@ lsm_svg_clip_path_element_render (LsmSvgElement *self, LsmSvgView *view)
 		lsm_svg_view_pop_matrix (view);
 		lsm_svg_view_pop_viewbox (view);
 	}
+
+	lsm_svg_view_pop_style (view);
+	lsm_svg_style_free (style);
 }
 
 static void
@@ -105,16 +96,6 @@ lsm_svg_clip_path_element_init (LsmSvgClipPathElement *self)
 {
 	self->enable_rendering = FALSE;
 	self->units.value = units_default;
-
-	/* Hack - Force the creation of the attribute bags,
-	   making sure the properties will be inherited from the
-	   pattern element ancestor, not the referencing one. */
-
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "fill", NULL);
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "stroke", NULL);
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "transform", NULL);
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "font-family", NULL);
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "stop-color", NULL);
 }
 
 /* LsmSvgClipPathElement class */
@@ -138,9 +119,6 @@ lsm_svg_clip_path_element_class_init (LsmSvgClipPathElementClass *klass)
 
 	d_node_class->get_node_name = _clip_path_element_get_node_name;
 
-/*        s_element_class->update = _clip_path_element_update;*/
-/*        s_element_class->render_clip = _clip_path_element_render_clip;*/
-/*        s_element_class->render = NULL;*/
 	s_element_class->render = lsm_svg_clip_path_element_render;
 	s_element_class->enable_rendering = lsm_svg_clip_path_element_enable_rendering;
 
@@ -149,11 +127,6 @@ lsm_svg_clip_path_element_class_init (LsmSvgClipPathElementClass *klass)
 	lsm_attribute_manager_add_attributes (s_element_class->attribute_manager,
 					      G_N_ELEMENTS (lsm_svg_clip_path_element_attribute_infos),
 					      lsm_svg_clip_path_element_attribute_infos);
-
-/*        s_element_class->attributes = lsm_dom_attribute_map_duplicate (s_element_class->attributes);*/
-
-/*        lsm_dom_attribute_map_add_attribute (s_element_class->attributes, "clipPathUnits",*/
-/*                                             offsetof (LsmSvgClipPathElement, units));*/
 }
 
 G_DEFINE_TYPE (LsmSvgClipPathElement, lsm_svg_clip_path_element, LSM_TYPE_SVG_ELEMENT)
diff --git a/src/lsmsvgelement.c b/src/lsmsvgelement.c
index 2a11892..a12fa49 100644
--- a/src/lsmsvgelement.c
+++ b/src/lsmsvgelement.c
@@ -197,8 +197,8 @@ lsm_svg_element_render (LsmSvgElement *element, LsmSvgView *view)
 	if (!lsm_svg_matrix_is_identity (&element->transform.matrix))
 		lsm_svg_view_push_matrix (view, &element->transform.matrix);
 
-	lsm_svg_view_push_style (view, style);
 	lsm_svg_view_push_element (view, element);
+	lsm_svg_view_push_style (view, style);
 
 	element_class = LSM_SVG_ELEMENT_GET_CLASS (element);
 	if (element_class->render != NULL) {
@@ -209,12 +209,14 @@ lsm_svg_element_render (LsmSvgElement *element, LsmSvgView *view)
 		element_class->render (element, view);
 	}
 
-	lsm_svg_view_pop_element (view);
 	lsm_svg_view_pop_style (view);
+	lsm_svg_view_pop_element (view);
 
 /*        if (matrix != NULL)*/
 	if (!lsm_svg_matrix_is_identity (&element->transform.matrix))
 		lsm_svg_view_pop_matrix (view);
+
+	lsm_svg_style_free (style);
 }
 
 static void
diff --git a/src/lsmsvgmaskelement.c b/src/lsmsvgmaskelement.c
index dff2e23..20dfb59 100644
--- a/src/lsmsvgmaskelement.c
+++ b/src/lsmsvgmaskelement.c
@@ -77,13 +77,17 @@ lsm_svg_mask_element_render (LsmSvgElement *self, LsmSvgView *view)
 	gboolean is_object_bounding_box;
 	LsmBox viewport;
 	const LsmBox *mask_extents;
+	LsmSvgStyle *style;
 
 	if (!mask->enable_rendering) {
 		lsm_debug ("[LsmSvgMaskElement::render] Direct rendering not allowed");
 		return;
+	} else {
+		mask->enable_rendering = FALSE;
 	}
 
-	mask->enable_rendering = FALSE;
+	style = lsm_svg_style_new_inherited (NULL, &self->property_bag);
+	lsm_svg_view_push_style (view, style);
 
 	mask_extents = lsm_svg_view_get_pattern_extents (view);
 
@@ -147,6 +151,9 @@ lsm_svg_mask_element_render (LsmSvgElement *self, LsmSvgView *view)
 		lsm_svg_view_pop_matrix (view);
 		lsm_svg_view_pop_viewbox (view);
 	}
+
+	lsm_svg_view_pop_style (view);
+	lsm_svg_style_free (style);
 }
 
 static void
@@ -183,11 +190,11 @@ lsm_svg_mask_element_init (LsmSvgMaskElement *self)
 	   making sure the properties will be inherited from the
 	   mask element ancestor, not the referencing one. */
 
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "fill", NULL);
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "stroke", NULL);
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "transform", NULL);
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "font-family", NULL);
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "stop-color", NULL);
+/*        lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "fill", NULL);*/
+/*        lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "stroke", NULL);*/
+/*        lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "transform", NULL);*/
+/*        lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "font-family", NULL);*/
+/*        lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "stop-color", NULL);*/
 }
 
 /* LsmSvgMaskElement class */
diff --git a/src/lsmsvgpatternelement.c b/src/lsmsvgpatternelement.c
index 870ab1c..63c3985 100644
--- a/src/lsmsvgpatternelement.c
+++ b/src/lsmsvgpatternelement.c
@@ -83,13 +83,18 @@ lsm_svg_pattern_element_render (LsmSvgElement *self, LsmSvgView *view)
 	gboolean is_viewbox_defined;
 	LsmBox viewport;
 	const LsmBox *pattern_extents;
+	LsmSvgStyle *style;
 
 	if (!pattern->enable_rendering) {
 		lsm_debug ("[LsmSvgPatternElement::render] Direct rendering not allowed");
 		return;
+	} else {
+		pattern->enable_rendering = FALSE;
 	}
 
-	pattern->enable_rendering = FALSE;
+
+	style = lsm_svg_style_new_inherited (NULL, &self->property_bag);
+	lsm_svg_view_push_style (view, style);
 
 	pattern_extents = lsm_svg_view_get_pattern_extents (view);
 
@@ -165,6 +170,9 @@ lsm_svg_pattern_element_render (LsmSvgElement *self, LsmSvgView *view)
 		lsm_svg_view_pop_matrix (view);
 		lsm_svg_view_pop_viewbox (view);
 	}
+
+	lsm_svg_view_pop_style (view);
+	lsm_svg_style_free (style);
 }
 
 static void
@@ -209,11 +217,11 @@ lsm_svg_pattern_element_init (LsmSvgPatternElement *self)
 	   making sure the properties will be inherited from the
 	   pattern element ancestor, not the referencing one. */
 
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "fill", NULL);
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "stroke", NULL);
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "transform", NULL);
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "font-family", NULL);
-	lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "stop-color", NULL);
+/*        lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "fill", NULL);*/
+/*        lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "stroke", NULL);*/
+/*        lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "transform", NULL);*/
+/*        lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "font-family", NULL);*/
+/*        lsm_dom_element_set_attribute (LSM_DOM_ELEMENT (self), "stop-color", NULL);*/
 }
 
 /* LsmSvgPatternElement class */



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