diff options
Diffstat (limited to 'src/glibext/gbuffercache.c')
-rw-r--r-- | src/glibext/gbuffercache.c | 69 |
1 files changed, 24 insertions, 45 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; } |