summaryrefslogtreecommitdiff
path: root/src/glibext/bufferview.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2020-07-26 18:52:15 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2020-07-26 18:52:15 (GMT)
commita6c46fc296db67321db3d4bb586346998de90422 (patch)
tree042cd0fd89fd1f1c8943b3aefd2b50585f461f58 /src/glibext/bufferview.c
parent19516ffcca14abb082c5109125b7249bdc7fc199 (diff)
Reduced the quantity of arguments used to deal with lines.
Diffstat (limited to 'src/glibext/bufferview.c')
-rw-r--r--src/glibext/bufferview.c67
1 files changed, 22 insertions, 45 deletions
diff --git a/src/glibext/bufferview.c b/src/glibext/bufferview.c
index e40715e..769cd8b 100644
--- a/src/glibext/bufferview.c
+++ b/src/glibext/bufferview.c
@@ -76,10 +76,10 @@ static void g_buffer_view_finalize(GBufferView *);
static void on_buffer_cache_size_changed(const GBufferCache *, bool, size_t, size_t, GBufferView *);
/* Calcule la position idéale de curseur pour un point donné. */
-bool _g_buffer_view_compute_caret_full(GBufferView *, gint, GBufferLine *, size_t, const GDisplayOptions *, const line_width_summary *, cairo_rectangle_int_t *, GLineCursor **);
+static bool _g_buffer_view_compute_caret_full(GBufferView *, gint, GBufferLine *, size_t, const GDisplayOptions *, cairo_rectangle_int_t *, GLineCursor **);
/* Déplace le curseur au sein d'une vue de tampon. */
-static bool _g_buffer_view_move_caret(GBufferView *, const GBufferLine *, size_t, cairo_rectangle_int_t *, bool, GdkScrollDirection, const GDisplayOptions *, const line_width_summary *);
+static bool _g_buffer_view_move_caret(GBufferView *, const GBufferLine *, size_t, cairo_rectangle_int_t *, bool, GdkScrollDirection, const GDisplayOptions *);
/* Fournit la ligne présente à une ordonnée donnée. */
@@ -598,7 +598,6 @@ gint g_buffer_view_get_height(const GBufferView *view)
* x = abscisse proposée pour le nouvel emplacement. *
* y = ordonnée proposée pour le nouvel emplacement. *
* options = règles d'affichage des colonnes modulables. *
-* offsets = décalages supplémentaires à appliquer. *
* caret = position du curseur à construire. [OUT] *
* cursor = emplacement correspondant à cette position. [OUT] *
* *
@@ -610,7 +609,7 @@ gint g_buffer_view_get_height(const GBufferView *view)
* *
******************************************************************************/
-bool g_buffer_view_compute_caret_full(GBufferView *view, gint x, gint y, const GDisplayOptions *options, const line_width_summary *offsets, cairo_rectangle_int_t *caret, GLineCursor **cursor)
+bool g_buffer_view_compute_caret_full(GBufferView *view, gint x, gint y, const GDisplayOptions *options, cairo_rectangle_int_t *caret, GLineCursor **cursor)
{
bool result; /* Bilan à retourner */
gint lheight; /* Hauteur d'une ligne */
@@ -635,7 +634,7 @@ bool g_buffer_view_compute_caret_full(GBufferView *view, gint x, gint y, const G
/* Calcul d'une position */
- result = _g_buffer_view_compute_caret_full(view, x, line, index, options, offsets, caret, cursor);
+ result = _g_buffer_view_compute_caret_full(view, x, line, index, options, caret, cursor);
g_object_unref(G_OBJECT(line));
@@ -653,7 +652,6 @@ bool g_buffer_view_compute_caret_full(GBufferView *view, gint x, gint y, const G
* line = ligne correspondant à la position. *
* index = indice de cette même ligne dans le tampon. *
* options = règles d'affichage des colonnes modulables. *
-* offsets = décalages supplémentaires à appliquer. *
* caret = position du curseur à construire. [OUT] *
* cursor = emplacement correspondant à cette position. [OUT] *
* *
@@ -665,11 +663,10 @@ bool g_buffer_view_compute_caret_full(GBufferView *view, gint x, gint y, const G
* *
******************************************************************************/
-bool _g_buffer_view_compute_caret_full(GBufferView *view, gint x, GBufferLine *line, size_t index, const GDisplayOptions *options, const line_width_summary *offsets, cairo_rectangle_int_t *caret, GLineCursor **cursor)
+static bool _g_buffer_view_compute_caret_full(GBufferView *view, gint x, GBufferLine *line, size_t index, const GDisplayOptions *options, cairo_rectangle_int_t *caret, GLineCursor **cursor)
{
bool result; /* Bilan à retourner */
gint text_pos; /* Abscisse de départ du texte */
- line_width_summary summary; /* Résumé concis des largeurs */
gint base; /* Position absolue de segment */
bool status; /* Bilan de la localisation */
gint lheight; /* Hauteur d'une ligne */
@@ -685,11 +682,9 @@ bool _g_buffer_view_compute_caret_full(GBufferView *view, gint x, GBufferLine *l
/* Calcul d'une position */
- g_width_tracker_get_local_width_summary(view->tracker, index, &summary);
-
x -= text_pos;
- status = g_buffer_line_get_coord_at(line, &summary, options, offsets, &base, &x,
+ status = g_buffer_line_get_coord_at(line, index, view->tracker, options, &base, &x,
GDK_SCROLL_LEFT, true, (col_coord_t []) { { 0 } });
if (!status)
@@ -726,7 +721,6 @@ bool _g_buffer_view_compute_caret_full(GBufferView *view, gint x, GBufferLine *l
* ctrl = indique la demande d'un parcours rapide. *
* dir = direction du parcours. *
* options = règles d'affichage des colonnes modulables. *
-* offsets = décalages supplémentaires à appliquer. *
* *
* Description : Déplace le curseur au sein d'une vue de tampon. *
* *
@@ -736,12 +730,11 @@ bool _g_buffer_view_compute_caret_full(GBufferView *view, gint x, GBufferLine *l
* *
******************************************************************************/
-static bool _g_buffer_view_move_caret(GBufferView *view, const GBufferLine *line, size_t index, cairo_rectangle_int_t *caret, bool ctrl, GdkScrollDirection dir, const GDisplayOptions *options, const line_width_summary *offsets)
+static bool _g_buffer_view_move_caret(GBufferView *view, const GBufferLine *line, size_t index, cairo_rectangle_int_t *caret, bool ctrl, GdkScrollDirection dir, const GDisplayOptions *options)
{
bool result; /* Bilan à retourner */
gint text_pos; /* Abscisse de départ du texte */
gint offset; /* Point de travail modifiable */
- line_width_summary summary; /* Résumé concis des largeurs */
gint base; /* Position absolue de segment */
col_coord_t coord; /* Coordonnées en interne */
line_segment *segment; /* Bribe de texte trouvée */
@@ -758,11 +751,9 @@ static bool _g_buffer_view_move_caret(GBufferView *view, const GBufferLine *line
offset = caret->x - text_pos;
- g_width_tracker_get_local_width_summary(view->tracker, index, &summary);
-
/* Déplacement au sein du segment courant ? */
- result = g_buffer_line_get_coord_at(line, &summary, options, offsets, &base, &offset, dir, false, &coord);
+ result = g_buffer_line_get_coord_at(line, index, view->tracker, options, &base, &offset, dir, false, &coord);
if (result)
{
@@ -780,7 +771,7 @@ static bool _g_buffer_view_move_caret(GBufferView *view, const GBufferLine *line
{
base = 0;
- result = g_buffer_line_find_near_coord(line, &coord, &summary, options, offsets, dir, &offset);
+ result = g_buffer_line_find_near_coord(line, index, &coord, view->tracker, options, dir, &offset);
}
@@ -802,7 +793,6 @@ static bool _g_buffer_view_move_caret(GBufferView *view, const GBufferLine *line
* ctrl = indique la demande d'un parcours rapide. *
* dir = direction du parcours. *
* options = règles d'affichage des colonnes modulables. *
-* offsets = décalages supplémentaires à appliquer. *
* caret = position du curseur à faire évoluer. [OUT] *
* cursor = emplacement correspondant à cette position. [OUT] *
* *
@@ -814,7 +804,7 @@ static bool _g_buffer_view_move_caret(GBufferView *view, const GBufferLine *line
* *
******************************************************************************/
-bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection dir, const GDisplayOptions *options, const line_width_summary *offsets, cairo_rectangle_int_t *caret, GLineCursor **cursor)
+bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection dir, const GDisplayOptions *options, cairo_rectangle_int_t *caret, GLineCursor **cursor)
{
bool result; /* Bilan à retourner */
size_t index; /* Indice de ligne de tampon */
@@ -844,8 +834,7 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
other = g_buffer_cache_find_line_by_index(view->cache, index);
assert(other != NULL);
- result = _g_buffer_view_compute_caret_full(view, caret->x, other, index,
- options, offsets, caret, cursor);
+ result = _g_buffer_view_compute_caret_full(view, caret->x, other, index, options, caret, cursor);
g_object_unref(G_OBJECT(other));
@@ -862,8 +851,7 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
other = g_buffer_cache_find_line_by_index(view->cache, index);
assert(other != NULL);
- result = _g_buffer_view_compute_caret_full(view, caret->x, other, index,
- options, offsets, caret, cursor);
+ result = _g_buffer_view_compute_caret_full(view, caret->x, other, index, options, caret, cursor);
g_object_unref(G_OBJECT(other));
@@ -873,7 +861,7 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
case GDK_SCROLL_LEFT:
- moved = _g_buffer_view_move_caret(view, line, index, caret, ctrl, GDK_SCROLL_LEFT, options, offsets);
+ moved = _g_buffer_view_move_caret(view, line, index, caret, ctrl, GDK_SCROLL_LEFT, options);
if (moved)
{
@@ -888,8 +876,7 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
other = g_buffer_cache_find_line_by_index(view->cache, index);
assert(other != NULL);
- result = _g_buffer_view_compute_caret_full(view, INT_MAX, other, index,
- options, offsets, caret, cursor);
+ result = _g_buffer_view_compute_caret_full(view, INT_MAX, other, index, options, caret, cursor);
g_object_unref(G_OBJECT(other));
@@ -899,7 +886,7 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
case GDK_SCROLL_RIGHT:
- moved = _g_buffer_view_move_caret(view, line, index, caret, ctrl, GDK_SCROLL_RIGHT, options, offsets);
+ moved = _g_buffer_view_move_caret(view, line, index, caret, ctrl, GDK_SCROLL_RIGHT, options);
if (moved)
{
@@ -916,8 +903,7 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
other = g_buffer_cache_find_line_by_index(view->cache, index);
assert(other != NULL);
- result = _g_buffer_view_compute_caret_full(view, text_pos, other, index,
- options, offsets, caret, cursor);
+ result = _g_buffer_view_compute_caret_full(view, text_pos, other, index, options, caret, cursor);
g_object_unref(G_OBJECT(other));
@@ -951,7 +937,6 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
* x = abscisse de la zone principale à traiter. *
* y = ordonnée de la zone principale à traiter. *
* options = règles d'affichage des colonnes modulables. *
-* offsets = décalages supplémentaires à appliquer. *
* *
* Description : Trouve le créateur à l'origine d'un emplacement donné. *
* *
@@ -961,14 +946,13 @@ bool g_buffer_view_move_caret(GBufferView *view, bool ctrl, GdkScrollDirection d
* *
******************************************************************************/
-GObject *g_buffer_view_find_creator(GBufferView *view, gint x, gint y, const GDisplayOptions *options, const line_width_summary *offsets)
+GObject *g_buffer_view_find_creator(GBufferView *view, gint x, gint y, const GDisplayOptions *options)
{
GObject *result; /* Trouvaille à faire remonter */
gint text_pos; /* Abscisse de départ du texte */
gint lheight; /* Hauteur d'une ligne */
size_t index; /* Indice de ligne de tampon */
GBufferLine *line; /* Ligne à la position courante*/
- line_width_summary summary; /* Résumé concis des largeurs */
result = NULL;
@@ -995,11 +979,9 @@ GObject *g_buffer_view_find_creator(GBufferView *view, gint x, gint y, const GDi
/* Recherche d'un segment et de son empreinte */
- g_width_tracker_get_local_width_summary(view->tracker, index, &summary);
-
x -= text_pos;
- result = g_buffer_line_get_creator_at(line, &summary, options, offsets,
+ result = g_buffer_line_get_creator_at(line, index, view->tracker, options,
(gint []) { 0 }, &x, GDK_SCROLL_LEFT, false);
g_object_unref(G_OBJECT(line));
@@ -1046,7 +1028,6 @@ bool g_buffer_view_unhighlight_segments(GBufferView *view)
* x = abscisse de la zone principale à traiter. *
* y = ordonnée de la zone principale à traiter. *
* options = règles d'affichage des colonnes modulables. *
-* offsets = décalages supplémentaires à appliquer. *
* *
* Description : Surligne tous les segments similaires à celui sous la souris.*
* *
@@ -1056,14 +1037,13 @@ bool g_buffer_view_unhighlight_segments(GBufferView *view)
* *
******************************************************************************/
-bool g_buffer_view_highlight_segments(GBufferView *view, gint x, gint y, const GDisplayOptions *options, const line_width_summary *offsets)
+bool g_buffer_view_highlight_segments(GBufferView *view, gint x, gint y, const GDisplayOptions *options)
{
bool result; /* Besoin à faire remonter */
gint text_pos; /* Abscisse de départ du texte */
gint lheight; /* Hauteur d'une ligne */
size_t index; /* Indice de ligne de tampon */
GBufferLine *line; /* Ligne à la position courante*/
- line_width_summary summary; /* Résumé concis des largeurs */
line_segment *segment; /* Segment sélectionnable */
/* Réinitialisation */
@@ -1096,11 +1076,9 @@ bool g_buffer_view_highlight_segments(GBufferView *view, gint x, gint y, const G
/* Recherche d'un segment et de son empreinte */
- g_width_tracker_get_local_width_summary(view->tracker, index, &summary);
-
x -= text_pos;
- segment = g_buffer_line_get_segment_at(line, &summary, options, offsets,
+ segment = g_buffer_line_get_segment_at(line, index, view->tracker, options,
(gint []) { 0 }, &x, GDK_SCROLL_LEFT, true);
g_object_unref(G_OBJECT(line));
@@ -1130,7 +1108,6 @@ bool g_buffer_view_highlight_segments(GBufferView *view, gint x, gint y, const G
* virt_y = ordonnée réelle du point 0 à l'écran. *
* area = position et surface à traiter. *
* options = règles d'affichage des colonnes modulables. *
-* offsets = décalages supplémentaires à appliquer. *
* selected = ordonnée d'une ligne sélectionnée ou NULL. *
* scale = échelle appliquée à la surface de rendu. *
* export = indique si la vue est en cours d'exportation. *
@@ -1143,7 +1120,7 @@ bool g_buffer_view_highlight_segments(GBufferView *view, gint x, gint y, const G
* *
******************************************************************************/
-void g_buffer_view_draw(const GBufferView *view, cairo_t *cr, gint virt_y, const cairo_rectangle_int_t *area, const GDisplayOptions *options, const line_width_summary *offsets, gint *selected, double scale, bool export)
+void g_buffer_view_draw(const GBufferView *view, cairo_t *cr, gint virt_y, const cairo_rectangle_int_t *area, const GDisplayOptions *options, gint *selected, double scale, bool export)
{
gint line_height; /* Hauteur d'une ligne */
gint cr_y; /* Ordonnée pour le dessin */
@@ -1186,7 +1163,7 @@ void g_buffer_view_draw(const GBufferView *view, cairo_t *cr, gint virt_y, const
else
highlighted = view->highlighted;
- g_buffer_cache_draw(view->cache, cr, first, last, area, options, offsets, selected, highlighted);
+ g_buffer_cache_draw(view->cache, cr, first, last, area, options, selected, highlighted);
if (export)
unref_segment_content_list(highlighted);