Guardado completo, fichero.tbo
authordanigm <dani@danigm.net>
Fri, 5 Mar 2010 00:07:31 +0000 (00:07 +0000)
committerdanigm <danigm@aa302d1f-72b1-406a-902b-8593ca2b2744>
Fri, 5 Mar 2010 00:07:31 +0000 (00:07 +0000)
From: danigm <dani@danigm.net>

git-svn-id: https://forja.rediris.es/svn/cusl4-tbo@77 aa302d1f-72b1-406a-902b-8593ca2b2744

12 files changed:
src/comic-saveas-dialog.c
src/comic.c
src/frame.c
src/frame.h
src/page.c
src/svgimage.c
src/svgimage.h
src/tbo-object.c
src/tbo-object.h
src/tbo-types.h
src/textobj.c
src/textobj.h

index 9ba7a6e..ab0736f 100644 (file)
@@ -23,7 +23,7 @@ tbo_comic_saveas_dialog (GtkWidget *widget, TboWindow *window)
                                                NULL);
 
     snprintf (buffer, 255, "%s.tbo", window->comic->title);
-    gtk_file_chooser_set_current_name (filechooser, buffer);
+    gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (filechooser), buffer);
     response = gtk_dialog_run (GTK_DIALOG (filechooser));
 
     if (response == GTK_RESPONSE_ACCEPT)
index 8456a6f..71cd065 100644 (file)
@@ -159,7 +159,10 @@ tbo_comic_save (Comic *comic, char *filename)
         return;
     }
 
-    snprintf (buffer, 255, "<tbo>\n");
+    snprintf (buffer, 255, "<tbo title=\"%s\" width=\"%d\" height=\"%d\">\n",
+                                                                comic->title,
+                                                                comic->width,
+                                                                comic->height);
     fwrite (buffer, sizeof (char), strlen (buffer), file);
 
     for (p=g_list_first (comic->pages); p; p = g_list_next(p))
index f0ae223..921b2fc 100644 (file)
@@ -2,8 +2,11 @@
 #include <math.h>
 #include <cairo.h>
 #include <malloc.h>
+#include <stdio.h>
+#include <string.h>
 #include "frame.h"
 #include "tbo-types.h"
+#include "tbo-object.h"
 
 static int BASE_X = 0;
 static int BASE_Y = 0;
@@ -266,3 +269,26 @@ tbo_frame_set_color (Frame *frame, GdkColor *color)
     BASE_COLOR.g = frame->color->g;
     BASE_COLOR.b = frame->color->b;
 }
+
+void
+tbo_frame_save (Frame *frame, FILE *file)
+{
+    char buffer[255];
+    GList *o;
+
+    snprintf (buffer, 255, "  <frame x=\"%d\" y=\"%d\" width=\"%d\" "
+                           "height=\"%d\" border=\"%d\" "
+                           "r=\"%f\" g=\"%f\" b=\"%f\">\n",
+                            frame->x, frame->y, frame->width,
+                            frame->height, frame->border,
+                            frame->color->r, frame->color->g, frame->color->b);
+    fwrite (buffer, sizeof (char), strlen (buffer), file);
+
+    for (o=g_list_first (frame->objects); o; o = g_list_next(o))
+    {
+        tbo_object_save ((tbo_object *) o->data, file);
+    }
+
+    snprintf (buffer, 255, "  </frame>\n");
+    fwrite (buffer, sizeof (char), strlen (buffer), file);
+}
index 029dfd7..6c23af6 100644 (file)
@@ -3,6 +3,7 @@
 
 #include <gtk/gtk.h>
 #include <cairo.h>
+#include <stdio.h>
 #include "tbo-types.h"
 
 Frame *tbo_frame_new (int x, int y, int witdh, int heigth);
@@ -24,6 +25,7 @@ float tbo_frame_get_scale_factor ();
 int tbo_frame_get_base_y (int y);
 int tbo_frame_get_base_x (int x);
 void tbo_frame_set_color (Frame *frame, GdkColor *color);
