98675950215d7d4374d21247dec712fa54ea0140
[pspp] / src / output / spv / spv-table-look.h
1 /* PSPP - a program for statistical analysis.
2    Copyright (C) 2018, 2020 Free Software Foundation, Inc.
3
4    This program is free software: you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation, either version 3 of the License, or
7    (at your option) any later version.
8
9    This program is distributed in the hope that it will be useful,
10    but WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12    GNU General Public License for more details.
13
14    You should have received a copy of the GNU General Public License
15    along with this program.  If not, see <http://www.gnu.org/licenses/>. */
16
17 #ifndef OUTPUT_SPV_TABLE_LOOK_H
18 #define OUTPUT_SPV_TABLE_LOOK_H 1
19
20 /* TableLook decoder.
21
22    A TableLook specifies styles for tables and other aspects of output.  They
23    exist standalone as .stt files as well as embedded in structure XML, in
24    either case as a tableProperties element.
25 */
26
27 #include <stdbool.h>
28 #include "libpspp/compiler.h"
29 #include "output/pivot-table.h"
30 #include "output/table.h"
31
32 struct spvsx_table_properties;
33
34 struct spv_table_look
35   {
36     char *name;                 /* May be null. */
37
38     /* General properties. */
39     bool omit_empty;
40     int width_ranges[TABLE_N_AXES][2];      /* In 1/96" units. */
41     bool row_labels_in_corner;
42
43     /* Footnote display settings. */
44     bool show_numeric_markers;
45     bool footnote_marker_superscripts;
46
47     /* Styles. */
48     struct area_style areas[PIVOT_N_AREAS];
49     struct table_border_style borders[PIVOT_N_BORDERS];
50
51     /* Print settings. */
52     bool print_all_layers;
53     bool paginate_layers;
54     bool shrink_to_width;
55     bool shrink_to_length;
56     bool top_continuation, bottom_continuation;
57     char *continuation;
58     size_t n_orphan_lines;
59   };
60
61 void spv_table_look_destroy (struct spv_table_look *);
62
63 char *spv_table_look_decode (const struct spvsx_table_properties *,
64                              struct spv_table_look **)
65   WARN_UNUSED_RESULT;
66 char *spv_table_look_read (const char *, struct spv_table_look **)
67   WARN_UNUSED_RESULT;
68 char *spv_table_look_write (const char *, const struct spv_table_look *)
69   WARN_UNUSED_RESULT;
70
71 void spv_table_look_install (const struct spv_table_look *,
72                              struct pivot_table *);
73 struct spv_table_look *spv_table_look_get (const struct pivot_table *);
74
75 #endif /* output/spv/spv-table-look.h */