X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2Fsvgtiny_internal.h;h=6bf5d64d99277f836fb9d59cad878977d8ed7571;hb=HEAD;hp=403805aae975d1693ec2ac0c174f60ed4c8530ea;hpb=7edb291dd90bfac6736abca08f5549ad0961d3f8;p=libsvgtiny.git diff --git a/src/svgtiny_internal.h b/src/svgtiny_internal.h index 403805a..6bf5d64 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; @@ -44,18 +54,13 @@ struct svgtiny_parse_state { 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_ACTION(n) dom_string *interned_##n; +#define SVGTINY_STRING_ACTION2(n,nn) dom_string *interned_##n; #include "svgtiny_strings.h" -#undef SVGTINY_STRING_ACTION +#undef SVGTINY_STRING_ACTION2 }; @@ -64,14 +69,15 @@ struct svgtiny_list; /* svgtiny.c */ float svgtiny_parse_length(dom_string *s, int viewport_size, const struct svgtiny_parse_state state); -void svgtiny_parse_color(const char *s, svgtiny_colour *c, +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,10 +86,11 @@ 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); -dom_node *svgtiny_find_element_by_id(dom_node *node, const char *id); /* svgtiny_list.c */ struct svgtiny_list *svgtiny_list_create(size_t item_size); @@ -95,9 +102,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