html: Fix right border of cells that span columns at right edge of a table.
[pspp] / src / output / html.c
index 29a44721d455ae3f0336e1f95d52610e9c5df1c1..eeba70bd5f69d99e5f3b36fc8403418397173770 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 1997-9, 2000, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+   Copyright (C) 1997-9, 2000, 2009, 2010, 2011, 2012, 2014 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -39,7 +39,6 @@
 #include "output/table-item.h"
 #include "output/text-item.h"
 
-#include "error.h"
 #include "xalloc.h"
 
 #include "gettext.h"
 struct html_driver
   {
     struct output_driver driver;
-
+#ifdef HAVE_CAIRO
+    struct xr_color fg;
+    struct xr_color bg;
+#endif    
     char *file_name;
     char *chart_file_name;
 
@@ -102,11 +104,14 @@ html_create (const char *file_name, enum settings_output_devices device_type,
                                                       file_name));
   html->file = NULL;
   html->chart_cnt = 1;
-
+#ifdef HAVE_CAIRO
+  parse_color (d, o, "background-color", "#FFFFFFFFFFFF", &html->bg);
+  parse_color (d, o, "foreground-color", "#000000000000", &html->fg);
+#endif
   html->file = fn_open (html->file_name, "w");
   if (html->file == NULL)
     {
-      error (0, errno, _("error opening output file `%s'"), html->file_name);
+      msg_error (errno, _("error opening output file `%s'"), html->file_name);
       goto error;
     }
 
@@ -239,7 +244,10 @@ html_submit (struct output_driver *driver,
       char *file_name;
 
       file_name = xr_draw_png_chart (chart_item, html->chart_file_name,
-                                     html->chart_cnt++);
+                                     html->chart_cnt++,
+                                    &html->fg,
+                                    &html->bg
+                                    );
       if (file_name != NULL)
         {
          const char *title = chart_item_get_title (chart_item);
@@ -424,9 +432,9 @@ html_output_table (struct html_driver *html, struct table_item *item)
              if (top > TAL_GAP)
                put_border (html->file, n_borders++, top, "top");
 
-             if (y == table_nr (t) - 1)
+             if (y + rowspan == table_nr (t))
                {
-                 bottom = table_get_rule (t, TABLE_VERT, x, y + 1);
+                 bottom = table_get_rule (t, TABLE_VERT, x, y + rowspan);
                  if (bottom > TAL_GAP)
                    put_border (html->file, n_borders++, bottom, "bottom");
                }
@@ -435,9 +443,9 @@ html_output_table (struct html_driver *html, struct table_item *item)
              if (left > TAL_GAP)
                put_border (html->file, n_borders++, left, "left");
 
-             if (x == table_nc (t) - 1)
+             if (x + colspan == table_nc (t))
                {
-                 right = table_get_rule (t, TABLE_HORZ, x + 1, y);
+                 right = table_get_rule (t, TABLE_HORZ, x + colspan, y);
                  if (right > TAL_GAP)
                    put_border (html->file, n_borders++, right, "right");
                }