diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2020-11-17 07:30:08 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2020-11-17 07:30:08 (GMT) |
commit | baef7fad5e4a7f19926c8722e8ab1e1d426d4433 (patch) | |
tree | f882ccb39ae6b06ed886519820f06557187f6b14 /src/glibext | |
parent | 187cf13a6f0b0ddbb46fd563d66bb01b0dcd18be (diff) |
Fixed raw data display.
Diffstat (limited to 'src/glibext')
-rw-r--r-- | src/glibext/generators/hex.c | 16 | ||||
-rw-r--r-- | src/glibext/generators/hex.h | 2 | ||||
-rw-r--r-- | src/glibext/widthtracker.c | 29 | ||||
-rw-r--r-- | src/glibext/widthtracker.h | 3 |
4 files changed, 43 insertions, 7 deletions
diff --git a/src/glibext/generators/hex.c b/src/glibext/generators/hex.c index 9285e00..7de2d6b 100644 --- a/src/glibext/generators/hex.c +++ b/src/glibext/generators/hex.c @@ -45,6 +45,7 @@ struct _GHexGenerator GBinContent *content; /* Contenu à représenter */ gint left_start; /* Abscisse des impressions */ + gint padding; /* Bourrage supplémentaire */ phys_t bytes_per_line; /* Nombre d'octets par ligne */ @@ -347,7 +348,7 @@ static void g_hex_generator_compute_cursor(const GHexGenerator *generator, gint } else { - x -= (bytes_width + COL_MARGIN); + x -= (bytes_width + COL_MARGIN + generator->padding + COL_MARGIN); phys += (x / class->char_width); @@ -571,6 +572,7 @@ GBinContent *g_hex_generator_get_content(const GHexGenerator *generator) * Paramètres : generator = générateur à ajuster. * * left = position de départ à gauche pour le texte. * * show_pos = affichage des positions sur la gauche ? * +* padding = bourrage entre les colonnes de brut et ASCII. * * width = largeur maximale disponible. * * * * Description : Ajuste la génération à une nouvelle largeur de rendu. * @@ -581,7 +583,7 @@ GBinContent *g_hex_generator_get_content(const GHexGenerator *generator) * * ******************************************************************************/ -bool g_hex_generator_auto_fit(GHexGenerator *generator, gint left, bool show_pos, gint width) +bool g_hex_generator_auto_fit(GHexGenerator *generator, gint left, bool show_pos, gint padding, gint width) { bool result; /* Bilan à faire remonter */ GHexGeneratorClass *class; /* Accès aux informations */ @@ -592,16 +594,14 @@ bool g_hex_generator_auto_fit(GHexGenerator *generator, gint left, bool show_pos class = G_HEX_GENERATOR_GET_CLASS(generator); generator->left_start = left; + generator->padding = padding; if (show_pos) generator->left_start += class->addr_width + COL_MARGIN; for (i = 4; ; i += 4) { - requested = left; - - if (show_pos) - requested += class->addr_width + COL_MARGIN; + requested = generator->left_start; block_count = (i / 4); @@ -609,7 +609,11 @@ bool g_hex_generator_auto_fit(GHexGenerator *generator, gint left, bool show_pos requested += (block_count > 1 ? block_count - 1 : 0) * class->sep_width; requested += COL_MARGIN; + requested += padding; + requested += COL_MARGIN; + requested += i * class->char_width; + requested += COL_MARGIN; /* Limite atteinte ? */ if (requested > width) diff --git a/src/glibext/generators/hex.h b/src/glibext/generators/hex.h index 0a8b1a7..f4aeb03 100644 --- a/src/glibext/generators/hex.h +++ b/src/glibext/generators/hex.h @@ -57,7 +57,7 @@ GHexGenerator *g_hex_generator_new(GBinContent *); GBinContent *g_hex_generator_get_content(const GHexGenerator *); /* Ajuste la génération à une nouvelle largeur de rendu. */ -bool g_hex_generator_auto_fit(GHexGenerator *, gint, bool, gint); +bool g_hex_generator_auto_fit(GHexGenerator *, gint, bool, gint, gint); /* Indique le nombre d'octets programmés constituer une ligne. */ phys_t g_hex_generator_get_bytes_per_line(const GHexGenerator *); diff --git a/src/glibext/widthtracker.c b/src/glibext/widthtracker.c index 33d809b..eba30c1 100644 --- a/src/glibext/widthtracker.c +++ b/src/glibext/widthtracker.c @@ -592,6 +592,32 @@ size_t g_width_tracker_count_columns(const GWidthTracker *tracker) * * * Paramètres : tracker = gestionnaire de largeurs de lignes à mettre jour. * * col = indice de colonne visée. * +* * +* Description : Indique la largeur minimale pour une colonne donnée. * +* * +* Retour : Largeur minimale à imposée, nulle ou positive. * +* * +* Remarques : - * +* * +******************************************************************************/ + +gint g_width_tracker_get_column_min_width(GWidthTracker *tracker, size_t col) +{ + gint result; /* Largeur à renvoyer */ + + assert(col < tracker->col_count); + + result = tracker->min_widths[col]; + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : tracker = gestionnaire de largeurs de lignes à mettre jour. * +* col = indice de colonne visée. * * width = largeur minimale à imposer. * * * * Description : Impose une largeur minimale pour une colonne donnée. * @@ -606,6 +632,9 @@ void g_width_tracker_set_column_min_width(GWidthTracker *tracker, size_t col, gi { assert(col < tracker->col_count); + if (width < 0) + width = 0; + tracker->min_widths[col] = width; } diff --git a/src/glibext/widthtracker.h b/src/glibext/widthtracker.h index 4920f9b..113cf8a 100644 --- a/src/glibext/widthtracker.h +++ b/src/glibext/widthtracker.h @@ -79,6 +79,9 @@ GWidthTracker *g_width_tracker_new_restricted(const GWidthTracker *, size_t, siz /* Indique le nombre de colonnes prises en compte. */ size_t g_width_tracker_count_columns(const GWidthTracker *); +/* Indique la largeur minimale pour une colonne donnée. */ +gint g_width_tracker_get_column_min_width(GWidthTracker *, size_t); + /* Impose une largeur minimale pour une colonne donnée. */ void g_width_tracker_set_column_min_width(GWidthTracker *, size_t, gint); |