summaryrefslogtreecommitdiff
path: root/src/glibext/gcodebuffer.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2014-10-21 23:11:30 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2014-10-21 23:11:30 (GMT)
commit085fef16a819cb321fd38e7e0926d3cca863777a (patch)
treef2f24c6205134338999760f1a4a427b0c6c8be27 /src/glibext/gcodebuffer.c
parentec6aa436f4a1ae486feb7a88b2b8e793b59674d4 (diff)
Cleaned, fixed and improved the rules for the display of view columns.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@416 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/glibext/gcodebuffer.c')
-rw-r--r--src/glibext/gcodebuffer.c47
1 files changed, 18 insertions, 29 deletions
diff --git a/src/glibext/gcodebuffer.c b/src/glibext/gcodebuffer.c
index 0ac3bb3..1ea8f69 100644
--- a/src/glibext/gcodebuffer.c
+++ b/src/glibext/gcodebuffer.c
@@ -182,7 +182,7 @@ static void g_buffer_view_reset_required_height(GBufferView *);
static void g_buffer_view_reset_required_widths(GBufferView *);
/* Calcule les largeurs requises par une visualisation. */
-static void g_buffer_view_compute_required_widths(GBufferView *, bool, bool, bool);
+static void g_buffer_view_compute_required_widths(GBufferView *, const bool *);
@@ -893,9 +893,7 @@ static void g_buffer_view_compute_required_height(GBufferView *view)
/******************************************************************************
* *
* Paramètres : view = visualisation à mettre à jour. *
-* phys = indique si les positions doivent être affichées. *
-* virt = indique si les adresses doivent être affichées. *
-* code = indique si le code binaire doit être affiché. *
+* display = règles d'affichage des colonnes modulables. *
* *
* Description : Calcule les largeurs requises par une visualisation. *
* *
@@ -905,7 +903,7 @@ static void g_buffer_view_compute_required_height(GBufferView *view)
* *
******************************************************************************/
-static void g_buffer_view_compute_required_widths(GBufferView *view, bool phys, bool virt, bool code)
+static void g_buffer_view_compute_required_widths(GBufferView *view, const bool *display)
{
GBufferLine **lines; /* Liste des lignes à traiter */
size_t first; /* Première ligne intégrée */
@@ -938,7 +936,7 @@ static void g_buffer_view_compute_required_widths(GBufferView *view, bool phys,
view->max_widths[j] = MAX(view->max_widths[j], width);
}
- width = g_buffer_line_get_merge_width(lines[i], &merge, phys, virt, code);
+ width = g_buffer_line_get_merge_width(lines[i], &merge, display);
view->last_width = MAX(view->last_width, width);
if (merge != BLC_COUNT)
{
@@ -980,10 +978,8 @@ gint g_buffer_view_get_line_height(GBufferView *view)
/******************************************************************************
* *
-* Paramètres : view = visualisation à consulter. *
-* phys = indique si les positions doivent être affichées. *
-* virt = indique si les adresses doivent être affichées. *
-* code = indique si le code binaire doit être affiché. *
+* Paramètres : view = visualisation à consulter. *
+* display = règles d'affichage des colonnes modulables. *
* *
* Description : Fournit la largeur requise par une visualisation. *
* *
@@ -993,7 +989,7 @@ gint g_buffer_view_get_line_height(GBufferView *view)
* *
******************************************************************************/
-gint g_buffer_view_get_width(GBufferView *view, bool phys, bool virt, bool code)
+gint g_buffer_view_get_width(GBufferView *view, const bool *display)
{
gint result; /* Taille à retourner */
gint col_width; /* Calcul selon les colonnes */
@@ -1001,7 +997,7 @@ gint g_buffer_view_get_width(GBufferView *view, bool phys, bool virt, bool code)
BufferLineColumn i; /* Boucle de parcours */
if (!WIDTHS_CACHED(view))
- g_buffer_view_compute_required_widths(view, phys, virt, code);
+ g_buffer_view_compute_required_widths(view, display);
result = view->left_text;
@@ -1012,9 +1008,7 @@ gint g_buffer_view_get_width(GBufferView *view, bool phys, bool virt, bool code)
for (i = 0; i < BLC_COUNT; i++)
{
- if (i == BLC_PHYSICAL && !phys) continue;
- if (i == BLC_VIRTUAL && !virt) continue;
- if (i == BLC_BINARY && !code) continue;
+ if (i < BLC_DISPLAY && !display[i]) continue;
col_width += view->max_widths[i];
@@ -1027,9 +1021,7 @@ gint g_buffer_view_get_width(GBufferView *view, bool phys, bool virt, bool code)
for (i = 0; i < view->last_merge; i++)
{
- if (i == BLC_PHYSICAL && !phys) continue;
- if (i == BLC_VIRTUAL && !virt) continue;
- if (i == BLC_BINARY && !code) continue;
+ if (i < BLC_DISPLAY && !display[i]) continue;
full_width += view->max_widths[i];
@@ -1344,14 +1336,12 @@ void g_buffer_view_highlight_segments(GBufferView *view, gint x, gint y)
/******************************************************************************
* *
-* Paramètres : view = visualisation à représenter. *
-* cr = contexte graphique dédié à la procédure. *
-* fake_x = abscisse réelle du point 0 à l'écran. *
-* fake_y = ordonnée réelle du point 0 à l'écran. *
-* area = position et surface à traiter. *
-* phys = indique si les positions doivent être affichées. *
-* virt = indique si les adresses doivent être affichées. *
-* code = indique si le code binaire doit être affiché. *
+* Paramètres : view = visualisation à représenter. *
+* cr = contexte graphique dédié à la procédure. *
+* fake_x = abscisse réelle du point 0 à l'écran. *
+* fake_y = ordonnée réelle du point 0 à l'écran. *
+* area = position et surface à traiter. *
+* display = règles d'affichage des colonnes modulables. *
* *
* Description : Imprime la visualisation du tampon de code désassemblé. *
* *
@@ -1361,7 +1351,7 @@ void g_buffer_view_highlight_segments(GBufferView *view, gint x, gint y)
* *
******************************************************************************/
-void g_buffer_view_draw(const GBufferView *view, cairo_t *cr, gint fake_x, gint fake_y, const cairo_rectangle_int_t *area, bool phys, bool virt, bool code)
+void g_buffer_view_draw(const GBufferView *view, cairo_t *cr, gint fake_x, gint fake_y, const cairo_rectangle_int_t *area, const bool *display)
{
gint real_x; /* Abscisse réelle pour tampon */
gint real_y; /* Ordonnée réelle pour tampon */
@@ -1397,8 +1387,7 @@ void g_buffer_view_draw(const GBufferView *view, cairo_t *cr, gint fake_x, gint
view->drawing_extra(lines[i], drawable, gc, fake_x, y, view->drawing_data);
*/
- g_buffer_line_draw(lines[i], cr,
- view->max_widths, real_x, y, phys, virt, code);
+ g_buffer_line_draw(lines[i], cr, view->max_widths, real_x, y, display);
y += view->line_height;