summaryrefslogtreecommitdiff
path: root/src/glibext
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-07-14 12:41:30 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-07-14 12:41:30 (GMT)
commit078b2ffd38da040ab87a9686bcc2e796841cccb7 (patch)
tree2e5c94065cb5b4d38fac700e10104a0da7ae970d /src/glibext
parent736b616092f91fc0863a82851620ec2e095212cb (diff)
Replaced all the remaining concrete locations in internal rendering buffers.
Diffstat (limited to 'src/glibext')
-rw-r--r--src/glibext/gbuffercache.c69
-rw-r--r--src/glibext/gbuffercache.h6
-rw-r--r--src/glibext/gbufferview.c49
-rw-r--r--src/glibext/gbufferview.h6
4 files changed, 62 insertions, 68 deletions
diff --git a/src/glibext/gbuffercache.c b/src/glibext/gbuffercache.c
index a64ec68..91f3a6d 100644
--- a/src/glibext/gbuffercache.c
+++ b/src/glibext/gbuffercache.c
@@ -29,7 +29,6 @@
#include <stdlib.h>
-#include "gbinarycursor.h" // REMME
#include "chrysamarshal.h"
@@ -1479,11 +1478,11 @@ void g_buffer_cache_draw(const GBufferCache *cache, cairo_t *cr, size_t first, s
/******************************************************************************
* *
-* Paramètres : cache = tampon de lignes à consulter. *
-* addr = adresse à retrouver dans le tampon. *
-* first = indique si on l'arrête à la première ou la dernière. *
-* start = borne inférieure des recherches (incluse). *
-* end = borne supérieure des recherches (incluse). *
+* Paramètres : cache = tampon de lignes à consulter. *
+* cursor = emplacement à retrouver dans le tampon. *
+* first = indique si on l'arrête à la première ou la dernière.*
+* start = borne inférieure des recherches (incluse). *
+* end = borne supérieure des recherches (incluse). *
* *
* Description : Indique l'indice correspondant à une adresse donnée. *
* *
@@ -1493,10 +1492,9 @@ void g_buffer_cache_draw(const GBufferCache *cache, cairo_t *cr, size_t first, s
* *
******************************************************************************/
-size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2t *addr, bool first, size_t start, size_t end)
+size_t _g_buffer_cache_find_index_by_cursor(const GBufferCache *cache, const GLineCursor *cursor, bool first, size_t start, size_t end)
{
size_t result; /* Indice à retourner */
- GLineCursor *___tmp;
cache_info *found; /* Eventuel élément trouvé */
int find_containing_generator(const GLineCursor *c, const cache_info *i)
@@ -1513,12 +1511,7 @@ size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2
}
-
- ___tmp = g_binary_cursor_new();
- g_binary_cursor_update(G_BINARY_CURSOR(___tmp), addr);
-
-
- found = (cache_info *)bsearch(___tmp, &cache->lines[start], end - start + 1,
+ found = (cache_info *)bsearch(cursor, &cache->lines[start], end - start + 1,
sizeof(cache_info), (__compar_fn_t)find_containing_generator);
if (found == NULL)
@@ -1536,7 +1529,7 @@ size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2
{
found = &cache->lines[result - 1];
- if (find_containing_generator(___tmp, found) != 0)
+ if (find_containing_generator(cursor, found) != 0)
break;
}
@@ -1546,17 +1539,13 @@ size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2
{
found = &cache->lines[result + 1];
- if (find_containing_generator(___tmp, found) != 0)
+ if (find_containing_generator(cursor, found) != 0)
break;
}
}
-
- g_object_unref(G_OBJECT(___tmp));
-
-
return result;
}
@@ -1564,9 +1553,9 @@ size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2
/******************************************************************************
* *
-* Paramètres : cache = tampon de lignes à consulter. *
-* addr = adresse à retrouver dans le tampon. *
-* first = indique si on l'arrête à la première ou la dernière. *
+* Paramètres : cache = tampon de lignes à consulter. *
+* cursor = emplacement à retrouver dans le tampon. *
+* first = indique si on l'arrête à la première ou la dernière.*
* *
* Description : Indique l'indice correspondant à une adresse donnée. *
* *
@@ -1576,14 +1565,14 @@ size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2
* *
******************************************************************************/
-size_t g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2t *addr, bool first)
+size_t g_buffer_cache_find_index_by_cursor(const GBufferCache *cache, const GLineCursor *cursor, bool first)
{
size_t result; /* Indice à retourner */
if (cache->used == 0)
result = 0;
else
- result = _g_buffer_cache_find_index_by_addr(cache, addr, first, 0, cache->used - 1);
+ result = _g_buffer_cache_find_index_by_cursor(cache, cursor, first, 0, cache->used - 1);
return result;
@@ -1646,13 +1635,13 @@ size_t g_buffer_cache_look_for_flag(const GBufferCache *cache, size_t start, Buf
/******************************************************************************
* *
-* Paramètres : cache = tampon de lignes à consulter. *
-* addr = adresse à présenter à l'écran. *
-* first = borne inférieure des recherches (incluse). *
-* last = borne supérieure des recherches (incluse). *
-* code = s'arrête si possible à une ligne avec code. *
-* x = position horizontale au sein du composant. [OUT] *
-* y = position verticale au sein du composant. [OUT] *
+* Paramètres : cache = tampon de lignes à consulter. *
+* cursor = emplacement à présenter à l'écran. *
+* first = borne inférieure des recherches (incluse). *
+* last = borne supérieure des recherches (incluse). *
+* code = s'arrête si possible à une ligne avec code. *
+* x = position horizontale au sein du composant. [OUT] *
+* y = position verticale au sein du composant. [OUT] *
* *
* Description : Indique la position d'affichage d'une adresse donnée. *
* *
@@ -1662,21 +1651,15 @@ size_t g_buffer_cache_look_for_flag(const GBufferCache *cache, size_t start, Buf
* *
******************************************************************************/
-bool g_buffer_cache_get_address_coordinates(const GBufferCache *cache, const vmpa2t *addr, size_t first, size_t last, bool code, gint *x, gint *y)
+bool g_buffer_cache_get_cursor_coordinates(const GBufferCache *cache, const GLineCursor *cursor, size_t first, size_t last, bool code, gint *x, gint *y)
{
bool result; /* Bilan à retourner */
- GLineCursor *___tmp;
size_t index; /* Indice de correspondance */
gint lheight; /* Hauteur d'une ligne */
const cache_info *info; /* Infos sur une ligne donnée */
const generator_link *generator; /* Générateur retenu */
-
- ___tmp = g_binary_cursor_new();
- g_binary_cursor_update(G_BINARY_CURSOR(___tmp), addr);
-
-
- index = _g_buffer_cache_find_index_by_addr(cache, addr, true, first, last);
+ index = _g_buffer_cache_find_index_by_cursor(cache, cursor, true, first, last);
result = (index < cache->used);
@@ -1702,7 +1685,7 @@ bool g_buffer_cache_get_address_coordinates(const GBufferCache *cache, const vmp
else
generator = &info->generators[0];
- if (!g_line_generator_contains_cursor(generator->instance, index + 1, generator->repeat, ___tmp))
+ if (!g_line_generator_contains_cursor(generator->instance, index + 1, generator->repeat, cursor))
break;
*y += lheight;
@@ -1711,10 +1694,6 @@ bool g_buffer_cache_get_address_coordinates(const GBufferCache *cache, const vmp
}
-
- g_object_unref(G_OBJECT(___tmp));
-
-
return result;
}
diff --git a/src/glibext/gbuffercache.h b/src/glibext/gbuffercache.h
index fdf59d7..453588e 100644
--- a/src/glibext/gbuffercache.h
+++ b/src/glibext/gbuffercache.h
@@ -105,16 +105,16 @@ void g_buffer_cache_collect_widths(GBufferCache *, size_t, line_width_summary *)
void g_buffer_cache_draw(const GBufferCache *, cairo_t *, size_t, size_t, const cairo_rectangle_int_t *, const bool *, const gint *, const segcnt_list *);
/* Indique l'indice correspondant à une adresse donnée. */
-size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *, const vmpa2t *, bool, size_t, size_t);
+size_t _g_buffer_cache_find_index_by_cursor(const GBufferCache *, const GLineCursor *, bool, size_t, size_t);
/* Indique l'indice correspondant à une adresse donnée. */
-size_t g_buffer_cache_find_index_by_addr(const GBufferCache *, const vmpa2t *, bool);
+size_t g_buffer_cache_find_index_by_cursor(const GBufferCache *, const GLineCursor *, bool);
/* Avance autant que possible vers une ligne idéale. */
size_t g_buffer_cache_look_for_flag(const GBufferCache *, size_t, BufferLineFlags);
/* Indique la position d'affichage d'une adresse donnée. */
-bool g_buffer_cache_get_address_coordinates(const GBufferCache *, const vmpa2t *, size_t, size_t, bool, gint *, gint *);
+bool g_buffer_cache_get_cursor_coordinates(const GBufferCache *, const GLineCursor *, size_t, size_t, bool, gint *, gint *);
diff --git a/src/glibext/gbufferview.c b/src/glibext/gbufferview.c
index 0eff4d8..c5bd81e 100644
--- a/src/glibext/gbufferview.c
+++ b/src/glibext/gbufferview.c
@@ -39,8 +39,8 @@ struct _GBufferView
bool external; /* Note l'origine de la liste */
bool unrestricted; /* Validité des informations */
- vmpa2t start; /* Première ligne intégrée */
- vmpa2t end; /* Dernière ligne intégrée */
+ GLineCursor *start; /* Première ligne intégrée */
+ GLineCursor *end; /* Dernière ligne intégrée */
size_t first; /* Indice de la première ligne */
size_t last; /* Indice de la dernière ligne */
@@ -391,7 +391,7 @@ GBufferCache *g_buffer_view_get_cache(const GBufferView *view)
* *
******************************************************************************/
-void g_buffer_view_restrict(GBufferView *view, const vmpa2t *start, const vmpa2t *end)
+void g_buffer_view_restrict(GBufferView *view, GLineCursor *start, GLineCursor *end)
{
bool state; /* Nouvel état à proclamer */
GWidthTracker *template; /* Suivi déjà en place */
@@ -419,11 +419,11 @@ void g_buffer_view_restrict(GBufferView *view, const vmpa2t *start, const vmpa2t
else
{
- copy_vmpa(&view->start, start);
- copy_vmpa(&view->end, end);
+ view->start = start;
+ view->end = end;
- view->first = g_buffer_cache_find_index_by_addr(view->cache, start, true);
- view->last = g_buffer_cache_find_index_by_addr(view->cache, end, false);
+ view->first = g_buffer_cache_find_index_by_cursor(view->cache, start, true);
+ view->last = g_buffer_cache_find_index_by_cursor(view->cache, end, false);
view->tracker = g_width_tracker_new_restricted(template, view->first, view->last);
@@ -450,12 +450,27 @@ void g_buffer_view_restrict(GBufferView *view, const vmpa2t *start, const vmpa2t
* *
******************************************************************************/
-bool g_buffer_view_get_restrictions(const GBufferView *view, vmpa2t *start, vmpa2t *end)
+bool g_buffer_view_get_restrictions(const GBufferView *view, GLineCursor **start, GLineCursor **end)
{
if (!view->unrestricted)
{
- if (start != NULL) copy_vmpa(start, &view->start);
- if (end != NULL) copy_vmpa(end, &view->end);
+ if (start != NULL)
+ {
+ *start = view->start;
+ g_object_ref(G_OBJECT(*start));
+ }
+
+ if (end != NULL)
+ {
+ *end = view->end;
+ g_object_ref(G_OBJECT(*end));
+ }
+
+ }
+ else
+ {
+ if (start != NULL) *start = NULL;
+ if (end != NULL) *end = NULL;
}
return !view->unrestricted;
@@ -1184,11 +1199,11 @@ static GBufferLine *g_buffer_view_find_line_at(GBufferView *view, gint y, size_t
/******************************************************************************
* *
-* Paramètres : view = visualisation à consulter. *
-* addr = adresse à présenter à l'écran. *
-* code = s'arrête si possible à une ligne avec code. *
-* x = position horizontale au sein du composant. [OUT] *
-* y = position verticale au sein du composant. [OUT] *
+* Paramètres : view = visualisation à consulter. *
+* cursor = emplacement à présenter à l'écran. *
+* code = s'arrête si possible à une ligne avec code. *
+* x = position horizontale au sein du composant. [OUT] *
+* y = position verticale au sein du composant. [OUT] *
* *
* Description : Indique la position d'affichage d'une adresse donnée. *
* *
@@ -1198,11 +1213,11 @@ static GBufferLine *g_buffer_view_find_line_at(GBufferView *view, gint y, size_t
* *
******************************************************************************/
-bool g_buffer_view_get_address_coordinates(GBufferView *view, const vmpa2t *addr, bool code, gint *x, gint *y)
+bool g_buffer_view_get_cursor_coordinates(GBufferView *view, const GLineCursor *cursor, bool code, gint *x, gint *y)
{
bool result; /* Bilan à retourner */
- result = g_buffer_cache_get_address_coordinates(view->cache, addr, view->first, view->last, code, x, y);
+ result = g_buffer_cache_get_cursor_coordinates(view->cache, cursor, view->first, view->last, code, x, y);
return result;
diff --git a/src/glibext/gbufferview.h b/src/glibext/gbufferview.h
index facc3b7..6b5ef45 100644
--- a/src/glibext/gbufferview.h
+++ b/src/glibext/gbufferview.h
@@ -57,10 +57,10 @@ GBufferView *g_buffer_view_new(GBufferCache *, segcnt_list *);
GBufferCache *g_buffer_view_get_cache(const GBufferView *);
/* Restreint le champ d'application de l'affichage. */
-void g_buffer_view_restrict(GBufferView *, const vmpa2t *, const vmpa2t *);
+void g_buffer_view_restrict(GBufferView *, GLineCursor *, GLineCursor *);
/* Indique le champ d'application de l'affichage. */
-bool g_buffer_view_get_restrictions(const GBufferView *, vmpa2t *, vmpa2t *);
+bool g_buffer_view_get_restrictions(const GBufferView *, GLineCursor **, GLineCursor **);
@@ -105,7 +105,7 @@ void g_buffer_view_draw(const GBufferView *, cairo_t *, gint, const cairo_rectan
/* Indique la position d'affichage d'une adresse donnée. */
-bool g_buffer_view_get_address_coordinates(GBufferView *, const vmpa2t *, bool, gint *, gint *);
+bool g_buffer_view_get_cursor_coordinates(GBufferView *, const GLineCursor *, bool, gint *, gint *);