[gnumeric] Sheet style: new debug code.



commit b8d13172948d7509cde4412d8a06441fdef433cf
Author: Morten Welinder <terra gnome org>
Date:   Mon Aug 26 15:29:36 2013 -0400

    Sheet style: new debug code.

 ChangeLog         |    4 +++
 src/sheet-style.c |   55 ++++++++++++++++++++++++++++++++++++++++++++++++++++-
 2 files changed, 58 insertions(+), 1 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 5cd4b9b..5139122 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-08-26  Morten Welinder  <terra gnome org>
+
+       * src/sheet-style.c (cell_tile_dump): New function for debugging.
+
 2013-08-22  Jean Brefort  <jean brefort normalesup org>
 
        * src/wbc-gtk.c (wbcg_data_allocator_editor): initialize
diff --git a/src/sheet-style.c b/src/sheet-style.c
index 2b363cf..db4a460 100644
--- a/src/sheet-style.c
+++ b/src/sheet-style.c
@@ -3134,6 +3134,55 @@ sheet_style_range_foreach (Sheet const *sheet, GnmRange const *r,
 /* ------------------------------------------------------------------------- */
 
 static void
+cell_tile_dump (CellTile **tile, int level, CellTileOptimize *data,
+               int ccol, int crow)
+{
+       CellTileType type;
+       int const w = tile_widths[level];
+       int const h = tile_heights[level];
+       GnmRange rng;
+       const char *indent = "";
+
+       type = (*tile)->type;
+
+       range_init (&rng,
+                   ccol, crow,
+                   MIN (ccol + tile_widths[level + 1] - 1,
+                        data->ss->max_cols - 1),
+                   MIN (crow + tile_heights[level + 1] - 1,
+                        data->ss->max_rows - 1));
+
+       g_printerr ("%s%s: type %s\n",
+                   indent,
+                   range_as_string (&rng),
+                   tile_type_str[type]);
+
+       if (type == TILE_PTR_MATRIX) {
+               int i;
+
+               for (i = 0; i < TILE_SIZE_COL * TILE_SIZE_ROW; i++) {
+                       CellTile **subtile = (*tile)->ptr_matrix.ptr + i;
+                       int c = i % TILE_SIZE_COL;
+                       int r = i / TILE_SIZE_COL;
+                       cell_tile_dump (subtile, level - 1, data,
+                                       ccol + w * c,
+                                       crow + h * r);
+               }
+       } else {
+               int i;
+
+               for (i = 0; i < tile_size[type]; i++) {
+                       g_printerr ("%s: %d %p\n",
+                                   indent,
+                                   i,
+                                   (*tile)->style_any.style[i]);
+               }
+       }
+}
+
+/* ------------------------------------------------------------------------- */
+
+static void
 cell_tile_optimize (CellTile **tile, int level, CellTileOptimize *data,
                    int ccol, int crow)
 {
@@ -3364,8 +3413,12 @@ sheet_style_optimize (Sheet *sheet)
        data.ss = gnm_sheet_get_size (sheet);
        data.recursion = TRUE;
 
-       if (debug_style_optimize)
+       if (debug_style_optimize) {
                g_printerr ("Optimizing %s\n", sheet->name_unquoted);
+               cell_tile_dump (&sheet->style_data->styles,
+                               sheet->tile_top_level, &data,
+                               0, 0);
+       }
 
        verify = gnm_debug_flag ("style-optimize-verify");
        pre = verify ? sample_styles (sheet) : NULL;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]