diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2012-01-14 16:06:42 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2012-01-14 16:06:42 (GMT) |
commit | 2ad11520c0bfefd68a89689497752983792a96ba (patch) | |
tree | 9271a1bd90bd58f49b8a68c41b348639f67fb559 /src/glibext | |
parent | d90aa93fc202fdf1ba4e4e7e799ce8d7e4632b7f (diff) |
Updated calls to take the binary rendering options into account.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@225 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/glibext')
-rw-r--r-- | src/glibext/gbufferline.c | 9 | ||||
-rw-r--r-- | src/glibext/gbufferline.h | 5 | ||||
-rw-r--r-- | src/glibext/gcodebuffer.c | 18 | ||||
-rw-r--r-- | src/glibext/gcodebuffer.h | 6 |
4 files changed, 26 insertions, 12 deletions
diff --git a/src/glibext/gbufferline.c b/src/glibext/gbufferline.c index 08684d5..cc99ee8 100644 --- a/src/glibext/gbufferline.c +++ b/src/glibext/gbufferline.c @@ -2,7 +2,7 @@ /* OpenIDA - Outil d'analyse de fichiers binaires * gbufferline.c - représentation de fragments de texte en ligne * - * Copyright (C) 2010 Cyrille Bagard + * Copyright (C) 2010-2012 Cyrille Bagard * * This file is part of OpenIDA. * @@ -519,6 +519,8 @@ 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. * +* addr = indique si les positions doivent être affichées. * +* code = indique si le code binaire doit être affiché. * * * * Description : Imprime la ligne de texte représentée. * * * @@ -528,7 +530,7 @@ void g_buffer_line_start_merge_at(GBufferLine *line, BufferLineColumn start) * * ******************************************************************************/ -void g_buffer_line_draw(GBufferLine *line, GdkDrawable *drawable, GdkGC *gc, const gint max_widths[BLC_COUNT], gint x_init, gint y) +void g_buffer_line_draw(GBufferLine *line, GdkDrawable *drawable, GdkGC *gc, const gint max_widths[BLC_COUNT], gint x_init, gint y, bool addr, bool code) { gint x; /* Point de départ d'impression*/ BufferLineColumn i; /* Boucle de parcours */ @@ -537,7 +539,8 @@ void g_buffer_line_draw(GBufferLine *line, GdkDrawable *drawable, GdkGC *gc, con for (i = BLC_ADDRESS; i < BLC_COUNT; i++) { - /* TODO : skip if... */ + if (i == BLC_ADDRESS && !addr) continue; + if (i == BLC_BINARY && !code) continue; draw_segments_of_column(&line->columns[i], drawable, gc, x, y); diff --git a/src/glibext/gbufferline.h b/src/glibext/gbufferline.h index d4384e3..66ec2b0 100644 --- a/src/glibext/gbufferline.h +++ b/src/glibext/gbufferline.h @@ -2,7 +2,7 @@ /* OpenIDA - Outil d'analyse de fichiers binaires * gbufferline.h - prototypes pour la représentation de fragments de texte en ligne * - * Copyright (C) 2010 Cyrille Bagard + * Copyright (C) 2010-2012 Cyrille Bagard * * This file is part of OpenIDA. * @@ -26,6 +26,7 @@ #include <glib-object.h> +#include <stdbool.h> #include "gbuffersegment.h" @@ -123,7 +124,7 @@ gint g_buffer_line_get_width(GBufferLine *, BufferLineColumn); void g_buffer_line_start_merge_at(GBufferLine *, BufferLineColumn); /* Imprime la ligne de texte représentée. */ -void g_buffer_line_draw(GBufferLine *, GdkDrawable *, GdkGC *, const gint [BLC_COUNT], gint, gint); +void g_buffer_line_draw(GBufferLine *, GdkDrawable *, GdkGC *, const gint [BLC_COUNT], gint, gint, bool, bool); diff --git a/src/glibext/gcodebuffer.c b/src/glibext/gcodebuffer.c index 9f22df7..373f33b 100644 --- a/src/glibext/gcodebuffer.c +++ b/src/glibext/gcodebuffer.c @@ -2,7 +2,7 @@ /* OpenIDA - Outil d'analyse de fichiers binaires * gcodebuffer.h - prototypes pour l'affichage d'un fragment de code d'assemblage * - * Copyright (C) 2010 Cyrille Bagard + * Copyright (C) 2010-2012 Cyrille Bagard * * This file is part of OpenIDA. * @@ -369,6 +369,8 @@ gint g_buffer_view_get_line_height(GBufferView *view) * Paramètres : view = visualisation à consulter. * * width = largeur requise pour une pleine visualisation. [OUT]* * height = hauteur requise pour une pleine visualisation. [OUT]* +* addr = indique si les positions doivent être affichées. * +* code = indique si le code binaire doit être affiché. * * * * Description : Fournit les dimensions requises par une visualisation. * * * @@ -378,7 +380,7 @@ gint g_buffer_view_get_line_height(GBufferView *view) * * ******************************************************************************/ -void g_buffer_view_get_size(GBufferView *view, gint *width, gint *height) +void g_buffer_view_get_size(GBufferView *view, gint *width, gint *height, bool addr, bool code) { unsigned int i; /* Boucle de parcours */ @@ -389,8 +391,14 @@ void g_buffer_view_get_size(GBufferView *view, gint *width, gint *height) g_buffer_view_compute_required_widths(view); for (i = 0; i < BLC_COUNT; i++) + { + if (i == BLC_ADDRESS && !addr) continue; + if (i == BLC_BINARY && !code) continue; + *width += view->max_widths[i]; + } + *height *= (view->last - view->first); } @@ -425,6 +433,8 @@ void g_buffer_view_define_extra_drawing(GBufferView *view, buffer_line_draw_fc m * gc = contexte graphique à utiliser pour les pinceaux. * * fake_x = abscisse réelle du point 0 à l'écran. * * fake_y = ordonnée réelle du point 0 à l'écran. * +* addr = indique si les positions doivent être affichées. * +* code = indique si le code binaire doit être affiché. * * * * Description : Imprime la visualisation du tempon de code désassemblé. * * * @@ -434,7 +444,7 @@ void g_buffer_view_define_extra_drawing(GBufferView *view, buffer_line_draw_fc m * * ******************************************************************************/ -void g_buffer_view_draw(const GBufferView *view, const GdkEventExpose *event, GdkGC *gc, gint fake_x, gint fake_y) +void g_buffer_view_draw(const GBufferView *view, const GdkEventExpose *event, GdkGC *gc, gint fake_x, gint fake_y, bool addr, bool code) { GdkDrawable *drawable; /* Surface de dessin */ gint real_x; /* Abscisse réelle pour tampon */ @@ -477,7 +487,7 @@ void g_buffer_view_draw(const GBufferView *view, const GdkEventExpose *event, Gd if (view->drawing_extra != NULL) view->drawing_extra(lines[i], drawable, gc, fake_x, y, view->drawing_data); - g_buffer_line_draw(lines[i], drawable, gc, view->max_widths, real_x, y); + g_buffer_line_draw(lines[i], drawable, gc, view->max_widths, real_x, y, addr, code); y += view->line_height; diff --git a/src/glibext/gcodebuffer.h b/src/glibext/gcodebuffer.h index 49b954d..811a479 100644 --- a/src/glibext/gcodebuffer.h +++ b/src/glibext/gcodebuffer.h @@ -2,7 +2,7 @@ /* OpenIDA - Outil d'analyse de fichiers binaires * gcodebuffer.h - prototypes pour l'affichage d'un fragment de code d'assemblage * - * Copyright (C) 2010 Cyrille Bagard + * Copyright (C) 2010-2012 Cyrille Bagard * * This file is part of OpenIDA. * @@ -89,13 +89,13 @@ GBufferView *g_buffer_view_new(GCodeBuffer *); gint g_buffer_view_get_line_height(GBufferView *); /* Fournit les dimensions requises par une visualisation. */ -void g_buffer_view_get_size(GBufferView *, gint *, gint *); +void g_buffer_view_get_size(GBufferView *, gint *, gint *, bool, bool); /* Définit à une procédure à appeler lors des dessins de ligne. */ void g_buffer_view_define_extra_drawing(GBufferView *, buffer_line_draw_fc, void *); /* Imprime la visualisation du tempon de code désassemblé. */ -void g_buffer_view_draw(const GBufferView *, const GdkEventExpose *, GdkGC *, gint, gint); +void g_buffer_view_draw(const GBufferView *, const GdkEventExpose *, GdkGC *, gint, gint, bool, bool); /* Fournit la ligne présente à une ordonnée donnée. */ GBufferLine *g_buffer_view_find_line_at(GBufferView *, gint); |