summaryrefslogtreecommitdiff
path: root/src/glibext/gbufferline.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-07-19 23:16:29 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-07-19 23:16:29 (GMT)
commit5093663eb4e4aa17edd97cbd864ccb4a3d48a803 (patch)
tree48192ae6b37e1803d78ed81f5658ad9d2756cfd1 /src/glibext/gbufferline.c
parent12abead3f60d6f72c0d41672af87215dfc13c8fc (diff)
Given their own structure to rendering options.
Diffstat (limited to 'src/glibext/gbufferline.c')
-rw-r--r--src/glibext/gbufferline.c59
1 files changed, 38 insertions, 21 deletions
diff --git a/src/glibext/gbufferline.c b/src/glibext/gbufferline.c
index 95af21a..39ef0ce 100644
--- a/src/glibext/gbufferline.c
+++ b/src/glibext/gbufferline.c
@@ -1050,7 +1050,7 @@ const line_segment *g_buffer_line_get_segment_from_coord(const GBufferLine *line
* *
* Paramètres : line = ligne à venir consulter. *
* summary = résumé des largeurs maximales. *
-* display = règles d'affichage des colonnes modulables. *
+* options = règles d'affichage des colonnes modulables. *
* base = position jusqu'au segment trouvé. [OUT] *
* offset = position à la colonne visée. [OUT] *
* dir = direction d'un éventuel déplacement en cours. *
@@ -1065,12 +1065,13 @@ const line_segment *g_buffer_line_get_segment_from_coord(const GBufferLine *line
* *
******************************************************************************/
-bool g_buffer_line_get_coord_at(const GBufferLine *line, const line_width_summary *summary, const bool *display, gint *base, gint *offset, GdkScrollDirection dir, bool force, col_coord_t *coord)
+bool g_buffer_line_get_coord_at(const GBufferLine *line, const line_width_summary *summary, const GDisplayOptions *options, gint *base, gint *offset, GdkScrollDirection dir, bool force, col_coord_t *coord)
{
bool result; /* Bilan à retourner */
BufferLineColumn last; /* Dernière colonne remplie */
gint last_base; /* Dernière abscisse associée */
- BufferLineColumn i; /* Boucle de parcours */
+ size_t count; /* Qté de colonnes en option */
+ size_t i; /* Boucle de parcours */
gint width; /* Largeur d'une colonne donnée*/
gint limit; /* Limite d'appartenance */
gint consumed; /* Distance vers le segment */
@@ -1085,9 +1086,15 @@ bool g_buffer_line_get_coord_at(const GBufferLine *line, const line_width_summar
/* On cible déjà la colonne idéale */
+ count = g_display_options_count(options);
+
for (i = 0; i < BLC_COUNT; i++)
{
- if (i < BLC_DISPLAY && !display[i]) continue;
+ if (i < count)
+ {
+ if (!g_display_options_get(options, i))
+ continue;
+ }
/* Mémorisation de la dernière colonne contenant quelque chose... */
if (get_column_width(&line->columns[i]) > 0)
@@ -1249,7 +1256,7 @@ bool g_buffer_line_get_coord_at(const GBufferLine *line, const line_width_summar
* *
* Paramètres : line = ligne à venir consulter. *
* summary = résumé des largeurs maximales. *
-* display = règles d'affichage des colonnes modulables. *
+* options = règles d'affichage des colonnes modulables. *
* base = position jusqu'au segment trouvé. [OUT] *
* offset = position à la colonne visée. [OUT] *
* dir = direction d'un éventuel déplacement en cours. *
@@ -1263,13 +1270,13 @@ bool g_buffer_line_get_coord_at(const GBufferLine *line, const line_width_summar
* *
******************************************************************************/
-const line_segment *g_buffer_line_get_segment_at(const GBufferLine *line, const line_width_summary *summary, const bool *display, gint *base, gint *offset, GdkScrollDirection dir, bool force)
+const line_segment *g_buffer_line_get_segment_at(const GBufferLine *line, const line_width_summary *summary, const GDisplayOptions *options, gint *base, gint *offset, GdkScrollDirection dir, bool force)
{
const line_segment *result; /* Trouvaille à retourner */
col_coord_t coord; /* Emplacement du contenu visé */
bool status; /* Bilan de la localisation */
- status = g_buffer_line_get_coord_at(line, summary, display, base, offset, dir, force, &coord);
+ status = g_buffer_line_get_coord_at(line, summary, options, base, offset, dir, force, &coord);
if (status)
result = g_buffer_line_get_segment_from_coord(line, &coord);
@@ -1285,7 +1292,7 @@ const line_segment *g_buffer_line_get_segment_at(const GBufferLine *line, const
* *
* Paramètres : line = ligne à venir consulter. *
* summary = résumé des largeurs maximales. *
-* display = règles d'affichage des colonnes modulables. *
+* options = règles d'affichage des colonnes modulables. *
* base = position jusqu'au segment trouvé. [OUT] *
* offset = position à la colonne visée. [OUT] *
* dir = direction d'un éventuel déplacement en cours. *
@@ -1299,7 +1306,7 @@ const line_segment *g_buffer_line_get_segment_at(const GBufferLine *line, const
* *
******************************************************************************/
-GObject *g_buffer_line_get_creator_at(const GBufferLine *line, const line_width_summary *summary, const bool *display, gint *base, gint *offset, GdkScrollDirection dir, bool force)
+GObject *g_buffer_line_get_creator_at(const GBufferLine *line, const line_width_summary *summary, const GDisplayOptions *options, gint *base, gint *offset, GdkScrollDirection dir, bool force)
{
GObject *result; /* Trouvaille à retourner */
col_coord_t target; /* Emplacement du contenu visé */
@@ -1309,7 +1316,7 @@ GObject *g_buffer_line_get_creator_at(const GBufferLine *line, const line_width_
result = NULL;
- status = g_buffer_line_get_coord_at(line, summary, display, base, offset, dir, force, &target);
+ status = g_buffer_line_get_coord_at(line, summary, options, base, offset, dir, force, &target);
if (status)
{
@@ -1337,7 +1344,7 @@ GObject *g_buffer_line_get_creator_at(const GBufferLine *line, const line_width_
* Paramètres : line = ligne à venir consulter. *
* coord = cordonnées à consulter puis renseigner. [OUT] *
* summary = résumé des largeurs maximales. *
-* display = règles d'affichage des colonnes modulables. *
+* options = règles d'affichage des colonnes modulables. *
* dir = orientation des recherches. *
* offset = décalage pour amener à l'extrémité nouvelle. [OUT] *
* *
@@ -1349,12 +1356,13 @@ GObject *g_buffer_line_get_creator_at(const GBufferLine *line, const line_width_
* *
******************************************************************************/
-bool g_buffer_line_find_near_coord(const GBufferLine *line, col_coord_t *coord, const line_width_summary *summary, const bool *display, GdkScrollDirection dir, gint *offset)
+bool g_buffer_line_find_near_coord(const GBufferLine *line, col_coord_t *coord, const line_width_summary *summary, const GDisplayOptions *options, GdkScrollDirection dir, gint *offset)
{
bool result; /* Bilan à retourner */
- BufferLineColumn i; /* Boucle de parcours #1 */
+ size_t count; /* Qté de colonnes en option */
+ size_t i; /* Boucle de parcours #1 */
bool displayed; /* Confort de lecture */
- BufferLineColumn k; /* Boucle de parcours #2 */
+ size_t k; /* Boucle de parcours #2 */
gint width; /* Largeur d'une colonne donnée*/
result = false;
@@ -1369,6 +1377,8 @@ bool g_buffer_line_find_near_coord(const GBufferLine *line, col_coord_t *coord,
/* Recherche dans la direction des colonnes voisines */
+ count = g_display_options_count(options);
+
if (!result)
switch (dir)
{
@@ -1380,7 +1390,7 @@ bool g_buffer_line_find_near_coord(const GBufferLine *line, col_coord_t *coord,
/* On s'assure que la colonne précédente est visible et peuplée */
for (; i > BLC_FIRST && !result; i--)
{
- displayed = (i <= BLC_DISPLAY ? display[i - 1] : true);
+ displayed = (i <= count ? g_display_options_get(options, i - 1) : true);
if (displayed)
{
@@ -1400,7 +1410,7 @@ bool g_buffer_line_find_near_coord(const GBufferLine *line, col_coord_t *coord,
/* On s'assure que la colonne suivante est visible et peuplée */
for (; (i + 1) < BLC_COUNT && !result; i++)
{
- displayed = ((i + 1) < BLC_DISPLAY ? display[i + 1] : true);
+ displayed = ((i + 1) < count ? g_display_options_get(options, i + 1) : true);
if (displayed)
{
@@ -1428,7 +1438,7 @@ bool g_buffer_line_find_near_coord(const GBufferLine *line, col_coord_t *coord,
for (k = 0; k < i; k++)
{
- displayed = (k < BLC_DISPLAY ? display[k] : true);
+ displayed = (k < count ? g_display_options_get(options, k) : true);
if (displayed)
{
@@ -1473,7 +1483,7 @@ bool g_buffer_line_find_near_coord(const GBufferLine *line, col_coord_t *coord,
* summary = résumé des largeurs maximales. *
* x_init = abscisse du point d'impression de départ. *
* y = ordonnée du point d'impression. *
-* display = règles d'affichage des colonnes modulables. *
+* options = règles d'affichage des colonnes modulables. *
* list = liste de contenus à mettre en évidence. *
* *
* Description : Imprime la ligne de texte représentée. *
@@ -1484,12 +1494,13 @@ bool g_buffer_line_find_near_coord(const GBufferLine *line, col_coord_t *coord,
* *
******************************************************************************/
-void g_buffer_line_draw(GBufferLine *line, cairo_t *cairo, const line_width_summary *summary, gint x_init, gint y, const bool *display, const segcnt_list *list)
+void g_buffer_line_draw(GBufferLine *line, cairo_t *cairo, const line_width_summary *summary, gint x_init, gint y, const GDisplayOptions *options, const segcnt_list *list)
{
GBufferLineClass *class; /* Stockage de briques de base */
bool has_src_surface; /* Note une présence définie */
gint x; /* Point de départ d'impression*/
- BufferLineColumn i; /* Boucle de parcours */
+ size_t count; /* Qté de colonnes en option */
+ size_t i; /* Boucle de parcours */
gint max_width; /* Largeur maximale de colonne */
if (line->flags != BLF_NONE && line->flags != BLF_HAS_CODE)
@@ -1516,9 +1527,15 @@ void g_buffer_line_draw(GBufferLine *line, cairo_t *cairo, const line_width_summ
x = x_init;
+ count = g_display_options_count(options);
+
for (i = 0; i < BLC_COUNT; i++)
{
- if (i < BLC_DISPLAY && !display[i]) continue;
+ if (i < count)
+ {
+ if (!g_display_options_get(options, i))
+ continue;
+ }
draw_line_column_segments(&line->columns[i], cairo, x, y, list);