diff options
author | ERDI Gergo <cactus@cactus.rulez.org> | 2001-05-11 23:29:37 +0000 |
---|---|---|
committer | ÉRDI Gergo <cactus@src.gnome.org> | 2001-05-11 23:29:37 +0000 |
commit | 7cf827771d63b23d104167633ef199e32c814eaf (patch) | |
tree | 4198c8fb7f6248db725c9dfa01db0c71e39c4ec8 /gdk/gdkpango.c | |
parent | 0cfd48a80edf92e9e8569674c26c9fa7f230b1f2 (diff) | |
download | gdk-pixbuf-7cf827771d63b23d104167633ef199e32c814eaf.tar.gz |
Peek strike-through setting (gdk_draw_layout_line_with_colors): Render
2001-05-05 ERDI Gergo <cactus@cactus.rulez.org>
* gdk/gdkpango.c (gdk_pango_get_item_properties): Peek
strike-through setting
(gdk_draw_layout_line_with_colors): Render strike-through
Diffstat (limited to 'gdk/gdkpango.c')
-rw-r--r-- | gdk/gdkpango.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/gdk/gdkpango.c b/gdk/gdkpango.c index 7146880c7..2ccb2c24a 100644 --- a/gdk/gdkpango.c +++ b/gdk/gdkpango.c @@ -37,6 +37,7 @@ static PangoAttrType gdk_pango_attr_embossed_type; static void gdk_pango_get_item_properties (PangoItem *item, PangoUnderline *uline, + gboolean *strikethrough, gint *rise, PangoColor *fg_color, gboolean *fg_set, @@ -193,13 +194,14 @@ gdk_draw_layout_line_with_colors (GdkDrawable *drawable, PangoUnderline uline = PANGO_UNDERLINE_NONE; PangoLayoutRun *run = tmp_list->data; PangoColor fg_color, bg_color; - gboolean fg_set, bg_set, shape_set; + gboolean strike, fg_set, bg_set, shape_set; GdkGC *fg_gc; gint risen_y; tmp_list = tmp_list->next; gdk_pango_get_item_properties (run->item, &uline, + &strike, &rise, &fg_color, &fg_set, &bg_color, &bg_set, @@ -314,6 +316,17 @@ gdk_draw_layout_line_with_colors (GdkDrawable *drawable, risen_y + (ink_rect.y + ink_rect.height) / PANGO_SCALE + 1); break; } + + if (strike) + { + int centerline = logical_rect.y + logical_rect.height / 2; + + gdk_draw_line (drawable, fg_gc, + x + (x_off + logical_rect.x) / PANGO_SCALE - 1, + risen_y + centerline / PANGO_SCALE, + x + (x_off + logical_rect.x + logical_rect.width) / PANGO_SCALE + 1, + risen_y + centerline / PANGO_SCALE); + } if (fg_gc != gc) gdk_pango_free_gc (context, fg_gc); @@ -427,6 +440,7 @@ gdk_draw_layout (GdkDrawable *drawable, static void gdk_pango_get_item_properties (PangoItem *item, PangoUnderline *uline, + gboolean *strikethrough, gint *rise, PangoColor *fg_color, gboolean *fg_set, @@ -440,6 +454,9 @@ gdk_pango_get_item_properties (PangoItem *item, { GSList *tmp_list = item->extra_attrs; + if (strikethrough) + *strikethrough = FALSE; + if (fg_set) *fg_set = FALSE; @@ -468,7 +485,12 @@ gdk_pango_get_item_properties (PangoItem *item, if (uline) *uline = ((PangoAttrInt *)attr)->value; break; - + + case PANGO_ATTR_STRIKETHROUGH: + if (strikethrough) + *strikethrough = ((PangoAttrInt *)attr)->value; + break; + case PANGO_ATTR_FOREGROUND: if (fg_color) *fg_color = ((PangoAttrColor *)attr)->color; |