  
    
main.htmlMain Page     
classes.htmlData Structures     
files.htmlFiles     
dirs.htmlDirectories   
  
    
files.htmlFile List     
globals.htmlGlobals   
dir_3c4fde49625df9344590fff295c7c38d.htmllibexif  &raquo dir_e4999f848bec30b78ca7726bbe28f323.htmlolympus exif-mnote-data-olympus.c
exif-mnote-data-olympus_8c.htmlGo to the documentation of this file. 00001 /* exif-mnote-data-olympus.c 00002  * 00003  * Copyright © 2002, 2003 Lutz Mueller <lutz@users.sourceforge.net> 00004  * 00005  * This library is free software; you can redistribute it and/or 00006  * modify it under the terms of the GNU Lesser General Public 00007  * License as published by the Free Software Foundation; either 00008  * version 2 of the License, or (at your option) any later version. 00009  * 00010  * This library is distributed in the hope that it will be useful, 00011  * but WITHOUT ANY WARRANTY; without even the implied warranty of 00012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 00013  * Lesser General Public License for more details. 00014  * 00015  * You should have received a copy of the GNU Lesser General Public 00016  * License along with this library; if not, write to the 00017  * Free Software Foundation, Inc., 59 Temple Place - Suite 330, 00018  * Boston, MA 02111-1307, USA. 00019  */ 00020 
00021 #include <config.h> 00022 #include " exif-mnote-data-olympus_8h.htmlexif-mnote-data-olympus.h " 00023 
00024 #include <stdlib.h> 00025 #include <string.h> 00026 #include <stdio.h> 00027 
00028 #include < exif-utils_8h.htmllibexif/exif-utils.h > 00029 #include < exif-data_8h.htmllibexif/exif-data.h > 00030 
exif-mnote-data-olympus_8c.html#d72dbcf6d0153db1b8d8a58001feed8300031  #define DEBUG 00032 00033 static void exif-mnote-data-olympus_8c.html#bbf48c8c4866eb54430bb8db5f8a83c200034  exif-mnote-data-olympus_8c.html#bbf48c8c4866eb54430bb8db5f8a83c2exif_mnote_data_olympus_clear  ( struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *n)
00035 {
00036         struct__ExifMnoteData.htmlExifMnoteData  *d = ( struct__ExifMnoteData.htmlExifMnoteData  *) n;
00037         unsigned int i;
00038 
00039         if (!n) return;
00040 
00041         if (n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries ) {
00042                 for (i = 0; i < n-> struct__ExifMnoteDataOlympus.html#52713b8df646074f4ef3ed206f9bfdf4count ; i++)
00043                         if (n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#faf1ec8526e7e59d3a1f7fe0fb51b470data ) {
00044                                 exif-mem_8c.html#43190b81b4b4bdb4ffb89bfb612051b1exif_mem_free  (d-> struct__ExifMnoteData.html#f4e3979d486789a2005b01100bc48c4bmem , n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#faf1ec8526e7e59d3a1f7fe0fb51b470data );
00045                                 n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#faf1ec8526e7e59d3a1f7fe0fb51b470data  = NULL;
00046                         }
00047                 exif-mem_8c.html#43190b81b4b4bdb4ffb89bfb612051b1exif_mem_free  (d-> struct__ExifMnoteData.html#f4e3979d486789a2005b01100bc48c4bmem , n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries );
00048                 n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries  = NULL;
00049                 n-> struct__ExifMnoteDataOlympus.html#52713b8df646074f4ef3ed206f9bfdf4count  = 0;
00050         }
00051 }
00052 
00053 static void exif-mnote-data-olympus_8c.html#4868c6e4138f9c8ad8ddae9cc268f8e700054  exif-mnote-data-olympus_8c.html#4868c6e4138f9c8ad8ddae9cc268f8e7exif_mnote_data_olympus_free  ( struct__ExifMnoteData.htmlExifMnoteData  *n)
00055 {
00056         if (!n) return;
00057 
00058         exif-mnote-data-olympus_8c.html#bbf48c8c4866eb54430bb8db5f8a83c2exif_mnote_data_olympus_clear  (( struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *) n);
00059 }
00060 
00061 static char *
exif-mnote-data-olympus_8c.html#b208837124e0e2627b4da08b0640a96400062  exif-mnote-data-olympus_8c.html#b208837124e0e2627b4da08b0640a964exif_mnote_data_olympus_get_value  ( struct__ExifMnoteData.htmlExifMnoteData  *d, unsigned int i, char *val, unsigned int maxlen)
00063 {
00064         struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *n = ( struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *) d;
00065 
00066         if (!d || !val) return NULL;
00067         if (i > n-> struct__ExifMnoteDataOlympus.html#52713b8df646074f4ef3ed206f9bfdf4count  -1) return NULL;
00068         exif-log_8c.html#025d4a5d96544913ea6f6ebbec69cb68exif_log  (d-> struct__ExifMnoteData.html#cc3a8f10ea19d9f5b91a695d0c788d1clog , exif-log_8h.html#36f42667fb0481f099dbc0628dae2652e8772b1ad05481f996ae4ab831f22860EXIF_LOG_CODE_DEBUG , "ExifMnoteDataOlympus",
00069                   "Querying value for tag '%s'...",
00070                   mnote-olympus-tag_8c.html#8cec7b3e56cc000ece3544ba2c87c67dmnote_olympus_tag_get_name  (n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#b0cc8c0d3b18e39cf4c42ef3881645b8tag ));
00071         return mnote-olympus-entry_8c.html#c037be3986826d7e73f647376e19a220mnote_olympus_entry_get_value  (&n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i], val, maxlen);
00072 }
00073 
00074 
00075 
00076 
00084 static void exif-mnote-data-olympus_8c.html#96ff3434fcdfe32ec3fa865ba56035e800085  exif-mnote-data-olympus_8c.html#96ff3434fcdfe32ec3fa865ba56035e8exif_mnote_data_olympus_save  ( struct__ExifMnoteData.htmlExifMnoteData  *ne,
00086                 unsigned char **buf, unsigned int *buf_size)
00087 {
00088         struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *n = ( struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *) ne;
00089         unsigned int i, o, s, doff, base = 0, o2 = 6;
00090         int datao = 0;
00091 
00092         if (!n || !buf || !buf_size) return;
00093 
00094         /* 00095          * Allocate enough memory for all entries and the number of entries. 00096          */ 00097         *buf_size = 6 + 2 + 2 + n-> struct__ExifMnoteDataOlympus.html#52713b8df646074f4ef3ed206f9bfdf4count  * 12;
00098         o2 += 2;
00099         switch (n-> struct__ExifMnoteDataOlympus.html#e2ca69e0e8ce1bffab26e8d36262a55eversion ) {
00100         case exif-mnote-data-olympus_8h.html#45d2626632184642cd89a2c88d8bbfda80604503edc2402ecb346c69853f5ed4olympus : 
00101                 *buf = exif-mem_8c.html#e8c09cfbcb95e435c4c4b7ec3bbd79e4exif_mem_alloc  (ne-> struct__ExifMnoteData.html#f4e3979d486789a2005b01100bc48c4bmem , *buf_size);
00102                 if (!*buf) return;
00103 
00104                 /* Write the header and the number of entries. */ 00105                 strcpy ((char *)*buf, "OLYMP");
00106                 datao = n-> struct__ExifMnoteDataOlympus.html#347f26b02d28b373d96ef826884c7019offset ;
00107                 break;
00108         case exif-mnote-data-olympus_8h.html#45d2626632184642cd89a2c88d8bbfda46602cf124635f13e0c0c4881458eba6nikonV1 : 
00109                 base = mnote-olympus-tag_8h.html#4b8d8a90fb313de066b339db8a2746868c4f587ccaf52361747f1d2ab308bad3MNOTE_NIKON1_TAG_BASE ;
00110 
00111                 /* subtract the size here, so the increment in the next case will not harm us */ 00112                 *buf_size -= 8;
00113                 /* Fall through */ 00114         case exif-mnote-data-olympus_8h.html#45d2626632184642cd89a2c88d8bbfda6917a4e2067bd7b0f5fc41469cd5cb6bnikonV2 : 
00115                 *buf_size += 8;
00116                 *buf = exif-mem_8c.html#e8c09cfbcb95e435c4c4b7ec3bbd79e4exif_mem_alloc  (ne-> struct__ExifMnoteData.html#f4e3979d486789a2005b01100bc48c4bmem , *buf_size);
00117                 if (!*buf) return;
00118 
00119                 /* Write the header and the number of entries. */ 00120                 strcpy ((char *)*buf, "Nikon");
00121                 (*buf)[6] = n-> struct__ExifMnoteDataOlympus.html#e2ca69e0e8ce1bffab26e8d36262a55eversion ;
00122 
00123                 *buf_size += 2;
00124                 if (n-> struct__ExifMnoteDataOlympus.html#e2ca69e0e8ce1bffab26e8d36262a55eversion  == exif-mnote-data-olympus_8h.html#45d2626632184642cd89a2c88d8bbfda6917a4e2067bd7b0f5fc41469cd5cb6bnikonV2 ) {
00125                         exif-utils_8c.html#d905d16e26b4052a1db34dbebdc37341exif_set_short  (*buf + 10, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder , ( exif-utils_8h.html#398536727127a9bc2206ffbdacaafaadExifShort ) (
00126                                 (n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder  == exif-byte-order_8h.html#f966227d69ff74eea7ecd69ca645155b851fef40a65a105b066115210a6b40b9EXIF_BYTE_ORDER_INTEL ) ?
00127                                 ('I' << 8) | 'I' :
00128                                 ('M' << 8) | 'M'));
00129                         exif-utils_8c.html#d905d16e26b4052a1db34dbebdc37341exif_set_short  (*buf + 12, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder , ( exif-utils_8h.html#398536727127a9bc2206ffbdacaafaadExifShort ) 0x2A);
00130                         exif-utils_8c.html#c90147d0cc97bec7a577bf9576191bf8exif_set_long  (*buf + 14, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder , ( exif-utils_8h.html#398536727127a9bc2206ffbdacaafaadExifShort ) 8);
00131                         o2 += 2 + 8;
00132                 }
00133                 datao = -10;
00134                 break;
00135 
00136         default:
00137                 return;
00138         }
00139 
00140         exif-utils_8c.html#d905d16e26b4052a1db34dbebdc37341exif_set_short  (*buf + o2, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder , ( exif-utils_8h.html#398536727127a9bc2206ffbdacaafaadExifShort ) n-> struct__ExifMnoteDataOlympus.html#52713b8df646074f4ef3ed206f9bfdf4count );
00141         o2 += 2;
00142 
00143         /* Save each entry */ 00144         for (i = 0; i < n-> struct__ExifMnoteDataOlympus.html#52713b8df646074f4ef3ed206f9bfdf4count ; i++) {
00145                 o = o2 + i * 12;
00146                 exif-utils_8c.html#d905d16e26b4052a1db34dbebdc37341exif_set_short  (*buf + o + 0, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder ,
00147                                 ( exif-utils_8h.html#398536727127a9bc2206ffbdacaafaadExifShort ) (n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#b0cc8c0d3b18e39cf4c42ef3881645b8tag  - base));
00148                 exif-utils_8c.html#d905d16e26b4052a1db34dbebdc37341exif_set_short  (*buf + o + 2, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder ,
00149                                 ( exif-utils_8h.html#398536727127a9bc2206ffbdacaafaadExifShort ) n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#a6c6942f8c365ddd5251b43a14471df8format );
00150                 exif-utils_8c.html#c90147d0cc97bec7a577bf9576191bf8exif_set_long   (*buf + o + 4, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder ,
00151                                 n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#e728d4f0db6d1d00aa1d31426a3be051components );
00152                 o += 8;
00153                 s = exif-format_8c.html#924038efe0cd8ebade8f44619dd794f3exif_format_get_size  (n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#a6c6942f8c365ddd5251b43a14471df8format ) *
00154                                                 n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#e728d4f0db6d1d00aa1d31426a3be051components ;
00155                 if (s > 4) {
00156                         doff = *buf_size;
00157                         *buf_size += s;
00158                         *buf = exif-mem_8c.html#3dcfe6794d82e79e92da5e2c62484b17exif_mem_realloc  (ne-> struct__ExifMnoteData.html#f4e3979d486789a2005b01100bc48c4bmem , *buf,
00159                                                  sizeof (char) * *buf_size);
00160                         if (!*buf) return;
00161                         exif-utils_8c.html#c90147d0cc97bec7a577bf9576191bf8exif_set_long  (*buf + o, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder , datao + doff);
00162                 } else 00163                         doff = o;
00164 
00165                 /* Write the data. */ 00166                 if (n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#faf1ec8526e7e59d3a1f7fe0fb51b470data ) {
00167                         memcpy (*buf + doff, n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#faf1ec8526e7e59d3a1f7fe0fb51b470data , s);
00168                 } else {
00169                         /* Most certainly damaged input file */ 00170                         memset (*buf + doff, 0, s);
00171                 }
00172         }
00173 }
00174 
00175 static void exif-mnote-data-olympus_8c.html#51652cef97d613c60f506d939dad295800176  exif-mnote-data-olympus_8c.html#51652cef97d613c60f506d939dad2958exif_mnote_data_olympus_load  ( struct__ExifMnoteData.htmlExifMnoteData  *en,
00177                               const unsigned char *buf, unsigned int buf_size)
00178 {
00179         struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *n = ( struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *) en;
00180         exif-utils_8h.html#398536727127a9bc2206ffbdacaafaadExifShort  c;
00181         unsigned int i, s, o, o2 = 0, datao = 6, base = 0;
00182 
00183         if (!n || !buf) return;
00184 
00185         /* Start of interesting data */ 00186         o2 = 6 + n-> struct__ExifMnoteDataOlympus.html#347f26b02d28b373d96ef826884c7019offset ;
00187 
00188         /* 00189          * Olympus headers start with "OLYMP" and need to have at least 00190          * a size of 22 bytes (6 for 'OLYMP', 2 other bytes, 2 for the 00191          * number of entries, and 12 for one entry. 00192          * 00193          * Nikon headers start with "Nikon" (6 bytes including '\0'), 00194          * version number (1 or 2). 00195          * 00196          * Version 1 continues with 0, 1, 0, number_of_tags, 00197          * or just with number_of_tags (models D1H, D1X...). 00198          * 00199          * Version 2 continues with an unknown byte (0 or 10), 00200          * two unknown bytes (0), "MM" or "II", another byte 0 and 00201          * lastly 0x2A. 00202          */ 00203         if (buf_size - n-> struct__ExifMnoteDataOlympus.html#347f26b02d28b373d96ef826884c7019offset  < 22) return;
00204         if (!memcmp (buf + o2, "OLYMP", 5)) {
00205                 exif-log_8c.html#025d4a5d96544913ea6f6ebbec69cb68exif_log  (en-> struct__ExifMnoteData.html#cc3a8f10ea19d9f5b91a695d0c788d1clog , exif-log_8h.html#36f42667fb0481f099dbc0628dae2652e8772b1ad05481f996ae4ab831f22860EXIF_LOG_CODE_DEBUG , "ExifMnoteDataOlympus",
00206                         "Parsing Olympus maker note...");
00207 
00208                 /* The number of entries is at position 8. */ 00209                 n-> struct__ExifMnoteDataOlympus.html#e2ca69e0e8ce1bffab26e8d36262a55eversion  = exif-mnote-data-olympus_8h.html#45d2626632184642cd89a2c88d8bbfda80604503edc2402ecb346c69853f5ed4olympus ;
00210                 o2 += 8;
00211 
00212         } else if (!memcmp (buf + o2, "Nikon", 6)) {
00213                 o2 += 6;
00214                 exif-log_8c.html#025d4a5d96544913ea6f6ebbec69cb68exif_log  (en-> struct__ExifMnoteData.html#cc3a8f10ea19d9f5b91a695d0c788d1clog , exif-log_8h.html#36f42667fb0481f099dbc0628dae2652e8772b1ad05481f996ae4ab831f22860EXIF_LOG_CODE_DEBUG , "ExifMnoteDataOlympus",
00215                         "Parsing Nikon maker note (0x%02x, %02x, %02x, " 00216                         "%02x, %02x, %02x, %02x, %02x)...",
00217                         buf[o2 + 0], buf[o2 + 1], buf[o2 + 2], buf[o2 + 3], 
00218                         buf[o2 + 4], buf[o2 + 5], buf[o2 + 6], buf[o2 + 7]);
00219                 /* The first byte is the version. */ 00220                 if (o2 >= buf_size) return;
00221                 n-> struct__ExifMnoteDataOlympus.html#e2ca69e0e8ce1bffab26e8d36262a55eversion  = buf[o2];
00222                 o2 += 1;
00223 
00224                 /* Skip an unknown byte (00 or 0A). */ 00225                 o2 += 1;
00226 
00227                 switch (n-> struct__ExifMnoteDataOlympus.html#e2ca69e0e8ce1bffab26e8d36262a55eversion ) {
00228                 case exif-mnote-data-olympus_8h.html#45d2626632184642cd89a2c88d8bbfda46602cf124635f13e0c0c4881458eba6nikonV1 :
00229 
00230                         base = mnote-olympus-tag_8h.html#4b8d8a90fb313de066b339db8a2746868c4f587ccaf52361747f1d2ab308bad3MNOTE_NIKON1_TAG_BASE ;
00231                         break;
00232 
00233                 case exif-mnote-data-olympus_8h.html#45d2626632184642cd89a2c88d8bbfda6917a4e2067bd7b0f5fc41469cd5cb6bnikonV2 :
00234 
00235                         /* Skip 2 unknown bytes (00 00). */ 00236                         o2 += 2;
00237 
00238                         /* 00239                          * Byte order. From here the data offset 00240                          * gets calculated. 00241                          */ 00242                         datao = o2;
00243                         if (o2 >= buf_size) return;
00244                         if (!strncmp ((char *)&buf[o2], "II", 2))
00245                                 n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder  = exif-byte-order_8h.html#f966227d69ff74eea7ecd69ca645155b851fef40a65a105b066115210a6b40b9EXIF_BYTE_ORDER_INTEL ;
00246                         else if (!strncmp ((char *)&buf[o2], "MM", 2))
00247                                 n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder  = exif-byte-order_8h.html#f966227d69ff74eea7ecd69ca645155bd71d87054b55fd62b0eed2c2c5e879b1EXIF_BYTE_ORDER_MOTOROLA ;
00248                         else {
00249                                 exif-log_8c.html#025d4a5d96544913ea6f6ebbec69cb68exif_log  (en-> struct__ExifMnoteData.html#cc3a8f10ea19d9f5b91a695d0c788d1clog , exif-log_8h.html#36f42667fb0481f099dbc0628dae2652e8772b1ad05481f996ae4ab831f22860EXIF_LOG_CODE_DEBUG ,
00250                                         "ExifMnoteDatalympus", "Unknown " 00251                                         "byte order '%c%c'", buf[o2],
00252                                         buf[o2 + 1]);
00253                                 return;
00254                         }
00255                         o2 += 2;
00256 
00257                         /* Skip 2 unknown bytes (00 2A). */ 00258                         o2 += 2;
00259 
00260                         /* Go to where the number of entries is. */ 00261                         if (o2 >= buf_size) return;
00262                         o2 = datao + exif-utils_8c.html#4ad94614630897766dd0a5c9bc2a59bfexif_get_long  (buf + o2, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder );
00263                         break;
00264 
00265                 default:
00266                         exif-log_8c.html#025d4a5d96544913ea6f6ebbec69cb68exif_log  (en-> struct__ExifMnoteData.html#cc3a8f10ea19d9f5b91a695d0c788d1clog , exif-log_8h.html#36f42667fb0481f099dbc0628dae2652e8772b1ad05481f996ae4ab831f22860EXIF_LOG_CODE_DEBUG ,
00267                                 "ExifMnoteDataOlympus", "Unknown version " 00268                                 "number %i.", n-> struct__ExifMnoteDataOlympus.html#e2ca69e0e8ce1bffab26e8d36262a55eversion );
00269                         return;
00270                 }
00271         } else if (!memcmp (buf + o2, "\0\x1b", 2)) {
00272                 n-> struct__ExifMnoteDataOlympus.html#e2ca69e0e8ce1bffab26e8d36262a55eversion  = exif-mnote-data-olympus_8h.html#45d2626632184642cd89a2c88d8bbfda6917a4e2067bd7b0f5fc41469cd5cb6bnikonV2 ;
00273         } else {
00274                 return;
00275         }
00276 
00277         /* Number of entries */ 00278         if (o2 >= buf_size) return;
00279         c = exif-utils_8c.html#4b4acf537a8c6b9405e7b53be868e4d7exif_get_short  (buf + o2, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder );
00280         o2 += 2;
00281 
00282         /* Read the number of entries and remove old ones. */ 00283         exif-mnote-data-olympus_8c.html#bbf48c8c4866eb54430bb8db5f8a83c2exif_mnote_data_olympus_clear  (n);
00284 
00285         n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries  = exif-mem_8c.html#e8c09cfbcb95e435c4c4b7ec3bbd79e4exif_mem_alloc  (en-> struct__ExifMnoteData.html#f4e3979d486789a2005b01100bc48c4bmem , sizeof ( struct__MnoteOlympusEntry.htmlMnoteOlympusEntry ) * c);
00286         if (!n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries ) return;
00287 
00288         /* Parse the entries */ 00289         for (i = 0; i < c; i++) {
00290             o = o2 + 12 * i;
00291             if (o + 12 > buf_size) return;
00292 
00293             n-> struct__ExifMnoteDataOlympus.html#52713b8df646074f4ef3ed206f9bfdf4count  = i + 1;
00294             n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#b0cc8c0d3b18e39cf4c42ef3881645b8tag         = exif-utils_8c.html#4b4acf537a8c6b9405e7b53be868e4d7exif_get_short  (buf + o, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder ) + base;
00295             n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#a6c6942f8c365ddd5251b43a14471df8format      = exif-utils_8c.html#4b4acf537a8c6b9405e7b53be868e4d7exif_get_short  (buf + o + 2, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder );
00296             n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#e728d4f0db6d1d00aa1d31426a3be051components  = exif-utils_8c.html#4ad94614630897766dd0a5c9bc2a59bfexif_get_long  (buf + o + 4, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder );
00297             n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#af33b1b1fc726738ae27b949be8041e4order       = n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder ;
00298 
00299             exif-log_8c.html#025d4a5d96544913ea6f6ebbec69cb68exif_log  (en-> struct__ExifMnoteData.html#cc3a8f10ea19d9f5b91a695d0c788d1clog , exif-log_8h.html#36f42667fb0481f099dbc0628dae2652e8772b1ad05481f996ae4ab831f22860EXIF_LOG_CODE_DEBUG , "ExifMnoteOlympus",
00300                       "Loading entry 0x%x ('%s')...", n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#b0cc8c0d3b18e39cf4c42ef3881645b8tag ,
00301                       mnote-olympus-tag_8c.html#8cec7b3e56cc000ece3544ba2c87c67dmnote_olympus_tag_get_name  (n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#b0cc8c0d3b18e39cf4c42ef3881645b8tag ));
00302 
00303             /* 00304              * Size? If bigger than 4 bytes, the actual data is not 00305              * in the entry but somewhere else (offset). 00306              */ 00307             s = exif-format_8c.html#924038efe0cd8ebade8f44619dd794f3exif_format_get_size  (n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#a6c6942f8c365ddd5251b43a14471df8format ) *
00308                                          n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#e728d4f0db6d1d00aa1d31426a3be051components ;
00309             if (!s) continue;
00310             o += 8;
00311             if (s > 4) o = exif-utils_8c.html#4ad94614630897766dd0a5c9bc2a59bfexif_get_long  (buf + o, n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder ) + datao;
00312             if (o + s > buf_size) continue;
00313 
00314             /* Sanity check */ 00315             n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#faf1ec8526e7e59d3a1f7fe0fb51b470data  = exif-mem_8c.html#e8c09cfbcb95e435c4c4b7ec3bbd79e4exif_mem_alloc  (en-> struct__ExifMnoteData.html#f4e3979d486789a2005b01100bc48c4bmem , s);
00316             if (!n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#faf1ec8526e7e59d3a1f7fe0fb51b470data ) continue;
00317             n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#008afed10bd5c3357004cf873909eef9size  = s;
00318             memcpy (n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#faf1ec8526e7e59d3a1f7fe0fb51b470data , buf + o, s);
00319         }
00320 }
00321 
00322 static unsigned int exif-mnote-data-olympus_8c.html#1bfa54d5a44ce710589abed129b911d800323  exif-mnote-data-olympus_8c.html#1bfa54d5a44ce710589abed129b911d8exif_mnote_data_olympus_count  ( struct__ExifMnoteData.htmlExifMnoteData  *n)
00324 {
00325         return n ? (( struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *) n)->count : 0;
00326 }
00327 
00328 static unsigned int exif-mnote-data-olympus_8c.html#c3e52fa6d3b1e2cf3c6a7c56ff0694c900329  exif-mnote-data-olympus_8c.html#c3e52fa6d3b1e2cf3c6a7c56ff0694c9exif_mnote_data_olympus_get_id  ( struct__ExifMnoteData.htmlExifMnoteData  *d, unsigned int n)
00330 {
00331         struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *note = ( struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *) d;
00332 
00333         if (!note) return 0;
00334         if (note-> struct__ExifMnoteDataOlympus.html#52713b8df646074f4ef3ed206f9bfdf4count  <= n) return 0;
00335         return note-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [n]. struct__MnoteOlympusEntry.html#b0cc8c0d3b18e39cf4c42ef3881645b8tag ;
00336 }
00337 
00338 static const char *
exif-mnote-data-olympus_8c.html#0f2f5f30e5f41ff48057894f32cd6db400339  exif-mnote-data-olympus_8c.html#0f2f5f30e5f41ff48057894f32cd6db4exif_mnote_data_olympus_get_name  ( struct__ExifMnoteData.htmlExifMnoteData  *d, unsigned int i)
00340 {
00341         struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *n = ( struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *) d;
00342 
00343         if (!n) return NULL;
00344         if (i >= n-> struct__ExifMnoteDataOlympus.html#52713b8df646074f4ef3ed206f9bfdf4count ) return NULL;
00345         return mnote-olympus-tag_8c.html#8cec7b3e56cc000ece3544ba2c87c67dmnote_olympus_tag_get_name  (n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#b0cc8c0d3b18e39cf4c42ef3881645b8tag );
00346 }
00347 
00348 static const char *
exif-mnote-data-olympus_8c.html#59e02c1592f8629e8c2d4a2ee835fc4200349  exif-mnote-data-olympus_8c.html#59e02c1592f8629e8c2d4a2ee835fc42exif_mnote_data_olympus_get_title  ( struct__ExifMnoteData.htmlExifMnoteData  *d, unsigned int i)
00350 {
00351         struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *n = ( struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *) d;
00352         
00353         if (!n) return NULL;
00354         if (i >= n-> struct__ExifMnoteDataOlympus.html#52713b8df646074f4ef3ed206f9bfdf4count ) return NULL;
00355         return mnote-olympus-tag_8c.html#8127c365ca03c71eac9af757e68a575fmnote_olympus_tag_get_title  (n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#b0cc8c0d3b18e39cf4c42ef3881645b8tag );
00356 }
00357 
00358 static const char *
exif-mnote-data-olympus_8c.html#d20e5efd2e38ef32ffbf1ed59301c4ec00359  exif-mnote-data-olympus_8c.html#d20e5efd2e38ef32ffbf1ed59301c4ecexif_mnote_data_olympus_get_description  ( struct__ExifMnoteData.htmlExifMnoteData  *d, unsigned int i)
00360 {
00361         struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *n = ( struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *) d;
00362         
00363         if (!n) return NULL;
00364         if (i >= n-> struct__ExifMnoteDataOlympus.html#52713b8df646074f4ef3ed206f9bfdf4count ) return NULL;
00365         return mnote-olympus-tag_8c.html#8127c365ca03c71eac9af757e68a575fmnote_olympus_tag_get_title  (n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#b0cc8c0d3b18e39cf4c42ef3881645b8tag );
00366 }
00367 
00368 static void exif-mnote-data-olympus_8c.html#a4b1f2f306f5cb10cd5282b5c9aa6aae00369  exif-mnote-data-olympus_8c.html#a4b1f2f306f5cb10cd5282b5c9aa6aaeexif_mnote_data_olympus_set_byte_order  ( struct__ExifMnoteData.htmlExifMnoteData  *d, exif-byte-order_8h.html#f966227d69ff74eea7ecd69ca645155bExifByteOrder  o)
00370 {
00371         exif-byte-order_8h.html#f966227d69ff74eea7ecd69ca645155bExifByteOrder  o_orig;
00372         struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *n = ( struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *) d;
00373         unsigned int i;
00374 
00375         if (!n) return;
00376 
00377         o_orig = n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder ;
00378         n-> struct__ExifMnoteDataOlympus.html#ce5ecdc145262d2f81fa0e2c30a31adborder  = o;
00379         for (i = 0; i < n-> struct__ExifMnoteDataOlympus.html#52713b8df646074f4ef3ed206f9bfdf4count ; i++) {
00380                 n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#af33b1b1fc726738ae27b949be8041e4order  = o;
00381                 exif-utils_8c.html#54ef3b86ffeb643e9c4434b85ccf2992exif_array_set_byte_order  (n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#a6c6942f8c365ddd5251b43a14471df8format , n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#faf1ec8526e7e59d3a1f7fe0fb51b470data ,
00382                                 n-> struct__ExifMnoteDataOlympus.html#865b848dcc10e08631ef396347323fd7entries [i]. struct__MnoteOlympusEntry.html#e728d4f0db6d1d00aa1d31426a3be051components , o_orig, o);
00383         }
00384 }
00385 
00386 static void exif-mnote-data-olympus_8c.html#11b2dd84a3a62db75052aeaafc4e9f7b00387  exif-mnote-data-olympus_8c.html#11b2dd84a3a62db75052aeaafc4e9f7bexif_mnote_data_olympus_set_offset  ( struct__ExifMnoteData.htmlExifMnoteData  *n, unsigned int o)
00388 {
00389         if (n) (( struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus  *) n)->offset = o;
00390 }
00391 
00392 struct__ExifMnoteData.htmlExifMnoteData  *
exif-mnote-data-olympus_8h.html#c80ce4aead4e8afd1814d51dbc2d184100393  exif-mnote-data-olympus_8c.html#5bc7c7fe506ea2d06188872d2e2ee716exif_mnote_data_olympus_new  ( struct__ExifMem.htmlExifMem  *mem)
00394 {
00395         struct__ExifMnoteData.htmlExifMnoteData  *d;
00396 
00397         if (!mem) return NULL;
00398         
00399         d = exif-mem_8c.html#e8c09cfbcb95e435c4c4b7ec3bbd79e4exif_mem_alloc  (mem, sizeof ( struct__ExifMnoteDataOlympus.htmlExifMnoteDataOlympus ));
00400         if (!d) return NULL;
00401 
00402         exif-mnote-data-priv_8h.html#06db5604f65a97b1c5ea3fcc4bfec7dcexif_mnote_data_construct  (d, mem);
00403 
00404         /* Set up function pointers */ 00405         d-> struct__ExifMnoteData.html#431955e099ce8f160de45644f2bddaebmethods . struct__ExifMnoteDataMethods.html#a63698879f7a67e6b17c112b1bd5bad8free             = exif-mnote-data-olympus_8c.html#4868c6e4138f9c8ad8ddae9cc268f8e7exif_mnote_data_olympus_free ;
00406         d-> struct__ExifMnoteData.html#431955e099ce8f160de45644f2bddaebmethods . struct__ExifMnoteDataMethods.html#2e6037a3070fa6b0f2a66b16c5ce70aeset_byte_order   = exif-mnote-data-olympus_8c.html#a4b1f2f306f5cb10cd5282b5c9aa6aaeexif_mnote_data_olympus_set_byte_order ;
00407         d-> struct__ExifMnoteData.html#431955e099ce8f160de45644f2bddaebmethods . struct__ExifMnoteDataMethods.html#bb617ca9aecebc6a4bdea49aec2bc8b0set_offset       = exif-mnote-data-olympus_8c.html#11b2dd84a3a62db75052aeaafc4e9f7bexif_mnote_data_olympus_set_offset ;
00408         d-> struct__ExifMnoteData.html#431955e099ce8f160de45644f2bddaebmethods . struct__ExifMnoteDataMethods.html#351860e435018eb6f20a1a80cc848058load             = exif-mnote-data-olympus_8c.html#51652cef97d613c60f506d939dad2958exif_mnote_data_olympus_load ;
00409         d-> struct__ExifMnoteData.html#431955e099ce8f160de45644f2bddaebmethods . struct__ExifMnoteDataMethods.html#885058f650d7e6dfbac29f391f1c3be1save             = exif-mnote-data-olympus_8c.html#96ff3434fcdfe32ec3fa865ba56035e8exif_mnote_data_olympus_save ;
00410         d-> struct__ExifMnoteData.html#431955e099ce8f160de45644f2bddaebmethods . struct__ExifMnoteDataMethods.html#aad86617351c2ee737b392f94040cccbcount            = exif-mnote-data-olympus_8c.html#1bfa54d5a44ce710589abed129b911d8exif_mnote_data_olympus_count ;
00411         d-> struct__ExifMnoteData.html#431955e099ce8f160de45644f2bddaebmethods . struct__ExifMnoteDataMethods.html#453d479929b42b3db130e4853ca1f0c5get_id           = exif-mnote-data-olympus_8c.html#c3e52fa6d3b1e2cf3c6a7c56ff0694c9exif_mnote_data_olympus_get_id ;
00412         d-> struct__ExifMnoteData.html#431955e099ce8f160de45644f2bddaebmethods . struct__ExifMnoteDataMethods.html#478e4e150437d70bdfdb6ceb274603ebget_name         = exif-mnote-data-olympus_8c.html#0f2f5f30e5f41ff48057894f32cd6db4exif_mnote_data_olympus_get_name ;
00413         d-> struct__ExifMnoteData.html#431955e099ce8f160de45644f2bddaebmethods . struct__ExifMnoteDataMethods.html#c14c8b9a7a9a282b94fc2c7476110d25get_title        = exif-mnote-data-olympus_8c.html#59e02c1592f8629e8c2d4a2ee835fc42exif_mnote_data_olympus_get_title ;
00414         d-> struct__ExifMnoteData.html#431955e099ce8f160de45644f2bddaebmethods . struct__ExifMnoteDataMethods.html#4ca7e0ab9aed5703a2038699e9bcc486get_description  = exif-mnote-data-olympus_8c.html#d20e5efd2e38ef32ffbf1ed59301c4ecexif_mnote_data_olympus_get_description ;
00415         d-> struct__ExifMnoteData.html#431955e099ce8f160de45644f2bddaebmethods . struct__ExifMnoteDataMethods.html#35e308b7ffbdc5dcd6681eab820ba444get_value        = exif-mnote-data-olympus_8c.html#b208837124e0e2627b4da08b0640a964exif_mnote_data_olympus_get_value ;
00416 
00417         return d;
00418 }
Generated on Sun Apr 23 02:19:19 2006 for EXIF library (libexif) Internals by 
http://www.doxygen.org/index.htmldoxygen  1.4.6 