Add most of the serializer
[colloquium.git] / src / stylesheet.h
1 /*
2  * stylesheet.h
3  *
4  * Colloquium - A tiny presentation program
5  *
6  * Copyright (c) 2011 Thomas White <taw@bitwiz.org.uk>
7  *
8  * This program is free software: you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation, either version 3 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
20  *
21  */
22
23 #ifndef STYLESHEET_H
24 #define STYLESHEET_H
25
26 #ifdef HAVE_CONFIG_H
27 #include <config.h>
28 #endif
29
30
31 #include "loadsave.h"
32
33
34 enum justify
35 {
36         J_LEFT   = 0,
37         J_CENTER = 1,
38         J_RIGHT  = 2,
39 };
40
41
42 enum vert_pos
43 {
44         V_TOP     = 0,
45         V_CENTER  = 1,
46         V_BOTTOM  = 2,
47 };
48
49
50 struct style
51 {
52         char              *name;
53
54         double             margin_left;
55         double             margin_right;
56         double             margin_top;
57         double             margin_bottom;
58         double             max_width;
59         int                use_max_width;
60
61         enum justify       halign;
62         enum vert_pos      valign;
63
64         double             offset_x;
65         double             offset_y;
66
67         char              *font;
68         char              *colour;
69         double             alpha;
70 };
71
72
73 struct _stylesheet
74 {
75         struct style **styles;
76         int            n_styles;
77
78         /* Background stuff */
79 };
80
81
82 typedef struct _stylesheetwindow StylesheetWindow;
83 typedef struct _stylesheet StyleSheet;
84 struct presentation;
85
86 extern StylesheetWindow *open_stylesheet(struct presentation *p);
87
88 extern StyleSheet *new_stylesheet();
89 extern StyleSheet *load_stylesheet(const char *filename);
90 extern int save_stylesheet(StyleSheet *ss, const char *filename);
91
92 extern struct style *find_style(StyleSheet *ss, const char *name);
93
94 extern void write_stylesheet(StyleSheet *ss, struct serializer *ser);
95
96 #endif  /* STYLESHEET_H */