summaryrefslogtreecommitdiff
path: root/src/glibext/generators
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-07-14 11:48:54 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-07-14 11:48:54 (GMT)
commitbea3337108fa5b59b8f6fdbe016d5ed6a6300bc6 (patch)
tree517abf46e76b2a6cc8ddb3ac2dec5ffacc28a128 /src/glibext/generators
parente0af5dc9c01a5b9649c68ec63109ba98b6843329 (diff)
Begun to switch to abstract locations in internal rendering buffers.
Diffstat (limited to 'src/glibext/generators')
-rw-r--r--src/glibext/generators/prologue.c32
-rw-r--r--src/glibext/generators/rborder.c32
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;
}