X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Foutput%2Fhtml.c;h=f28476eae6661d05d27ce3fdfe0bcfb4af47b465;hb=086c00aa4c7e11ef10cdb20a3afc2ba9caa464ec;hp=959519e46e1b4e2a961dfbe9236b98a618b0c4fa;hpb=6fd821e557390a8f86f37c192fd1a4c4e057c9c3;p=pspp diff --git a/src/output/html.c b/src/output/html.c index 959519e46e..f28476eae6 100644 --- a/src/output/html.c +++ b/src/output/html.c @@ -50,8 +50,8 @@ struct html_driver { struct output_driver driver; #ifdef HAVE_CAIRO - struct xr_color fg; - struct xr_color bg; + struct cell_color fg; + struct cell_color bg; #endif struct file_handle *handle; char *chart_file_name; @@ -279,18 +279,10 @@ html_submit (struct output_driver *driver, fprintf (html->file, "\n"); break; - case TEXT_ITEM_PARAGRAPH: - print_title_tag (html->file, "P", s); - break; - case TEXT_ITEM_LOG: print_title_tag (html->file, "PRE", s); /* should be

*/ break; - case TEXT_ITEM_BLANK_LINE: - fputs ("
", html->file); - break; - case TEXT_ITEM_EJECT_PAGE: /* Nothing to do. */ break; @@ -427,6 +419,22 @@ html_put_table_item_text (struct html_driver *html, html_put_footnote_markers (html, text->footnotes, text->n_footnotes); } +static void +html_put_table_item_layers (struct html_driver *html, + const struct table_item_layers *layers) +{ + for (size_t i = 0; i < layers->n_layers; i++) + { + if (i) + fputs ("
\n", html->file); + + const struct table_item_layer *layer = &layers->layers[i]; + escape_string (html->file, layer->content, strlen (layer->content), + " ", "
"); + html_put_footnote_markers (html, layer->footnotes, layer->n_footnotes); + } +} + static void html_output_table (struct html_driver *html, const struct table_item *item) { @@ -446,16 +454,15 @@ html_output_table (struct html_driver *html, const struct table_item *item) size_t n_footnotes = table_collect_footnotes (item, &f); for (size_t i = 0; i < n_footnotes; i++) - if (f[i]) - { - put_tfoot (html, t, &tfoot); - fputs ("", html->file); - escape_string (html->file, f[i]->marker, strlen (f[i]->marker), - " ", "
"); - fputs ("
", html->file); - escape_string (html->file, f[i]->content, strlen (f[i]->content), - " ", "
"); - } + { + put_tfoot (html, t, &tfoot); + fputs ("", html->file); + escape_string (html->file, f[i]->marker, strlen (f[i]->marker), + " ", "
"); + fputs ("
", html->file); + escape_string (html->file, f[i]->content, strlen (f[i]->content), + " ", "
"); + } free (f); if (tfoot) fputs ("\n", html->file); @@ -463,7 +470,7 @@ html_output_table (struct html_driver *html, const struct table_item *item) fputs ("\n", html->file); const struct table_item_text *title = table_item_get_title (item); - const struct table_item_text *layers = table_item_get_layers (item); + const struct table_item_layers *layers = table_item_get_layers (item); if (title || layers) { fputs (" ", html->file); @@ -472,7 +479,7 @@ html_output_table (struct html_driver *html, const struct table_item *item) if (title && layers) fputs ("
\n", html->file); if (layers) - html_put_table_item_text (html, layers); + html_put_table_item_layers (html, layers); fputs ("\n", html->file); } @@ -501,15 +508,23 @@ html_output_table (struct html_driver *html, const struct table_item *item) tag = is_header ? "TH" : "TD"; fprintf (html->file, " <%s", tag); - int halign = cell.options & TAB_HALIGN; - if (halign != TAB_LEFT) - fprintf (html->file, " ALIGN=\"%s\"", - halign == TAB_RIGHT ? "RIGHT" : "CENTER"); + enum table_halign halign = table_halign_interpret ( + cell.style->cell_style.halign, cell.options & TAB_NUMERIC); + if (halign != TABLE_HALIGN_LEFT) + { + fprintf (html->file, " ALIGN=\"%s\"", + (halign == TABLE_HALIGN_RIGHT ? "RIGHT" + : halign == TABLE_HALIGN_CENTER ? "CENTER" + : "CHAR")); + if (cell.style->cell_style.decimal_char) + fprintf (html->file, " CHAR=\"%c\"", + cell.style->cell_style.decimal_char); + } - int valign = cell.options & TAB_VALIGN; - if (valign != TAB_TOP) + if (cell.style->cell_style.valign != TABLE_VALIGN_TOP) fprintf (html->file, " ALIGN=\"%s\"", - valign == TAB_BOTTOM ? "BOTTOM" : "MIDDLE"); + (cell.style->cell_style.valign == TABLE_VALIGN_BOTTOM + ? "BOTTOM" : "MIDDLE")); colspan = table_cell_colspan (&cell); if (colspan > 1) @@ -553,8 +568,6 @@ html_output_table (struct html_driver *html, const struct table_item *item) /* Output cell contents. */ const char *s = cell.text; - if (cell.options & TAB_EMPH) - fputs ("", html->file); if (cell.options & TAB_FIX) { fputs ("", html->file); @@ -566,8 +579,6 @@ html_output_table (struct html_driver *html, const struct table_item *item) s += strspn (s, CC_SPACES); escape_string (html->file, s, strlen (s), " ", "
"); } - if (cell.options & TAB_EMPH) - fputs ("
", html->file); html_put_footnote_markers (html, cell.footnotes, cell.n_footnotes); @@ -576,7 +587,6 @@ html_output_table (struct html_driver *html, const struct table_item *item) next_1: x = cell.d[TABLE_HORZ][1]; - table_cell_free (&cell); } fputs (" \n", html->file); }