summaryrefslogtreecommitdiff
path: root/src/glibext/gbufferline.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/glibext/gbufferline.c')
-rw-r--r--src/glibext/gbufferline.c39
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;
}