*** empty log message ***
authorLutz Mueller <lutz.s.mueller@gmail.com>
Sat, 8 Jun 2002 20:54:47 +0000 (22:54 +0200)
committerLutz Mueller <lutz.s.mueller@gmail.com>
Sat, 8 Jun 2002 20:54:47 +0000 (22:54 +0200)
libjpeg/jpeg-data.c
libjpeg/jpeg-data.h

index d6c69c7..1b27234 100644 (file)
@@ -376,19 +376,50 @@ jpeg_data_dump (JPEGData *data)
         }
 }
 
+static JPEGSection *
+jpeg_data_get_section (JPEGData *data, JPEGMarker marker)
+{
+       unsigned int i;
+
+       if (!data)
+               return (NULL);
+
+       for (i = 0; i < data->count; i++)
+               if (data->sections[i].marker == marker)
+                       return (&data->sections[i]);
+       return (NULL);
+}
+
 ExifData *
 jpeg_data_get_exif_data (JPEGData *data)
 {
-       unsigned int i;
+       JPEGSection *section;
 
        if (!data)
                return NULL;
 
-       for (i = 0; i < data->count; i++)
-               if (data->sections[i].marker == JPEG_MARKER_APP1) {
-                       exif_data_ref (data->sections[i].content.app1);
-                       return (data->sections[i].content.app1);
-               }
+       section = jpeg_data_get_section (data, JPEG_MARKER_APP1);
+       if (section) {
+               exif_data_ref (section->content.app1);
+               return (section->content.app1);
+       }
 
        return (NULL);
 }
+
+void
+jpeg_data_set_exif_data (JPEGData *data, ExifData *exif_data)
+{
+       JPEGSection *section;
+
+       section = jpeg_data_get_section (data, JPEG_MARKER_APP1);
+       if (!section) {
+               jpeg_data_append_section (data);
+               memmove (&data->sections[2], &data->sections[1],
+                        data->count - 2);
+               section = &data->sections[1];
+       }
+       section->marker = JPEG_MARKER_APP1;
+       section->content.app1 = exif_data;
+       exif_data_ref (exif_data);
+}
index 03f226d..155accb 100644 (file)
@@ -78,6 +78,7 @@ void      jpeg_data_save_data     (JPEGData *data, unsigned char **d,
 void      jpeg_data_load_file     (JPEGData *data, const char *path);
 void      jpeg_data_save_file     (JPEGData *data, const char *path);
 
+void      jpeg_data_set_exif_data (JPEGData *data, ExifData *exif_data);
 ExifData *jpeg_data_get_exif_data (JPEGData *data);
 
 void      jpeg_data_dump (JPEGData *data);