]> gitweb.michael.orlitzky.com - libsvgtiny.git/blob - svgtiny_internal.h
171f5c07ae7eb036e620132bd4e9d170c2100d3e
[libsvgtiny.git] / svgtiny_internal.h
1 /*
2 * This file is part of Libsvgtiny
3 * Licensed under the MIT License,
4 * http://opensource.org/licenses/mit-license.php
5 * Copyright 2008 James Bursa <james@semichrome.net>
6 */
7
8 #ifndef SVGTINY_INTERNAL_H
9 #define SVGTINY_INTERNAL_H
10
11 struct svgtiny_gradient_stop {
12 float offset;
13 svgtiny_colour color;
14 };
15
16 #define svgtiny_MAX_STOPS 10
17 #define svgtiny_LINEAR_GRADIENT 0x2000000
18
19 struct svgtiny_parse_state {
20 struct svgtiny_diagram *diagram;
21 xmlDoc *document;
22
23 float viewport_width;
24 float viewport_height;
25
26 /* current transformation matrix */
27 struct {
28 float a, b, c, d, e, f;
29 } ctm;
30
31 /*struct css_style style;*/
32
33 /* paint attributes */
34 svgtiny_colour fill;
35 svgtiny_colour stroke;
36 int stroke_width;
37
38 /* gradients */
39 unsigned int linear_gradient_stop_count;
40 struct svgtiny_gradient_stop gradient_stop[svgtiny_MAX_STOPS];
41 };
42
43
44 /* svgtiny.c */
45 void svgtiny_transform_path(float *p, unsigned int n,
46 struct svgtiny_parse_state *state);
47 void svgtiny_parse_color(const char *s, svgtiny_colour *c,
48 struct svgtiny_parse_state *state);
49 struct svgtiny_shape *svgtiny_add_shape(struct svgtiny_parse_state *state);
50
51 /* svgtiny_gradient.c */
52 void svgtiny_find_gradient(const char *id, struct svgtiny_parse_state *state);
53 svgtiny_code svgtiny_add_path_linear_gradient(float *p, unsigned int n,
54 struct svgtiny_parse_state *state);
55 xmlNode *svgtiny_find_element_by_id(xmlNode *node, const char *id);
56
57 /* colors.gperf */
58 const struct svgtiny_named_color *
59 svgtiny_color_lookup(register const char *str,
60 register unsigned int len);
61
62 #endif