diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2014-10-21 23:11:30 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2014-10-21 23:11:30 (GMT) |
commit | 085fef16a819cb321fd38e7e0926d3cca863777a (patch) | |
tree | f2f24c6205134338999760f1a4a427b0c6c8be27 /src/glibext | |
parent | ec6aa436f4a1ae486feb7a88b2b8e793b59674d4 (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')
-rw-r--r-- | src/glibext/gbufferline.c | 20 | ||||
-rw-r--r-- | src/glibext/gbufferline.h | 6 | ||||
-rw-r--r-- | src/glibext/gcodebuffer.c | 47 | ||||
-rw-r--r-- | src/glibext/gcodebuffer.h | 4 |
4 files changed, 31 insertions, 46 deletions
diff --git a/src/glibext/gbufferline.c b/src/glibext/gbufferline.c index 758dff7..cb5c267 100644 --- a/src/glibext/gbufferline.c +++ b/src/glibext/gbufferline.c @@ -717,11 +717,9 @@ gint g_buffer_line_get_column_width(GBufferLine *line, BufferLineColumn index) /****************************************************************************** * * -* Paramètres : line = ligne à venir compléter. * -* merge = précise la première colonne marquant la fusion. [OUT]* -* 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 : line = ligne à venir compléter. * +* merge = précise la première colonne marquant la fusion. [OUT]* +* display = règles d'affichage des colonnes modulables. * * * * Description : Fournit la dernière largeur d'une ligne avec fusion. * * * @@ -731,7 +729,7 @@ gint g_buffer_line_get_column_width(GBufferLine *line, BufferLineColumn index) * * ******************************************************************************/ -gint g_buffer_line_get_merge_width(GBufferLine *line, BufferLineColumn *merge, bool phys, bool virt, bool code) +gint g_buffer_line_get_merge_width(GBufferLine *line, BufferLineColumn *merge, const bool *display) { gint result; /* Largeur à retourner */ @@ -779,9 +777,7 @@ void g_buffer_line_start_merge_at(GBufferLine *line, BufferLineColumn start) * max_widths = largeurs de colonne à respecter. * * x_init = abscisse du point d'impression de départ. * * y = ordonnée du point d'impression. * -* 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 : Imprime la ligne de texte représentée. * * * @@ -791,7 +787,7 @@ void g_buffer_line_start_merge_at(GBufferLine *line, BufferLineColumn start) * * ******************************************************************************/ -void g_buffer_line_draw(GBufferLine *line, cairo_t *cairo, const gint max_widths[BLC_COUNT], gint x_init, gint y, bool phys, bool virt, bool code) +void g_buffer_line_draw(GBufferLine *line, cairo_t *cairo, const gint max_widths[BLC_COUNT], gint x_init, gint y, const bool *display) { GBufferLineClass *class; /* Stockage de briques de base */ gint x; /* Point de départ d'impression*/ @@ -806,9 +802,7 @@ void g_buffer_line_draw(GBufferLine *line, cairo_t *cairo, const gint max_widths 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; draw_segments_of_column(&line->columns[i], cairo, x, y); diff --git a/src/glibext/gbufferline.h b/src/glibext/gbufferline.h index b96f7a6..8e436d9 100644 --- a/src/glibext/gbufferline.h +++ b/src/glibext/gbufferline.h @@ -69,6 +69,8 @@ typedef enum _BufferLineColumn } BufferLineColumn; +/* Première colonne toujours affichée */ +#define BLC_DISPLAY BLC_ASSEMBLY_HEAD /* Confort pour l'insertion de texte */ @@ -113,13 +115,13 @@ char *g_buffer_line_get_text(const GBufferLine *); gint g_buffer_line_get_column_width(GBufferLine *, BufferLineColumn); /* Fournit la dernière largeur d'une ligne avec fusion. */ -gint g_buffer_line_get_merge_width(GBufferLine *, BufferLineColumn *, bool, bool, bool); +gint g_buffer_line_get_merge_width(GBufferLine *, BufferLineColumn *, const bool *); /* Définit la colonne à partir de laquelle la fusion opère. */ void g_buffer_line_start_merge_at(GBufferLine *, BufferLineColumn); /* Imprime la ligne de texte représentée. */ -void g_buffer_line_draw(GBufferLine *, cairo_t *, const gint [BLC_COUNT], gint, gint, bool, bool, bool); +void g_buffer_line_draw(GBufferLine *, cairo_t *, const gint [BLC_COUNT], gint, gint, const bool *); /* Exporte la ligne de texte représentée. */ void g_buffer_line_export(GBufferLine *, int, BufferExportType, bool, bool, bool, bool); 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; diff --git a/src/glibext/gcodebuffer.h b/src/glibext/gcodebuffer.h index 472d403..1387eb9 100644 --- a/src/glibext/gcodebuffer.h +++ b/src/glibext/gcodebuffer.h @@ -123,7 +123,7 @@ GCodeBuffer *g_buffer_view_get_buffer(const GBufferView *); gint g_buffer_view_get_line_height(GBufferView *); /* Fournit la largeur requise par une visualisation. */ -gint g_buffer_view_get_width(GBufferView *, bool, bool, bool); +gint g_buffer_view_get_width(GBufferView *, const bool *); /* Fournit la hauteur requise par une visualisation. */ gint g_buffer_view_get_height(const GBufferView *); @@ -141,7 +141,7 @@ bool g_buffer_view_unhighlight_segments(GBufferView *); void g_buffer_view_highlight_segments(GBufferView *, gint, gint); /* Imprime la visualisation du tampon de code désassemblé. */ -void g_buffer_view_draw(const GBufferView *, cairo_t *, gint, gint, const cairo_rectangle_int_t *, bool, bool, bool); +void g_buffer_view_draw(const GBufferView *, cairo_t *, gint, gint, const cairo_rectangle_int_t *, const bool *); /* Fournit la ligne présente à une ordonnée donnée. */ GBufferLine *g_buffer_view_find_line_at(GBufferView *, gint, size_t *); |