X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=tests%2Foutput%2Frender-test.c;h=6b0aa73c4a049a0593acaa3e610905ead457d206;hb=e333a444bba7a84682b26a68c0894a8ca4f353a4;hp=42b8795336f6f354b0391f6b46246bb3ecbbdcd8;hpb=37a14e6b8ab908b2c23d77e0cb6a9085fe2d73e1;p=pspp diff --git a/tests/output/render-test.c b/tests/output/render-test.c index 42b8795336..6b0aa73c4a 100644 --- a/tests/output/render-test.c +++ b/tests/output/render-test.c @@ -22,12 +22,14 @@ #include #include +#include "data/file-handle-def.h" #include "libpspp/assertion.h" #include "libpspp/compiler.h" +#include "libpspp/i18n.h" #include "libpspp/string-map.h" #include "output/ascii.h" #include "output/driver.h" -#include "output/tab.h" +#include "output/table.h" #include "output/table-item.h" #include "gl/error.h" @@ -35,9 +37,6 @@ #include "gl/xalloc.h" #include "gl/xvasprintf.h" -/* --transpose: Transpose the table before outputting? */ -static int transpose; - /* --emphasis: ASCII driver emphasis option. */ static bool bold; static bool underline; @@ -78,6 +77,7 @@ main (int argc, char **argv) FILE *input; set_program_name (argv[0]); + i18n_init (); output_engine_push (); input_file_name = parse_options (argc, argv); @@ -114,8 +114,6 @@ main (int argc, char **argv) } table = tables[n_tables - 1]; - if (transpose) - table = table_transpose (table); table_item_submit (table_item_create (table, NULL, NULL)); free (tables); } @@ -126,6 +124,7 @@ main (int argc, char **argv) fclose (input); output_engine_pop (); + fh_done (); return 0; } @@ -250,7 +249,6 @@ parse_options (int argc, char **argv) {"width", required_argument, NULL, OPT_WIDTH}, {"length", required_argument, NULL, OPT_LENGTH}, {"min-break", required_argument, NULL, OPT_MIN_BREAK}, - {"transpose", no_argument, &transpose, 1}, {"emphasis", required_argument, NULL, OPT_EMPHASIS}, {"box", required_argument, NULL, OPT_BOX}, {"draw-mode", no_argument, &draw_mode, 1}, @@ -350,7 +348,7 @@ replace_newlines (char *p) { char *q; - for (q = p; *p != '\0'; ) + for (q = p; *p != '\0';) if (*p == '\\' && p[1] == 'n') { *q++ = '\n'; @@ -364,7 +362,7 @@ replace_newlines (char *p) static struct table * read_table (FILE *stream) { - struct tab_table *tab; + struct table *tab; char buffer[1024]; int input[6]; int n_input = 0; @@ -385,13 +383,11 @@ read_table (FILE *stream) ht = n_input >= 5 ? input[4] : 0; hb = n_input >= 6 ? input[5] : 0; - tab = tab_create (nc, nr); - tab_headers (tab, hl, hr, ht, hb); + tab = table_create (nc, nr, hl, hr, ht, hb); for (r = 0; r < nr; r++) for (c = 0; c < nc; c++) - if (tab_cell_is_empty (tab, c, r)) + if (table_cell_is_empty (tab, c, r)) { - unsigned int opt; char *new_line; char *text; int rs, cs; @@ -417,44 +413,49 @@ read_table (FILE *stream) cs = 1; } - opt = 0; +#define S(H) { TABLE_AREA_STYLE_INITIALIZER__, .cell_style.halign = H } + static const struct table_area_style left_style + = S (TABLE_HALIGN_LEFT); + static const struct table_area_style right_style + = S (TABLE_HALIGN_RIGHT); + static const struct table_area_style center_style + = S (TABLE_HALIGN_CENTER); + + const struct table_area_style *style = &right_style; while (*text && strchr ("<>^,@()|", *text)) switch (*text++) { case '<': - tab_vline (tab, TAL_1, c, r, r + rs - 1); + table_vline (tab, TABLE_STROKE_SOLID, c, r, r + rs - 1); break; case '>': - tab_vline (tab, TAL_1, c + cs, r, r + rs - 1); + table_vline (tab, TABLE_STROKE_SOLID, c + cs, r, r + rs - 1); break; case '^': - tab_hline (tab, TAL_1, c, c + cs - 1, r); + table_hline (tab, TABLE_STROKE_SOLID, c, c + cs - 1, r); break; case ',': - tab_hline (tab, TAL_1, c, c + cs - 1, r + rs); + table_hline (tab, TABLE_STROKE_SOLID, c, c + cs - 1, r + rs); break; case '@': - tab_box (tab, TAL_1, TAL_1, -1, -1, c, r, - c + cs - 1, r + rs - 1); + table_box (tab, TABLE_STROKE_SOLID, TABLE_STROKE_SOLID, + -1, -1, c, r, c + cs - 1, r + rs - 1); break; case '(': - opt &= ~TAB_HALIGN; - opt |= TAB_LEFT; + style = &left_style; break; case ')': - opt &= ~TAB_HALIGN; - opt |= TAB_RIGHT; + style = &right_style; break; case '|': - opt &= ~TAB_HALIGN; - opt |= TAB_CENTER; + style = ¢er_style; break; default: @@ -469,19 +470,23 @@ read_table (FILE *stream) for (i = 0; (content = strsep (&pos, "#")) != NULL; i++) if (!i) - tab_joint_text (tab, c, r, c + cs - 1, r + rs - 1, opt, - content); + { + table_joint_text (tab, c, r, c + cs - 1, r + rs - 1, 0, + content); + table_add_style (tab, c, r, style); + } else { char marker[2] = { 'a' + n_footnotes, '\0' }; - struct footnote *f = tab_create_footnote ( - tab, n_footnotes, content, marker); - tab_add_footnote (tab, c, r, f); + struct footnote *f = table_create_footnote ( + tab, n_footnotes, content, marker, + table_area_style_clone (tab->container, &left_style)); + table_add_footnote (tab, c, r, f); n_footnotes++; } } - return &tab->table; + return tab; } static void