Merge pull request #99 from gergelypolonkai/png-export
Add PNG save support
This commit is contained in:
		
							
								
								
									
										4
									
								
								TODO.org
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								TODO.org
									
									
									
									
									
								
							| @@ -152,11 +152,11 @@ dependent on the chart's size (currently, for the big chart it's | |||||||
|  |  | ||||||
| * Regiomontanus import                                          :version_2.0: | * Regiomontanus import                                          :version_2.0: | ||||||
|  |  | ||||||
| * Chart export as different image types [2/3]                   :version_1.0: | * Chart export as different image types [3/3]                   :version_1.0: | ||||||
|  |  | ||||||
|   - [X] SVG |   - [X] SVG | ||||||
|   - [X] JPEG |   - [X] JPEG | ||||||
|   - [ ] PNG |   - [X] PNG | ||||||
|  |  | ||||||
|   Other formats supported by GDK-PixBuf are considered useless, and |   Other formats supported by GDK-PixBuf are considered useless, and | ||||||
|   most people should be able to open these types. |   most people should be able to open these types. | ||||||
|   | |||||||
| @@ -1983,11 +1983,12 @@ ag_chart_get_pixbuf(AgChart        *chart, | |||||||
|     return pixbuf; |     return pixbuf; | ||||||
| } | } | ||||||
|  |  | ||||||
| void | static void | ||||||
| ag_chart_export_jpg_to_file(AgChart        *chart, | ag_chart_export_to_image(AgChart        *chart, | ||||||
|                             GFile          *file, |                          GFile          *file, | ||||||
|                             AgDisplayTheme *theme, |                          AgDisplayTheme *theme, | ||||||
|                             GError         **err) |                          gchar          *format, | ||||||
|  |                          GError         **err) | ||||||
| { | { | ||||||
|     gchar      *jpg; |     gchar      *jpg; | ||||||
|     gsize      jpg_length; |     gsize      jpg_length; | ||||||
| @@ -2003,7 +2004,7 @@ ag_chart_export_jpg_to_file(AgChart        *chart, | |||||||
|                 pixbuf, |                 pixbuf, | ||||||
|                 &jpg, |                 &jpg, | ||||||
|                 &jpg_length, |                 &jpg_length, | ||||||
|                 "jpeg", |                 format, | ||||||
|                 err, |                 err, | ||||||
|                 NULL |                 NULL | ||||||
|             )) { |             )) { | ||||||
| @@ -2029,6 +2030,24 @@ ag_chart_export_jpg_to_file(AgChart        *chart, | |||||||
|     g_free(jpg); |     g_free(jpg); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | ag_chart_export_jpg_to_file(AgChart        *chart, | ||||||
|  |                             GFile          *file, | ||||||
|  |                             AgDisplayTheme *theme, | ||||||
|  |                             GError         **err) | ||||||
|  | { | ||||||
|  |     ag_chart_export_to_image(chart, file, theme, "jpeg", err); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | ag_chart_export_png_to_file(AgChart        *chart, | ||||||
|  |                             GFile          *file, | ||||||
|  |                             AgDisplayTheme *theme, | ||||||
|  |                             GError         **err) | ||||||
|  | { | ||||||
|  |     ag_chart_export_to_image(chart, file, theme, "png", err); | ||||||
|  | } | ||||||
|  |  | ||||||
| void | void | ||||||
| ag_chart_set_note(AgChart *chart, const gchar *note) | ag_chart_set_note(AgChart *chart, const gchar *note) | ||||||
| { | { | ||||||
|   | |||||||
| @@ -110,6 +110,11 @@ void ag_chart_export_jpg_to_file(AgChart        *chart, | |||||||
|                                  AgDisplayTheme *theme, |                                  AgDisplayTheme *theme, | ||||||
|                                  GError         **err); |                                  GError         **err); | ||||||
|  |  | ||||||
|  | void ag_chart_export_png_to_file(AgChart        *chart, | ||||||
|  |                                  GFile          *file, | ||||||
|  |                                  AgDisplayTheme *theme, | ||||||
|  |                                  GError         **err); | ||||||
|  |  | ||||||
| void ag_chart_set_name(AgChart     *chart, | void ag_chart_set_name(AgChart     *chart, | ||||||
|                        const gchar *name); |                        const gchar *name); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -922,6 +922,7 @@ ag_window_export_image(AgWindow *window, GError **err) | |||||||
|                                      NULL); |                                      NULL); | ||||||
|     gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(fs), filter_svg); |     gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(fs), filter_svg); | ||||||
|     gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(fs), filter_jpg); |     gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(fs), filter_jpg); | ||||||
|  |     gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(fs), filter_png); | ||||||
|     gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(fs), filter_svg); |     gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(fs), filter_svg); | ||||||
|     gtk_dialog_set_default_response(GTK_DIALOG(fs), GTK_RESPONSE_ACCEPT); |     gtk_dialog_set_default_response(GTK_DIALOG(fs), GTK_RESPONSE_ACCEPT); | ||||||
|     gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(fs), FALSE); |     gtk_file_chooser_set_local_only(GTK_FILE_CHOOSER(fs), FALSE); | ||||||
| @@ -953,6 +954,9 @@ ag_window_export_image(AgWindow *window, GError **err) | |||||||
|             } else if (filter == filter_jpg) { |             } else if (filter == filter_jpg) { | ||||||
|                 extension = ".jpg"; |                 extension = ".jpg"; | ||||||
|                 save_func = &ag_chart_export_jpg_to_file; |                 save_func = &ag_chart_export_jpg_to_file; | ||||||
|  |             } else if (filter == filter_png) { | ||||||
|  |                 extension = ".png"; | ||||||
|  |                 save_func = &ag_chart_export_png_to_file; | ||||||
|             } else { |             } else { | ||||||
|                 g_warning("Unknown file type"); |                 g_warning("Unknown file type"); | ||||||
|                 gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(fs), filter_svg); |                 gtk_file_chooser_set_filter(GTK_FILE_CHOOSER(fs), filter_svg); | ||||||
|   | |||||||
| @@ -44,6 +44,7 @@ GtkFileFilter *filter_chart = NULL; | |||||||
| GtkFileFilter *filter_hor   = NULL; | GtkFileFilter *filter_hor   = NULL; | ||||||
| GtkFileFilter *filter_svg   = NULL; | GtkFileFilter *filter_svg   = NULL; | ||||||
| GtkFileFilter *filter_jpg   = NULL; | GtkFileFilter *filter_jpg   = NULL; | ||||||
|  | GtkFileFilter *filter_png   = NULL; | ||||||
| GtkTreeModel  *country_list = NULL; | GtkTreeModel  *country_list = NULL; | ||||||
| GtkTreeModel  *city_list    = NULL; | GtkTreeModel  *city_list    = NULL; | ||||||
| GHashTable    *xinclude_positions; | GHashTable    *xinclude_positions; | ||||||
| @@ -117,6 +118,11 @@ init_filters(void) | |||||||
|     gtk_file_filter_add_pattern(filter_jpg, "*.jpe"); |     gtk_file_filter_add_pattern(filter_jpg, "*.jpe"); | ||||||
|     gtk_file_filter_add_pattern(filter_jpg, "*.jpeg"); |     gtk_file_filter_add_pattern(filter_jpg, "*.jpeg"); | ||||||
|     g_object_ref_sink(filter_jpg); |     g_object_ref_sink(filter_jpg); | ||||||
|  |  | ||||||
|  |     filter_png = gtk_file_filter_new(); | ||||||
|  |     gtk_file_filter_set_name(filter_png, _("PNG image")); | ||||||
|  |     gtk_file_filter_add_pattern(filter_png, "*.png"); | ||||||
|  |     g_object_ref_sink(filter_png); | ||||||
| } | } | ||||||
|  |  | ||||||
| static int | static int | ||||||
|   | |||||||
| @@ -33,6 +33,7 @@ extern GtkFileFilter    *filter_chart; | |||||||
| extern GtkFileFilter    *filter_hor; | extern GtkFileFilter    *filter_hor; | ||||||
| extern GtkFileFilter    *filter_svg; | extern GtkFileFilter    *filter_svg; | ||||||
| extern GtkFileFilter    *filter_jpg; | extern GtkFileFilter    *filter_jpg; | ||||||
|  | extern GtkFileFilter    *filter_png; | ||||||
| extern GtkTreeModel     *country_list; | extern GtkTreeModel     *country_list; | ||||||
| extern GtkTreeModel     *city_list; | extern GtkTreeModel     *city_list; | ||||||
| extern const GswePlanet used_planets[]; | extern const GswePlanet used_planets[]; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user