37#define CF(format,target,v,maxlen) \
39 if (format != target) { \
40 snprintf (v, maxlen, \
41 _("Invalid format '%s', " \
43 exif_format_get_name (format), \
44 exif_format_get_name (target)); \
49#define CC(number,target,v,maxlen) \
51 if (number != target) { \
52 snprintf (v, maxlen, \
53 _("Invalid number of components (%i, " \
54 "expected %i)."), (int) number, (int) target); \
59#define CC2(number,t1,t2,v,maxlen) \
61 if ((number != t1) && (number != t2)) { \
62 snprintf (v, maxlen, \
63 _("Invalid number of components (%i, " \
64 "expected %i or %i)."), (int) number, \
65 (int) t1, (int) t2); \
77#ifndef NO_VERBOSE_TAG_DATA
80 {1,
N_(
"Night scene")},
82 {4,
N_(
"Multi-exposure")},
87 {2,
N_(
"Best")},{0,NULL}}},
96 {6,
N_(
"Red-eye reduction")},
103 {4,
N_(
"Fluorescent")},
129 {2,
N_(
"Black & white")},
134 {1,
N_(
"Night scene")},
136 {4,
N_(
"Multi-exposure")},
152 {8,
N_(
"2560x1920 or 2304x1728")},
158 {22,
N_(
"2304x1728 or 2592x1944")},
160 {25,
N_(
"2816x2212 or 2816x2112")},
165 { {0,
N_(
"Program")},
166 {2,
N_(
"Program AE")},
169 {6,
N_(
"Landscape")},
171 {9,
N_(
"Night scene")},
173 {12,
N_(
"Surf & snow")},
174 {13,
N_(
"Sunset or candlelight")},
177 {17,
N_(
"Fireworks")},
179 {19,
N_(
"Panorama")},
180 {30,
N_(
"Self portrait")},
181 {31,
N_(
"Illustrations")},
182 {33,
N_(
"Digital filter")},
185 {40,
N_(
"Green mode")},
186 {49,
N_(
"Light pet")},
187 {50,
N_(
"Dark pet")},
188 {51,
N_(
"Medium pet")},
189 {53,
N_(
"Underwater")},
190 {54,
N_(
"Candlelight")},
191 {55,
N_(
"Natural skin tone")},
192 {56,
N_(
"Synchro sound record")},
193 {58,
N_(
"Frame composite")},
196 { {0x0000,
N_(
"Auto, did not fire")},
198 {0x0003,
N_(
"Auto, did not fire, red-eye reduction")},
199 {0x0100,
N_(
"Auto, fired")},
201 {0x0103,
N_(
"Auto, fired, red-eye reduction")},
202 {0x0104,
N_(
"On, red-eye reduction")},
203 {0x0105,
N_(
"On, wireless")},
204 {0x0108,
N_(
"On, soft")},
205 {0x0109,
N_(
"On, slow-sync")},
206 {0x010a,
N_(
"On, slow-sync, red-eye reduction")},
207 {0x010b,
N_(
"On, trailing-curtain sync")},
214 {5,
N_(
"Pan focus")},
219 { {1,
N_(
"Upper-left")},
221 {3,
N_(
"Upper-right")},
225 {7,
N_(
"Mid-right")},
227 {9,
N_(
"Lower-left")},
229 {11,
N_(
"Lower-right")},
230 {0xfffe,
N_(
"Fixed center")},
231 {0xffff,
N_(
"Auto")},
234 { {0,
N_(
"Multiple")},
236 {2,
N_(
"Top-center")},
237 {3,
N_(
"Top-right")},
241 {7,
N_(
"Bottom-left")},
242 {8,
N_(
"Bottom-center")},
243 {9,
N_(
"Bottom-right")},
244 {0xffff,
N_(
"None")},
250 {3,
N_(
"Fluorescent")},
253 {6,
N_(
"Daylight fluorescent")},
254 {7,
N_(
"Day white fluorescent")},
255 {8,
N_(
"White fluorescent")},
258 {0xfffe,
N_(
"Unknown")},
259 {0xffff,
N_(
"User selected")},
277#ifndef NO_VERBOSE_TAG_DATA
279 { {0, 0,
"2304x1728"},
283 {34, 0,
"1536x1024"},
284 {36, 0,
N_(
"3008x2008 or 3040x2024")},
285 {37, 0,
"3008x2000"},
286 {35, 1,
"2400x1600"},
289 {34, 2,
"1536x1024"},
292 { {0, 0,
N_(
"Auto")},
293 {5, 0,
N_(
"Portrait")},
294 {53, 0,
N_(
"Underwater")},
295 {255, 0,
N_(
"Digital filter?")},
296 {5, 1,
N_(
"Portrait")},
297 {9, 1,
N_(
"Night scene")},
298 {13, 1,
N_(
"Candlelight")},
299 {15, 1,
N_(
"Macro")},
300 {53, 1,
N_(
"Underwater")},
301 {0, 2,
N_(
"Program AE")},
302 {5, 2,
N_(
"Portrait")},
303 {6, 2,
N_(
"Landscape")},
311 char *val,
unsigned int maxlen)
319 if (!entry)
return (NULL);
320 if (maxlen < 1)
return (NULL);
322 memset (val, 0, maxlen);
325 switch (entry->
tag) {
352 for (i = 0; (
items[i].tag &&
items[i].tag != entry->
tag); i++);
354 snprintf (val, maxlen,
355 _(
"Internal error (unknown value %hu)"), vs);
360 for (j = 0;
items[i].elem[j].string &&
361 (
items[i].elem[j].index < vs); j++);
363 snprintf (val, maxlen,
364 _(
"Internal error (unknown value %hu)"), vs);
367 strncpy (val,
_(
items[i].
elem[j].
string), maxlen);
378 snprintf (val, maxlen,
379 _(
"Internal error (unknown value %hu %hu)"), vs, vs2);
384 for (j = 0;
items2[i].elem[j].string && ((
items2[i].elem[j].index2 < vs2)
387 snprintf (val, maxlen,
388 _(
"Internal error (unknown value %hi %hi)"), vs, vs2);
391 strncpy (val,
_(
items2[i].
elem[j].
string), maxlen);
399 snprintf (val, maxlen,
"%lu", (
long unsigned) vl);
404 snprintf (val, maxlen,
_(
"%i bytes unknown data"),
411 strncpy (val, (
char*)entry->
data,
MIN(maxlen, entry->
size));
418 snprintf (val, maxlen,
"%hi:%02i:%02i", vs, entry->
data[2], entry->
data[3]);
423 snprintf (val, maxlen,
"%02i:%02i:%02i", entry->
data[0], entry->
data[1], entry->
data[2]);
428 strncpy (val, (
char *)entry->
data,
MIN(maxlen, entry->
size));
432 const unsigned char *data = entry->
data;
433 size_t k, len = strlen(val), sizeleft;
435 sizeleft = entry->
size;
440 snprintf (val+len, maxlen-len,
"%hu ", vs);
449 const unsigned char *data = entry->
data;
450 size_t k, len = strlen(val), sizeleft;
452 sizeleft = entry->
size;
457 snprintf (val+len, maxlen-len,
"%hi ", vss);
466 const unsigned char *data = entry->
data;
467 size_t k, len = strlen(val), sizeleft;
469 sizeleft = entry->
size;
474 snprintf (val+len, maxlen-len,
"%lu ", (
long unsigned) vl);
483 const unsigned char *data = entry->
data;
484 size_t k, len = strlen(val), sizeleft;
486 sizeleft = entry->
size;
491 snprintf (val+len, maxlen-len,
"%li ", (
long int) vsl);
500 snprintf (val, maxlen,
_(
"%i bytes unknown data"),
@ EXIF_BYTE_ORDER_MOTOROLA
Big-endian byte order.
ExifLong exif_get_long(const unsigned char *buf, ExifByteOrder order)
Retrieve an ExifLong value from memory.
ExifShort exif_get_short(const unsigned char *buf, ExifByteOrder order)
Retrieve an ExifShort value from memory.
ExifSLong exif_get_slong(const unsigned char *b, ExifByteOrder order)
Retrieve an ExifSLong value from memory.
ExifSShort exif_get_sshort(const unsigned char *buf, ExifByteOrder order)
Retrieve an ExifSShort value from memory.
EXIF data manipulation functions and types.
uint32_t ExifLong
EXIF Unsigned Long data type.
int32_t ExifSLong
EXIF Signed Long data type.
uint16_t ExifShort
EXIF Unsigned Short data type.
int16_t ExifSShort
EXIF Signed Short data type.
#define CC(number, target, v, maxlen)
char * mnote_pentax_entry_get_value(MnotePentaxEntry *entry, char *val, unsigned int maxlen)
static const struct @17 items2[]
static const struct @16 items[]
#define CF(format, target, v, maxlen)
#define CC2(number, t1, t2, v, maxlen)
enum _MnotePentaxTag MnotePentaxTag
@ MNOTE_PENTAX2_TAG_FLASH_MODE
@ MNOTE_PENTAX2_TAG_QUALITY
@ MNOTE_PENTAX_TAG_SHARPNESS
@ MNOTE_PENTAX2_TAG_AUTO_AFPOINT
@ MNOTE_PENTAX_TAG_TZ_DST
@ MNOTE_PENTAX_TAG_CONTRAST
@ MNOTE_PENTAX_TAG_QUALITY
@ MNOTE_PENTAX2_TAG_IMAGE_SIZE
@ MNOTE_PENTAX_TAG_SATURATION
@ MNOTE_PENTAX2_TAG_AFPOINT_SELECTED
@ MNOTE_PENTAX2_TAG_FOCUS_MODE
@ MNOTE_CASIO2_TAG_BESTSHOT_MODE
@ MNOTE_PENTAX_TAG_ISO_SPEED
@ MNOTE_PENTAX2_TAG_PICTURE_MODE
@ MNOTE_PENTAX_TAG_WHITE_BALANCE
@ MNOTE_PENTAX2_TAG_WHITE_BALANCE
@ MNOTE_PENTAX_TAG_PRINTIM
@ MNOTE_PENTAX_TAG_TZ_CITY