- for (const xmlAttr *attr = node->properties; attr; attr = attr->next) {
- const char *name = (const char *) attr->name;
- const char *content = (const char *) attr->children->content;
- if (strcmp(name, "fill") == 0)
- svgtiny_parse_color(content, &state->fill, state);
- else if (strcmp(name, "stroke") == 0)
- svgtiny_parse_color(content, &state->stroke, state);
- else if (strcmp(name, "stroke-width") == 0)
- state->stroke_width = svgtiny_parse_length(content,
- state->viewport_width, *state);
- else if (strcmp(name, "style") == 0) {
- const char *style = (const char *)
- attr->children->content;
- const char *s;
- char *value;
- if ((s = strstr(style, "fill:"))) {
- s += 5;
- while (*s == ' ')
- s++;
- value = strndup(s, strcspn(s, "; "));
- svgtiny_parse_color(value, &state->fill, state);
- free(value);
- }
- if ((s = strstr(style, "stroke:"))) {
- s += 7;
- while (*s == ' ')
- s++;
- value = strndup(s, strcspn(s, "; "));
- svgtiny_parse_color(value, &state->stroke, state);
- free(value);
- }
- if ((s = strstr(style, "stroke-width:"))) {
- s += 13;
- while (*s == ' ')
- s++;
- state->stroke_width = svgtiny_parse_length(s,
+ dom_string *attr;
+ dom_exception exc;
+
+ exc = dom_element_get_attribute(node, state->interned_fill, &attr);
+ if (exc == DOM_NO_ERR && attr != NULL) {
+ svgtiny_parse_color(attr, &state->fill, state);
+ dom_string_unref(attr);
+ }
+
+ exc = dom_element_get_attribute(node, state->interned_stroke, &attr);
+ if (exc == DOM_NO_ERR && attr != NULL) {
+ svgtiny_parse_color(attr, &state->stroke, state);
+ dom_string_unref(attr);
+ }
+
+ exc = dom_element_get_attribute(node, state->interned_stroke_width, &attr);
+ if (exc == DOM_NO_ERR && attr != NULL) {
+ state->stroke_width = svgtiny_parse_length(attr,