diff options
author | Thomas White <taw@bitwiz.org.uk> | 2014-09-11 23:53:24 +0200 |
---|---|---|
committer | Thomas White <taw@bitwiz.org.uk> | 2014-09-11 23:53:24 +0200 |
commit | 28026ebf0fde1eb1b51f3808b4f3fc681039e887 (patch) | |
tree | 76cfe260aa428894bf358c59385251865060408c /src/render.c | |
parent | 71e298fd373d5afea429b88f83b8be677e1e2c83 (diff) |
Fix \slidenumber
Diffstat (limited to 'src/render.c')
-rw-r--r-- | src/render.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/render.c b/src/render.c index 8e1645e..f42d2cc 100644 --- a/src/render.c +++ b/src/render.c @@ -328,11 +328,12 @@ void free_render_buffers_except_thumb(struct slide *s) static void render_slide_to_surface(struct slide *s, cairo_surface_t *surf, cairo_t *cr, enum is_size isz, double scale, double w, double h, - ImageStore *is) + ImageStore *is, int slide_number) { PangoFontMap *fontmap; PangoContext *pc; SCInterpreter *scin; + char snum[64]; cairo_scale(cr, scale, scale); @@ -358,6 +359,9 @@ static void render_slide_to_surface(struct slide *s, cairo_surface_t *surf, return; } + snprintf(snum, 63, "%i", slide_number); + add_macro(scin, "slidenumber", snum); + /* "The rendering pipeline" */ sc_interp_run_stylesheet(scin, s->parent->stylesheet); renew_frame(s->top); @@ -380,7 +384,8 @@ static void render_slide_to_surface(struct slide *s, cairo_surface_t *surf, * Render the entire slide. */ cairo_surface_t *render_slide(struct slide *s, int w, double ww, double hh, - ImageStore *is, enum is_size isz) + ImageStore *is, enum is_size isz, + int slide_number) { cairo_surface_t *surf; cairo_t *cr; @@ -397,7 +402,8 @@ cairo_surface_t *render_slide(struct slide *s, int w, double ww, double hh, surf = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, w, h); cr = cairo_create(surf); - render_slide_to_surface(s, surf, cr, isz, scale, w, h, is); + render_slide_to_surface(s, surf, cr, isz, scale, w, h, is, + slide_number); cairo_destroy(cr); return surf; } @@ -441,7 +447,7 @@ int export_pdf(struct presentation *p, const char *filename) s->top->h = w*r; render_slide_to_surface(s, surf, cr, ISZ_SLIDESHOW, scale, - w, w*r, p->is); + w, w*r, p->is, i); cairo_restore(cr); |