X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Fspv%2Fspv-writer.c;h=f1f9b969563f7fab49cf785ae01b19b621212035;hb=672776c201a00e1a667d37a957e7d2211300d48a;hp=270f6beb87ff95c63b2757673f0cdc0a43cbce5a;hpb=29917c4f5908454803e663d2ad78bca4bc35e805;p=pspp diff --git a/src/output/spv/spv-writer.c b/src/output/spv/spv-writer.c index 270f6beb87..f1f9b96956 100644 --- a/src/output/spv/spv-writer.c +++ b/src/output/spv/spv-writer.c @@ -234,6 +234,8 @@ spv_writer_open_heading (struct spv_writer *w, const struct output_item *item) start_elem (w, "heading"); if (item->command_name) write_attr (w, "commandName", item->command_name); + if (!item->show) + write_attr (w, "visibility", "collapsed"); /* XXX locale */ /* XXX olang */ @@ -280,7 +282,7 @@ open_container (struct spv_writer *w, const struct output_item *item, const char *inner_elem) { start_elem (w, "container"); - write_attr (w, "visibility", "visible"); + write_attr (w, "visibility", item->show ? "visible" : "hidden"); if (w->need_page_break) { write_attr (w, "page-break-before", "always"); @@ -1104,11 +1106,10 @@ spv_writer_write (struct spv_writer *w, const struct output_item *item) } break; - case OUTPUT_ITEM_GROUP_OPEN: + case OUTPUT_ITEM_GROUP: spv_writer_open_heading (w, item); - break; - - case OUTPUT_ITEM_GROUP_CLOSE: + for (size_t i = 0; i < item->group.n_children; i++) + spv_writer_write (w, item->group.children[i]); spv_writer_close_heading (w); break; @@ -1125,11 +1126,6 @@ spv_writer_write (struct spv_writer *w, const struct output_item *item) w->need_page_break = true; break; - case OUTPUT_ITEM_PAGE_SETUP: - page_setup_destroy (w->page_setup); - w->page_setup = page_setup_clone (item->page_setup); - break; - case OUTPUT_ITEM_TABLE: spv_writer_put_table (w, item); break; @@ -1139,3 +1135,11 @@ spv_writer_write (struct spv_writer *w, const struct output_item *item) break; } } + +void +spv_writer_set_page_setup (struct spv_writer *w, + const struct page_setup *ps) +{ + page_setup_destroy (w->page_setup); + w->page_setup = page_setup_clone (ps); +}