X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2Fsvgtiny_internal.h;h=133513c7d7ff886d7105b66dfdf2585afd550b8c;hb=a0f95cf38d64b5a093d7745c616ff048e8d930b6;hp=5ff1370ab4d146d65428ac5578216a46cc1ac854;hpb=60ce406e8b18627c6aab42c434830cc3dfbd67f3;p=libsvgtiny.git diff --git a/src/svgtiny_internal.h b/src/svgtiny_internal.h index 5ff1370..133513c 100644 --- a/src/svgtiny_internal.h +++ b/src/svgtiny_internal.h @@ -24,6 +24,16 @@ struct svgtiny_gradient_stop { #define svgtiny_MAX_STOPS 10 #define svgtiny_LINEAR_GRADIENT 0x2000000 +struct svgtiny_parse_state_gradient { + unsigned int linear_gradient_stop_count; + dom_string *gradient_x1, *gradient_y1, *gradient_x2, *gradient_y2; + struct svgtiny_gradient_stop gradient_stop[svgtiny_MAX_STOPS]; + bool gradient_user_space_on_use; + struct { + float a, b, c, d, e, f; + } gradient_transform; +}; + struct svgtiny_parse_state { struct svgtiny_diagram *diagram; dom_document *document; @@ -36,21 +46,14 @@ struct svgtiny_parse_state { float a, b, c, d, e, f; } ctm; - /*struct css_style style;*/ - /* paint attributes */ svgtiny_colour fill; svgtiny_colour stroke; int stroke_width; /* gradients */ - unsigned int linear_gradient_stop_count; - const char *gradient_x1, *gradient_y1, *gradient_x2, *gradient_y2; - struct svgtiny_gradient_stop gradient_stop[svgtiny_MAX_STOPS]; - bool gradient_user_space_on_use; - struct { - float a, b, c, d, e, f; - } gradient_transform; + struct svgtiny_parse_state_gradient fill_grad; + struct svgtiny_parse_state_gradient stroke_grad; /* Interned strings */ #define SVGTINY_STRING_ACTION2(n,nn) dom_string *interned_##n; @@ -65,13 +68,14 @@ struct svgtiny_list; float svgtiny_parse_length(dom_string *s, int viewport_size, const struct svgtiny_parse_state state); void svgtiny_parse_color(dom_string *s, svgtiny_colour *c, + struct svgtiny_parse_state_gradient *grad, struct svgtiny_parse_state *state); void svgtiny_parse_transform(char *s, float *ma, float *mb, float *mc, float *md, float *me, float *mf); struct svgtiny_shape *svgtiny_add_shape(struct svgtiny_parse_state *state); void svgtiny_transform_path(float *p, unsigned int n, struct svgtiny_parse_state *state); -#if defined(_GNU_SOURCE) +#if (defined(_GNU_SOURCE) && !defined(__APPLE__) || defined(__amigaos4__) || defined(__HAIKU__) || (defined(_POSIX_C_SOURCE) && ((_POSIX_C_SOURCE - 0) >= 200809L))) #define HAVE_STRNDUP #else #undef HAVE_STRNDUP @@ -80,7 +84,9 @@ char *svgtiny_strndup(const char *s, size_t n); #endif /* svgtiny_gradient.c */ -void svgtiny_find_gradient(const char *id, struct svgtiny_parse_state *state); +void svgtiny_find_gradient(const char *id, + struct svgtiny_parse_state_gradient *grad, + struct svgtiny_parse_state *state); svgtiny_code svgtiny_add_path_linear_gradient(float *p, unsigned int n, struct svgtiny_parse_state *state); @@ -94,9 +100,4 @@ void *svgtiny_list_get(struct svgtiny_list *list, void *svgtiny_list_push(struct svgtiny_list *list); void svgtiny_list_free(struct svgtiny_list *list); -/* colors.gperf */ -const struct svgtiny_named_color * - svgtiny_color_lookup(register const char *str, - register unsigned int len); - #endif