summaryrefslogtreecommitdiff
path: root/src/svgtiny_internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/svgtiny_internal.h')
-rw-r--r--src/svgtiny_internal.h24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/svgtiny_internal.h b/src/svgtiny_internal.h
index 542a0d0..158d230 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,13 +54,8 @@ struct svgtiny_parse_state {
int stroke_width;
/* gradients */
- 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_gradient fill_grad;
+ struct svgtiny_parse_state_gradient stroke_grad;
/* Interned strings */
#define SVGTINY_STRING_ACTION2(n,nn) dom_string *interned_##n;
@@ -65,6 +70,7 @@ 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);
@@ -80,7 +86,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);