1 /* Eye Of GNOME -- Metadata Reader Interface 2 * 3 * Copyright (C) 2008 The Free Software Foundation 4 * 5 * Author: Felix Riemann <friemann@svn.gnome.org> 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 along 18 * with this program; if not, write to the Free Software Foundation, Inc., 19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 */ 21 22 #ifndef _EOG_METADATA_READER_H_ 23 #define _EOG_METADATA_READER_H_ 24 25 #include <glib-object.h> 26 #ifdef HAVE_EXIF 27 #include "eog-exif-util.h" 28 #endif 29 #ifdef HAVE_EXEMPI 30 #include <exempi/xmp.h> 31 #endif 32 #ifdef HAVE_LCMS 33 #include <lcms2.h> 34 #endif 35 36 G_BEGIN_DECLS 37 38 #define EOG_TYPE_METADATA_READER (eog_metadata_reader_get_type ()) 39 #define EOG_METADATA_READER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), EOG_TYPE_METADATA_READER, EogMetadataReader)) 40 #define EOG_IS_METADATA_READER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), EOG_TYPE_METADATA_READER)) 41 #define EOG_METADATA_READER_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), EOG_TYPE_METADATA_READER, EogMetadataReaderInterface)) 42 43 typedef struct _EogMetadataReader EogMetadataReader; 44 typedef struct _EogMetadataReaderInterface EogMetadataReaderInterface; 45 46 struct _EogMetadataReaderInterface { 47 GTypeInterface parent; 48 49 void (*consume) (EogMetadataReader *self, 50 const guchar *buf, 51 guint len); 52 53 gboolean (*finished) (EogMetadataReader *self); 54 55 void (*get_raw_exif) (EogMetadataReader *self, 56 guchar **data, 57 guint *len); 58 59 gpointer (*get_exif_data) (EogMetadataReader *self); 60 61 gpointer (*get_icc_profile) (EogMetadataReader *self); 62 63 gpointer (*get_xmp_ptr) (EogMetadataReader *self); 64 }; 65 66 typedef enum { 67 EOG_METADATA_JPEG, 68 EOG_METADATA_PNG 69 } EogMetadataFileType; 70 71 G_GNUC_INTERNAL 72 GType eog_metadata_reader_get_type (void) G_GNUC_CONST; 73 74 G_GNUC_INTERNAL 75 EogMetadataReader* eog_metadata_reader_new (EogMetadataFileType type); 76 77 G_GNUC_INTERNAL 78 void eog_metadata_reader_consume (EogMetadataReader *emr, 79 const guchar *buf, 80 guint len); 81 82 G_GNUC_INTERNAL 83 gboolean eog_metadata_reader_finished (EogMetadataReader *emr); 84 85 G_GNUC_INTERNAL 86 void eog_metadata_reader_get_exif_chunk (EogMetadataReader *emr, 87 guchar **data, 88 guint *len); 89 90 #ifdef HAVE_EXIF 91 G_GNUC_INTERNAL 92 ExifData* eog_metadata_reader_get_exif_data (EogMetadataReader *emr); 93 #endif 94 95 #ifdef HAVE_EXEMPI 96 G_GNUC_INTERNAL 97 XmpPtr eog_metadata_reader_get_xmp_data (EogMetadataReader *emr); 98 #endif 99 100 #if 0 101 gpointer eog_metadata_reader_get_iptc_chunk (EogMetadataReader *emr); 102 IptcData* eog_metadata_reader_get_iptc_data (EogMetadataReader *emr); 103 #endif 104 105 #ifdef HAVE_LCMS 106 G_GNUC_INTERNAL 107 cmsHPROFILE eog_metadata_reader_get_icc_profile (EogMetadataReader *emr); 108 #endif 109 110 G_END_DECLS 111 112 #endif /* _EOG_METADATA_READER_H_ */ 113