Add a theme parameter to the SVG/image generating functions
This is needed for image generation to include display themes. Fixes #82
This commit is contained in:
parent
4fd2215360
commit
8a4eb378e9
@ -1395,11 +1395,11 @@ ag_chart_sort_planets_by_position(GswePlanetData *planet1,
|
|||||||
}
|
}
|
||||||
|
|
||||||
gchar *
|
gchar *
|
||||||
ag_chart_create_svg(
|
ag_chart_create_svg(AgChart *chart,
|
||||||
AgChart *chart,
|
gsize *length,
|
||||||
gsize *length,
|
gboolean rendering,
|
||||||
gboolean rendering,
|
AgDisplayTheme *theme,
|
||||||
GError **err)
|
GError **err)
|
||||||
{
|
{
|
||||||
xmlDocPtr doc = create_save_doc(chart),
|
xmlDocPtr doc = create_save_doc(chart),
|
||||||
xslt_doc,
|
xslt_doc,
|
||||||
@ -1412,6 +1412,7 @@ ag_chart_create_svg(
|
|||||||
antiscia_node = NULL,
|
antiscia_node = NULL,
|
||||||
node = NULL;
|
node = NULL;
|
||||||
gchar *value,
|
gchar *value,
|
||||||
|
*css,
|
||||||
*save_content = NULL,
|
*save_content = NULL,
|
||||||
**params;
|
**params;
|
||||||
const gchar *xslt_content;
|
const gchar *xslt_content;
|
||||||
@ -1717,9 +1718,21 @@ ag_chart_create_svg(
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
params = g_new0(gchar *, 3);
|
params = g_new0(gchar *, 5);
|
||||||
params[0] = "rendering";
|
params[0] = "rendering";
|
||||||
params[1] = (rendering) ? "'yes'" : "'no'";
|
params[1] = (rendering) ? "'yes'" : "'no'";
|
||||||
|
css = ag_display_theme_to_css(theme);
|
||||||
|
|
||||||
|
// This seems to be a dirty hack, but it should do for a while
|
||||||
|
if (strlen(css) == 0) {
|
||||||
|
params[2] = NULL;
|
||||||
|
params[3] = NULL;
|
||||||
|
} else {
|
||||||
|
params[2] = "additional-css";
|
||||||
|
params[3] = g_strdup_printf("\"%s\"", css);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_free(css);
|
||||||
|
|
||||||
// libxml2 messes up the output, as it prints decimal floating point
|
// libxml2 messes up the output, as it prints decimal floating point
|
||||||
// numbers in a localized format. It is not good in locales that use a
|
// numbers in a localized format. It is not good in locales that use a
|
||||||
@ -1732,6 +1745,7 @@ ag_chart_create_svg(
|
|||||||
uselocale(current_locale);
|
uselocale(current_locale);
|
||||||
xsltFreeStylesheet(xslt_proc);
|
xsltFreeStylesheet(xslt_proc);
|
||||||
xmlFreeDoc(doc);
|
xmlFreeDoc(doc);
|
||||||
|
g_free(params[3]);
|
||||||
g_free(params);
|
g_free(params);
|
||||||
|
|
||||||
// Now, svg_doc contains the generated SVG file
|
// Now, svg_doc contains the generated SVG file
|
||||||
@ -1761,12 +1775,15 @@ ag_chart_get_planets(AgChart *chart)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ag_chart_export_svg_to_file(AgChart *chart, GFile *file, GError **err)
|
ag_chart_export_svg_to_file(AgChart *chart,
|
||||||
|
GFile *file,
|
||||||
|
AgDisplayTheme *theme,
|
||||||
|
GError **err)
|
||||||
{
|
{
|
||||||
gchar *svg;
|
gchar *svg;
|
||||||
gsize length;
|
gsize length;
|
||||||
|
|
||||||
if ((svg = ag_chart_create_svg(chart, &length, TRUE, err)) == NULL) {
|
if ((svg = ag_chart_create_svg(chart, &length, TRUE, theme, err)) == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1784,7 +1801,10 @@ ag_chart_export_svg_to_file(AgChart *chart, GFile *file, GError **err)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ag_chart_export_jpg_to_file(AgChart *chart, GFile *file, GError **err)
|
ag_chart_export_jpg_to_file(AgChart *chart,
|
||||||
|
GFile *file,
|
||||||
|
AgDisplayTheme *theme,
|
||||||
|
GError **err)
|
||||||
{
|
{
|
||||||
gchar *svg,
|
gchar *svg,
|
||||||
*jpg;
|
*jpg;
|
||||||
@ -1793,7 +1813,13 @@ ag_chart_export_jpg_to_file(AgChart *chart, GFile *file, GError **err)
|
|||||||
RsvgHandle *svg_handle;
|
RsvgHandle *svg_handle;
|
||||||
GdkPixbuf *pixbuf;
|
GdkPixbuf *pixbuf;
|
||||||
|
|
||||||
if ((svg = ag_chart_create_svg(chart, &svg_length, TRUE, err)) == NULL) {
|
if ((svg = ag_chart_create_svg(
|
||||||
|
chart,
|
||||||
|
&svg_length,
|
||||||
|
TRUE,
|
||||||
|
theme,
|
||||||
|
err
|
||||||
|
)) == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
#include <swe-glib.h>
|
#include <swe-glib.h>
|
||||||
|
|
||||||
#include "ag-db.h"
|
#include "ag-db.h"
|
||||||
|
#include "ag-display-theme.h"
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
@ -44,7 +45,7 @@ struct _AgChartClass {
|
|||||||
GsweMomentClass parent_class;
|
GsweMomentClass parent_class;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef void (*AgChartSaveImageFunc)(AgChart *, GFile *, GError **);
|
typedef void (*AgChartSaveImageFunc)(AgChart *, GFile *, AgDisplayTheme *, GError **);
|
||||||
|
|
||||||
GType ag_chart_get_type(void) G_GNUC_CONST;
|
GType ag_chart_get_type(void) G_GNUC_CONST;
|
||||||
|
|
||||||
@ -66,13 +67,15 @@ void ag_chart_save_to_file(AgChart *chart,
|
|||||||
GFile *file,
|
GFile *file,
|
||||||
GError **err);
|
GError **err);
|
||||||
|
|
||||||
void ag_chart_export_svg_to_file(AgChart *chart,
|
void ag_chart_export_svg_to_file(AgChart *chart,
|
||||||
GFile *file,
|
GFile *file,
|
||||||
GError **err);
|
AgDisplayTheme *theme,
|
||||||
|
GError **err);
|
||||||
|
|
||||||
void ag_chart_export_jpg_to_file(AgChart *chart,
|
void ag_chart_export_jpg_to_file(AgChart *chart,
|
||||||
GFile *file,
|
GFile *file,
|
||||||
GError **err);
|
AgDisplayTheme *theme,
|
||||||
|
GError **err);
|
||||||
|
|
||||||
void ag_chart_set_name(AgChart *chart,
|
void ag_chart_set_name(AgChart *chart,
|
||||||
const gchar *name);
|
const gchar *name);
|
||||||
@ -89,10 +92,11 @@ void ag_chart_set_city(AgChart *chart,
|
|||||||
|
|
||||||
const gchar *ag_chart_get_city(AgChart *chart);
|
const gchar *ag_chart_get_city(AgChart *chart);
|
||||||
|
|
||||||
gchar *ag_chart_create_svg(AgChart *chart,
|
gchar *ag_chart_create_svg(AgChart *chart,
|
||||||
gsize *length,
|
gsize *length,
|
||||||
gboolean rendering,
|
gboolean rendering,
|
||||||
GError **err);
|
AgDisplayTheme *theme,
|
||||||
|
GError **err);
|
||||||
|
|
||||||
GList *ag_chart_get_planets(AgChart *chart);
|
GList *ag_chart_get_planets(AgChart *chart);
|
||||||
|
|
||||||
|
@ -498,6 +498,7 @@ ag_window_redraw_chart(AgWindow *window)
|
|||||||
priv->chart,
|
priv->chart,
|
||||||
&length,
|
&length,
|
||||||
FALSE,
|
FALSE,
|
||||||
|
NULL,
|
||||||
&err
|
&err
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -1034,7 +1035,7 @@ ag_window_export_image(AgWindow *window, GError **err)
|
|||||||
|
|
||||||
if (can_save) {
|
if (can_save) {
|
||||||
g_clear_error(&local_err);
|
g_clear_error(&local_err);
|
||||||
save_func(priv->chart, file, &local_err);
|
save_func(priv->chart, file, priv->theme, &local_err);
|
||||||
|
|
||||||
if (local_err) {
|
if (local_err) {
|
||||||
ag_app_message_dialog(
|
ag_app_message_dialog(
|
||||||
|
@ -75,6 +75,9 @@
|
|||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
<xi:include href="gres://ui/chart-default.css" parse="text"/>
|
<xi:include href="gres://ui/chart-default.css" parse="text"/>
|
||||||
</style>
|
</style>
|
||||||
|
<style type="text/css">
|
||||||
|
<xsl:value-of select="$additional-css"/>
|
||||||
|
</style>
|
||||||
</xsl:when>
|
</xsl:when>
|
||||||
</xsl:choose>
|
</xsl:choose>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user