Creating a pivot table usually consists of the following steps:
1. Create the table with pivot_table_create(), passing in the title.
- It's commonly useful to set up a few options at this point:
- - If empty rows or columns should not be displayed, set ->omit_empty to
- true.
+ 2. Optionally, set the format to use for "count" values with
+ pivot_table_set_weight_var() or pivot_table_set_weight_format().
- - Set the format to use for "count" values with
- pivot_table_set_weight_var() or pivot_table_set_weight_format().
-
- 2. Create each dimension with pivot_dimension_create() and populate it with
+ 3. Create each dimension with pivot_dimension_create() and populate it with
categories and, possibly, with groups that contain the categories. This
call also assigns the dimension to an axis.
first cell for that variable. In that case, creating categories and
inserting data can be interleaved.
- 3. Insert data. For each cell, supply the category indexes, which are
+ 4. Insert data. For each cell, supply the category indexes, which are
assigned starting from 0 in the order in which the categories were
created in step 2, and the value to go in the cell. If the table has a
small, fixed number of dimensions, functions like, e.g.
pivot_table_put3() for 3 dimensions, can be used. The general function
pivot_table_put() works for other cases.
- 4. Output the table for user consumption. Use pivot_table_submit(). */
+ 5. Output the table for user consumption. Use pivot_table_submit(). */
\f
/* Pivot table display styling. */
};
const char *pivot_area_to_string (enum pivot_area);
-const struct table_area_style *pivot_area_get_default_style (enum pivot_area);
/* Table borders for styling purposes. */
enum pivot_border
};
const char *pivot_border_to_string (enum pivot_border);
-void pivot_border_get_default_style (enum pivot_border,
- struct table_border_style *);
/* Sizing for rows or columns of a rendered table. The comments below talk
about columns and their widths but they apply equally to rows and their
because that's how SPSS documentation and file formats do it. */
struct pivot_table_look
{
+ /* Reference count. A pivot_table_look may be shared between multiple
+ owners, indicated by a reference count greater than 1. When this is the
+ case, the pivot_table must not be modified. */
+ int ref_cnt;
+
char *name; /* May be null. */
/* General properties. */
size_t n_orphan_lines;
};
-void pivot_table_look_init (struct pivot_table_look *);
-void pivot_table_look_uninit (struct pivot_table_look *);
-void pivot_table_look_copy (struct pivot_table_look *,
- const struct pivot_table_look *);
+const struct pivot_table_look *pivot_table_look_get_default (void);
+void pivot_table_look_set_default (const struct pivot_table_look *);
+
+char *pivot_table_look_read (const char *, struct pivot_table_look **)
+ WARN_UNUSED_RESULT;
+
+const struct pivot_table_look *pivot_table_look_builtin_default (void);
+struct pivot_table_look *pivot_table_look_new_builtin_default (void);
+struct pivot_table_look *pivot_table_look_ref (
+ const struct pivot_table_look *);
+void pivot_table_look_unref (struct pivot_table_look *);
+struct pivot_table_look *pivot_table_look_unshare (struct pivot_table_look *);
\f
/* A pivot table. See the top of this file for more information. */
struct pivot_table
int ref_cnt;
/* Styling. */
- struct pivot_table_look look;
+ struct pivot_table_look *look;
/* Display settings. */
bool rotate_inner_column_labels;
bool rotate_outer_row_labels;
bool show_grid_lines;
+ bool show_title;
bool show_caption;
- size_t *current_layer; /* axis[PIVOT_AXIS_LAYER].n_dimensions elements. */
+ size_t *current_layer; /* axes[PIVOT_AXIS_LAYER].n_dimensions elements. */
enum settings_value_show show_values;
enum settings_value_show show_variables;
struct fmt_spec weight_format;
struct pivot_value *subtype; /* Same as spv_item's subtype. */
struct pivot_value *corner_text;
struct pivot_value *caption;
- char *notes;
+ char *notes; /* Shown as tooltip. */
/* Dimensions. */
struct pivot_dimension **dimensions;
char **subscripts;
size_t n_subscripts;
- char *superscript;
-
const struct pivot_footnote **footnotes;
size_t n_footnotes;