summaryrefslogtreecommitdiff
path: root/rsvg.c
diff options
context:
space:
mode:
authorCaleb Michael Moore <cmoore@src.gnome.org>2005-05-16 14:45:47 +0000
committerCaleb Michael Moore <cmoore@src.gnome.org>2005-05-16 14:45:47 +0000
commita3613bf39c88d45bb3e69b2007c5f1fbe601560e (patch)
tree0f4578c2d28ff6c1cdf9b18445e39fd8da64233f /rsvg.c
parentcf2e610b3469e5a29194225accd5c06c225b2047 (diff)
downloadlibrsvg-a3613bf39c88d45bb3e69b2007c5f1fbe601560e.tar.gz
further DOM restructuring
Diffstat (limited to 'rsvg.c')
-rw-r--r--rsvg.c44
1 files changed, 21 insertions, 23 deletions
diff --git a/rsvg.c b/rsvg.c
index 3975ad30..8d9657cd 100644
--- a/rsvg.c
+++ b/rsvg.c
@@ -199,6 +199,8 @@ rsvg_filter_handler_start (RsvgHandle *ctx, const xmlChar *name,
newnode = rsvg_new_filter_primitive_tile();
else if (!strcmp ((char *)name, "feTurbulence"))
newnode = rsvg_new_filter_primitive_turbulence();
+ else if (!strcmp ((char *)name, "feMergeNode"))
+ newnode = rsvg_new_filter_primitive_merge_node();
else if (!strcmp ((char *)name, "g"))
newnode = rsvg_new_group ();
else if (!strcmp ((char *)name, "a")) /*treat anchors as groups for now*/
@@ -217,6 +219,16 @@ rsvg_filter_handler_start (RsvgHandle *ctx, const xmlChar *name,
newnode = rsvg_new_mask();
else if (!strcmp ((char *)name, "clipPath"))
newnode = rsvg_new_clip_path();
+ else if (!strcmp ((char *)name, "image"))
+ newnode = rsvg_new_image ();
+ else if (!strcmp ((char *)name, "marker"))
+ newnode = rsvg_new_marker ();
+ else if (!strcmp ((char *)name, "feDistantLight"))
+ newnode = rsvg_new_filter_primitive_light_source('d');
+ else if (!strcmp ((char *)name, "feSpotLight"))
+ newnode = rsvg_new_filter_primitive_light_source('s');
+ else if (!strcmp ((char *)name, "fePointLight"))
+ newnode = rsvg_new_filter_primitive_light_source('p');
if (newnode)
{
rsvg_node_set_atts(newnode, ctx, atts);
@@ -509,8 +521,6 @@ rsvg_start_element (void *data, const xmlChar *name,
rsvg_start_polyline (ctx, bag);
else if (!strcmp ((char *)name, "text"))
rsvg_start_text (ctx, bag);
- else if (!strcmp ((char *)name, "image"))
- rsvg_start_image (ctx, bag);
else if (!strcmp ((char *)name, "style"))
rsvg_start_style (ctx, bag);
else if (!strcmp ((char *)name, "title"))
@@ -519,8 +529,6 @@ rsvg_start_element (void *data, const xmlChar *name,
rsvg_start_desc (ctx, bag);
else if (!strcmp ((char *)name, "metadata"))
rsvg_start_metadata (ctx, bag);
- else if (!strcmp ((char *)name, "marker"))
- rsvg_start_marker (ctx, bag);
/* see conicalGradient discussion above */
else if (!strcmp ((char *)name, "linearGradient"))
rsvg_start_linear_gradient (ctx, bag);
@@ -530,14 +538,6 @@ rsvg_start_element (void *data, const xmlChar *name,
rsvg_start_radial_gradient (ctx, bag, "conicalGradient");
else if (!strcmp ((char *)name, "pattern"))
rsvg_start_pattern (ctx, bag);
- else if (!strcmp ((char *)name, "feDistantLight"))
- rsvg_start_filter_primitive_light_source(ctx, bag, 'd');
- else if (!strcmp ((char *)name, "feSpotLight"))
- rsvg_start_filter_primitive_light_source(ctx, bag, 's');
- else if (!strcmp ((char *)name, "fePointLight"))
- rsvg_start_filter_primitive_light_source(ctx, bag, 'p');
- else if (!strcmp ((char *)name, "feMergeNode"))
- rsvg_start_filter_primitive_merge_node(ctx, bag);
else if (!strcmp ((char *)name, "feFuncR"))
rsvg_start_filter_primitive_component_transfer_function(ctx, bag, 'r');
else if (!strcmp ((char *)name, "feFuncG"))
@@ -597,20 +597,18 @@ rsvg_end_element (void *data, const xmlChar *name)
else if (!strcmp ((char *)name, "clipPath"))
rsvg_end_clip_path(ctx);
else if (!strcmp ((char *)name, "marker"))
- rsvg_pop_def_group(ctx);
+ rsvg_end_filter(ctx);
else if (!strcmp ((char *)name, "switch"))
- rsvg_end_switch (ctx); /* treat switches as groups for now */
+ rsvg_end_filter (ctx); /* treat switches as groups for now */
else if (!strcmp ((char *)name, "pattern"))
rsvg_pop_def_group(ctx);
- else if (!strncmp ((char *)name, "fe", 2))
- {
- if (strncmp ((char *)name, "feFunc", 6) &&
- strcmp ((char *)name, "feMergeNode") &&
- strcmp ((char *)name, "feDistantLight") &&
- strcmp ((char *)name, "feSpotLight") &&
- strcmp ((char *)name, "fePointLight"))
- rsvg_end_filter(ctx);
- }
+ else if (!strcmp ((char *)name, "image") ||
+ !strcmp ((char *)name, "use"))
+ rsvg_end_filter(ctx);
+ else if (!strncmp ((char *)name, "fe", 2) &&
+ strncmp ((char *)name, "feFunc", 6))
+ rsvg_end_filter(ctx);
+
}
}