summaryrefslogtreecommitdiff
path: root/pango
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@src.gnome.org>2006-01-29 00:55:24 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2006-01-29 00:55:24 +0000
commit16272a0a5682514e3eda47cb53fa0708ec8f178c (patch)
tree1d16c73f1911730f59d5199dc3375d444cdd417e /pango
parent7b198ad324a75d8a910e7e75c1ac0e4c206af59d (diff)
downloadpango-16272a0a5682514e3eda47cb53fa0708ec8f178c.tar.gz
Reverted the tab alignments patch.
Diffstat (limited to 'pango')
-rw-r--r--pango/pango-layout.c51
-rw-r--r--pango/pango-tabs.c8
-rw-r--r--pango/pango-tabs.h6
3 files changed, 16 insertions, 49 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index 5dc3a0ce..50143387 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -109,8 +109,6 @@ struct _PangoLayoutLinePrivate
{
PangoLayoutLine line;
guint ref_count;
- PangoGlyphString *last_tab_glyph;
- PangoTabAlign last_tab_alignment;
};
struct _PangoLayoutClass
@@ -2497,8 +2495,11 @@ ensure_tab_width (PangoLayout *layout)
}
}
+/* For now we only need the tab position, we assume
+ * all tabs are left-aligned.
+ */
static int
-get_tab_pos (PangoLayout *layout, int index, PangoTabAlign *alignment)
+get_tab_pos (PangoLayout *layout, int index)
{
gint n_tabs;
gboolean in_pixels;
@@ -2518,7 +2519,7 @@ get_tab_pos (PangoLayout *layout, int index, PangoTabAlign *alignment)
{
gint pos = 0;
- pango_tab_array_get_tab (layout->tabs, index, alignment, &pos);
+ pango_tab_array_get_tab (layout->tabs, index, NULL, &pos);
if (in_pixels)
return pos * PANGO_SCALE;
@@ -2535,10 +2536,10 @@ get_tab_pos (PangoLayout *layout, int index, PangoTabAlign *alignment)
int next_to_last_pos = 0;
int tab_width;
- pango_tab_array_get_tab (layout->tabs, n_tabs - 1, alignment, &last_pos);
+ pango_tab_array_get_tab (layout->tabs, n_tabs - 1, NULL, &last_pos);
if (n_tabs > 1)
- pango_tab_array_get_tab (layout->tabs, n_tabs - 2, alignment, &next_to_last_pos);
+ pango_tab_array_get_tab (layout->tabs, n_tabs - 2, NULL, &next_to_last_pos);
else
next_to_last_pos = 0;
@@ -2596,8 +2597,6 @@ shape_tab (PangoLayoutLine *line,
{
int i;
- PangoTabAlign tab_alignment;
-
int current_width = line_width (line);
pango_glyph_string_set_size (glyphs, 1);
@@ -2611,16 +2610,13 @@ shape_tab (PangoLayoutLine *line,
for (i=0;;i++)
{
- int tab_pos = get_tab_pos (line->layout, i, &tab_alignment);
+ int tab_pos = get_tab_pos (line->layout, i);
if (tab_pos > current_width)
{
glyphs->glyphs[0].geometry.width = tab_pos - current_width;
break;
}
}
- PangoLayoutLinePrivate *private = (PangoLayoutLinePrivate *)line;
- private->last_tab_glyph = glyphs;
- private->last_tab_alignment = tab_alignment;
}
static inline gboolean
@@ -2693,16 +2689,6 @@ struct _ParaBreakState
* to the remaining portion of the first item */
};
-static int
-glyphstring_width (PangoGlyphString* glyphs)
-{
- int i;
- int width = 0;
- for (i=0; i < glyphs->num_glyphs; i++)
- width += glyphs->glyphs[i].geometry.width;
- return width;
-}
-
static PangoGlyphString *
shape_run (PangoLayoutLine *line,
ParaBreakState *state,
@@ -2715,10 +2701,6 @@ shape_run (PangoLayoutLine *line,
shape_tab (line, glyphs);
else
{
- PangoLayoutLinePrivate *private = (PangoLayoutLinePrivate *)line;
-
- g_return_val_if_fail (line != NULL, glyphs);
-
if (state->properties.shape_set)
imposed_shape (layout->text + item->offset, item->num_chars,
state->properties.shape_ink_rect, state->properties.shape_logical_rect,
@@ -2726,21 +2708,6 @@ shape_run (PangoLayoutLine *line,
else
pango_shape (layout->text + item->offset, item->length, &item->analysis, glyphs);
- if (private->last_tab_glyph != NULL)
- {
- if (private->last_tab_glyph->num_glyphs > 0)
- {
- int w = private->last_tab_glyph->glyphs[0].geometry.width;
- if (private->last_tab_alignment == PANGO_TAB_RIGHT)
- w -= glyphstring_width (glyphs);
- else if (private->last_tab_alignment == PANGO_TAB_CENTER)
- w -= glyphstring_width (glyphs) / 2;
-
- if (w < 0) w = 0;
- private->last_tab_glyph->glyphs[0].geometry.width = w;
- }
- }
-
if (state->properties.letter_spacing)
{
PangoGlyphItem glyph_item;
@@ -4067,8 +4034,6 @@ pango_layout_line_new (PangoLayout *layout)
private->line.layout = layout;
private->line.runs = 0;
private->line.length = 0;
- private->last_tab_glyph = NULL;
- private->last_tab_alignment = PANGO_TAB_LEFT;
/* Note that we leave start_index, resolved_dir, and is_paragraph_start
* uninitialized */
diff --git a/pango/pango-tabs.c b/pango/pango-tabs.c
index 73343bc4..aedd9bce 100644
--- a/pango/pango-tabs.c
+++ b/pango/pango-tabs.c
@@ -257,12 +257,13 @@ pango_tab_array_resize (PangoTabArray *tab_array,
/**
* pango_tab_array_set_tab:
* @tab_array: a #PangoTabArray
- * @tab_index: the index of a tab stop, starting from zero
+ * @tab_index: the index of a tab stop
* @alignment: tab alignment
* @location: tab location in Pango units
*
- * Sets the alignment and location of a tab stop. Resizes the
- * tab array if needed.
+ * Sets the alignment and location of a tab stop.
+ * @alignment must always be #PANGO_TAB_LEFT in the current
+ * implementation.
*
**/
void
@@ -273,6 +274,7 @@ pango_tab_array_set_tab (PangoTabArray *tab_array,
{
g_return_if_fail (tab_array != NULL);
g_return_if_fail (tab_index >= 0);
+ g_return_if_fail (alignment == PANGO_TAB_LEFT);
g_return_if_fail (location >= 0);
if (tab_index >= tab_array->size)
diff --git a/pango/pango-tabs.h b/pango/pango-tabs.h
index c2ec7eff..f60949e8 100644
--- a/pango/pango-tabs.h
+++ b/pango/pango-tabs.h
@@ -30,13 +30,13 @@ typedef struct _PangoTabArray PangoTabArray;
typedef enum
{
- PANGO_TAB_LEFT,
- PANGO_TAB_RIGHT,
- PANGO_TAB_CENTER
+ PANGO_TAB_LEFT
/* These are not supported now, but may be in the
* future.
*
+ * PANGO_TAB_RIGHT,
+ * PANGO_TAB_CENTER,
* PANGO_TAB_NUMERIC
*/
} PangoTabAlign;