+void tbo_frame_save (Frame *frame, FILE *file);
 
 #endif
 
index 70d7409..da6785e 100644 (file)
@@ -1,4 +1,5 @@
 #include <stdio.h>
+#include <string.h>
 #include <gtk/gtk.h>
 #include <malloc.h>
 #include "comic.h"
@@ -141,8 +142,15 @@ void
 tbo_page_save (Page *page, FILE *file)
 {
     char buffer[255];
-    snprintf (buffer, 255, "<page>\n");
+    GList *f;
+    snprintf (buffer, 255, " <page>\n");
     fwrite (buffer, sizeof (char), strlen (buffer), file);
-    snprintf (buffer, 255, "</page>\n");
+
+    for (f=g_list_first (page->frames); f; f = g_list_next(f))
+    {
+        tbo_frame_save ((Frame *) f->data, file);
+    }
+
+    snprintf (buffer, 255, " </page>\n");
     fwrite (buffer, sizeof (char), strlen (buffer), file);
 }
index cab4c0a..e245146 100644 (file)
@@ -1,4 +1,5 @@
 #include <stdlib.h>
+#include <string.h>
 #include <math.h>
 #include <gtk/gtk.h>
 #include <cairo.h>
@@ -14,8 +15,9 @@ tbo_svgimage_new ()
     SVGImage *image;
     image = malloc (sizeof(SVGImage));
     image->data = malloc(sizeof(char)*255);
-    image->free =tbo_svg_image_free;
-    image->draw =tbo_svg_image_draw;
+    image->free = tbo_svg_image_free;
+    image->draw = tbo_svg_image_draw;
+    image->save = tbo_svg_image_save;
     image->type = SVGOBJ;
     image->flipv = FALSE;
     image->fliph = FALSE;
@@ -94,3 +96,20 @@ tbo_svg_image_draw (SVGImage *self, Frame *frame, cairo_t *cr)
         g_object_unref (rsvg_handle);
     }
 }
+
+void
+tbo_svg_image_save (SVGImage *self, FILE *file)
+{
+    char buffer[1024];
+
+    snprintf (buffer, 1024, "   <svgimage x=\"%d\" y=\"%d\" "
+                           "width=\"%d\" height=\"%d\" "
+                           "angle=\"%f\" flipv=\"%d\" fliph=\"%d\" "
+                           "path=\"%s\">\n ",
+                           self->x, self->y, self->width, self->height,
+                           self->angle, self->flipv, self->fliph, (char*)self->data);
+    fwrite (buffer, sizeof (char), strlen (buffer), file);
+
+    snprintf (buffer, 1024, "   </svgimage>\n");
+    fwrite (buffer, sizeof (char), strlen (buffer), file);
+}
index 8b51367..3812c61 100644 (file)
@@ -2,6 +2,7 @@
 #define __TBO_SVG_IMAGE__
 
 #include <cairo.h>
+#include <stdio.h>
 #include "tbo-types.h"
 
 typedef tbo_object SVGImage;
@@ -10,5 +11,6 @@ SVGImage * tbo_svgimage_new ();
 SVGImage * tbo_svgimage_new_width_params (int x, int y, int width, int height, const char *path);
 void tbo_svg_image_free (SVGImage *self);
 void tbo_svg_image_draw (SVGImage *self, Frame *frame, cairo_t *cr);
+void tbo_svg_image_save (SVGImage *self, FILE *file);
 
 #endif
index df91a33..1a1839b 100644 (file)
@@ -1,8 +1,11 @@
 #include <gtk/gtk.h>
 #include <cairo.h>
+#include <stdio.h>
 #include "ui-drawing.h"
 #include "tbo-types.h"
 #include "tbo-object.h"
+#include "svgimage.h"
+#include "textobj.h"
 
 void
 tbo_object_flipv (tbo_object *self)
