diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2016-01-21 20:51:27 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2016-01-21 21:23:58 (GMT) |
commit | dd33acbff36c0a3ae4618ac5021e74448cad5ce5 (patch) | |
tree | 834351b836760fc54533e2f39c4b8202e695c0e3 /src/glibext/gbufferline.c | |
parent | e3ee1abf12d7868f5eaf759e04a4b4911fcdfa91 (diff) |
Defined some raw primitives to write or delete comments.
Diffstat (limited to 'src/glibext/gbufferline.c')
-rw-r--r-- | src/glibext/gbufferline.c | 106 |
1 files changed, 101 insertions, 5 deletions
diff --git a/src/glibext/gbufferline.c b/src/glibext/gbufferline.c index d09758f..2f29ee4 100644 --- a/src/glibext/gbufferline.c +++ b/src/glibext/gbufferline.c @@ -170,6 +170,19 @@ static void on_line_segment_changed(GBufferSegment *, GBufferLine *); static void reset_column(buffer_line_column *column) { + size_t i; /* Boucle de parcours */ + + for (i = 0; i < column->count; i++) + g_object_unref(G_OBJECT(column->segments[i])); + + if (column->segments != NULL) + { + free(column->segments); + column->segments = NULL; + } + + column->count = 0; + column->max_width = 0; } @@ -1264,6 +1277,37 @@ GBufferSegment *g_buffer_line_insert_text(GBufferLine *line, BufferLineColumn co * Paramètres : line = ligne à venir consulter. * * first = première colonne à parcourir. * * end = colonne de fin de parcours. * +* * +* Description : Indique si du texte est présent dans une ligne de tampon. * +* * +* Retour : true pour indiquer la présence de texte, false pour du vide. * +* * +* Remarques : - * +* * +******************************************************************************/ + +bool g_buffer_line_has_text(const GBufferLine *line, BufferLineColumn first, BufferLineColumn end) +{ + bool result; /* Bilan à retourner */ + BufferLineColumn i; /* Boucle de parcours */ + + result = false; + + assert(first < end); + + for (i = first; i < end && !result; i++) + result = (line->columns[i].count > 0); + + return result; + +} + + +/****************************************************************************** +* * +* 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. * @@ -1311,6 +1355,31 @@ char *g_buffer_line_get_text(const GBufferLine *line, BufferLineColumn first, Bu } +/****************************************************************************** +* * +* Paramètres : line = ligne à venir modifier. * +* first = première colonne à parcourir. * +* end = colonne de fin de parcours. * +* * +* Description : Supprime du texte représenté par une ligne de tampon. * +* * +* Retour : - * +* * +* Remarques : - * +* * +******************************************************************************/ + +void g_buffer_line_delete_text(GBufferLine *line, BufferLineColumn first, BufferLineColumn end) +{ + BufferLineColumn i; /* Boucle de parcours #1 */ + + assert(first < end); + + for (i = first; i < end; i++) + reset_column(&line->columns[i]); + +} + /****************************************************************************** * * @@ -1353,7 +1422,8 @@ void g_buffer_line_update_max_widths(GBufferLine *line, GBufferLine *manager) g_object_ref(G_OBJECT(manager)); line->manager = manager; - g_object_unref(G_OBJECT(old)); + if (old != NULL) + g_object_unref(G_OBJECT(old)); } @@ -1388,6 +1458,32 @@ void g_buffer_line_update_max_widths(GBufferLine *line, GBufferLine *manager) /****************************************************************************** * * * Paramètres : line = ligne à venir consulter. * +* * +* Description : Renvoie la ligne comptabilisant les largeurs pour un groupe. * +* * +* Retour : Ligne considérée comme la gestionnaire d'un ensemble. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GBufferLine *g_buffer_line_get_width_manager(GBufferLine *line) +{ + GBufferLine *result; /* Gestionnaire à retourner */ + + if (line->flags & BLF_WIDTH_MANAGER) + result = line; + else + result = line->manager; + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : line = ligne à venir consulter. * * max_widths = tableau résumant les largeurs maximales. [OUT]* * merged_width = largeur maximale en cas de fusion. |OUT] * * * @@ -1404,10 +1500,7 @@ void g_buffer_line_apply_max_widths(GBufferLine *line, gint *max_widths, gint *m GBufferLine *manager; /* Gestionnaire de groupe */ BufferLineColumn i; /* Boucle de parcours */ - if (line->flags & BLF_WIDTH_MANAGER) - manager = line; - else - manager = line->manager; + manager = g_buffer_line_get_width_manager(line); for (i = 0; i < BLC_COUNT; i++) max_widths[i] = MAX(manager->max_widths[i], max_widths[i]); @@ -1434,6 +1527,7 @@ void g_buffer_line_apply_max_widths(GBufferLine *line, gint *max_widths, gint *m gint g_buffer_line_compute_max_width(const GBufferLine *line, BufferLineColumn index, const gint *max_widths) { gint result; /* Largeur à retourner */ + //GBufferLine *manager; /* Gestionnaire de groupe */ assert(index < BLC_COUNT); @@ -1447,6 +1541,8 @@ gint g_buffer_line_compute_max_width(const GBufferLine *line, BufferLineColumn i else { + //manager = g_buffer_line_get_width_manager(line); + if (line->flags & BLF_WIDTH_MANAGER) result = line->max_widths[index]; else |