aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas White <taw@bitwiz.me.uk>2019-04-08 22:59:47 +0200
committerThomas White <taw@bitwiz.me.uk>2019-04-08 22:59:47 +0200
commitb8355ad7dac90e1c89a62374e5ffa63e30572824 (patch)
tree16f5e4c342c3a1dfc8f3a560e95c9707adf6ab9e
parent1a7a88400dd4ade345cb895aaca7547174d0243c (diff)
Move render_slides_to_pdf to slide_render_cairo
-rw-r--r--libstorycode/slide_render_cairo.c51
-rw-r--r--libstorycode/slide_render_cairo.h1
-rw-r--r--src/pdfstorycode.c48
3 files changed, 52 insertions, 48 deletions
diff --git a/libstorycode/slide_render_cairo.c b/libstorycode/slide_render_cairo.c
index a812bd8..cd8d397 100644
--- a/libstorycode/slide_render_cairo.c
+++ b/libstorycode/slide_render_cairo.c
@@ -33,6 +33,9 @@
#include <stdlib.h>
#include <math.h>
+#include <libintl.h>
+#define _(x) gettext(x)
+
#include "slide.h"
#include "narrative.h"
#include "stylesheet.h"
@@ -352,3 +355,51 @@ int slide_render_cairo(Slide *s, cairo_t *cr, ImageStore *is, Stylesheet *styles
return 0;
}
+
+
+int render_slides_to_pdf(Narrative *n, ImageStore *is, const char *filename)
+{
+ double w = 2048.0;
+ cairo_surface_t *surf;
+ cairo_t *cr;
+ int i;
+ PangoContext *pc;
+ struct slide_pos sel;
+
+ surf = cairo_pdf_surface_create(filename, w, w);
+ if ( cairo_surface_status(surf) != CAIRO_STATUS_SUCCESS ) {
+ fprintf(stderr, _("Couldn't create Cairo surface\n"));
+ return 1;
+ }
+
+ cr = cairo_create(surf);
+ pc = pango_cairo_create_context(cr);
+
+ sel.para = 0; sel.pos = 0; sel.trail = 0;
+
+ for ( i=0; i<narrative_get_num_slides(n); i++ )
+ {
+ Slide *s;
+ double log_w, log_h;
+
+ s = narrative_get_slide_by_number(n, i);
+ slide_get_logical_size(s, narrative_get_stylesheet(n),
+ &log_w, &log_h);
+
+ cairo_pdf_surface_set_size(surf, w, w*(log_h/log_w));
+
+ cairo_save(cr);
+ cairo_scale(cr, w/log_w, w/log_w);
+ slide_render_cairo(s, cr, is, narrative_get_stylesheet(n),
+ i, pango_language_get_default(), pc,
+ NULL, sel, sel);
+ cairo_show_page(cr);
+ cairo_restore(cr);
+ }
+
+ g_object_unref(pc);
+ cairo_surface_finish(surf);
+ cairo_destroy(cr);
+
+ return 0;
+}
diff --git a/libstorycode/slide_render_cairo.h b/libstorycode/slide_render_cairo.h
index bb7ad84..6589945 100644
--- a/libstorycode/slide_render_cairo.h
+++ b/libstorycode/slide_render_cairo.h
@@ -42,5 +42,6 @@ extern int slide_render_cairo(Slide *s, cairo_t *cr, ImageStore *is, Stylesheet
SlideItem *sel_item, struct slide_pos sel_start,
struct slide_pos sel_end);
+extern int render_slides_to_pdf(Narrative *n, ImageStore *is, const char *filename);
#endif /* RENDER_H */
diff --git a/src/pdfstorycode.c b/src/pdfstorycode.c
index d09fb47..c26f6cb 100644
--- a/src/pdfstorycode.c
+++ b/src/pdfstorycode.c
@@ -44,54 +44,6 @@
#define _(x) gettext(x)
-static int render_slides_to_pdf(Narrative *n, ImageStore *is, const char *filename)
-{
- double w = 2048.0;
- cairo_surface_t *surf;
- cairo_t *cr;
- int i;
- PangoContext *pc;
- struct slide_pos sel;
-
- surf = cairo_pdf_surface_create(filename, w, w);
- if ( cairo_surface_status(surf) != CAIRO_STATUS_SUCCESS ) {
- fprintf(stderr, _("Couldn't create Cairo surface\n"));
- return 1;
- }
-
- cr = cairo_create(surf);
- pc = pango_cairo_create_context(cr);
-
- sel.para = 0; sel.pos = 0; sel.trail = 0;
-
- for ( i=0; i<narrative_get_num_slides(n); i++ )
- {
- Slide *s;
- double log_w, log_h;
-
- s = narrative_get_slide_by_number(n, i);
- slide_get_logical_size(s, narrative_get_stylesheet(n),
- &log_w, &log_h);
-
- cairo_pdf_surface_set_size(surf, w, w*(log_h/log_w));
-
- cairo_save(cr);
- cairo_scale(cr, w/log_w, w/log_w);
- slide_render_cairo(s, cr, is, narrative_get_stylesheet(n),
- i, pango_language_get_default(), pc,
- NULL, sel, sel);
- cairo_show_page(cr);
- cairo_restore(cr);
- }
-
- g_object_unref(pc);
- cairo_surface_finish(surf);
- cairo_destroy(cr);
-
- return 0;
-}
-
-
int main(int argc, char *argv[])
{
GFile *file;