]> gitweb.michael.orlitzky.com - libsvgtiny.git/blob - include/svgtiny.h
src/svgtiny_css.c: change lwc_string_destroy -> lwc_string_unref
[libsvgtiny.git] / include / svgtiny.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_H
9 #define SVGTINY_H
10
11 typedef int svgtiny_colour;
12 #define svgtiny_TRANSPARENT 0x1000000
13 #ifdef __riscos__
14 #define svgtiny_RGB(r, g, b) ((b) << 16 | (g) << 8 | (r))
15 #define svgtiny_RED(c) ((c) & 0xff)
16 #define svgtiny_GREEN(c) (((c) >> 8) & 0xff)
17 #define svgtiny_BLUE(c) (((c) >> 16) & 0xff)
18 #else
19 #define svgtiny_RGB(r, g, b) ((r) << 16 | (g) << 8 | (b))
20 #define svgtiny_RED(c) (((c) >> 16) & 0xff)
21 #define svgtiny_GREEN(c) (((c) >> 8) & 0xff)
22 #define svgtiny_BLUE(c) ((c) & 0xff)
23 #endif
24
25 struct svgtiny_shape {
26 float *path;
27 unsigned int path_length;
28 char *text;
29 float text_x, text_y;
30 svgtiny_colour fill;
31 float fill_opacity; /* Between 0.0 and 1.0 */
32 svgtiny_colour stroke;
33 float stroke_opacity; /* Between 0.0 and 1.0 */
34 int stroke_width;
35 };
36
37 struct svgtiny_diagram {
38 int width, height;
39
40 struct svgtiny_shape *shape;
41 unsigned int shape_count;
42
43 unsigned short error_line;
44 const char *error_message;
45 };
46
47 typedef enum {
48 svgtiny_OK,
49 svgtiny_OUT_OF_MEMORY,
50 svgtiny_LIBDOM_ERROR,
51 svgtiny_NOT_SVG,
52 svgtiny_SVG_ERROR,
53 svgtiny_LIBCSS_ERROR
54 } svgtiny_code;
55
56 enum {
57 svgtiny_PATH_MOVE,
58 svgtiny_PATH_CLOSE,
59 svgtiny_PATH_LINE,
60 svgtiny_PATH_BEZIER
61 };
62
63 struct svgtiny_named_color {
64 const char *name;
65 svgtiny_colour color;
66 };
67
68
69 struct svgtiny_diagram *svgtiny_create(void);
70 svgtiny_code svgtiny_parse(struct svgtiny_diagram *diagram,
71 const char *buffer, size_t size, const char *url,
72 int width, int height);
73 void svgtiny_free(struct svgtiny_diagram *svg);
74
75 #endif