summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--ChangeLog.pre-1-08
-rw-r--r--ChangeLog.pre-1-108
-rw-r--r--ChangeLog.pre-1-28
-rw-r--r--ChangeLog.pre-1-48
-rw-r--r--ChangeLog.pre-1-68
-rw-r--r--ChangeLog.pre-1-88
-rw-r--r--pango/modules.c3
-rw-r--r--pango/pango-attributes.c2
-rw-r--r--pango/pango-context.c11
-rw-r--r--pango/pango-layout.c40
11 files changed, 98 insertions, 14 deletions
diff --git a/ChangeLog b/ChangeLog
index 884bc8b4..edcb701e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2000-08-03 Elliot Lee <sopwith@redhat.com>
+
+ * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer.
+ * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make.
+ * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves.
+ * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration.
+ (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position.
+
Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_get_extents):
diff --git a/ChangeLog.pre-1-0 b/ChangeLog.pre-1-0
index 884bc8b4..edcb701e 100644
--- a/ChangeLog.pre-1-0
+++ b/ChangeLog.pre-1-0
@@ -1,3 +1,11 @@
+2000-08-03 Elliot Lee <sopwith@redhat.com>
+
+ * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer.
+ * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make.
+ * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves.
+ * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration.
+ (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position.
+
Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_get_extents):
diff --git a/ChangeLog.pre-1-10 b/ChangeLog.pre-1-10
index 884bc8b4..edcb701e 100644
--- a/ChangeLog.pre-1-10
+++ b/ChangeLog.pre-1-10
@@ -1,3 +1,11 @@
+2000-08-03 Elliot Lee <sopwith@redhat.com>
+
+ * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer.
+ * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make.
+ * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves.
+ * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration.
+ (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position.
+
Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_get_extents):
diff --git a/ChangeLog.pre-1-2 b/ChangeLog.pre-1-2
index 884bc8b4..edcb701e 100644
--- a/ChangeLog.pre-1-2
+++ b/ChangeLog.pre-1-2
@@ -1,3 +1,11 @@
+2000-08-03 Elliot Lee <sopwith@redhat.com>
+
+ * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer.
+ * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make.
+ * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves.
+ * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration.
+ (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position.
+
Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_get_extents):
diff --git a/ChangeLog.pre-1-4 b/ChangeLog.pre-1-4
index 884bc8b4..edcb701e 100644
--- a/ChangeLog.pre-1-4
+++ b/ChangeLog.pre-1-4
@@ -1,3 +1,11 @@
+2000-08-03 Elliot Lee <sopwith@redhat.com>
+
+ * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer.
+ * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make.
+ * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves.
+ * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration.
+ (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position.
+
Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_get_extents):
diff --git a/ChangeLog.pre-1-6 b/ChangeLog.pre-1-6
index 884bc8b4..edcb701e 100644
--- a/ChangeLog.pre-1-6
+++ b/ChangeLog.pre-1-6
@@ -1,3 +1,11 @@
+2000-08-03 Elliot Lee <sopwith@redhat.com>
+
+ * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer.
+ * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make.
+ * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves.
+ * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration.
+ (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position.
+
Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_get_extents):
diff --git a/ChangeLog.pre-1-8 b/ChangeLog.pre-1-8
index 884bc8b4..edcb701e 100644
--- a/ChangeLog.pre-1-8
+++ b/ChangeLog.pre-1-8
@@ -1,3 +1,11 @@
+2000-08-03 Elliot Lee <sopwith@redhat.com>
+
+ * pango/modules.c: Fix segfault when tmp_list has no 'prev' pointer.
+ * pango/pango-attributes.c (pango_attr_list_insert_internal): Infinite loops do not fast programs make.
+ * pango/pango-context.c: Set a default font size so that things don't go boom if someone forgets to set it themselves.
+ * pango/pango-layout.c (pango_layout_index_to_pos): Exclude newlines from consideration.
+ (pango_layout_line_index_to_x): Take shape attributes into consideration when determining position.
+
Wed Aug 2 12:00:53 2000 Owen Taylor <otaylor@redhat.com>
* pango/pango-layout.c (pango_layout_get_extents):
diff --git a/pango/modules.c b/pango/modules.c
index d7d3b838..78e89d40 100644
--- a/pango/modules.c
+++ b/pango/modules.c
@@ -117,7 +117,8 @@ pango_find_map (const char *lang,
*/
if (tmp_list->next)
tmp_list->next->prev = tmp_list->prev;
- tmp_list->prev->next = tmp_list->next;
+ if(tmp_list->prev)
+ tmp_list->prev->next = tmp_list->next;
tmp_list->next = maps;
tmp_list->prev = NULL;
maps = tmp_list;
diff --git a/pango/pango-attributes.c b/pango/pango-attributes.c
index beebcec3..a081235d 100644
--- a/pango/pango-attributes.c
+++ b/pango/pango-attributes.c
@@ -740,7 +740,7 @@ pango_attr_list_insert_internal (PangoAttrList *list,
{
prev = NULL;
tmp_list = list->attributes;
- while (1)
+ while (tmp_list)
{
PangoAttribute *tmp_attr = tmp_list->data;
diff --git a/pango/pango-context.c b/pango/pango-context.c
index b1e612fa..aa03b8cc 100644
--- a/pango/pango-context.c
+++ b/pango/pango-context.c
@@ -101,6 +101,7 @@ pango_context_init (PangoContext *context)
desc.variant = PANGO_VARIANT_NORMAL;
desc.weight = PANGO_WEIGHT_NORMAL;
desc.stretch = PANGO_STRETCH_NORMAL;
+ desc.size = 12 * PANGO_SCALE;
context->font_desc = pango_font_description_copy (&desc);
}
@@ -732,7 +733,7 @@ add_engines (PangoContext *context,
}
lang_map = pango_find_map (next_lang,
- engine_type_id, render_type_id);
+ engine_type_id, render_type_id);
}
pango_attr_iterator_get_font (iterator, context->font_desc, &next_desc, &extra_attrs);
@@ -768,6 +769,14 @@ add_engines (PangoContext *context,
if (current_fonts[j])
current_coverages[j] = pango_font_get_coverage (current_fonts[j], lang);
+ else
+ {
+ char *ctmp;
+
+ ctmp = pango_font_description_to_string(&next_desc);
+ g_warning("Couldn't load font \"%s\"", ctmp);
+ g_free(ctmp);
+ }
}
g_strfreev (families);
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index 2c10c41b..84acc12e 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -19,8 +19,8 @@
* Boston, MA 02111-1307, USA.
*/
-#include <pango/pango-layout.h>
#include <pango/pango.h> /* For pango_shape() */
+#include <pango/pango-layout.h>
#include <string.h>
#define LINE_IS_VALID(line) ((line)->layout != NULL)
@@ -642,27 +642,43 @@ pango_layout_line_index_to_x (PangoLayoutLine *line,
{
PangoRectangle logical_rect;
PangoLayoutRun *run = run_list->data;
+ gboolean shape_set;
+ pango_layout_get_item_properties (run->item, NULL, NULL, &logical_rect, &shape_set);
+
if (run->item->offset <= index && run->item->offset + run->item->length > index)
{
- pango_glyph_string_index_to_x (run->glyphs,
- line->layout->text + run->item->offset,
- run->item->length,
- &run->item->analysis,
- index - run->item->offset, trailing, x_pos);
-
- if (x_pos)
- *x_pos += width;
+ if (shape_set)
+ {
+ if (x_pos)
+ *x_pos = width + (trailing ? logical_rect.width : 0);
+ }
+ else
+ {
+ pango_glyph_string_index_to_x (run->glyphs,
+ line->layout->text + run->item->offset,
+ run->item->length,
+ &run->item->analysis,
+ index - run->item->offset, trailing, x_pos);
+
+ if (x_pos)
+ *x_pos += width;
+ }
return;
}
- pango_glyph_string_extents (run->glyphs, run->item->analysis.font,
- NULL, &logical_rect);
+ if (!shape_set)
+ pango_glyph_string_extents (run->glyphs, run->item->analysis.font,
+ NULL, &logical_rect);
+
width += logical_rect.width;
run_list = run_list->next;
}
+
+ if(x_pos)
+ *x_pos = width;
}
/**
@@ -1017,6 +1033,8 @@ pango_layout_index_to_pos (PangoLayout *layout,
tmp_list = tmp_list->next;
bytes_seen += layout_line->length;
+ if (tmp_list && layout->text[bytes_seen] == '\n')
+ bytes_seen++;
pos->y += logical_rect.height;
}