@@ -91,3 +94,9 @@ tbo_object_move (tbo_object *self, enum MOVE_OPT type)
             break;
     }
 }
+
+void
+tbo_object_save (tbo_object *self, FILE *file)
+{
+    self->save (self, file);
+}
index 2fce8b9..0d234e3 100644 (file)
@@ -1,5 +1,6 @@
 #include <gtk/gtk.h>
 #include <cairo.h>
+#include <stdio.h>
 #include "tbo-types.h"
 
 enum MOVE_OPT
@@ -18,3 +19,4 @@ void tbo_object_get_flip_matrix (tbo_object *self, cairo_matrix_t *mx);
 void tbo_object_order_down (tbo_object *self);
 void tbo_object_order_up (tbo_object *self);
 void tbo_object_move (tbo_object *self, enum MOVE_OPT type);
+void tbo_object_save (tbo_object *self, FILE *file);
index 638930d..77cc13e 100644 (file)
@@ -2,6 +2,7 @@
 #define __TBO_TYPES__
 
 #include <gtk/gtk.h>
+#include <stdio.h>
 #include <cairo.h>
 
 typedef struct
@@ -56,6 +57,7 @@ struct tbo_object
     gboolean fliph;
     void (*free) (struct tbo_object *);
     void (*draw) (struct tbo_object *, Frame *, cairo_t *);
+    void (*save) (struct tbo_object *, FILE *);
     enum TYPE type;
     gpointer data;
 };
index 8a9ecb4..8c49e02 100644 (file)
@@ -1,4 +1,5 @@
 #include <stdlib.h>
+#include <string.h>
 #include <gtk/gtk.h>
 #include <cairo.h>
 #include "textobj.h"
@@ -61,6 +62,7 @@ tbo_text_new ()
     text->data = text_data_new ("text", "Sans Normal 27", 0, 0, 0);
     text->free = tbo_text_free;
     text->draw = tbo_text_draw;
+    text->save = tbo_text_save;
     text->type = TEXTOBJ;
     text->flipv = FALSE;
     text->fliph = FALSE;
@@ -176,3 +178,28 @@ tbo_text_get_string (TextObj *self)
     text_data *data = (text_data *)self->data;
     return pango_font_description_to_string (data->description);
 }
+
+void
+tbo_text_save (TextObj *self, FILE *file)
+{
+    char buffer[1024];
+
+    text_data *data = (text_data*)self->data;
+    snprintf (buffer, 1024, "   <text x=\"%d\" y=\"%d\" "
+                           "width=\"%d\" height=\"%d\" "
+                           "angle=\"%f\" flipv=\"%d\" fliph=\"%d\" "
+                           "font=\"%s\" "
+                           "r=\"%f\" g=\"%f\" b=\"%f\">\n",
+                           self->x, self->y, self->width, self->height,
+                           self->angle, self->flipv, self->fliph,
+                           pango_font_description_to_string (data->description),
+                           data->font_color->r, data->font_color->g,
+                           data->font_color->b);
+    fwrite (buffer, sizeof (char), strlen (buffer), file);
+
+    snprintf (buffer, 1024, "%s", data->text->str);
+    fwrite (buffer, sizeof (char), strlen (buffer), file);
+
+    snprintf (buffer, 1024, "\n   </text>\n");
+    fwrite (buffer, sizeof (char), strlen (buffer), file);
+}
index 5660527..0095cce 100644 (file)
@@ -2,6 +2,7 @@
 #define __TBO_TEXT_OBJ__
 
 #include <cairo.h>
+#include <stdio.h>
 #include "tbo-types.h"
 
 typedef tbo_object TextObj;
@@ -16,5 +17,6 @@ void tbo_text_change_font (TextObj *self, char *font);
 void tbo_text_change_color (TextObj *self, double r, double g, double b);
 void tbo_text_get_color (TextObj *self, GdkColor *color);
 char * tbo_text_get_string (TextObj *self);
+void tbo_text_save (TextObj *self, FILE *file);
 
 #endif