summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2004-06-24 04:52:09 +0000
committerOwen Taylor <otaylor@src.gnome.org>2004-06-24 04:52:09 +0000
commitc31b5675a3a1cdeb4d03a687a3d8731870465517 (patch)
treea15a207b0758e3fc70c26f7856e9937d7b6ef57f
parentc7707ff01fe42600b2aebe03f1eab9c165bd5893 (diff)
downloadpango-c31b5675a3a1cdeb4d03a687a3d8731870465517.tar.gz
Fix bug with using wrong uline value.
Thu Jun 24 00:50:46 2004 Owen Taylor <otaylor@redhat.com> * pango/pango-layout.c (pango_layout_run_get_extents): Fix bug with using wrong uline value.
-rw-r--r--ChangeLog5
-rw-r--r--ChangeLog.pre-1-105
-rw-r--r--ChangeLog.pre-1-65
-rw-r--r--ChangeLog.pre-1-85
-rw-r--r--pango/pango-layout.c59
-rw-r--r--pango/pango-layout.h5
6 files changed, 81 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 0bc00abc..2c6522e8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Thu Jun 24 00:50:46 2004 Owen Taylor <otaylor@redhat.com>
+
+ * pango/pango-layout.c (pango_layout_run_get_extents): Fix
+ bug with using wrong uline value.
+
Wed Jun 23 17:26:50 2004 Owen Taylor <otaylor@redhat.com>
* tests/Makefile.am (pango.modules): Don't generate
diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10
index 0bc00abc..2c6522e8 100644
--- a/ChangeLog.pre-1-10
+++ b/ChangeLog.pre-1-10
@@ -1,3 +1,8 @@
+Thu Jun 24 00:50:46 2004 Owen Taylor <otaylor@redhat.com>
+
+ * pango/pango-layout.c (pango_layout_run_get_extents): Fix
+ bug with using wrong uline value.
+
Wed Jun 23 17:26:50 2004 Owen Taylor <otaylor@redhat.com>
* tests/Makefile.am (pango.modules): Don't generate
diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6
index 0bc00abc..2c6522e8 100644
--- a/ChangeLog.pre-1-6
+++ b/ChangeLog.pre-1-6
@@ -1,3 +1,8 @@
+Thu Jun 24 00:50:46 2004 Owen Taylor <otaylor@redhat.com>
+
+ * pango/pango-layout.c (pango_layout_run_get_extents): Fix
+ bug with using wrong uline value.
+
Wed Jun 23 17:26:50 2004 Owen Taylor <otaylor@redhat.com>
* tests/Makefile.am (pango.modules): Don't generate
diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8
index 0bc00abc..2c6522e8 100644
--- a/ChangeLog.pre-1-8
+++ b/ChangeLog.pre-1-8
@@ -1,3 +1,8 @@
+Thu Jun 24 00:50:46 2004 Owen Taylor <otaylor@redhat.com>
+
+ * pango/pango-layout.c (pango_layout_run_get_extents): Fix
+ bug with using wrong uline value.
+
Wed Jun 23 17:26:50 2004 Owen Taylor <otaylor@redhat.com>
* tests/Makefile.am (pango.modules): Don't generate
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index 108a8aaa..9daa121e 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -3715,14 +3715,13 @@ pango_layout_run_get_extents (PangoLayoutRun *run,
PangoRectangle *run_ink,
PangoRectangle *run_logical)
{
- PangoUnderline uline = PANGO_UNDERLINE_NONE;
ItemProperties properties;
PangoRectangle tmp_ink;
gboolean need_ink;
pango_layout_get_item_properties (run->item, &properties);
- need_ink = run_ink || uline == PANGO_UNDERLINE_LOW;
+ need_ink = run_ink || properties.uline == PANGO_UNDERLINE_LOW;
if (properties.shape_set)
imposed_extents (run->item->num_chars,
@@ -4321,6 +4320,62 @@ update_run (PangoLayoutIter *iter,
iter->index = run_start_index;
}
+static PangoLayoutIter *
+pango_layout_iter_copy (PangoLayoutIter *iter)
+{
+ PangoLayoutIter *new;
+ GSList *l;
+
+ new = g_new (PangoLayoutIter, 1);
+
+ new->layout = g_object_ref (iter->layout);
+ new->line_list_link = iter->line_list_link;
+ new->line = iter->line;
+ pango_layout_line_ref (new->line);
+
+ new->run_list_link = iter->run_list_link;
+ new->run = iter->run;
+ new->index = iter->index;
+
+ new->logical_rect = iter->logical_rect;
+
+ new->line_extents = NULL;
+ new->line_extents_link = NULL;
+ for (l = iter->line_extents; l; l = l->next)
+ {
+ new->line_extents = g_slist_prepend (new->line_extents,
+ g_memdup (l->data,
+ sizeof (Extents)));
+ if (l == iter->line_extents_link)
+ new->line_extents_link = new->line_extents;
+ }
+
+ new->line_extents = g_slist_reverse (new->line_extents);
+
+ new->run_x = iter->run_x;
+ new->run_logical_rect = iter->run_logical_rect;
+ new->ltr = iter->ltr;
+
+ new->cluster_x = iter->cluster_x;
+ new->cluster_index = iter->cluster_index;
+ new->cluster_start = iter->cluster_start;
+ new->next_cluster_start = iter->next_cluster_start;
+
+ return new;
+}
+
+GType
+pango_layout_iter_get_type (void)
+{
+ static GType our_type = 0;
+
+ if (our_type == 0)
+ our_type = g_boxed_type_register_static ("PangoLayoutIter",
+ (GBoxedCopyFunc)pango_layout_iter_copy,
+ (GBoxedFreeFunc)pango_layout_iter_free);
+
+ return our_type;
+}
/**
* pango_layout_get_iter:
diff --git a/pango/pango-layout.h b/pango/pango-layout.h
index 4d11cdf3..d9447fca 100644
--- a/pango/pango-layout.h
+++ b/pango/pango-layout.h
@@ -65,7 +65,6 @@ struct _PangoLayoutLine
#define PANGO_IS_LAYOUT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), PANGO_TYPE_LAYOUT))
#define PANGO_LAYOUT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), PANGO_TYPE_LAYOUT, PangoLayoutClass))
-
/* The PangoLayout and PangoLayoutClass structs are private; if you
* need to create a subclass of these, mail otaylor@redhat.com
*/
@@ -195,6 +194,10 @@ void pango_layout_line_get_pixel_extents (PangoLayoutLine *layout_line,
typedef struct _PangoLayoutIter PangoLayoutIter;
+#define PANGO_TYPE_LAYOUT_ITER (pango_layout_iter_get_type ())
+
+GType pango_layout_iter_get_type (void);
+
PangoLayoutIter *pango_layout_get_iter (PangoLayout *layout);
void pango_layout_iter_free (PangoLayoutIter *iter);