diff options
Diffstat (limited to 'src/glibext/gbufferline.c')
-rw-r--r-- | src/glibext/gbufferline.c | 56 |
1 files changed, 47 insertions, 9 deletions
diff --git a/src/glibext/gbufferline.c b/src/glibext/gbufferline.c index 824578d..ff64604 100644 --- a/src/glibext/gbufferline.c +++ b/src/glibext/gbufferline.c @@ -24,6 +24,7 @@ #include "gbufferline.h" +#include <assert.h> #include <string.h> #include <gtk/gtk.h> /* Récupération du langage par défaut ; FIXME ? */ @@ -834,7 +835,7 @@ GBufferSegment *g_buffer_line_get_segment_at(const GBufferLine *line, const gint if (result == NULL) printf(" -- get segment at -- found nothing...\n"); else - printf(" -- get segment at -- found %p '%s'...\n", result, g_buffer_segment_get_text(result)); + printf(" -- get segment at -- found %p '%s'...\n", result, g_buffer_segment_get_text(result, false)); @@ -1025,7 +1026,10 @@ void g_buffer_line_insert_text(GBufferLine *line, BufferLineColumn column, const /****************************************************************************** * * -* Paramètres : line = ligne à venir consulter. * +* Paramètres : line = ligne à venir consulter. * +* first = première colonne à parcourir. * +* end = colonne de fin de parcours. * +* markup = indique si le texte doit être décoré ou non. * * * * Description : Donne le texte représenté par une ligne de tampon. * * * @@ -1035,23 +1039,38 @@ void g_buffer_line_insert_text(GBufferLine *line, BufferLineColumn column, const * * ******************************************************************************/ -char *g_buffer_line_get_text(const GBufferLine *line) +char *g_buffer_line_get_text(const GBufferLine *line, BufferLineColumn first, BufferLineColumn end, bool markup) { char *result; /* Construction à retourner */ BufferLineColumn i; /* Boucle de parcours #1 */ size_t j; /* Boucle de parcours #2 */ + char *extra; /* Contenu à intégrer au texte */ result = NULL; - for (i = BLC_ASSEMBLY_HEAD; i < BLC_COUNT; i++) + assert(first < end); + + for (i = first; i < end; i++) + { + if (i > first && result != NULL) + result = stradd(result, " "); + for (j = 0; j < line->columns[i].count; j++) + { + extra = g_buffer_segment_get_text(line->columns[i].segments[j], markup); + if (result == NULL) + result = extra; + + else { - result = strdup(g_buffer_segment_get_text(line->columns[i].segments[j])); - result = stradd(result, " "); + result = stradd(result, extra); + free(extra); } - else - result = stradd(result, g_buffer_segment_get_text(line->columns[i].segments[j])); + + } + + } return result; @@ -1160,6 +1179,25 @@ void g_buffer_line_add_flag(GBufferLine *line, BufferLineFlags flag) /****************************************************************************** * * +* Paramètres : line = ligne à venir consulter. * +* * +* Description : Renseigne sur les propriétés particulières liées à une ligne.* +* * +* Retour : Propriétés intégrées. * +* * +* Remarques : - * +* * +******************************************************************************/ + +BufferLineFlags g_buffer_line_get_flags(const GBufferLine *line) +{ + return line->flags; + +} + + +/****************************************************************************** +* * * Paramètres : line = ligne à venir compléter. * * flag = propriété à supprimer. * * * @@ -1201,7 +1239,7 @@ void g_buffer_line_draw(GBufferLine *line, cairo_t *cairo, const gint max_widths gint x; /* Point de départ d'impression*/ BufferLineColumn i; /* Boucle de parcours */ - if (line->flags != BLF_NONE) + if (line->flags != BLF_NONE && line->flags != BLF_HAS_CODE) { class = G_BUFFER_LINE_GET_CLASS(line); |