1 /* -*- Mode: C; tab-width: 3; indent-tabs-mode: nil; c-basic-offset: 3 -*- */ 2 3 /* 4 * GImageView 5 * Copyright (C) 2001 Takuro Ashie 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 20 * 21 * $Id: gimv_image_saver.h,v 1.5 2004/09/21 08:44:32 makeinu Exp $ 22 */ 23 24 #ifndef __GIMV_IMAGE_SAVER_H__ 25 #define __GIMV_IMAGE_SAVER_H__ 26 27 #ifdef HAVE_CONFIG_H 28 # include "config.h" 29 #endif 30 31 #include <gtk/gtkobject.h> 32 33 #include "gimv_image.h" 34 #include "gimv_image_info.h" 35 36 37 #define GIMV_TYPE_IMAGE_SAVER (gimv_image_saver_get_type ()) 38 #define GIMV_IMAGE_SAVER(obj) (GTK_CHECK_CAST (obj, gimv_image_saver_get_type (), GimvImageSaver)) 39 #define GIMV_IMAGE_SAVER_CLASS(klass) (GTK_CHECK_CLASS_CAST (klass, gimv_image_saver_get_type, GimvImageSaverClass)) 40 #define GIMV_IS_IMAGE_SAVER(obj) (GTK_CHECK_TYPE (obj, gimv_image_saver_get_type ())) 41 #define GIMV_IS_IMAGE_SAVER_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GIMV_TYPE_IMAGE_SAVER)) 42 43 44 typedef struct GimvImageSaver_Tag GimvImageSaver; 45 typedef struct GimvImageSaverPriv_Tag GimvImageSaverPriv; 46 typedef struct GimvImageSaverClass_Tag GimvImageSaverClass; 47 typedef struct GimvImageSaverText_Tag GimvImageSaverText; 48 49 50 struct GimvImageSaver_Tag 51 { 52 GtkObject parent; 53 54 GimvImageInfo *info; 55 GimvImage *image; 56 gchar *format; 57 gchar *filename; 58 59 GimvImageSaverText *comments; 60 gint n_comments; 61 62 gpointer param; 63 64 GTimer *timer; 65 66 GimvImageSaverPriv *priv; 67 }; 68 69 70 struct GimvImageSaverClass_Tag 71 { 72 GtkObjectClass parent; 73 74 void (*save_start) (GimvImageSaver *saver); 75 void (*progress_update) (GimvImageSaver *saver); 76 void (*save_end) (GimvImageSaver *saver); 77 }; 78 79 80 struct GimvImageSaverText_Tag 81 { 82 gchar *key; 83 gchar *text; 84 }; 85 86 87 #define GIMV_IMAGE_SAVER_IF_VERSION 2 88 89 90 typedef struct GimvImageSaverPlugin_Tag 91 { 92 const guint32 if_version; /* plugin interface version */ 93 gchar *format; 94 95 gboolean (*save) (GimvImageSaver *saver, 96 GimvImage *image, 97 const gchar *filename, 98 const gchar *format); 99 GtkWidget *(*save_with_dialog) (GimvImageSaver *saver, 100 GimvImage *image, 101 const gchar *filename, 102 const gchar *format); 103 } GimvImageSaverPlugin; 104 105 106 GtkType gimv_image_saver_get_type (void); 107 GimvImageSaver *gimv_image_saver_new (void); 108 GimvImageSaver *gimv_image_saver_new_with_attr (GimvImage *image, 109 const gchar *path, 110 const gchar *format); 111 112 GimvImageSaver *gimv_image_saver_ref (GimvImageSaver *saver); 113 void gimv_image_saver_unref (GimvImageSaver *saver); 114 115 void gimv_image_saver_reset (GimvImageSaver *saver); 116 117 void gimv_image_saver_set_image (GimvImageSaver *saver, 118 GimvImage *image); 119 void gimv_image_saver_set_path (GimvImageSaver *saver, 120 const gchar *path); 121 void gimv_image_saver_set_format (GimvImageSaver *saver, 122 const gchar *format); 123 void gimv_image_saver_set_image_info (GimvImageSaver *saver, 124 GimvImageInfo *info); 125 void gimv_image_saver_set_param (GimvImageSaver *saver, 126 gpointer param); 127 void gimv_image_saver_set_comment (GimvImageSaver *saver, 128 const gchar *key, 129 const gchar *value); 130 131 gboolean gimv_image_saver_save (GimvImageSaver *saver); 132 void gimv_image_saver_save_start (GimvImageSaver *saver); 133 void gimv_image_saver_save_stop (GimvImageSaver *saver); 134 gboolean gimv_image_saver_is_saving (GimvImageSaver *saver); 135 136 137 /* used by saver */ 138 GimvImage *gimv_image_saver_get_image (GimvImageSaver *saver); 139 const gchar *gimv_image_saver_get_path (GimvImageSaver *saver); 140 const gchar *gimv_image_saver_get_format (GimvImageSaver *saver); 141 GimvImageInfo *gimv_image_saver_get_image_info (GimvImageSaver *saver); 142 gint gimv_image_saver_get_n_comments (GimvImageSaver *saver); 143 gboolean gimv_image_saver_get_comment (GimvImageSaver *saver, 144 gint idx, 145 const gchar ** key, 146 const gchar ** value); 147 gboolean gimv_image_saver_progress_update (GimvImageSaver *saver); 148 149 /* 150 * for plugin loader 151 */ 152 gboolean gimv_image_saver_plugin_regist (const gchar *plugin_name, 153 const gchar *module_name, 154 gpointer impl, 155 gint size); 156 #endif /* __GIMV_IMAGE_SAVER_H__ */ 157