diff options
author | Dom Lachowicz <doml@src.gnome.org> | 2004-03-18 02:25:24 +0000 |
---|---|---|
committer | Dom Lachowicz <doml@src.gnome.org> | 2004-03-18 02:25:24 +0000 |
commit | 073cf52b0fa73db4e8165daf1048e9028fd003c7 (patch) | |
tree | 2e014bc68b902a79325cff4ec8fb760269dbda74 /rsvg-css.c | |
parent | c8cbc856d5436bb88d49f1d0842f19c740273b74 (diff) | |
download | librsvg-073cf52b0fa73db4e8165daf1048e9028fd003c7.tar.gz |
re-merge the RSVG-filters branch back into HEAD
Diffstat (limited to 'rsvg-css.c')
-rw-r--r-- | rsvg-css.c | 54 |
1 files changed, 41 insertions, 13 deletions
@@ -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) |