X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2Fsvgtiny_internal.h;h=6bf5d64d99277f836fb9d59cad878977d8ed7571;hb=HEAD;hp=13db00e4ffd6841450fb5c1f0b186c27f7cada69;hpb=5533143958b16ed87026cdf533fc4d544b2d712f;p=libsvgtiny.git diff --git a/src/svgtiny_internal.h b/src/svgtiny_internal.h index 13db00e..6bf5d64 100644 --- a/src/svgtiny_internal.h +++ b/src/svgtiny_internal.h @@ -10,6 +10,8 @@ #include +#include + #ifndef UNUSED #define UNUSED(x) ((void) (x)) #endif @@ -22,9 +24,19 @@ 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; - xmlDoc *document; + dom_document *document; float viewport_width; float viewport_height; @@ -42,39 +54,43 @@ 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_ACTION2(n,nn) dom_string *interned_##n; +#include "svgtiny_strings.h" +#undef SVGTINY_STRING_ACTION2 + }; struct svgtiny_list; /* svgtiny.c */ -float svgtiny_parse_length(const char *s, int viewport_size, +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 -char *strndup(const char *s, size_t n); +char *svgtiny_strndup(const char *s, size_t n); +#define strndup svgtiny_strndup #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); -xmlNode *svgtiny_find_element_by_id(xmlNode *node, const char *id); /* svgtiny_list.c */ struct svgtiny_list *svgtiny_list_create(size_t item_size); @@ -86,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