1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
/*
* This file is part of Libsvgtiny
* Licensed under the MIT License,
* http://opensource.org/licenses/mit-license.php
* Copyright 2008 James Bursa <james@semichrome.net>
*/
#ifndef SVGTINY_H
#define SVGTINY_H
typedef int svgtiny_colour;
#define svgtiny_TRANSPARENT 0x1000000
#ifdef __riscos__
#define svgtiny_RGB(r, g, b) ((b) << 16 | (g) << 8 | (r))
#define svgtiny_RED(c) ((c) & 0xff)
#define svgtiny_GREEN(c) (((c) >> 8) & 0xff)
#define svgtiny_BLUE(c) (((c) >> 16) & 0xff)
#else
#define svgtiny_RGB(r, g, b) ((r) << 16 | (g) << 8 | (b))
#define svgtiny_RED(c) (((c) >> 16) & 0xff)
#define svgtiny_GREEN(c) (((c) >> 8) & 0xff)
#define svgtiny_BLUE(c) ((c) & 0xff)
#endif
struct svgtiny_shape {
float *path;
unsigned int path_length;
char *text;
float text_x, text_y;
svgtiny_colour fill;
svgtiny_colour stroke;
int stroke_width;
};
struct svgtiny_diagram {
int width, height;
struct svgtiny_shape *shape;
unsigned int shape_count;
unsigned short error_line;
const char *error_message;
};
typedef enum {
svgtiny_OK,
svgtiny_OUT_OF_MEMORY,
svgtiny_LIBDOM_ERROR,
svgtiny_NOT_SVG,
svgtiny_SVG_ERROR
} svgtiny_code;
enum {
svgtiny_PATH_MOVE,
svgtiny_PATH_CLOSE,
svgtiny_PATH_LINE,
svgtiny_PATH_BEZIER
};
struct svgtiny_named_color {
const char *name;
svgtiny_colour color;
};
struct svgtiny_diagram *svgtiny_create(void);
svgtiny_code svgtiny_parse(struct svgtiny_diagram *diagram,
const char *buffer, size_t size, const char *url,
int width, int height);
void svgtiny_free(struct svgtiny_diagram *svg);
#endif
|