X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Foutput%2Fhtml.c;h=d3049e6564bd95e5c925a99a605c7bb2e96cd8a8;hb=95cde62bdf5210c1c60dad5598a888b864f93161;hp=e69a8a775118f12a25ddaf57b99a273ea97147cd;hpb=660d222c1c6e484e5887ac9920d095ea7aaa0e38;p=pspp diff --git a/src/output/html.c b/src/output/html.c index e69a8a7751..d3049e6564 100644 --- a/src/output/html.c +++ b/src/output/html.c @@ -84,11 +84,10 @@ html_driver_cast (struct output_driver *driver) return UP_CAST (driver, struct html_driver, driver); } -static struct driver_option * -opt (struct output_driver *d, struct string_map *options, const char *key, - const char *default_value) +static struct driver_option +opt (struct driver_options *options, const char *key, const char *default_value) { - return driver_option_get (d, options, key, default_value); + return driver_option_get (options, key, default_value); } static void @@ -177,39 +176,39 @@ put_header (struct html_driver *html) static struct output_driver * html_create (struct file_handle *fh, enum settings_output_devices device_type, - struct string_map *o) + struct driver_options *o) { - struct output_driver *d; - struct html_driver *html = XZALLOC (struct html_driver); - d = &html->driver; - output_driver_init (&html->driver, &html_driver_class, fh_get_file_name (fh), - device_type); - html->bare = parse_boolean (opt (d, o, "bare", "false")); - html->css = parse_boolean (opt (d, o, "css", "true")); - html->borders = parse_boolean (opt (d, o, "borders", "true")); - - html->handle = fh; - html->chart_file_name = parse_chart_file_name (opt (d, o, "charts", - fh_get_file_name (fh))); - html->file = NULL; - html->n_charts = 1; - html->bg = parse_color (opt (d, o, "background-color", "#FFFFFFFFFFFF")); - html->fg = parse_color (opt (d, o, "foreground-color", "#000000000000")); - html->file = fn_open (html->handle, "w"); - if (html->file == NULL) + FILE *file = fn_open (fh, "w"); + if (!file) { - msg_error (errno, _("error opening output file `%s'"), fh_get_file_name (html->handle)); - goto error; + msg_error (errno, _("error opening output file `%s'"), + fh_get_file_name (fh)); + return NULL; } + struct html_driver *html = xmalloc (sizeof *html); + *html = (struct html_driver) { + .driver = { + .class = &html_driver_class, + .name = xstrdup (fh_get_file_name (fh)), + .device_type = device_type + }, + .bare = parse_boolean (opt (o, "bare", "false")), + .css = parse_boolean (opt (o, "css", "true")), + .borders = parse_boolean (opt (o, "borders", "true")), + .handle = fh, + .chart_file_name = parse_chart_file_name (opt (o, "charts", + fh_get_file_name (fh))), + .file = file, + .n_charts = 1, + .bg = parse_color (opt (o, "background-color", "#FFFFFFFFFFFF")), + .fg = parse_color (opt (o, "foreground-color", "#000000000000")), + }; + if (!html->bare) put_header (html); - return d; - - error: - output_driver_destroy (d); - return NULL; + return &html->driver; } /* Emits CONTENT to the output, escaping CONTENT as @@ -454,7 +453,7 @@ format_color (const struct cell_color color, const struct cell_color default_color, char *buf, size_t bufsize) { - bool retval = !cell_color_equal (&color, &default_color); + bool retval = !cell_color_equal (color, default_color); if (retval) { if (color.alpha == 255) @@ -472,16 +471,16 @@ put_border (const struct table *table, const struct table_cell *cell, enum table_axis axis, int h, int v, const char *border_name) { - struct cell_color color; - const char *css = border_to_css ( - table_get_rule (table, axis, cell->d[H][h], cell->d[V][v], &color)); + struct table_border_style border + = table_get_rule (table, axis, cell->d[H][h], cell->d[V][v]); + const char *css = border_to_css (border.stroke); if (css) { next_style (style); fprintf (style->file, "border-%s: %s", border_name, css); char buf[32]; - if (format_color (color, (struct cell_color) CELL_COLOR_BLACK, + if (format_color (border.color, (struct cell_color) CELL_COLOR_BLACK, buf, sizeof buf)) fprintf (style->file, " %s", buf); }