summaryrefslogtreecommitdiff
path: root/src/glibext
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2020-07-27 21:54:34 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2020-07-27 21:54:34 (GMT)
commit703e0d10d56bb288b515526f0d0f1994391619bf (patch)
treea633c7286968908504a4ba9e9296bc80f8ffd2b1 /src/glibext
parent9606b8e49299e37b297da039fc8a645f1ab4cf2d (diff)
Removed some extra special column indexes.
Diffstat (limited to 'src/glibext')
-rw-r--r--src/glibext/bufferline.c51
-rw-r--r--src/glibext/bufferline.h12
-rw-r--r--src/glibext/gdisplayoptions.c34
-rw-r--r--src/glibext/gdisplayoptions.h5
4 files changed, 60 insertions, 42 deletions
diff --git a/src/glibext/bufferline.c b/src/glibext/bufferline.c
index 5eec1db..ec1176b 100644
--- a/src/glibext/bufferline.c
+++ b/src/glibext/bufferline.c
@@ -33,6 +33,7 @@
#include "linecolumn.h"
#include "../common/extstr.h"
#include "../core/paths.h"
+#include "../gtkext/gtkblockdisplay.h"
@@ -55,8 +56,7 @@ struct _GBufferLine
line_column *columns; /* Répartition du texte */
size_t col_count; /* Nombre de colonnes présentes*/
- BufferLineColumn merge_start; /* Début de la zone globale */
- BufferLineColumn last_used; /* Dernière colonne utilisée */
+ size_t merge_start; /* Début de la zone globale */
BufferLineFlags flags; /* Drapeaux particuliers */
@@ -178,7 +178,6 @@ static void g_buffer_line_init(GBufferLine *line)
line->columns = NULL;
line->col_count = 0;
line->merge_start = -1;
- line->last_used = -1;
}
@@ -503,19 +502,9 @@ void g_buffer_line_append_text(GBufferLine *line, size_t column, const char *tex
size_t index; /* Indice d'insertion */
content_origin *origin; /* Définition d'une origine */
+ assert(column < line->col_count);
assert(length > 0);
- if (column == -1)
- column = BLC_LAST_USED;
-
- if (column == BLC_MAIN)
- column = BLC_ASSEMBLY;//line->main_column;
-
- if (column == BLC_LAST_USED)
- column = line->last_used;
- else
- line->last_used = column;
-
index = append_text_to_line_column(&line->columns[column], text, length, type);
if (creator != NULL)
@@ -720,10 +709,7 @@ BufferLineColumn g_buffer_line_get_merge_start(const GBufferLine *line)
void g_buffer_line_start_merge_at(GBufferLine *line, BufferLineColumn start)
{
- if (start == BLC_LAST_USED)
- line->merge_start = line->last_used;
- else
- line->merge_start = start;
+ line->merge_start = start;
}
@@ -801,10 +787,11 @@ void g_buffer_line_remove_flag(GBufferLine *line, BufferLineFlags flag)
/******************************************************************************
* *
-* Paramètres : line = ligne de texte à manipuler. *
-* ctx = éléments à disposition pour l'exportation. *
-* type = type d'exportation attendue. *
-* display = règles d'affichage des colonnes modulables. *
+* Paramètres : line = ligne de texte à manipuler. *
+* ctx = éléments à disposition pour l'exportation. *
+* type = type d'exportation attendue. *
+* col_count = quantité de colonnes existantes au total. *
+* options = règles d'affichage des colonnes modulables. *
* *
* Description : Exporte la ligne de texte représentée. *
* *
@@ -814,9 +801,10 @@ void g_buffer_line_remove_flag(GBufferLine *line, BufferLineFlags flag)
* *
******************************************************************************/
-void g_buffer_line_export(GBufferLine *line, buffer_export_context *ctx, BufferExportType type, const bool *display)
+void g_buffer_line_export(GBufferLine *line, buffer_export_context *ctx, BufferExportType type, const GDisplayOptions *options)
{
- BufferLineColumn i; /* Boucle de parcours */
+ size_t opt_count; /* Qté de colonnes en option */
+ size_t i; /* Boucle de parcours */
int col_span; /* Fusion de colonnes ? */
switch (type)
@@ -828,9 +816,16 @@ void g_buffer_line_export(GBufferLine *line, buffer_export_context *ctx, BufferE
break;
}
- for (i = 0; i < BLC_COUNT; i++)
+ opt_count = g_display_options_count(options);
+ assert(opt_count < line->col_count);
+
+ for (i = 0; i < line->col_count; i++)
{
- if (i < BLC_DISPLAY && !display[i]) continue;
+ if (i < opt_count)
+ {
+ if (!g_display_options_get(options, i))
+ continue;
+ }
switch (type)
{
@@ -859,10 +854,10 @@ void g_buffer_line_export(GBufferLine *line, buffer_export_context *ctx, BufferE
col_span = 1;
else if (i == line->merge_start)
- col_span = BLC_COUNT - i;
+ col_span = line->col_count - i;
else
- col_span = ((i + 1) == BLC_COUNT ? -1 : 0);
+ col_span = ((i + 1) == line->col_count ? -1 : 0);
export_line_column_segments(&line->columns[i], ctx, type, col_span);
diff --git a/src/glibext/bufferline.h b/src/glibext/bufferline.h
index 0e20b37..319f9b7 100644
--- a/src/glibext/bufferline.h
+++ b/src/glibext/bufferline.h
@@ -65,18 +65,8 @@ typedef enum _BufferLineColumn
BLC_COUNT,
- BLC_LAST_USED, /* Dernière colonne utilisée */
- BLC_INVALID, /* Valeur de non-initialisation*/
- BLC_MAIN /* Colonne principale (cf. imm)*/
-
} BufferLineColumn;
-/* Première colonne de l'ensemble */
-#define BLC_FIRST BLC_PHYSICAL
-
-/* Première colonne toujours affichée */
-#define BLC_DISPLAY BLC_ASSEMBLY_LABEL
-
/* Confort pour l'insertion de texte */
#define SL(str) str, strlen(str)
@@ -149,7 +139,7 @@ BufferLineFlags g_buffer_line_get_flags(const GBufferLine *);
void g_buffer_line_remove_flag(GBufferLine *, BufferLineFlags);
/* Exporte la ligne de texte représentée. */
-void g_buffer_line_export(GBufferLine *, buffer_export_context *, BufferExportType, const bool *);
+void g_buffer_line_export(GBufferLine *, buffer_export_context *, BufferExportType, const GDisplayOptions *);
diff --git a/src/glibext/gdisplayoptions.c b/src/glibext/gdisplayoptions.c
index c0fa614..a8f835b 100644
--- a/src/glibext/gdisplayoptions.c
+++ b/src/glibext/gdisplayoptions.c
@@ -189,7 +189,7 @@ static void g_display_options_finalize(GDisplayOptions *options)
* *
* Paramètres : - *
* *
-* Description : Crée un un groupe d'options pour le rendu des lignes. *
+* Description : Crée un groupe d'options pour le rendu des lignes. *
* *
* Retour : Adresse de la structure mise en place. *
* *
@@ -199,7 +199,7 @@ static void g_display_options_finalize(GDisplayOptions *options)
GDisplayOptions *g_display_options_new(void)
{
- GDisplayOptions *result; /* Structure à retourner */
+ GDisplayOptions *result; /* Structure à retourner */
result = g_object_new(G_TYPE_DISPLAY_OPTIONS, NULL);
@@ -210,6 +210,36 @@ GDisplayOptions *g_display_options_new(void)
/******************************************************************************
* *
+* Paramètres : template = modèle de groupe à copier. *
+* *
+* Description : Copie un groupe d'options pour le rendu des lignes. *
+* *
+* Retour : Adresse de la structure mise en place. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GDisplayOptions *g_display_options_dup(const GDisplayOptions *template)
+{
+ GDisplayOptions *result; /* Structure à retourner */
+ size_t count; /* Nombre d'options à copier */
+ size_t i; /* Boucle de parcours */
+
+ result = g_display_options_new();
+
+ count = g_display_options_count(template);
+
+ for (i = 0; i < count; i++)
+ g_display_options_add(result, template->names[i], template->values[i]);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
* Paramètres : options = options à consulter. *
* *
* Description : Dénombre la quantité d'options représentées. *
diff --git a/src/glibext/gdisplayoptions.h b/src/glibext/gdisplayoptions.h
index 7549897..1a30e81 100644
--- a/src/glibext/gdisplayoptions.h
+++ b/src/glibext/gdisplayoptions.h
@@ -48,9 +48,12 @@ typedef struct _GDisplayOptionsClass GDisplayOptionsClass;
/* Indique le type défini pour des options de représentation. */
GType g_display_options_get_type(void);
-/* Crée un un groupe d'options pour le rendu des lignes. */
+/* Crée un groupe d'options pour le rendu des lignes. */
GDisplayOptions *g_display_options_new(void);
+/* Copie un groupe d'options pour le rendu des lignes. */
+GDisplayOptions *g_display_options_dup(const GDisplayOptions *);
+
/* Dénombre la quantité d'options représentées. */
size_t g_display_options_count(const GDisplayOptions *);