summaryrefslogtreecommitdiff
path: root/src/glibext
diff options
context:
space:
mode:
Diffstat (limited to 'src/glibext')
-rw-r--r--src/glibext/generators/hex.c16
-rw-r--r--src/glibext/generators/hex.h2
-rw-r--r--src/glibext/widthtracker.c29
-rw-r--r--src/glibext/widthtracker.h3
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);