diff options
author | Thomas White <taw@bitwiz.org.uk> | 2012-08-12 17:19:20 +0200 |
---|---|---|
committer | Thomas White <taw@bitwiz.org.uk> | 2012-08-12 17:19:20 +0200 |
commit | 6d0e78aadcf111cfd82cc8762ebd43c10c7923ae (patch) | |
tree | 8d5863955735e94a54707440ff064d8509c925a1 /src/render.c | |
parent | 3795b390e6923670d5510acc37315dc9e3668b09 (diff) |
Clarify layout logic
Diffstat (limited to 'src/render.c')
-rw-r--r-- | src/render.c | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/src/render.c b/src/render.c index f05044e..28365e8 100644 --- a/src/render.c +++ b/src/render.c @@ -108,18 +108,13 @@ int render_sc(const char *sc, cairo_t *cr, double w, double h, PangoContext *pc) PangoFontDescription *fontdesc; GdkColor col; - cairo_rectangle(cr, 0.0, 0.0, w, h); - cairo_set_line_width(cr, 0.1); - cairo_set_source_rgb(cr, 0.0, 0.0, 0.0); - cairo_stroke(cr); - /* FIXME: Check for Level 1 markup e.g. image */ layout = pango_layout_new(pc); - - pango_cairo_update_layout(cr, layout); pango_layout_set_width(layout, w*PANGO_SCALE); pango_layout_set_height(layout, h*PANGO_SCALE); + + pango_cairo_update_layout(cr, layout); pango_layout_set_justify(layout, 1); pango_layout_set_ellipsize(layout, 1); @@ -128,8 +123,6 @@ int render_sc(const char *sc, cairo_t *cr, double w, double h, PangoContext *pc) pango_layout_set_font_description(layout, fontdesc); - cairo_move_to(cr, 0.0, 0.0); - /* FIXME: Honour alpha as well */ gdk_color_parse("#000000", &col); gdk_cairo_set_source_color(cr, &col); @@ -154,13 +147,28 @@ int render_frame(struct frame *fr, cairo_t *cr, PangoContext *pc) for ( i=0; i<fr->num_ro; i++ ) { if ( fr->rendering_order[i] == fr ) { - render_sc(fr->sc, cr, fr->w, fr->h, pc); + + double w, h; + + /* Draw the frame itself (rectangle) */ + cairo_rectangle(cr, 0.0, 0.0, fr->w, fr->h); + cairo_set_line_width(cr, 1.0); + cairo_set_source_rgb(cr, 0.0, 0.0, 0.0); + cairo_stroke(cr); + + /* Set up padding, and then draw the contents */ + cairo_move_to(cr, fr->lop.pad_l, fr->lop.pad_t); + w = fr->w - (fr->lop.pad_l + fr->lop.pad_r); + h = fr->h - (fr->lop.pad_t + fr->lop.pad_b); + render_sc(fr->sc, cr, w, h, pc); + continue; + } /* Sort out the transformation for the margins */ - cairo_translate(cr, fr->rendering_order[i]->x, - fr->rendering_order[i]->y); + cairo_translate(cr, fr->rendering_order[i]->offs_x, + fr->rendering_order[i]->offs_y); render_frame(fr->rendering_order[i], cr, pc); |