Set slide size from stylesheet
authorThomas White <taw@bitwiz.me.uk>
Thu, 18 Oct 2018 06:54:14 +0000 (08:54 +0200)
committerThomas White <taw@bitwiz.me.uk>
Thu, 18 Oct 2018 06:54:14 +0000 (08:54 +0200)
src/presentation.c
src/sc_interp.c
src/utils.c
src/utils.h

index c3f0d07..1aa126a 100644 (file)
@@ -228,7 +228,16 @@ SCBlock *prev_slide(struct presentation *p, SCBlock *sl)
 
 static void set_slide_size_from_stylesheet(struct presentation *p)
 {
-       /* FIXME: From JSON */
+       char *result;
+
+       result = stylesheet_lookup(p->stylesheet, "$.slide.size");
+       if ( result != NULL ) {
+               float v[2];
+               if ( parse_double(result, v) == 0 ) {
+                       p->slide_width = v[0];
+                       p->slide_height = v[1];
+               }
+       }
 }
 
 
index d7f7b6b..0b39d00 100644 (file)
@@ -679,34 +679,6 @@ void sc_interp_destroy(SCInterpreter *scin)
 }
 
 
-static int parse_double(const char *a, float v[2])
-{
-       int nn;
-
-       nn = sscanf(a, "%fx%f", &v[0], &v[1]);
-       if ( nn != 2 ) {
-               fprintf(stderr, _("Invalid size '%s'\n"), a);
-               return 1;
-       }
-
-       return 0;
-}
-
-
-static int parse_tuple(const char *a, float v[4])
-{
-       int nn;
-
-       nn = sscanf(a, "%f,%f,%f,%f", &v[0], &v[1], &v[2], &v[3]);
-       if ( nn != 4 ) {
-               fprintf(stderr, _("Invalid tuple '%s'\n"), a);
-               return 1;
-       }
-
-       return 0;
-}
-
-
 static void set_padding(struct frame *fr, const char *opts)
 {
        float p[4];
index 9033466..bafbb99 100644 (file)
@@ -109,6 +109,34 @@ static char *fgets_long(FILE *fh, size_t *lp)
 }
 
 
+int parse_double(const char *a, float v[2])
+{
+       int nn;
+
+       nn = sscanf(a, "%fx%f", &v[0], &v[1]);
+       if ( nn != 2 ) {
+               fprintf(stderr, _("Invalid size '%s'\n"), a);
+               return 1;
+       }
+
+       return 0;
+}
+
+
+int parse_tuple(const char *a, float v[4])
+{
+       int nn;
+
+       nn = sscanf(a, "%f,%f,%f,%f", &v[0], &v[1], &v[2], &v[3]);
+       if ( nn != 4 ) {
+               fprintf(stderr, _("Invalid tuple '%s'\n"), a);
+               return 1;
+       }
+
+       return 0;
+}
+
+
 char *load_everything(const char *filename)
 {
        FILE *fh;
index bfc04c2..8870a98 100644 (file)
@@ -30,6 +30,8 @@
 
 extern void chomp(char *s);
 extern int safe_strcmp(const char *a, const char *b);
+extern int parse_double(const char *a, float v[2]);
+extern int parse_tuple(const char *a, float v[4]);
 extern char *load_everything(const char *filename);
 
 #include <libintl.h>