output: Rename page-eject-item to page-break-item.
[pspp] / src / output / spv / spv-legacy-decoder.c
index 0c0f954797aa80c0eb14129d696acf914da5b7ad..0b224405b7913a297f5236144d4ad804ae4e1edd 100644 (file)
@@ -203,7 +203,9 @@ spv_map_insert (struct hmap *map, double from, const char *to,
       else
         {
           union value v = { .f = mapping->to.d };
-          mapping->to.s = data_out_stretchy (&v, NULL, format, NULL);
+          mapping->to.s = data_out_stretchy (&v, NULL, format,
+                                             settings_get_fmt_settings (),
+                                             NULL);
           mapping->to.width = strlen (mapping->to.s);
         }
     }
@@ -671,12 +673,12 @@ decode_label_frame (struct pivot_table *table,
   if (lf->label->purpose == SPVDX_PURPOSE_TITLE)
     {
       target = &table->title;
-      area = &table->areas[PIVOT_AREA_TITLE];
+      area = &table->look->areas[PIVOT_AREA_TITLE];
     }
   else if (lf->label->purpose == SPVDX_PURPOSE_SUB_TITLE)
     {
       target = &table->caption;
-      area = &table->areas[PIVOT_AREA_CAPTION];
+      area = &table->look->areas[PIVOT_AREA_CAPTION];
     }
   else if (lf->label->purpose == SPVDX_PURPOSE_FOOTNOTE)
     {
@@ -684,7 +686,7 @@ decode_label_frame (struct pivot_table *table,
           && lf->label->text[0]->uses_reference != INT_MIN)
         {
           target = NULL;
-          area = &table->areas[PIVOT_AREA_FOOTER];
+          area = &table->look->areas[PIVOT_AREA_FOOTER];
         }
       else
         return NULL;
@@ -692,7 +694,7 @@ decode_label_frame (struct pivot_table *table,
   else if (lf->label->purpose == SPVDX_PURPOSE_LAYER)
     {
       target = NULL;
-      area = &table->areas[PIVOT_AREA_LAYERS];
+      area = &table->look->areas[PIVOT_AREA_LAYERS];
     }
   else
     return NULL;
@@ -718,6 +720,9 @@ decode_label_frame (struct pivot_table *table,
               value->text.local = new;
             }
         }
+      if (!value->text.local)
+        value->text.local = xstrdup ("");
+      value->text.c = value->text.id = value->text.local;
       pivot_value_destroy (*target);
       *target = value;
     }
@@ -803,7 +808,8 @@ decode_spvdx_source_variable (const struct spvxml_node *node,
             if (label_series->values[i].width < 0)
               {
                 union value v = { .f = label_series->values[i].d };
-                dest = data_out_stretchy (&v, "UTF-8", &s->format, NULL);
+                dest = data_out_stretchy (&v, "UTF-8", &s->format,
+                                          settings_get_fmt_settings (), NULL);
               }
             else
               dest = label_series->values[i].s;
@@ -965,8 +971,8 @@ pivot_value_from_data_value (const struct spv_data_value *data,
               && len == 23
               && data->s[len] == '\0')
             {
-              double date = calendar_gregorian_to_offset (year, month, day,
-                                                          NULL);
+              double date = calendar_gregorian_to_offset (
+                year, month, day, settings_get_fmt_settings (), NULL);
               if (date != SYSMIS)
                 {
                   v->type = PIVOT_VALUE_NUMERIC;
@@ -1079,11 +1085,12 @@ add_dimension (struct spv_series **series, size_t n,
     = find_facet_level (v, base_facet_level + n);
   if (fl)
     {
-      struct table_area_style *area = (axis_type == PIVOT_AXIS_COLUMN
-                                       ? &table->areas[PIVOT_AREA_COLUMN_LABELS]
-                                       : axis_type == PIVOT_AXIS_ROW
-                                       ? &table->areas[PIVOT_AREA_ROW_LABELS]
-                                       : NULL);
+      struct table_area_style *area
+        = (axis_type == PIVOT_AXIS_COLUMN
+           ? &table->look->areas[PIVOT_AREA_COLUMN_LABELS]
+           : axis_type == PIVOT_AXIS_ROW
+           ? &table->look->areas[PIVOT_AREA_ROW_LABELS]
+           : NULL);
       if (area && fl->axis->label)
         {
           table_area_style_uninit (area);
@@ -1100,7 +1107,7 @@ add_dimension (struct spv_series **series, size_t n,
         decode_spvdx_style_incremental (
           fl2->axis->major_ticks->style,
           fl2->axis->major_ticks->tick_frame_style,
-          &table->areas[PIVOT_AREA_ROW_LABELS]);
+          &table->look->areas[PIVOT_AREA_ROW_LABELS]);
     }
 
   const struct spvdx_facet_level *fl3 = find_facet_level (v, base_facet_level);
@@ -1268,6 +1275,11 @@ add_dimension (struct spv_series **series, size_t n,
   /* Now drop unnamed 1-category groups and add parent pointers. */
   for (size_t j = 0; j < n_cats; j++)
     add_parents (cats[j], d->root, j);
+  for (size_t j = 0; j < d->n_leaves; j++)
+    {
+      d->data_leaves[j]->data_index = j;
+      d->presentation_leaves[j]->presentation_index = j;
+    }
 
   d->root->subs = cats;
   d->root->n_subs = n_cats;
@@ -1417,8 +1429,8 @@ apply_styles_to_value (struct pivot_table *table,
     {
       if (sf->reset > 0)
         {
-          free (value->footnotes);
-          value->footnotes = NULL;
+          free (value->footnote_indexes);
+          value->footnote_indexes = NULL;
           value->n_footnotes = 0;
         }
 
@@ -1493,9 +1505,9 @@ decode_set_cell_properties__ (struct pivot_table *table,
       /* Sets alt_fg_color and alt_bg_color. */
       struct table_area_style area;
       decode_spvdx_style (labeling, graph, &area);
-      table->areas[PIVOT_AREA_DATA].font_style.fg[1]
+      table->look->areas[PIVOT_AREA_DATA].font_style.fg[1]
         = area.font_style.fg[0];
-      table->areas[PIVOT_AREA_DATA].font_style.bg[1]
+      table->look->areas[PIVOT_AREA_DATA].font_style.bg[1]
         = area.font_style.bg[0];
       table_area_style_uninit (&area);
     }
@@ -1531,8 +1543,8 @@ decode_set_cell_properties__ (struct pivot_table *table,
             {
               const struct table_area_style *base_area_style
                 = (c->dimension->axis_type == PIVOT_AXIS_ROW
-                   ? &table->areas[PIVOT_AREA_ROW_LABELS]
-                   : &table->areas[PIVOT_AREA_COLUMN_LABELS]);
+                   ? &table->look->areas[PIVOT_AREA_ROW_LABELS]
+                   : &table->look->areas[PIVOT_AREA_COLUMN_LABELS]);
               apply_styles_to_value (table, c->name, set_format,
                                      base_area_style, major_ticks, frame);
             }
@@ -1625,7 +1637,7 @@ decode_set_cell_properties__ (struct pivot_table *table,
                 goto skip;
             }
           apply_styles_to_value (table, cell->value, set_format,
-                                 &table->areas[PIVOT_AREA_DATA],
+                                 &table->look->areas[PIVOT_AREA_DATA],
                                  labeling, interval);
 
         skip: ;
@@ -1696,7 +1708,7 @@ decode_set_cell_properties (struct pivot_table *table, struct hmap *series_map,
               struct pivot_cell *cell;
               HMAP_FOR_EACH (cell, struct pivot_cell, hmap_node, &table->cells)
                 apply_styles_to_value (table, cell->value, set_format,
-                                       &table->areas[PIVOT_AREA_DATA],
+                                       &table->look->areas[PIVOT_AREA_DATA],
                                        NULL, NULL);
             }
         }
@@ -1755,11 +1767,13 @@ format_map_destroy (struct hmap *format_map)
 
 char * WARN_UNUSED_RESULT
 decode_spvdx_table (const struct spvdx_visualization *v, const char *subtype,
-                    const struct spv_table_look *look,
+                    const struct pivot_table_look *look,
                     struct spv_data *data, struct pivot_table **outp)
 {
   struct pivot_table *table = pivot_table_create__ (NULL, subtype);
-  spv_table_look_install (look, table);
+
+  pivot_table_set_look (table, look);
+  table->look = pivot_table_look_unshare (table->look);
 
   struct hmap series_map = HMAP_INITIALIZER (series_map);
   struct hmap format_map = HMAP_INITIALIZER (format_map);
@@ -1777,8 +1791,8 @@ decode_spvdx_table (const struct spvdx_visualization *v, const char *subtype,
                   &min_width, &max_width, &n)
           && v->graph->cell_style->width[n] == '\0')
         {
-          table->sizing[TABLE_HORZ].range[0] = min_width;
-          table->sizing[TABLE_HORZ].range[1] = max_width;
+          table->look->width_ranges[TABLE_HORZ][0] = min_width;
+          table->look->width_ranges[TABLE_HORZ][1] = max_width;
         }
     }
 
@@ -1844,10 +1858,10 @@ decode_spvdx_table (const struct spvdx_visualization *v, const char *subtype,
       }
   if (v->graph->interval->labeling->style)
     {
-      table_area_style_uninit (&table->areas[PIVOT_AREA_DATA]);
+      table_area_style_uninit (&table->look->areas[PIVOT_AREA_DATA]);
       decode_spvdx_style (v->graph->interval->labeling->style,
                           v->graph->cell_style,
-                          &table->areas[PIVOT_AREA_DATA]);
+                          &table->look->areas[PIVOT_AREA_DATA]);
     }
 
   /* Decode all of the sourceVariable and derivedVariable  */