diff options
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; } |