string-array: New function string_array_parse().
[pspp] / src / output / html.c
index f5639cc0abb05c3ef2423e4ecb804bb9601a3668..1027dea501037e5e74655ecb0a4d76b7c2357280 100644 (file)
@@ -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, "</PRE>\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 <P><TT> */
           break;
 
-        case TEXT_ITEM_BLANK_LINE:
-          fputs ("<BR>", html->file);
-          break;
-
         case TEXT_ITEM_EJECT_PAGE:
           /* Nothing to do. */
           break;
@@ -483,7 +475,6 @@ html_output_table (struct html_driver *html, const struct table_item *item)
       fputs ("  <TR>\n", html->file);
       for (x = 0; x < table_nc (t); )
         {
-          const struct cell_contents *c;
           struct table_cell cell;
           const char *tag;
           bool is_header;
@@ -502,19 +493,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.n_contents > 0
-                        ? cell.contents[0].options & TAB_HALIGN
-                        : TAB_LEFT);
-          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.n_contents > 0
-                        ? cell.contents[0].options & TAB_VALIGN
-                        : TAB_LEFT);
-          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)
@@ -557,28 +552,20 @@ html_output_table (struct html_driver *html, const struct table_item *item)
           putc ('>', html->file);
 
           /* Output cell contents. */
-          for (c = cell.contents; c < &cell.contents[cell.n_contents]; c++)
+          const char *s = cell.text;
+          if (cell.options & TAB_FIX)
             {
-              const char *s = c->text;
-
-              if (c->options & TAB_EMPH)
-                fputs ("<EM>", html->file);
-              if (c->options & TAB_FIX)
-                {
-                  fputs ("<TT>", html->file);
-                  escape_string (html->file, s, strlen (s), "&nbsp;", "<BR>");
-                  fputs ("</TT>", html->file);
-                }
-              else
-                {
-                  s += strspn (s, CC_SPACES);
-                  escape_string (html->file, s, strlen (s), " ", "<BR>");
-                }
-              if (c->options & TAB_EMPH)
-                fputs ("</EM>", html->file);
-
-              html_put_footnote_markers (html, c->footnotes, c->n_footnotes);
+              fputs ("<TT>", html->file);
+              escape_string (html->file, s, strlen (s), "&nbsp;", "<BR>");
+              fputs ("</TT>", html->file);
             }
+          else
+            {
+              s += strspn (s, CC_SPACES);
+              escape_string (html->file, s, strlen (s), " ", "<BR>");
+            }
+
+          html_put_footnote_markers (html, cell.footnotes, cell.n_footnotes);
 
           /* Output </TH> or </TD>. */
           fprintf (html->file, "</%s>\n", tag);