summaryrefslogtreecommitdiff
path: root/src/glibext
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2012-01-14 16:06:42 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2012-01-14 16:06:42 (GMT)
commit2ad11520c0bfefd68a89689497752983792a96ba (patch)
tree9271a1bd90bd58f49b8a68c41b348639f67fb559 /src/glibext
parentd90aa93fc202fdf1ba4e4e7e799ce8d7e4632b7f (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.c9
-rw-r--r--src/glibext/gbufferline.h5
-rw-r--r--src/glibext/gcodebuffer.c18
-rw-r--r--src/glibext/gcodebuffer.h6
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);