summaryrefslogtreecommitdiff
path: root/pango
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2000-08-02 16:01:30 +0000
committerOwen Taylor <otaylor@src.gnome.org>2000-08-02 16:01:30 +0000
commitb77b31c48f62191054c57e2b0696aef3f8654d1a (patch)
treeda6ccc042523131144dc176becb267adc6b777d7 /pango
parent5b08312353b05feebfaa7f8557bec3fdb3a9f6cd (diff)
downloadpango-b77b31c48f62191054c57e2b0696aef3f8654d1a.tar.gz
Fix problem with the way extents for the layout lines were summed together
Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com> * pango/pango-layout.c (pango_layout_get_extents): Fix problem with the way extents for the layout lines were summed together in the vertical direction.
Diffstat (limited to 'pango')
-rw-r--r--pango/pango-layout.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index 8c5cf403..2c10c41b 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -1389,7 +1389,7 @@ pango_layout_get_extents (PangoLayout *layout,
x_offset = (width - line_logical.width) / 2;
else
x_offset = 0;
-
+
if (ink_rect)
{
if (line_list == layout->lines)
@@ -1406,9 +1406,10 @@ pango_layout_get_extents (PangoLayout *layout,
line_ink.x + line_ink.width + x_offset) - new_pos;
ink_rect->x = new_pos;
- new_pos = MIN (ink_rect->y, line_ink.y + y_offset);
+ new_pos = MIN (ink_rect->y,
+ y_offset - line_logical.y + line_ink.y);
ink_rect->height = MAX (ink_rect->y + ink_rect->height,
- line_ink.y + line_ink.height + y_offset) - new_pos;
+ y_offset - line_logical.y + line_ink.y + line_ink.height) - new_pos;
ink_rect->y = new_pos;
}
}
@@ -1418,7 +1419,7 @@ pango_layout_get_extents (PangoLayout *layout,
if (line_list == layout->lines)
{
logical_rect->x = line_logical.x;
- logical_rect->y = line_logical.y;
+ logical_rect->y = 0;
logical_rect->width = line_logical.width;
logical_rect->height = line_logical.height;
}
@@ -1429,10 +1430,7 @@ pango_layout_get_extents (PangoLayout *layout,
line_logical.x + line_logical.width) - new_pos;
logical_rect->x = new_pos;
- new_pos = MIN (logical_rect->y, line_logical.y + y_offset);
- logical_rect->height = MAX (logical_rect->y + logical_rect->height,
- line_logical.y + line_logical.height + y_offset) - new_pos;
- logical_rect->y = new_pos;
+ logical_rect->height += line_logical.height;
}
}