summaryrefslogtreecommitdiff
path: root/gdk/gdkpango.c
diff options
context:
space:
mode:
authorERDI 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
commit7cf827771d63b23d104167633ef199e32c814eaf (patch)
tree4198c8fb7f6248db725c9dfa01db0c71e39c4ec8 /gdk/gdkpango.c
parent0cfd48a80edf92e9e8569674c26c9fa7f230b1f2 (diff)
downloadgdk-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.c26
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;