summaryrefslogtreecommitdiff
path: root/rsvg-css.c
diff options
context:
space:
mode:
authorDom Lachowicz <doml@src.gnome.org>2004-03-18 02:25:24 +0000
committerDom Lachowicz <doml@src.gnome.org>2004-03-18 02:25:24 +0000
commit073cf52b0fa73db4e8165daf1048e9028fd003c7 (patch)
tree2e014bc68b902a79325cff4ec8fb760269dbda74 /rsvg-css.c
parentc8cbc856d5436bb88d49f1d0842f19c740273b74 (diff)
downloadlibrsvg-073cf52b0fa73db4e8165daf1048e9028fd003c7.tar.gz
re-merge the RSVG-filters branch back into HEAD
Diffstat (limited to 'rsvg-css.c')
-rw-r--r--rsvg-css.c54
1 files changed, 41 insertions, 13 deletions
diff --git a/rsvg-css.c b/rsvg-css.c
index c964b1be..7db1f5c4 100644
--- a/rsvg-css.c
+++ b/rsvg-css.c
@@ -53,29 +53,29 @@ gboolean
rsvg_css_parse_vbox (const char * vbox, double * x, double * y,
double * w, double * h)
{
- gchar ** list;
+ gdouble * list;
guint list_len;
- list = rsvg_css_parse_list(vbox, &list_len);
+ list = rsvg_css_parse_number_list(vbox, &list_len);
- if(!list)
+ if(!(list && list_len))
return FALSE;
else if(list_len != 4) {
- g_strfreev(list);
+ g_free(list);
return FALSE;
}
else {
- /* TODO: error checking */
- *x = g_ascii_strtod(list[0], NULL);
- *y = g_ascii_strtod(list[1], NULL);
- *w = g_ascii_strtod(list[2], NULL);
- *h = g_ascii_strtod(list[3], NULL);
+ *x = list[0];
+ *y = list[1];
+ *w = list[2];
+ *h = list[3];
- g_strfreev(list);
+ g_free(list);
return TRUE;
}
}
+
/**
* rsvg_css_parse_length: Parse CSS2 length to a pixel value.
* @str: Original string.
@@ -340,7 +340,7 @@ rsvg_css_parse_color (const char *str)
{ "deepskyblue", PACK_RGB (0,191,255) },
{ "dimgray", PACK_RGB (105,105,105) },
{ "dimgrey", PACK_RGB (105,105,105) },
- { "dogerblue", PACK_RGB (30,144,255) },
+ { "dodgerblue", PACK_RGB (30,144,255) },
{ "firebrick", PACK_RGB (178,34,34) },
{ "floralwhite" , PACK_RGB (255,255,240)},
{ "forestgreen", PACK_RGB (34,139,34) },
@@ -669,7 +669,7 @@ rsvg_css_parse_font_family (const char * str, const char * inherit)
return str;
}
-#if !defined(HAVE_STRTOK_R) /* && !GLIB_CHECK_VERSION(2, 3, 2) */
+#if !defined(HAVE_STRTOK_R) && !GLIB_CHECK_VERSION(2, 3, 2)
static char *
strtok_r(char *s, const char *delim, char **last)
@@ -717,7 +717,7 @@ rsvg_css_parse_list(const char * in_str, guint * out_list_len)
/* this may fix bug #113538 */
- string_array = g_strsplit_set(in_str, ", \t", -1);
+ string_array = g_strsplit_set(in_str, ", \t\n", -1);
for(n = 0; string_array[n] != NULL; n++)
;
@@ -767,6 +767,34 @@ rsvg_css_parse_list(const char * in_str, guint * out_list_len)
#endif
}
+gdouble *
+rsvg_css_parse_number_list(const char * in_str, guint * out_list_len){
+ gchar ** string_array;
+ gdouble * output;
+ guint len, i;
+
+ if(out_list_len)
+ *out_list_len = 0;
+
+ string_array = rsvg_css_parse_list(in_str, &len);
+
+ if(!(string_array && len))
+ return NULL;
+
+ output = g_new(gdouble, len);
+
+ /* TODO: some error checking */
+ for (i = 0; i < len; i++)
+ output[i] = g_ascii_strtod(string_array[i], NULL);
+
+ g_strfreev(string_array);
+
+ if (out_list_len != NULL)
+ *out_list_len = len;
+
+ return output;
+}
+
void
rsvg_css_parse_number_optional_number(const char * str,
double *x, double *y)