main.html
Main Page
|
classes.html
Alphabetical List
|
annotated.html
Data Structures
|
dirs.html
Directories
|
files.html
File List
|
functions.html
Data Fields
|
globals.html
Globals
dir_000000.html
libexif
&raquo
dir_000002.html
olympus
exif-mnote-data-olympus.c
exif-mnote-data-olympus_8c.html
Go 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.html
exif-mnote-data-olympus.h
"
00023
00024
#include <stdlib.h>
00025
#include <string.h>
00026
#include <stdio.h>
00027
00028
#include <
exif-utils_8h.html
libexif/exif-utils.h
>
00029
#include <
exif-data_8h.html
libexif/exif-data.h
>
00030
exif-mnote-data-olympus_8c.html#a0
00031
#define DEBUG
00032
00033
static
void
exif-mnote-data-olympus_8c.html#a1
00034
exif-mnote-data-olympus_8c.html#a1
exif_mnote_data_olympus_clear
(
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*n)
00035 {
00036
struct__ExifMnoteData.html
ExifMnoteData
*d = (
struct__ExifMnoteData.html
ExifMnoteData
*) n;
00037
unsigned
int
i;
00038
00039
if
(!n)
return
;
00040
00041
if
(n->
struct__ExifMnoteDataOlympus.html#o1
entries
) {
00042
for
(i = 0; i < n->count; i++)
00043
if
(n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o3
data
) {
00044
exif-mem_8c.html#a6
exif_mem_free
(d->
struct__ExifMnoteData.html#o3
mem
, n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o3
data
);
00045                                 n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o3
data
= NULL;
00046                         }
00047
exif-mem_8c.html#a6
exif_mem_free
(d->
struct__ExifMnoteData.html#o3
mem
, n->
struct__ExifMnoteDataOlympus.html#o1
entries
);
00048                 n->
struct__ExifMnoteDataOlympus.html#o1
entries
= NULL;
00049                 n->
struct__ExifMnoteDataOlympus.html#o2
count
= 0;
00050         }
00051 }
00052
00053
static
void
exif-mnote-data-olympus_8c.html#a2
00054
exif-mnote-data-olympus_8c.html#a2
exif_mnote_data_olympus_free
(
struct__ExifMnoteData.html
ExifMnoteData
*n)
00055 {
00056
if
(!n)
return
;
00057
00058
exif-mnote-data-olympus_8c.html#a1
exif_mnote_data_olympus_clear
((
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*) n);
00059 }
00060
00061
static
char
*
exif-mnote-data-olympus_8c.html#a3
00062
exif-mnote-data-olympus_8c.html#a3
exif_mnote_data_olympus_get_value
(
struct__ExifMnoteData.html
ExifMnoteData
*d,
unsigned
int
i,
char
*val,
unsigned
int
maxlen)
00063 {
00064
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*n = (
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*) d;
00065
00066
if
(!d || !val)
return
NULL;
00067
if
(i > n->
struct__ExifMnoteDataOlympus.html#o2
count
-1)
return
NULL;
00068
exif-log_8c.html#a12
exif_log
(d->
struct__ExifMnoteData.html#o2
log
,
exif-log_8h.html#a17a4
EXIF_LOG_CODE_DEBUG
,
"ExifMnoteDataOlympus"
,
00069
"Querying value for tag '%s'..."
,
00070
mnote-olympus-tag_8c.html#a5
mnote_olympus_tag_get_name
(n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o0
tag
));
00071
return
mnote-olympus-entry_8c.html#a9
mnote_olympus_entry_get_value
(&n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i], val, maxlen);
00072 }
00073
00074
00075
00076
00084
static
void
exif-mnote-data-olympus_8c.html#a4
00085
exif-mnote-data-olympus_8c.html#a4
exif_mnote_data_olympus_save
(
struct__ExifMnoteData.html
ExifMnoteData
*ne,
00086
unsigned
char
**buf,
unsigned
int
*buf_size)
00087 {
00088
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*n = (
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*) 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#o2
count
* 12;
00098         o2 += 2;
00099
switch
(n->
struct__ExifMnoteDataOlympus.html#o5
version
) {
00100
case
exif-mnote-data-olympus_8h.html#a5a1
olympus
:
00101                 *buf =
exif-mem_8c.html#a7
exif_mem_alloc
(ne->
struct__ExifMnoteData.html#o3
mem
, *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#o4
offset
;
00107
break
;
00108
case
exif-mnote-data-olympus_8h.html#a5a2
nikonV1
:
00109                 base =
mnote-olympus-tag_8h.html#a88a57
MNOTE_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#a5a3
nikonV2
:
00115                 *buf_size += 8;
00116                 *buf =
exif-mem_8c.html#a7
exif_mem_alloc
(ne->
struct__ExifMnoteData.html#o3
mem
, *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#o5
version
;
00122
00123                 *buf_size += 2;
00124
if
(n->
struct__ExifMnoteDataOlympus.html#o5
version
==
exif-mnote-data-olympus_8h.html#a5a3
nikonV2
) {
00125
exif-utils_8c.html#a4
exif_set_short
(*buf + 10, n->
struct__ExifMnoteDataOlympus.html#o3
order
, (
exif-utils_8h.html#a4
ExifShort
) (
00126                                 (n->
struct__ExifMnoteDataOlympus.html#o3
order
==
exif-byte-order_8h.html#a3a1
EXIF_BYTE_ORDER_INTEL
) ?
00127                                 (
'I'
<< 8) |
'I'
:
00128                                 (
'M'
<< 8) |
'M'
));
00129
exif-utils_8c.html#a4
exif_set_short
(*buf + 12, n->
struct__ExifMnoteDataOlympus.html#o3
order
, (
exif-utils_8h.html#a4
ExifShort
) 0x2A);
00130
exif-utils_8c.html#a8
exif_set_long
(*buf + 14, n->
struct__ExifMnoteDataOlympus.html#o3
order
, (
exif-utils_8h.html#a4
ExifShort
) 8);
00131                         o2 += 2 + 8;
00132                 }
00133                 datao = -10;
00134
break
;
00135
00136
default
:
00137
return
;
00138         }
00139
00140
exif-utils_8c.html#a4
exif_set_short
(*buf + o2, n->
struct__ExifMnoteDataOlympus.html#o3
order
, (
exif-utils_8h.html#a4
ExifShort
) n->
struct__ExifMnoteDataOlympus.html#o2
count
);
00141         o2 += 2;
00142
00143
/* Save each entry */
00144
for
(i = 0; i < n->count; i++) {
00145                 o = o2 + i * 12;
00146
exif-utils_8c.html#a4
exif_set_short
(*buf + o + 0, n->
struct__ExifMnoteDataOlympus.html#o3
order
,
00147                                 (
exif-utils_8h.html#a4
ExifShort
) (n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o0
tag
- base));
00148
exif-utils_8c.html#a4
exif_set_short
(*buf + o + 2, n->
struct__ExifMnoteDataOlympus.html#o3
order
,
00149                                 (
exif-utils_8h.html#a4
ExifShort
) n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o1
format
);
00150
exif-utils_8c.html#a8
exif_set_long
(*buf + o + 4, n->
struct__ExifMnoteDataOlympus.html#o3
order
,
00151                                 n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o2
components
);
00152                 o += 8;
00153                 s =
exif-format_8c.html#a5
exif_format_get_size
(n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o1
format
) *
00154                                                 n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o2
components
;
00155
if
(s > 4) {
00156                         doff = *buf_size;
00157                         *buf_size += s;
00158                         *buf =
exif-mem_8c.html#a8
exif_mem_realloc
(ne->
struct__ExifMnoteData.html#o3
mem
, *buf,
00159                                                  sizeof (
char
) * *buf_size);
00160
if
(!*buf)
return
;
00161
exif-utils_8c.html#a8
exif_set_long
(*buf + o, n->
struct__ExifMnoteDataOlympus.html#o3
order
, datao + doff);
00162                 }
else
00163                         doff = o;
00164
00165
/* Write the data. */
00166
if
(n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o3
data
) {
00167                         memcpy (*buf + doff, n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o3
data
, 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#a5
00176
exif-mnote-data-olympus_8c.html#a5
exif_mnote_data_olympus_load
(
struct__ExifMnoteData.html
ExifMnoteData
*en,
00177
const
unsigned
char
*buf,
unsigned
int
buf_size)
00178 {
00179
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*n = (
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*) en;
00180
exif-utils_8h.html#a4
ExifShort
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#o4
offset
;
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#o4
offset
< 22)
return
;
00204
if
(!memcmp (buf + o2,
"OLYMP"
, 5)) {
00205
exif-log_8c.html#a12
exif_log
(en->
struct__ExifMnoteData.html#o2
log
,
exif-log_8h.html#a17a4
EXIF_LOG_CODE_DEBUG
,
"ExifMnoteDataOlympus"
,
00206
"Parsing Olympus maker note..."
);
00207
00208
/* The number of entries is at position 8. */
00209                 n->
struct__ExifMnoteDataOlympus.html#o5
version
=
exif-mnote-data-olympus_8h.html#a5a1
olympus
;
00210                 o2 += 8;
00211
00212         }
else
if
(!memcmp (buf + o2,
"Nikon"
, 6)) {
00213                 o2 += 6;
00214
exif-log_8c.html#a12
exif_log
(en->
struct__ExifMnoteData.html#o2
log
,
exif-log_8h.html#a17a4
EXIF_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#o5
version
= buf[o2];
00222                 o2 += 1;
00223
00224
/* Skip an unknown byte (00 or 0A). */
00225                 o2 += 1;
00226
00227
switch
(n->
struct__ExifMnoteDataOlympus.html#o5
version
) {
00228
case
exif-mnote-data-olympus_8h.html#a5a2
nikonV1
:
00229
00230                         base =
mnote-olympus-tag_8h.html#a88a57
MNOTE_NIKON1_TAG_BASE
;
00231
break
;
00232
00233
case
exif-mnote-data-olympus_8h.html#a5a3
nikonV2
:
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#o3
order
=
exif-byte-order_8h.html#a3a1
EXIF_BYTE_ORDER_INTEL
;
00246
else
if
(!strncmp ((
char
*)&buf[o2],
"MM"
, 2))
00247                                 n->
struct__ExifMnoteDataOlympus.html#o3
order
=
exif-byte-order_8h.html#a3a0
EXIF_BYTE_ORDER_MOTOROLA
;
00248
else
{
00249
exif-log_8c.html#a12
exif_log
(en->
struct__ExifMnoteData.html#o2
log
,
exif-log_8h.html#a17a4
EXIF_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#a7
exif_get_long
(buf + o2, n->
struct__ExifMnoteDataOlympus.html#o3
order
);
00263
break
;
00264
00265
default
:
00266
exif-log_8c.html#a12
exif_log
(en->
struct__ExifMnoteData.html#o2
log
,
exif-log_8h.html#a17a4
EXIF_LOG_CODE_DEBUG
,
00267
"ExifMnoteDataOlympus"
,
"Unknown version "
00268
"number %i."
, n->
struct__ExifMnoteDataOlympus.html#o5
version
);
00269
return
;
00270                 }
00271         }
else
if
(!memcmp (buf + o2,
"\0\x1b"
, 2)) {
00272                 n->
struct__ExifMnoteDataOlympus.html#o5
version
=
exif-mnote-data-olympus_8h.html#a5a3
nikonV2
;
00273         }
else
{
00274
return
;
00275         }
00276
00277
/* Number of entries */
00278
if
(o2 >= buf_size)
return
;
00279         c =
exif-utils_8c.html#a2
exif_get_short
(buf + o2, n->
struct__ExifMnoteDataOlympus.html#o3
order
);
00280         o2 += 2;
00281
00282
/* Read the number of entries and remove old ones. */
00283
exif-mnote-data-olympus_8c.html#a1
exif_mnote_data_olympus_clear
(n);
00284
00285         n->
struct__ExifMnoteDataOlympus.html#o1
entries
=
exif-mem_8c.html#a7
exif_mem_alloc
(en->
struct__ExifMnoteData.html#o3
mem
, sizeof (
struct__MnoteOlympusEntry.html
MnoteOlympusEntry
) * c);
00286
if
(!n->
struct__ExifMnoteDataOlympus.html#o1
entries
)
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#o2
count
= i + 1;
00294             n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o0
tag
=
exif-utils_8c.html#a2
exif_get_short
(buf + o, n->
struct__ExifMnoteDataOlympus.html#o3
order
) + base;
00295             n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o1
format
=
exif-utils_8c.html#a2
exif_get_short
(buf + o + 2, n->
struct__ExifMnoteDataOlympus.html#o3
order
);
00296             n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o2
components
=
exif-utils_8c.html#a7
exif_get_long
(buf + o + 4, n->
struct__ExifMnoteDataOlympus.html#o3
order
);
00297             n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o5
order
= n->
struct__ExifMnoteDataOlympus.html#o3
order
;
00298
00299
exif-log_8c.html#a12
exif_log
(en->
struct__ExifMnoteData.html#o2
log
,
exif-log_8h.html#a17a4
EXIF_LOG_CODE_DEBUG
,
"ExifMnoteOlympus"
,
00300
"Loading entry 0x%x ('%s')..."
, n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o0
tag
,
00301
mnote-olympus-tag_8c.html#a5
mnote_olympus_tag_get_name
(n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o0
tag
));
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#a5
exif_format_get_size
(n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o1
format
) *
00308                                          n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o2
components
;
00309
if
(!s)
continue
;
00310             o += 8;
00311
if
(s > 4) o =
exif-utils_8c.html#a7
exif_get_long
(buf + o, n->
struct__ExifMnoteDataOlympus.html#o3
order
) + datao;
00312
if
(o + s > buf_size)
continue
;
00313
00314
/* Sanity check */
00315             n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o3
data
=
exif-mem_8c.html#a7
exif_mem_alloc
(en->
struct__ExifMnoteData.html#o3
mem
, s);
00316
if
(!n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o3
data
)
continue
;
00317             n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o4
size
= s;
00318             memcpy (n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o3
data
, buf + o, s);
00319         }
00320 }
00321
00322
static
unsigned
int
exif-mnote-data-olympus_8c.html#a6
00323
exif-mnote-data-olympus_8c.html#a6
exif_mnote_data_olympus_count
(
struct__ExifMnoteData.html
ExifMnoteData
*n)
00324 {
00325
return
n ? ((
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*) n)->count : 0;
00326 }
00327
00328
static
unsigned
int
exif-mnote-data-olympus_8c.html#a7
00329
exif-mnote-data-olympus_8c.html#a7
exif_mnote_data_olympus_get_id
(
struct__ExifMnoteData.html
ExifMnoteData
*d,
unsigned
int
n)
00330 {
00331
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*note = (
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*) d;
00332
00333
if
(!note)
return
0;
00334
if
(note->
struct__ExifMnoteDataOlympus.html#o2
count
<= n)
return
0;
00335
return
note->
struct__ExifMnoteDataOlympus.html#o1
entries
[n].
struct__MnoteOlympusEntry.html#o0
tag
;
00336 }
00337
00338
static
const
char
*
exif-mnote-data-olympus_8c.html#a8
00339
exif-mnote-data-olympus_8c.html#a8
exif_mnote_data_olympus_get_name
(
struct__ExifMnoteData.html
ExifMnoteData
*d,
unsigned
int
i)
00340 {
00341
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*n = (
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*) d;
00342
00343
if
(!n)
return
NULL;
00344
if
(i >= n->
struct__ExifMnoteDataOlympus.html#o2
count
)
return
NULL;
00345
return
mnote-olympus-tag_8c.html#a5
mnote_olympus_tag_get_name
(n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o0
tag
);
00346 }
00347
00348
static
const
char
*
exif-mnote-data-olympus_8c.html#a9
00349
exif-mnote-data-olympus_8c.html#a9
exif_mnote_data_olympus_get_title
(
struct__ExifMnoteData.html
ExifMnoteData
*d,
unsigned
int
i)
00350 {
00351
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*n = (
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*) d;
00352
00353
if
(!n)
return
NULL;
00354
if
(i >= n->
struct__ExifMnoteDataOlympus.html#o2
count
)
return
NULL;
00355
return
mnote-olympus-tag_8c.html#a6
mnote_olympus_tag_get_title
(n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o0
tag
);
00356 }
00357
00358
static
const
char
*
exif-mnote-data-olympus_8c.html#a10
00359
exif-mnote-data-olympus_8c.html#a10
exif_mnote_data_olympus_get_description
(
struct__ExifMnoteData.html
ExifMnoteData
*d,
unsigned
int
i)
00360 {
00361
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*n = (
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*) d;
00362
00363
if
(!n)
return
NULL;
00364
if
(i >= n->
struct__ExifMnoteDataOlympus.html#o2
count
)
return
NULL;
00365
return
mnote-olympus-tag_8c.html#a6
mnote_olympus_tag_get_title
(n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o0
tag
);
00366 }
00367
00368
static
void
exif-mnote-data-olympus_8c.html#a11
00369
exif-mnote-data-olympus_8c.html#a11
exif_mnote_data_olympus_set_byte_order
(
struct__ExifMnoteData.html
ExifMnoteData
*d,
exif-byte-order_8h.html#a3
ExifByteOrder
o)
00370 {
00371
exif-byte-order_8h.html#a3
ExifByteOrder
o_orig;
00372
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*n = (
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*) d;
00373
unsigned
int
i;
00374
00375
if
(!n)
return
;
00376
00377         o_orig = n->
struct__ExifMnoteDataOlympus.html#o3
order
;
00378         n->
struct__ExifMnoteDataOlympus.html#o3
order
= o;
00379
for
(i = 0; i < n->count; i++) {
00380                 n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o5
order
= o;
00381
exif-utils_8c.html#a0
exif_array_set_byte_order
(n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o1
format
, n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o3
data
,
00382                                 n->
struct__ExifMnoteDataOlympus.html#o1
entries
[i].
struct__MnoteOlympusEntry.html#o2
components
, o_orig, o);
00383         }
00384 }
00385
00386
static
void
exif-mnote-data-olympus_8c.html#a12
00387
exif-mnote-data-olympus_8c.html#a12
exif_mnote_data_olympus_set_offset
(
struct__ExifMnoteData.html
ExifMnoteData
*n,
unsigned
int
o)
00388 {
00389
if
(n) ((
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
*) n)->offset = o;
00390 }
00391
00392
struct__ExifMnoteData.html
ExifMnoteData
*
exif-mnote-data-olympus_8h.html#a4
00393
exif-mnote-data-olympus_8c.html#a13
exif_mnote_data_olympus_new
(
struct__ExifMem.html
ExifMem
*mem)
00394 {
00395
struct__ExifMnoteData.html
ExifMnoteData
*d;
00396
00397
if
(!mem)
return
NULL;
00398
00399         d =
exif-mem_8c.html#a7
exif_mem_alloc
(mem,
sizeof
(
struct__ExifMnoteDataOlympus.html
ExifMnoteDataOlympus
));
00400
if
(!d)
return
NULL;
00401
00402
exif-mnote-data-priv_8h.html#a2
exif_mnote_data_construct
(d, mem);
00403
00404
/* Set up function pointers */
00405         d->
struct__ExifMnoteData.html#o1
methods
.
struct__ExifMnoteDataMethods.html#o0
free
=
exif-mnote-data-olympus_8c.html#a2
exif_mnote_data_olympus_free
;
00406         d->
struct__ExifMnoteData.html#o1
methods
.
struct__ExifMnoteDataMethods.html#o4
set_byte_order
=
exif-mnote-data-olympus_8c.html#a11
exif_mnote_data_olympus_set_byte_order
;
00407         d->
struct__ExifMnoteData.html#o1
methods
.
struct__ExifMnoteDataMethods.html#o3
set_offset
=
exif-mnote-data-olympus_8c.html#a12
exif_mnote_data_olympus_set_offset
;
00408         d->
struct__ExifMnoteData.html#o1
methods
.
struct__ExifMnoteDataMethods.html#o2
load
=
exif-mnote-data-olympus_8c.html#a5
exif_mnote_data_olympus_load
;
00409         d->
struct__ExifMnoteData.html#o1
methods
.
struct__ExifMnoteDataMethods.html#o1
save
=
exif-mnote-data-olympus_8c.html#a4
exif_mnote_data_olympus_save
;
00410         d->
struct__ExifMnoteData.html#o1
methods
.
struct__ExifMnoteDataMethods.html#o5
count
=
exif-mnote-data-olympus_8c.html#a6
exif_mnote_data_olympus_count
;
00411         d->
struct__ExifMnoteData.html#o1
methods
.
struct__ExifMnoteDataMethods.html#o6
get_id
=
exif-mnote-data-olympus_8c.html#a7
exif_mnote_data_olympus_get_id
;
00412         d->
struct__ExifMnoteData.html#o1
methods
.
struct__ExifMnoteDataMethods.html#o7
get_name
=
exif-mnote-data-olympus_8c.html#a8
exif_mnote_data_olympus_get_name
;
00413         d->
struct__ExifMnoteData.html#o1
methods
.
struct__ExifMnoteDataMethods.html#o8
get_title
=
exif-mnote-data-olympus_8c.html#a9
exif_mnote_data_olympus_get_title
;
00414         d->
struct__ExifMnoteData.html#o1
methods
.
struct__ExifMnoteDataMethods.html#o9
get_description
=
exif-mnote-data-olympus_8c.html#a10
exif_mnote_data_olympus_get_description
;
00415         d->
struct__ExifMnoteData.html#o1
methods
.
struct__ExifMnoteDataMethods.html#o10
get_value
=
exif-mnote-data-olympus_8c.html#a3
exif_mnote_data_olympus_get_value
;
00416
00417
return
d;
00418 }
Generated on Fri Sep 9 16:28:11 2005 for EXIF library (libexif) Internals by
http://www.doxygen.org/index.html
doxygen
1.4.4
