diff options
author | Thomas White <taw@bitwiz.org.uk> | 2013-05-23 23:28:49 +0200 |
---|---|---|
committer | Thomas White <taw@bitwiz.org.uk> | 2013-05-23 23:28:49 +0200 |
commit | c11f7f9735c0573b3ff5a073e8ae6014933660cd (patch) | |
tree | ba808115b8c68cfdb9a3ba7feea38ba66202c5da | |
parent | 050c29036e59a340f27de7bb80ce7dd2aacb212e (diff) |
Default stylesheet stuff
-rw-r--r-- | Makefile.am | 5 | ||||
-rw-r--r-- | src/default_stylesheet.sty | 71 | ||||
-rw-r--r-- | src/loadsave.c | 28 | ||||
-rw-r--r-- | src/loadsave.h | 1 | ||||
-rw-r--r-- | src/presentation.c | 3 | ||||
-rw-r--r-- | src/stylesheet.c | 104 | ||||
-rw-r--r-- | src/stylesheet.h | 2 |
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); |