diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2018-07-14 11:48:54 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2018-07-14 11:48:54 (GMT) |
commit | bea3337108fa5b59b8f6fdbe016d5ed6a6300bc6 (patch) | |
tree | 517abf46e76b2a6cc8ddb3ac2dec5ffacc28a128 /src/glibext/generators | |
parent | e0af5dc9c01a5b9649c68ec63109ba98b6843329 (diff) |
Begun to switch to abstract locations in internal rendering buffers.
Diffstat (limited to 'src/glibext/generators')
-rw-r--r-- | src/glibext/generators/prologue.c | 32 | ||||
-rw-r--r-- | src/glibext/generators/rborder.c | 32 |
2 files changed, 44 insertions, 20 deletions
diff --git a/src/glibext/generators/prologue.c b/src/glibext/generators/prologue.c index 2f4075e..63d326b 100644 --- a/src/glibext/generators/prologue.c +++ b/src/glibext/generators/prologue.c @@ -28,6 +28,7 @@ #include <malloc.h> +#include "../gbinarycursor.h" #include "../gbufferline.h" #include "../linegen-int.h" #include "../linesegment.h" @@ -74,10 +75,10 @@ static void g_intro_generator_finalize(GIntroGenerator *); static size_t g_intro_generator_count_lines(const GIntroGenerator *); /* Retrouve l'emplacement correspondant à une position donnée. */ -static void g_intro_generator_compute_addr(const GIntroGenerator *, gint, vmpa2t *, size_t, size_t); +static void g_intro_generator_compute_cursor(const GIntroGenerator *, gint, size_t, size_t, GLineCursor **); /* Détermine si le conteneur s'inscrit dans une plage donnée. */ -static int g_intro_generator_contains_addr(const GIntroGenerator *, const vmpa2t *, size_t, size_t); +static int g_intro_generator_contains_cursor(const GIntroGenerator *, size_t, size_t, const GLineCursor *); /* Renseigne sur les propriétés liées à un générateur. */ static BufferLineFlags g_intro_generator_get_flags(const GIntroGenerator *, size_t, size_t); @@ -151,8 +152,8 @@ static void g_intro_generator_init(GIntroGenerator *generator) static void g_intro_generator_interface_init(GLineGeneratorInterface *iface) { iface->count = (linegen_count_lines_fc)g_intro_generator_count_lines; - iface->compute = (linegen_compute_fc)g_intro_generator_compute_addr; - iface->contains = (linegen_contains_fc)g_intro_generator_contains_addr; + iface->compute = (linegen_compute_fc)g_intro_generator_compute_cursor; + iface->contains = (linegen_contains_fc)g_intro_generator_contains_cursor; iface->get_flags = (linegen_get_flags_fc)g_intro_generator_get_flags; iface->print = (linegen_print_fc)g_intro_generator_print; @@ -284,9 +285,9 @@ static size_t g_intro_generator_count_lines(const GIntroGenerator *generator) * * * Paramètres : generator = générateur à consulter. * * x = position géographique sur la ligne concernée. * -* addr = position en mémoire à analyser. * * index = indice de cette même ligne dans le tampon global.* * repeat = indice d'utilisations successives du générateur. * +* cursor = emplacement à constituer. [OUT] * * * * Description : Retrouve l'emplacement correspondant à une position donnée. * * * @@ -296,9 +297,11 @@ static size_t g_intro_generator_count_lines(const GIntroGenerator *generator) * * ******************************************************************************/ -static void g_intro_generator_compute_addr(const GIntroGenerator *generator, gint x, vmpa2t *addr, size_t index, size_t repeat) +static void g_intro_generator_compute_cursor(const GIntroGenerator *generator, gint x, size_t index, size_t repeat, GLineCursor **cursor) { - copy_vmpa(addr, &generator->addr); + *cursor = g_binary_cursor_new(); + + g_binary_cursor_update(G_BINARY_CURSOR(*cursor), &generator->addr); } @@ -306,9 +309,9 @@ static void g_intro_generator_compute_addr(const GIntroGenerator *generator, gin /****************************************************************************** * * * Paramètres : generator = générateur à consulter. * -* addr = position en mémoire à analyser. * * index = indice de cette même ligne dans le tampon global.* * repeat = indice d'utilisations successives du générateur. * +* cursor = emplacement à analyser. * * * * Description : Détermine si le conteneur s'inscrit dans une plage donnée. * * * @@ -318,9 +321,18 @@ static void g_intro_generator_compute_addr(const GIntroGenerator *generator, gin * * ******************************************************************************/ -static int g_intro_generator_contains_addr(const GIntroGenerator *generator, const vmpa2t *addr, size_t index, size_t repeat) +static int g_intro_generator_contains_cursor(const GIntroGenerator *generator, size_t index, size_t repeat, const GLineCursor *cursor) { - return cmp_vmpa(addr, &generator->addr); + int result; /* Conclusion à retourner */ + vmpa2t addr; /* Autre emplacement à comparer*/ + + assert(G_IS_BINARY_CURSOR(cursor)); + + g_binary_cursor_get_info(G_BINARY_CURSOR(cursor), &addr); + + result = cmp_vmpa(&addr, &generator->addr); + + return result; } diff --git a/src/glibext/generators/rborder.c b/src/glibext/generators/rborder.c index a440377..62c374d 100644 --- a/src/glibext/generators/rborder.c +++ b/src/glibext/generators/rborder.c @@ -29,6 +29,7 @@ #include <string.h> +#include "../gbinarycursor.h" #include "../gbufferline.h" #include "../linegen-int.h" #include "../linesegment.h" @@ -81,10 +82,10 @@ static void g_border_generator_finalize(GBorderGenerator *); static size_t g_border_generator_count_lines(const GBorderGenerator *); /* Retrouve l'emplacement correspondant à une position donnée. */ -static void g_border_generator_compute_addr(const GBorderGenerator *, gint, vmpa2t *, size_t, size_t); +static void g_border_generator_compute_cursor(const GBorderGenerator *, gint, size_t, size_t, GLineCursor **); /* Détermine si le conteneur s'inscrit dans une plage donnée. */ -static int g_border_generator_contains_addr(const GBorderGenerator *, const vmpa2t *, size_t, size_t); +static int g_border_generator_contains_cursor(const GBorderGenerator *, size_t, size_t, const GLineCursor *); /* Renseigne sur les propriétés liées à un générateur. */ static BufferLineFlags g_border_generator_get_flags(const GBorderGenerator *, size_t, size_t); @@ -156,8 +157,8 @@ static void g_border_generator_init(GBorderGenerator *generator) static void g_border_generator_interface_init(GLineGeneratorInterface *iface) { iface->count = (linegen_count_lines_fc)g_border_generator_count_lines; - iface->compute = (linegen_compute_fc)g_border_generator_compute_addr; - iface->contains = (linegen_contains_fc)g_border_generator_contains_addr; + iface->compute = (linegen_compute_fc)g_border_generator_compute_cursor; + iface->contains = (linegen_contains_fc)g_border_generator_contains_cursor; iface->get_flags = (linegen_get_flags_fc)g_border_generator_get_flags; iface->print = (linegen_print_fc)g_border_generator_print; @@ -261,9 +262,9 @@ static size_t g_border_generator_count_lines(const GBorderGenerator *generator) * * * Paramètres : generator = générateur à consulter. * * x = position géographique sur la ligne concernée. * -* addr = position en mémoire à analyser. * * index = indice de cette même ligne dans le tampon global.* * repeat = indice d'utilisations successives du générateur. * +* cursor = emplacement à constituer. [OUT] * * * * Description : Retrouve l'emplacement correspondant à une position donnée. * * * @@ -273,9 +274,11 @@ static size_t g_border_generator_count_lines(const GBorderGenerator *generator) * * ******************************************************************************/ -void g_border_generator_compute_addr(const GBorderGenerator *generator, gint x, vmpa2t *addr, size_t index, size_t repeat) +void g_border_generator_compute_cursor(const GBorderGenerator *generator, gint x, size_t index, size_t repeat, GLineCursor **cursor) { - copy_vmpa(addr, &generator->addr); + *cursor = g_binary_cursor_new(); + + g_binary_cursor_update(G_BINARY_CURSOR(*cursor), &generator->addr); } @@ -283,9 +286,9 @@ void g_border_generator_compute_addr(const GBorderGenerator *generator, gint x, /****************************************************************************** * * * Paramètres : generator = générateur à consulter. * -* addr = position en mémoire à analyser. * * index = indice de cette même ligne dans le tampon global.* * repeat = indice d'utilisations successives du générateur. * +* cursor = emplacement à analyser. * * * * Description : Détermine si le conteneur s'inscrit dans une plage donnée. * * * @@ -295,9 +298,18 @@ void g_border_generator_compute_addr(const GBorderGenerator *generator, gint x, * * ******************************************************************************/ -static int g_border_generator_contains_addr(const GBorderGenerator *generator, const vmpa2t *addr, size_t index, size_t repeat) +static int g_border_generator_contains_cursor(const GBorderGenerator *generator, size_t index, size_t repeat, const GLineCursor *cursor) { - return cmp_vmpa(addr, &generator->addr); + int result; /* Conclusion à retourner */ + vmpa2t addr; /* Autre emplacement à comparer*/ + + assert(G_IS_BINARY_CURSOR(cursor)); + + g_binary_cursor_get_info(G_BINARY_CURSOR(cursor), &addr); + + result = cmp_vmpa(&addr, &generator->addr); + + return result; } |