--- /dev/null
+#include <gtk/gtk.h>
+#include <glib/gi18n.h>
+#include <cairo.h>
+
+#include "export.h"
+#include "ui-drawing.h"
+
+
+gboolean
+tbo_export_to_png (TboWindow *tbo)
+{
+ cairo_surface_t *surface;
+ cairo_t *cr;
+ int width = tbo->comic->width;
+ int height = tbo->comic->height;
+ char rpath[255];
+ char *filename;
+ GList *page_list;
+ int i;
+ gint response;
+
+ GtkWidget *filechooser;
+ filechooser = gtk_file_chooser_dialog_new (_("Export as"),
+ GTK_WINDOW (tbo->window),
+ GTK_FILE_CHOOSER_ACTION_SAVE,
+ GTK_STOCK_CANCEL,
+ GTK_RESPONSE_CANCEL,
+ GTK_STOCK_SAVE,
+ GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ response = gtk_dialog_run (GTK_DIALOG (filechooser));
+
+ if (response == GTK_RESPONSE_ACCEPT)
+ {
+ filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (filechooser));
+ for (i=0, page_list = g_list_first (tbo->comic->pages); page_list; i++, page_list = page_list->next)
+ {
+ surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
+ cr = cairo_create(surface);
+
+ tbo_drawing_draw_page (cr, (Page *)page_list->data, width, height);
+
+ snprintf (rpath, 255, "%s%02d.png", filename, i);
+ cairo_surface_write_to_png (surface, rpath);
+
+ cairo_destroy(cr);
+ cairo_surface_destroy(surface);
+ }
+ }
+
+ gtk_widget_destroy ((GtkWidget *) filechooser);
+
+ return FALSE;
+}
Frame *FRAME_VIEW = NULL;
+void
+tbo_drawing_draw_page (cairo_t *cr, Page *page, int w, int h)
+{
+ Frame *frame;
+ GList *frame_list;
+
+ // white background
+ cairo_set_source_rgb(cr, 1, 1, 1);
+ cairo_rectangle(cr, 0, 0, w+2, h+2);
+ cairo_fill(cr);
+
+ for (frame_list = tbo_page_get_frames (page); frame_list; frame_list = frame_list->next)
+ {
+ // draw each frame
+ frame = (Frame *)frame_list->data;
+ tbo_frame_draw (frame, cr);
+ }
+}
+
+void
+tbo_drawing_draw (cairo_t *cr, TboWindow *tbo)
+{
+ Frame *frame;
+ GList *frame_list;
+ Page *page;
+
+ int w, h;
+
+ w = tbo->comic->width;
+ h = tbo->comic->height;
+ // white background
+ cairo_set_source_rgb(cr, 1, 1, 1);
+ cairo_rectangle(cr, 0, 0, w+2, h+2);
+ cairo_fill(cr);
+
+ page = tbo_comic_get_current_page (tbo->comic);
+
+ if (!FRAME_VIEW)
+ {
+ for (frame_list = tbo_page_get_frames (page); frame_list; frame_list = frame_list->next)
+ {
+ // draw each frame
+ frame = (Frame *)frame_list->data;
+ tbo_frame_draw (frame, cr);
+ }
+ }
+ else
+ {
+ tbo_frame_draw_scaled (FRAME_VIEW, cr, w, h);
+ }
+}
gboolean
on_key_cb (GtkWidget *widget,
TboWindow *tbo)
{
cairo_t *cr;
- int width, height;
-
- GdkWindow *window;
int w, h;
-
- Frame *frame;
- GList *frame_list;
- Page *page;
-
enum Tool tool;
+ GdkWindow *window;
- width = tbo->comic->width;
- height = tbo->comic->height;
cr = gdk_cairo_create(GTK_LAYOUT (widget)->bin_window);
window = gtk_widget_get_parent_window (GTK_WIDGET (widget));
gdk_drawable_get_size (GDK_DRAWABLE (window), &w, &h);
+
cairo_set_source_rgb (cr, 0, 0, 0);
cairo_rectangle (cr, 0, 0, w, h);
cairo_fill (cr);
- // white background and black border
- cairo_set_source_rgb(cr, 1, 1, 1);
- cairo_rectangle(cr, 0, 0, width+2, height+2);
- cairo_fill(cr);
- cairo_set_source_rgb(cr, 0.4, 0.4, 0.4);
- cairo_rectangle (cr, 1, 1, width, height);
- cairo_stroke (cr);
-
- page = tbo_comic_get_current_page (tbo->comic);
- if (!FRAME_VIEW)
- {
- for (frame_list = tbo_page_get_frames (page); frame_list; frame_list = frame_list->next)
- {
- // draw each frame
- frame = (Frame *)frame_list->data;
- tbo_frame_draw (frame, cr);
- }
- }
- else
- {
- tbo_frame_draw_scaled (FRAME_VIEW, cr, width, height);
- }
+ tbo_drawing_draw (cr, tbo);
// Update drawing helpers
-
tool = get_selected_tool ();
tool_signal (tool, TOOL_DRAWING, cr);
#include "comic-saveas-dialog.h"
#include "comic-open-dialog.h"
#include "tbo-window.h"
+#include "ui-drawing.h"
+#include "export.h"
+
gboolean menu_handler (GtkWidget *widget, gpointer data){
printf ("Menu :%s\n", ((TboWindow *) data)->comic->title);
return FALSE;
}
+gboolean
+tbo_menu_to_png (GtkWidget *widget, TboWindow *tbo)
+{
+ tbo_export_to_png (tbo);
+ return FALSE;
+}
+
static const GtkActionEntry tbo_menu_entries [] = {
/* Toplevel */
N_("Save current document as ..."),
G_CALLBACK (tbo_comic_saveas_dialog) },
+ { "ToPNG", GTK_STOCK_FILE, N_("Export as png"), "",
+ N_("Save current document as png"),
+ G_CALLBACK (tbo_menu_to_png) },
+
{ "Quit", GTK_STOCK_QUIT, N_("_Quit"), "<control>Q",
N_("Quit"),
G_CALLBACK (close_cb) },