diff options
author | Thomas White <taw@bitwiz.org.uk> | 2017-12-04 15:59:30 +0100 |
---|---|---|
committer | Thomas White <taw@bitwiz.org.uk> | 2017-12-04 15:59:30 +0100 |
commit | 43e38c6b62834fb6e05b153d96abaf8329e58e28 (patch) | |
tree | c51c05fd75e98fee3575cd3790a57c8113ac0cb2 /src | |
parent | 74151d515a28debfa24fc50cbcb575f800e1314f (diff) |
Go directly to PangoContext
Diffstat (limited to 'src')
-rw-r--r-- | src/print.c | 9 | ||||
-rw-r--r-- | src/render.c | 8 | ||||
-rw-r--r-- | src/render.h | 2 | ||||
-rw-r--r-- | src/sc_editor.c | 14 |
4 files changed, 12 insertions, 21 deletions
diff --git a/src/print.c b/src/print.c index 0f3e7ff..65abe27 100644 --- a/src/print.c +++ b/src/print.c @@ -121,7 +121,7 @@ static void print_slide_only(GtkPrintOperation *op, GtkPrintContext *ctx, top = interp_and_shape(sc_block_child(ps->slide), stylesheets, NULL, ps->p->is, - page+1, cr, + page+1, pc, ps->p->slide_width, ps->p->slide_height, ps->p->lang); @@ -201,13 +201,13 @@ static void begin_narrative_print(GtkPrintOperation *op, GtkPrintContext *ctx, stylesheets[1] = NULL; } + pc = gtk_print_context_create_pango_context(ctx); + ps->top = interp_and_shape(ps->p->scblocks, stylesheets, cbl, - ps->is, 0, - gtk_print_context_get_cairo_context(ctx), + ps->is, 0, pc, gtk_print_context_get_width(ctx), gtk_print_context_get_height(ctx), ps->p->lang); - pc = gtk_print_context_create_pango_context(ctx); recursive_wrap(ps->top, pc); /* Count pages */ @@ -225,6 +225,7 @@ static void begin_narrative_print(GtkPrintOperation *op, GtkPrintContext *ctx, h += paragraph_height(ps->top->paras[i]); } gtk_print_operation_set_n_pages(op, n_pages); + g_object_unref(pc); } diff --git a/src/render.c b/src/render.c index 7fe789c..6ba8091 100644 --- a/src/render.c +++ b/src/render.c @@ -173,16 +173,13 @@ int recursive_wrap(struct frame *fr, PangoContext *pc) struct frame *interp_and_shape(SCBlock *scblocks, SCBlock **stylesheets, SCCallbackList *cbl, ImageStore *is, int slide_number, - cairo_t *cr, double w, double h, + PangoContext *pc, double w, double h, PangoLanguage *lang) { - PangoContext *pc; SCInterpreter *scin; char snum[64]; struct frame *top; - pc = pango_cairo_create_context(cr); - top = frame_new(); top->resizable = 0; top->x = 0.0; @@ -220,7 +217,6 @@ struct frame *interp_and_shape(SCBlock *scblocks, SCBlock **stylesheets, sc_interp_add_blocks(scin, scblocks); sc_interp_destroy(scin); - g_object_unref(pc); return top; } @@ -240,7 +236,7 @@ static struct frame *render_sc_with_context(SCBlock *scblocks, cairo_fill(cr); top = interp_and_shape(scblocks, stylesheets, cbl, is, - slide_number, cr, log_w, log_h, lang); + slide_number, pc, log_w, log_h, lang); recursive_wrap(top, pc); diff --git a/src/render.h b/src/render.h index aefa238..d361568 100644 --- a/src/render.h +++ b/src/render.h @@ -47,7 +47,7 @@ extern cairo_surface_t *render_sc(SCBlock *scblocks, int w, int h, extern struct frame *interp_and_shape(SCBlock *scblocks, SCBlock **stylesheets, SCCallbackList *cbl, ImageStore *is, - int slide_number, cairo_t *cr, + int slide_number, PangoContext *pc, double w, double h, PangoLanguage *lang); extern void wrap_frame(struct frame *fr, PangoContext *pc); diff --git a/src/sc_editor.c b/src/sc_editor.c index 1dee4b4..96e0656 100644 --- a/src/sc_editor.c +++ b/src/sc_editor.c @@ -167,10 +167,8 @@ static gboolean resize_sig(GtkWidget *widget, GdkEventConfigure *event, SCEditor *e) { PangoContext *pc; - cairo_t *cr; - cr = gdk_cairo_create(gtk_widget_get_window(widget)); - pc = pango_cairo_create_context(cr); + pc = gdk_pango_context_get(); if ( e->scale ) { @@ -206,7 +204,7 @@ static gboolean resize_sig(GtkWidget *widget, GdkEventConfigure *event, h = e->log_h; } e->top = interp_and_shape(e->scblocks, e->stylesheets, e->cbl, - e->is, e->slidenum, cr, + e->is, e->slidenum, pc, w, h, e->lang); recursive_wrap(e->top, pc); } @@ -224,7 +222,6 @@ static gboolean resize_sig(GtkWidget *widget, GdkEventConfigure *event, update_size(e); g_object_unref(pc); - cairo_destroy(cr); return FALSE; } @@ -398,18 +395,16 @@ void sc_editor_remove_cursor(SCEditor *e) * invalid. The cursor position will be unset. */ static void full_rerender(SCEditor *e) { - cairo_t *cr; PangoContext *pc; frame_free(e->top); sc_editor_remove_cursor(e); - cr = gdk_cairo_create(gtk_widget_get_window(GTK_WIDGET(e))); - pc = pango_cairo_create_context(cr); + pc = gdk_pango_context_get(); e->top = interp_and_shape(e->scblocks, e->stylesheets, e->cbl, e->is, e->slidenum, - cr, e->log_w, 0.0, e->lang); + pc, e->log_w, 0.0, e->lang); e->top->x = 0.0; e->top->y = 0.0; @@ -422,7 +417,6 @@ static void full_rerender(SCEditor *e) sc_editor_redraw(e); g_object_unref(pc); - cairo_destroy(cr); } |