diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2012-12-11 21:25:54 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2012-12-11 21:25:54 (GMT) |
commit | e86f211252a66d6c1b4abec350217f5241b6ef66 (patch) | |
tree | c99db8e8e2fcc058dca806617c270b81770f3957 /src/glibext/gbufferline.c | |
parent | 79ec14ee5c1cea5c4ad345a7047b47b9205fc29e (diff) |
Fixed/improved the computing of buffer lines cached dimensions.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@300 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/glibext/gbufferline.c')
-rw-r--r-- | src/glibext/gbufferline.c | 39 |
1 files changed, 26 insertions, 13 deletions
diff --git a/src/glibext/gbufferline.c b/src/glibext/gbufferline.c index 562aded..9dc970b 100644 --- a/src/glibext/gbufferline.c +++ b/src/glibext/gbufferline.c @@ -85,8 +85,6 @@ struct _GBufferLine BufferLineColumn merge_start; /* Début de la zone globale */ BufferLineColumn last_used; /* Dernière colonne utilisée */ - bool skip_width; /* Pas de taille comptabilisée */ - }; /* Représentation de fragments de texte en ligne (classe) */ @@ -680,19 +678,25 @@ char *g_buffer_line_get_text(const GBufferLine *line) /****************************************************************************** * * -* Paramètres : line = ligne à venir compléter. * +* Paramètres : line = ligne à venir compléter. * +* index = index de la colonne visée par la procédure. * * * -* Description : Marque la ligne comme étant sans largeur à comptabiliser. * +* Description : Fournit la largeur requise pour une colonne de ligne donnée. * * * -* Retour : - * +* Retour : Largeur en pixel requise. * * * * Remarques : - * * * ******************************************************************************/ -void g_buffer_line_skip_width(GBufferLine *line) +gint g_buffer_line_get_column_width(GBufferLine *line, BufferLineColumn index) { - line->skip_width = true; + gint result; /* Largeur à retourner */ + + if (index >= line->merge_start) result = 0; + else result = get_column_width(&line->columns[index]); + + return result; } @@ -700,9 +704,11 @@ void g_buffer_line_skip_width(GBufferLine *line) /****************************************************************************** * * * Paramètres : line = ligne à venir compléter. * -* index = index de la colonne visée par la procédure. * +* merge = précise la première colonne marquant la fusion. [OUT]* +* addr = indique si les positions doivent être affichées. * +* code = indique si le code binaire doit être affiché. * * * -* Description : Fournit la largeur requise pour une colonne de ligne donnée. * +* Description : Fournit la dernière largeur d'une ligne avec fusion. * * * * Retour : Largeur en pixel requise. * * * @@ -710,12 +716,16 @@ void g_buffer_line_skip_width(GBufferLine *line) * * ******************************************************************************/ -gint g_buffer_line_get_width(GBufferLine *line, BufferLineColumn index) +gint g_buffer_line_get_merge_width(GBufferLine *line, BufferLineColumn *merge, bool addr, bool code) { gint result; /* Largeur à retourner */ - if (line->skip_width) result = 0; - else result = get_column_width(&line->columns[index]); + result = 0; + + *merge = line->merge_start; + + if (line->merge_start < BLC_COUNT) + result = get_column_width(&line->columns[line->merge_start]); return result; @@ -737,7 +747,10 @@ gint g_buffer_line_get_width(GBufferLine *line, BufferLineColumn index) void g_buffer_line_start_merge_at(GBufferLine *line, BufferLineColumn start) { - line->merge_start = start; + if (start == BLC_LAST_USED) + line->merge_start = line->last_used; + else + line->merge_start = start; } |