summaryrefslogtreecommitdiff
path: root/pango/pango-layout.c
diff options
context:
space:
mode:
Diffstat (limited to 'pango/pango-layout.c')
-rw-r--r--pango/pango-layout.c100
1 files changed, 52 insertions, 48 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index 6a99d242..a136ec16 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -1184,7 +1184,7 @@ pango_layout_index_to_line (PangoLayout *layout,
{
PangoLayoutLine *tmp_line = tmp_list->data;
- if (tmp_line && tmp_line->start_index > index)
+ if (tmp_line->start_index > index)
break; /* index was in paragraph delimiters */
prev_line = line;
@@ -1220,23 +1220,24 @@ pango_layout_index_to_line_and_extents (PangoLayout *layout,
iter = pango_layout_get_iter (layout);
- while (TRUE)
- {
- PangoLayoutLine *tmp_line = pango_layout_iter_get_line (iter);
+ if (!IS_INVALID (iter))
+ while (TRUE)
+ {
+ PangoLayoutLine *tmp_line = pango_layout_iter_get_line (iter);
- if (tmp_line && tmp_line->start_index > index)
- break; /* index was in paragraph delimiters */
+ if (tmp_line->start_index > index)
+ break; /* index was in paragraph delimiters */
- line = tmp_line;
-
- pango_layout_iter_get_line_extents (iter, NULL, line_rect);
-
- if (line->start_index + line->length > index)
- break;
+ line = tmp_line;
+
+ pango_layout_iter_get_line_extents (iter, NULL, line_rect);
+
+ if (line->start_index + line->length > index)
+ break;
- if (!pango_layout_iter_next_line (iter))
- break; /* Use end of last line */
- }
+ if (!pango_layout_iter_next_line (iter))
+ break; /* Use end of last line */
+ }
pango_layout_iter_free (iter);
@@ -1612,46 +1613,49 @@ pango_layout_index_to_pos (PangoLayout *layout,
iter = pango_layout_get_iter (layout);
- while (TRUE)
+ if (!IS_INVALID (iter))
{
- PangoLayoutLine *tmp_line = pango_layout_iter_get_line (iter);
+ while (TRUE)
+ {
+ PangoLayoutLine *tmp_line = pango_layout_iter_get_line (iter);
- if (tmp_line && tmp_line->start_index > index)
- {
- /* index is in the paragraph delimiters, move to
- * end of previous line
- */
- index = layout_line->start_index + layout_line->length;
- break;
- }
+ if (tmp_line->start_index > index)
+ {
+ /* index is in the paragraph delimiters, move to
+ * end of previous line
+ */
+ index = layout_line->start_index + layout_line->length;
+ break;
+ }
- layout_line = tmp_line;
-
- pango_layout_iter_get_line_extents (iter, NULL, &logical_rect);
-
- if (layout_line->start_index + layout_line->length > index)
- break;
+ layout_line = tmp_line;
+
+ pango_layout_iter_get_line_extents (iter, NULL, &logical_rect);
+
+ if (layout_line->start_index + layout_line->length > index)
+ break;
- if (!pango_layout_iter_next_line (iter))
- {
- index = layout_line->start_index + layout_line->length;
- break;
- }
- }
+ if (!pango_layout_iter_next_line (iter))
+ {
+ index = layout_line->start_index + layout_line->length;
+ break;
+ }
+ }
- pos->y = logical_rect.y;
- pos->height = logical_rect.height;
+ pos->y = logical_rect.y;
+ pos->height = logical_rect.height;
- pango_layout_line_index_to_x (layout_line, index, 0, &x_pos);
- pos->x = logical_rect.x + x_pos;
+ pango_layout_line_index_to_x (layout_line, index, 0, &x_pos);
+ pos->x = logical_rect.x + x_pos;
- if (index < layout_line->start_index + layout_line->length)
- {
- pango_layout_line_index_to_x (layout_line, index, 1, &x_pos);
- pos->width = (logical_rect.x + x_pos) - pos->x;
+ if (index < layout_line->start_index + layout_line->length)
+ {
+ pango_layout_line_index_to_x (layout_line, index, 1, &x_pos);
+ pos->width = (logical_rect.x + x_pos) - pos->x;
+ }
+ else
+ pos->width = 0;
}
- else
- pos->width = 0;
pango_layout_iter_free (iter);
}
@@ -3573,7 +3577,7 @@ pango_layout_line_x_to_index (PangoLayoutLine *line,
if (properties.shape_set)
{
- *trailing = 0;
+ char_trailing = false;
}
else
{