[PATCH] [GDK] Rendering strike-through
- From: ERDI Gergo <cactus cactus rulez org>
- To: GTK+ development list <gtk-devel-list redhat com>
- Cc: otaylor redhat com
- Subject: [PATCH] [GDK] Rendering strike-through
- Date: Sat, 5 May 2001 20:34:01 +0200 (CEST)
Hi,
can I get some reviewing action with the attached patch? It implements
rendering of the strikethrough attribute of Pango
--
.--= ULLA! =---------------------. `We are not here to give users what
\ http://cactus.rulez.org \ they want' -- RMS, at GUADEC 2001
`---= cactus cactus rulez org =---'
Don't anthropomorphize computers. They hate that.
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/gtk+/ChangeLog,v
retrieving revision 1.1939
diff -u -u -r1.1939 ChangeLog
--- ChangeLog 2001/05/05 14:07:42 1.1939
+++ ChangeLog 2001/05/05 18:14:15
@@ -1,3 +1,9 @@
+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
+
Sat May 5 10:06:24 2001 Owen Taylor <otaylor redhat com>
* Release 1.3.5
Index: gdk/gdkpango.c
===================================================================
RCS file: /cvs/gnome/gtk+/gdk/gdkpango.c,v
retrieving revision 1.14
diff -u -u -r1.14 gdkpango.c
--- gdk/gdkpango.c 2001/02/17 00:11:02 1.14
+++ gdk/gdkpango.c 2001/05/05 18:14:21
@@ -37,6 +37,7 @@
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 @@
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 @@
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 @@
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 @@
{
GSList *tmp_list = item->extra_attrs;
+ if (strikethrough)
+ *strikethrough = FALSE;
+
if (fg_set)
*fg_set = FALSE;
@@ -468,7 +485,12 @@
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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]