libswfdec/swfdec_text_field.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) New commits: commit 13a1f11d9aebddc8d2e24c94878547589c485832 Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Sun Oct 14 18:22:17 2007 +0300 Implement aligning TextField lines even when wordWrap is off diff --git a/libswfdec/swfdec_text_field.c b/libswfdec/swfdec_text_field.c index 2f38d85..96284a8 100644 --- a/libswfdec/swfdec_text_field.c +++ b/libswfdec/swfdec_text_field.c @@ -150,6 +150,8 @@ swfdec_text_field_generate_layouts (SwfdecTextField *text, cairo_t *cr, if (text->word_wrap) { pango_layout_set_wrap (playout, PANGO_WRAP_WORD_CHAR); pango_layout_set_width (playout, width * PANGO_SCALE); + pango_layout_set_alignment (playout, block->align); + pango_layout_set_justify (playout, block->justify); } else { pango_layout_set_width (playout, -1); } @@ -163,8 +165,6 @@ swfdec_text_field_generate_layouts (SwfdecTextField *text, cairo_t *cr, } // set block styles - pango_layout_set_alignment (playout, block->align); - pango_layout_set_justify (playout, block->justify); pango_layout_set_spacing (playout, block->leading); pango_layout_set_tabs (playout, block->tab_stops); @@ -235,6 +235,20 @@ swfdec_text_field_generate_layouts (SwfdecTextField *text, cairo_t *cr, } else { + if (block->align != PANGO_ALIGN_LEFT) { + int line_width; + pango_layout_get_pixel_size (playout, &line_width, 0); + if (line_width < width) { + if (block->align == PANGO_ALIGN_RIGHT) { + layout->render_offset_x += width - line_width; + } else if (block->align == PANGO_ALIGN_CENTER) { + layout->render_offset_x += (width - line_width) / 2; + } else { + g_assert_not_reached (); + } + } + } + skip = 0; }
libswfdec/swfdec_text_field.c | 3 +++ 1 file changed, 3 insertions(+) New commits: commit 1d5c1703fd47c7da3271125832a56a2ec35d9aa1 Author: Pekka Lampila <pekka.lampila at iki.fi> Date: Sun Oct 14 19:31:42 2007 +0300 Clip in TextField render, so we don't overflow in horizontal direction diff --git a/libswfdec/swfdec_text_field.c b/libswfdec/swfdec_text_field.c index 96284a8..214e338 100644 --- a/libswfdec/swfdec_text_field.c +++ b/libswfdec/swfdec_text_field.c @@ -283,6 +283,9 @@ swfdec_text_field_render (SwfdecTextField *text, cairo_t *cr, swfdec_rect_intersect (&limit, &SWFDEC_GRAPHIC (text)->extents, inval); + cairo_rectangle (cr, limit.x0, limit.y0, limit.x1, limit.y1); + cairo_clip (cr); + if (text->background) { cairo_rectangle (cr, limit.x0, limit.y0, limit.x1, limit.y1); color = swfdec_color_apply_transform (background_color, trans);
Reasonably Related Threads
- libswfdec/swfdec_text_field.c libswfdec/swfdec_text_field.h libswfdec/swfdec_text_field_movie.c
- 6 commits - libswfdec/swfdec_as_strings.c libswfdec/swfdec_codec_audio.c libswfdec/swfdec_codec_video.c libswfdec/swfdec_text_field.c libswfdec/swfdec_text_field.h libswfdec/swfdec_text_field_movie_as.c libswfdec/swfdec_text_field_movie.c
- 10 commits - libswfdec/swfdec_as_strings.c libswfdec/swfdec_text_field.c libswfdec/swfdec_text_field_movie_as.c libswfdec/swfdec_text_field_movie.c
- 5 commits - libswfdec/swfdec_html_parser.c libswfdec/swfdec_text_field.c libswfdec/swfdec_text_field.h libswfdec/swfdec_text_field_movie_as.c libswfdec/swfdec_text_field_movie.c libswfdec/swfdec_xml.c libswfdec/swfdec_xml.h
- 11 commits - libswfdec/swfdec_as_strings.c libswfdec/swfdec_text_field.c libswfdec/swfdec_text_field.h libswfdec/swfdec_text_field_movie_as.c libswfdec/swfdec_text_field_movie.c libswfdec/swfdec_text_field_movie.h test/trace