aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.org.uk>2013-05-23 23:28:49 +0200
committerThomas White <taw@bitwiz.org.uk>2013-05-23 23:28:49 +0200
commitc11f7f9735c0573b3ff5a073e8ae6014933660cd (patch)
treeba808115b8c68cfdb9a3ba7feea38ba66202c5da
parent050c29036e59a340f27de7bb80ce7dd2aacb212e (diff)
Default stylesheet stuff
-rw-r--r--Makefile.am5
-rw-r--r--src/default_stylesheet.sty71
-rw-r--r--src/loadsave.c28
-rw-r--r--src/loadsave.h1
-rw-r--r--src/presentation.c3
-rw-r--r--src/stylesheet.c104
-rw-r--r--src/stylesheet.h2
7 files changed, 127 insertions, 87 deletions
diff --git a/Makefile.am b/Makefile.am
index 1bc1f29..9171abb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -8,7 +8,7 @@ AM_CFLAGS = -Wall
AM_CPPFLAGS = -DDATADIR=\""$(datadir)"\" -I$(top_builddir)/lib \
-I$(top_srcdir)/lib
LDADD = $(top_builddir)/lib/libgnu.la @IGNORE_UNUSED_LIBRARIES_CFLAGS@ \
- harfatum/src/libharfatum.la
+ harfatum/src/libharfatum.la src/default_stylesheet.o
src_colloquium_SOURCES = src/colloquium.c src/render.c \
src/mainwindow.c src/presentation.c \
@@ -22,6 +22,9 @@ EXTRA_DIST += src/presentation.h src/render.h src/wrap.h \
src/stylesheet.h src/loadsave.h src/slideshow.h src/storycode.h \
src/imagestore.h
+src/default_stylesheet.o: src/default_stylesheet.sty
+ ld -r -b binary -o src/default_stylesheet.o src/default_stylesheet.sty
+
colloquiumdir = $(datadir)/colloquium
colloquium_DATA = data/colloquium.ui
diff --git a/src/default_stylesheet.sty b/src/default_stylesheet.sty
new file mode 100644
index 0000000..d9099d7
--- /dev/null
+++ b/src/default_stylesheet.sty
@@ -0,0 +1,71 @@
+# Colloquium default style sheet
+
+[stylesheet/styles/0]
+name = "Presentation title"
+margin_l = 0.00
+margin_r = 0.00
+margin_t = 0.00
+margin_b = 0.00
+pad_l = 0.00
+pad_r = 0.00
+pad_t = 0.00
+pad_b = 0.00
+w = "1.00 fr"
+h = "100.00 u"
+prologue = "\font[Sorts Mill Goudy 64]"
+
+[stylesheet/styles/1]
+name = "Slide title"
+margin_l = 0.00
+margin_r = 0.00
+margin_t = 0.00
+margin_b = 0.00
+pad_l = 20.00
+pad_r = 20.00
+pad_t = 20.00
+pad_b = 20.00
+w = "1.00 fr"
+h = "100.00 u"
+prologue = "\bgcol{#00a6eb}\fgcol{#ffffff}\font[Sans 40]"
+
+[stylesheet/styles/2]
+name = "Slide title"
+margin_l = 0.00
+margin_r = 0.00
+margin_t = 0.00
+margin_b = 0.00
+pad_l = 20.00
+pad_r = 20.00
+pad_t = 20.00
+pad_b = 20.00
+w = "1.00 fr"
+h = "100.00 u"
+prologue = "\bgcol{#00a6eb}\fgcol{#ffffff}\font[Sans 40]Acknowledgements"
+
+[stylesheet/styles/3]
+name = "Content"
+margin_l = 10.00
+margin_r = 10.00
+margin_t = 120.00
+margin_b = 10.00
+pad_l = 20.00
+pad_r = 20.00
+pad_t = 20.00
+pad_b = 20.00
+w = "1.00 fr"
+h = "1.00 fr"
+prologue = "\bgcol{#dddddd}\fgcol{#ffffff}\font[Sans 24]"
+
+[stylesheet/templates/0]
+name = "Title page"
+sty0 = 0
+
+[stylesheet/templates/1]
+name = "Slide"
+sty1 = 1
+
+[stylesheet/templates/2]
+name = "Acknowledgements"
+sty2 = 2
+sty2 = 3
+
diff --git a/src/loadsave.c b/src/loadsave.c
index 8ee089a..7522528 100644
--- a/src/loadsave.c
+++ b/src/loadsave.c
@@ -358,6 +358,34 @@ int deserialize_file(FILE *fh, struct ds_node *root)
}
+int deserialize_memory(const char *s, struct ds_node *root)
+{
+ char *end;
+ int done;
+ struct ds_node *cur_node = root;
+
+ done = 0;
+ do {
+
+ char *line;
+
+ end = strchr(s, '\n');
+ if ( end == NULL ) {
+ parse_line(root, &cur_node, s);
+ done = 1;
+ } else {
+ line = strndup(s, end-s);
+ parse_line(root, &cur_node, line);
+ free(line);
+ s = end+1;
+ }
+
+ } while ( !done );
+
+ return 0;
+}
+
+
void free_ds_tree(struct ds_node *root)
{
int i;
diff --git a/src/loadsave.h b/src/loadsave.h
index 77327cc..892ee45 100644
--- a/src/loadsave.h
+++ b/src/loadsave.h
@@ -54,6 +54,7 @@ struct serializer
extern struct ds_node *new_ds_node(const char *key);
extern void free_ds_tree(struct ds_node *root);
extern int deserialize_file(FILE *fh, struct ds_node *root);
+extern int deserialize_memory(const char *s, struct ds_node *root);
extern void show_tree(struct ds_node *root, const char *path);
diff --git a/src/presentation.c b/src/presentation.c
index 9e13108..db1a398 100644
--- a/src/presentation.c
+++ b/src/presentation.c
@@ -238,8 +238,7 @@ struct presentation *new_presentation()
new->completely_empty = 1;
- new->ss = new_stylesheet();
- default_stylesheet(new->ss);
+ new->ss = default_stylesheet();
new->n_menu_rebuild = 0;
new->menu_rebuild_list = NULL;
diff --git a/src/stylesheet.c b/src/stylesheet.c
index f736d91..d48ed85 100644
--- a/src/stylesheet.c
+++ b/src/stylesheet.c
@@ -92,90 +92,28 @@ void free_stylesheet(StyleSheet *ss)
}
-void default_stylesheet(StyleSheet *ss)
+extern const char *_binary_src_default_stylesheet_sty_start;
+extern const char *_binary_src_default_stylesheet_sty_size;
+
+StyleSheet *default_stylesheet()
{
- struct style *sty;
- struct slide_template *titlepage;
- struct slide_template *slide;
- struct slide_template *acknowledgements;
-
- titlepage = new_template(ss, "Title page");
- slide = new_template(ss, "Slide");
- acknowledgements = new_template(ss, "Acknowledgements");
-
- sty = new_style(ss, "Presentation title");
- sty->lop.margin_l = 0.0;
- sty->lop.margin_r = 0.0;
- sty->lop.margin_t = 0.0;
- sty->lop.margin_b = 0.0;
- sty->lop.pad_l = 0.0;
- sty->lop.pad_r = 0.0;
- sty->lop.pad_t = 0.0;
- sty->lop.pad_b = 0.0;
- sty->lop.w = 1.0;
- sty->lop.w_units = UNITS_FRAC;
- sty->lop.h = 100.0;
- sty->lop.h_units = UNITS_SLIDE;
- sty->lop.x = 0.0;
- sty->lop.y = 300.0;
- sty->sc_prologue = strdup("\\font[Sorts Mill Goudy 64]");
- add_to_template(titlepage, sty);
-
- sty = new_style(ss, "Slide title");
- sty->lop.margin_l = 0.0;
- sty->lop.margin_r = 0.0;
- sty->lop.margin_t = 0.0;
- sty->lop.margin_b = 0.0;
- sty->lop.pad_l = 20.0;
- sty->lop.pad_r = 20.0;
- sty->lop.pad_t = 20.0;
- sty->lop.pad_b = 20.0;
- sty->lop.w = 1.0;
- sty->lop.w_units = UNITS_FRAC;
- sty->lop.h = 100.0;
- sty->lop.h_units = UNITS_SLIDE;
- sty->lop.x = 0.0;
- sty->lop.y = 0.0;
- sty->sc_prologue = strdup("\\bgcol{#00a6eb}\\fgcol{#ffffff}"
- "\\font[Sans 40]");
- add_to_template(slide, sty);
-
- sty = new_style(ss, "Slide title");
- sty->lop.margin_r = 0.0;
- sty->lop.margin_t = 0.0;
- sty->lop.margin_b = 0.0;
- sty->lop.pad_l = 20.0;
- sty->lop.pad_r = 20.0;
- sty->lop.pad_t = 20.0;
- sty->lop.pad_b = 20.0;
- sty->lop.w = 1.0;
- sty->lop.w_units = UNITS_FRAC;
- sty->lop.h = 100.0;
- sty->lop.h_units = UNITS_SLIDE;
- sty->lop.x = 0.0;
- sty->lop.y = 0.0;
- sty->sc_prologue = strdup("\\bgcol{#00a6eb}\\fgcol{#ffffff}"
- "\\font[Sans 40]Acknowledgements");
- add_to_template(acknowledgements, sty);
-
- sty = new_style(ss, "Content");
- sty->lop.margin_l = 10.0;
- sty->lop.margin_r = 10.0;
- sty->lop.margin_t = 120.0;
- sty->lop.margin_b = 10.0;
- sty->lop.pad_l = 20.0;
- sty->lop.pad_r = 20.0;
- sty->lop.pad_t = 20.0;
- sty->lop.pad_b = 20.0;
- sty->lop.w = 1.0;
- sty->lop.w_units = UNITS_FRAC;
- sty->lop.h = 1.0;
- sty->lop.h_units = UNITS_FRAC;
- sty->lop.x = 0.0;
- sty->lop.y = 0.0;
- sty->sc_prologue = strdup("\\bgcol{#dddddd}\\fgcol{#ffffff}"
- "\\font[Sans 24]");
- add_to_template(acknowledgements, sty);
+ char *v;
+ struct ds_node *root;
+ StyleSheet *ss;
+ size_t len;
+
+ len = (size_t)&_binary_src_default_stylesheet_sty_size;
+ v = malloc(len+1);
+ if ( v == NULL ) return NULL;
+
+ memcpy(v, &_binary_src_default_stylesheet_sty_start, len);
+ v[len] = '\0';
+
+ root = new_ds_node("root");
+ deserialize_memory(v, root);
+ ss = tree_to_stylesheet(root);
+ free(v);
+ return ss;
}
diff --git a/src/stylesheet.h b/src/stylesheet.h
index 9391cb7..17d6070 100644
--- a/src/stylesheet.h
+++ b/src/stylesheet.h
@@ -60,7 +60,7 @@ struct presentation;
extern StyleSheet *new_stylesheet();
extern StyleSheet *load_stylesheet(const char *filename);
extern void free_stylesheet(StyleSheet *ss);
-extern void default_stylesheet(StyleSheet *ss);
+extern StyleSheet *default_stylesheet(void);
extern struct style *new_style(StyleSheet *ss, const char *name);
extern struct style *find_style(StyleSheet *ss, const char *name);