52 |
52 |
|
53 |
53 |
//! Quality, tag 0x0001
|
54 |
54 |
extern const TagDetails panasonicQuality[] = {
|
|
55 |
{ 1, N_("TIFF") },
|
55 |
56 |
{ 2, N_("High") },
|
56 |
57 |
{ 3, N_("Normal") },
|
57 |
58 |
{ 6, N_("Very High") },
|
... | ... | |
69 |
70 |
{ 8, N_("Flash") },
|
70 |
71 |
{ 10, N_("Black and white") },
|
71 |
72 |
{ 11, N_("Manual") },
|
72 |
|
{ 11, N_("Manual") } // To silence compiler warning
|
|
73 |
{ 12, N_("Shade") },
|
|
74 |
{ 13, N_("Kelvin") }
|
73 |
75 |
};
|
74 |
76 |
|
75 |
77 |
//! FocusMode, tag 0x0007
|
... | ... | |
78 |
80 |
{ 2, N_("Manual") },
|
79 |
81 |
{ 4, N_("Auto, focus button") },
|
80 |
82 |
{ 5, N_("Auto, continuous") },
|
81 |
|
{ 5, N_("Auto, continuous") } // To silence compiler warning
|
|
83 |
{ 6, N_("AF-S") },
|
|
84 |
{ 7, N_("AF-C") },
|
|
85 |
{ 8, N_("AF-F") }
|
82 |
86 |
};
|
83 |
87 |
|
84 |
88 |
//! ImageStabilizer, tag 0x001a
|
85 |
89 |
extern const TagDetails panasonicImageStabilizer[] = {
|
86 |
90 |
{ 2, N_("On, Mode 1") },
|
87 |
91 |
{ 3, N_("Off") },
|
88 |
|
{ 4, N_("On, Mode 2") }
|
|
92 |
{ 4, N_("On, Mode 2") },
|
|
93 |
{ 5, N_("Panning") },
|
|
94 |
{ 6, N_("On, Mode 3") },
|
89 |
95 |
};
|
90 |
96 |
|
91 |
97 |
//! Macro, tag 0x001c
|
92 |
98 |
extern const TagDetails panasonicMacro[] = {
|
93 |
99 |
{ 1, N_("On") },
|
94 |
100 |
{ 2, N_("Off") },
|
95 |
|
{ 257, N_("Tele-macro") }
|
|
101 |
{ 257, N_("Tele-macro") },
|
|
102 |
{ 513, N_("Macro-zoom") }
|
96 |
103 |
};
|
97 |
104 |
|
98 |
105 |
//! ShootingMode, tag 0x001f and SceneMode, tag 0x8001
|
... | ... | |
113 |
120 |
{ 13, N_("Panning") },
|
114 |
121 |
{ 14, N_("Simple") },
|
115 |
122 |
{ 15, N_("Color effects") },
|
|
123 |
{ 16, N_("Self Portrait") },
|
|
124 |
{ 17, N_("Economy") },
|
116 |
125 |
{ 18, N_("Fireworks") },
|
117 |
126 |
{ 19, N_("Party") },
|
118 |
127 |
{ 20, N_("Snow") },
|
... | ... | |
130 |
139 |
{ 32, N_("Sunset") },
|
131 |
140 |
{ 33, N_("Pet") },
|
132 |
141 |
{ 34, N_("Intelligent ISO") },
|
|
142 |
{ 35, N_("Clipboard") },
|
133 |
143 |
{ 36, N_("High speed continuous shooting") },
|
134 |
144 |
{ 37, N_("Intelligent auto") },
|
|
145 |
{ 39, N_("Multi-aspect") },
|
|
146 |
{ 41, N_("Transform") },
|
|
147 |
{ 42, N_("Flash Burst") },
|
|
148 |
{ 43, N_("Pin Hole") },
|
|
149 |
{ 44, N_("Film Grain") },
|
|
150 |
{ 45, N_("My Color") },
|
|
151 |
{ 46, N_("Photo Frame") },
|
|
152 |
{ 51, N_("HDR") },
|
|
153 |
{ 55, N_("Handheld Night Shot") },
|
|
154 |
{ 57, N_("3D") },
|
|
155 |
{ 59, N_("Creative Control") },
|
|
156 |
{ 62, N_("Panorama") },
|
|
157 |
{ 63, N_("Glass Through") },
|
|
158 |
{ 64, N_("HDR") },
|
|
159 |
{ 66, N_("Digital Filter") },
|
|
160 |
{ 67, N_("Clear Portrait") },
|
|
161 |
{ 68, N_("Silky Skin") },
|
|
162 |
{ 69, N_("Backlit Softness") },
|
|
163 |
{ 70, N_("Clear in Backlight") },
|
|
164 |
{ 71, N_("Relaxing Tone") },
|
|
165 |
{ 72, N_("Sweet Child's Face") },
|
|
166 |
{ 73, N_("Distinct Scenery") },
|
|
167 |
{ 74, N_("Bright Blue Sky") },
|
|
168 |
{ 75, N_("Romantic Sunset Glow") },
|
|
169 |
{ 76, N_("Vivid Sunset Glow") },
|
|
170 |
{ 77, N_("Glistening Water") },
|
|
171 |
{ 78, N_("Clear Nightscape") },
|
|
172 |
{ 79, N_("Cool Night Sky") },
|
|
173 |
{ 80, N_("Warm Glowing Nightscape") },
|
|
174 |
{ 81, N_("Artistic Nightscape") },
|
|
175 |
{ 82, N_("Glittering Illuminations") },
|
|
176 |
{ 83, N_("Clear Night Portrait") },
|
|
177 |
{ 84, N_("Soft Image of a Flower") },
|
|
178 |
{ 85, N_("Appetizing Food") },
|
|
179 |
{ 86, N_("Cute Desert") },
|
|
180 |
{ 87, N_("Freeze Animal Motion") },
|
|
181 |
{ 88, N_("Clear Sports Shot") },
|
|
182 |
{ 89, N_("Monochrome") },
|
|
183 |
{ 90, N_("Creative Control") }
|
135 |
184 |
};
|
136 |
185 |
|
137 |
186 |
//! Audio, tag 0x0020
|
138 |
187 |
extern const TagDetails panasonicAudio[] = {
|
139 |
|
{ 1, N_("Yes") },
|
140 |
|
{ 2, N_("No") }
|
|
188 |
{ 1, N_("Yes") },
|
|
189 |
{ 2, N_("No") },
|
|
190 |
{ 3, N_("Stereo") }
|
141 |
191 |
};
|
142 |
192 |
|
143 |
193 |
//! ColorEffect, tag 0x0028
|
... | ... | |
146 |
196 |
{ 2, N_("Warm") },
|
147 |
197 |
{ 3, N_("Cool") },
|
148 |
198 |
{ 4, N_("Black and white") },
|
149 |
|
{ 5, N_("Sepia") }
|
|
199 |
{ 5, N_("Sepia") },
|
|
200 |
{ 6, N_("Happy") }
|
150 |
201 |
};
|
151 |
202 |
|
152 |
203 |
//! BustMode, tag 0x002a
|
... | ... | |
180 |
231 |
|
181 |
232 |
//! SelfTimer, tag 0x002e
|
182 |
233 |
extern const TagDetails panasonicSelfTimer[] = {
|
183 |
|
{ 1, N_("Off") },
|
184 |
|
{ 2, N_("10s") },
|
185 |
|
{ 3, N_("2s") }
|
|
234 |
{ 1, N_("Off") },
|
|
235 |
{ 2, N_("10 s") },
|
|
236 |
{ 3, N_("2 s") },
|
|
237 |
{ 4, N_("10 s / 3 pictures") }
|
186 |
238 |
};
|
187 |
239 |
|
188 |
240 |
//! Rotation, tag 0x0030
|
189 |
241 |
extern const TagDetails panasonicRotation[] = {
|
190 |
242 |
{ 1, N_("Horizontal (normal)") },
|
|
243 |
{ 3, N_("Rotate 180") },
|
191 |
244 |
{ 6, N_("Rotate 90 CW") },
|
192 |
245 |
{ 8, N_("Rotate 270 CW") }
|
193 |
246 |
};
|
194 |
247 |
|
|
248 |
//! AFAssistLamp, tag 0x0031
|
|
249 |
extern const TagDetails panasonicAFAssistLamp[] = {
|
|
250 |
{ 1, N_("Fired") },
|
|
251 |
{ 2, N_("Enabled but Not Used") },
|
|
252 |
{ 3, N_("Disabled but Required") },
|
|
253 |
{ 4, N_("Disabled and Not Required") }
|
|
254 |
};
|
|
255 |
|
195 |
256 |
//! ColorMode, tag 0x0032
|
196 |
257 |
extern const TagDetails panasonicColorMode[] = {
|
197 |
258 |
{ 0, N_("Normal") },
|
... | ... | |
220 |
281 |
{ 2, N_("Destination") }
|
221 |
282 |
};
|
222 |
283 |
|
|
284 |
//! TextStamp, tag 0x003b, 0x003e, 000x8008 and 0x8009
|
|
285 |
extern const TagDetails panasonicTextStamp[] = {
|
|
286 |
{ 1, N_("Off") },
|
|
287 |
{ 2, N_("On") }
|
|
288 |
};
|
|
289 |
|
223 |
290 |
//! FilmMode, tag 0x0042
|
224 |
291 |
extern const TagDetails panasonicFilmMode[] = {
|
225 |
|
{ 1, N_("Standard (color)") },
|
226 |
|
{ 2, N_("Dynamic (color)") },
|
227 |
|
{ 3, N_("Nature (color)") },
|
228 |
|
{ 4, N_("Smooth (color)") },
|
229 |
|
{ 5, N_("Standard (B&W)") },
|
230 |
|
{ 6, N_("Dynamic (B&W)") },
|
231 |
|
{ 7, N_("Smooth (B&W)") }
|
|
292 |
{ 1, N_("Standard (color)") },
|
|
293 |
{ 2, N_("Dynamic (color)") },
|
|
294 |
{ 3, N_("Nature (color)") },
|
|
295 |
{ 4, N_("Smooth (color)") },
|
|
296 |
{ 5, N_("Standard (B&W)") },
|
|
297 |
{ 6, N_("Dynamic (B&W)") },
|
|
298 |
{ 7, N_("Smooth (B&W)") },
|
|
299 |
{ 10, N_("Nostalgic") },
|
|
300 |
{ 11, N_("Vibrant") }
|
232 |
301 |
};
|
233 |
302 |
|
|
303 |
//! Flash curtain, tag 0x0048
|
|
304 |
extern const TagDetails panasonicFlashCurtain[] = {
|
|
305 |
{ 0, N_("n/a") },
|
|
306 |
{ 1, N_("1st") },
|
|
307 |
{ 2, N_("2nd") }
|
|
308 |
};
|
|
309 |
|
|
310 |
//! Intelligent exposure, tag 0x005d
|
|
311 |
extern const TagDetails panasonicIntelligentExposure[] = {
|
|
312 |
{ 0, N_("Off") },
|
|
313 |
{ 1, N_("Low") },
|
|
314 |
{ 2, N_("Standard") },
|
|
315 |
{ 3, N_("High") }
|
|
316 |
};
|
|
317 |
|
|
318 |
//! Flash warning, tag 0x0062
|
|
319 |
extern const TagDetails panasonicFlashWarning[] = {
|
|
320 |
{ 0, N_("No") },
|
|
321 |
{ 1, N_("Yes (flash required but disabled") }
|
|
322 |
};
|
|
323 |
|
|
324 |
//! Intelligent resolution, tag 0x0070
|
|
325 |
extern const TagDetails panasonicIntelligentResolution[] = {
|
|
326 |
{ 0, N_("Off") },
|
|
327 |
{ 1, N_("Low") },
|
|
328 |
{ 2, N_("Standard") },
|
|
329 |
{ 3, N_("High") },
|
|
330 |
{ 4, N_("Extended") }
|
|
331 |
};
|
|
332 |
|
|
333 |
//! Intelligent D-Range, tag 0x0079
|
|
334 |
extern const TagDetails panasonicIntelligentDRange[] = {
|
|
335 |
{ 0, N_("Off") },
|
|
336 |
{ 1, N_("Low") },
|
|
337 |
{ 2, N_("Standard") },
|
|
338 |
{ 3, N_("High") }
|
|
339 |
};
|
|
340 |
|
|
341 |
//! Clear Retouch, tag 0x007c
|
|
342 |
extern const TagDetails panasonicClearRetouch[] = {
|
|
343 |
{ 0, N_("Off") },
|
|
344 |
{ 1, N_("On") }
|
|
345 |
};
|
|
346 |
|
|
347 |
//! Photo Style, tag 0x0089
|
|
348 |
extern const TagDetails panasonicPhotoStyle[] = {
|
|
349 |
{ 0, N_("NoAuto") },
|
|
350 |
{ 1, N_("Standard or Custom") },
|
|
351 |
{ 2, N_("Vivid") },
|
|
352 |
{ 3, N_("Natural") },
|
|
353 |
{ 4, N_("Monochrome") },
|
|
354 |
{ 5, N_("Scenery") },
|
|
355 |
{ 6, N_("Portrait") }
|
|
356 |
};
|
|
357 |
|
|
358 |
//! Timer recording, tag 0x0096
|
|
359 |
extern const TagDetails panasonicTimerRecording[] = {
|
|
360 |
{ 0, N_("Off") },
|
|
361 |
{ 1, N_("Time Lapse") },
|
|
362 |
{ 2, N_("Stop-Motion Animation") }
|
|
363 |
};
|
|
364 |
|
|
365 |
//! HDR, tag 0x009e
|
|
366 |
extern const TagDetails panasonicHDR[] = {
|
|
367 |
{ 0, N_("Off") },
|
|
368 |
{ 100, N_("1 EV") },
|
|
369 |
{ 200, N_("2 EV") },
|
|
370 |
{ 300, N_("3 EV") },
|
|
371 |
{ 32868, N_("1 EV (Auto)") },
|
|
372 |
{ 32968, N_("2 EV (Auto)") },
|
|
373 |
{ 33068, N_("3 EV (Auto)") }
|
|
374 |
};
|
|
375 |
|
|
376 |
//! Shutter Type, tag 0x009f
|
|
377 |
extern const TagDetails panasonicShutterType[] = {
|
|
378 |
{ 0, N_("Mechanical") },
|
|
379 |
{ 1, N_("Electronic") },
|
|
380 |
{ 2, N_("Hybrid") }
|
|
381 |
};
|
|
382 |
|
|
383 |
//! Touch AE, tag 0x00ab
|
|
384 |
extern const TagDetails panasonicTouchAE[] = {
|
|
385 |
{ 0, N_("Off") },
|
|
386 |
{ 1, N_("On") }
|
|
387 |
};
|
|
388 |
|
|
389 |
//! Flash Fired, tag 0x8007
|
|
390 |
extern const TagDetails panasonicFlashFired[] = {
|
|
391 |
{ 1, N_("No") },
|
|
392 |
{ 2, N_("Yes") }
|
|
393 |
};
|
|
394 |
|
234 |
395 |
// Panasonic MakerNote Tag Info
|
235 |
396 |
const TagInfo PanasonicMakerNote::tagInfo_[] = {
|
236 |
397 |
TagInfo(0x0001, "Quality", N_("Quality"), N_("Image Quality"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicQuality)),
|
... | ... | |
247 |
408 |
TagInfo(0x0022, "0x0022", "0x0022", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
248 |
409 |
TagInfo(0x0023, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance adjustment"), panasonicId, makerTags, signedShort, -1, print0x0023),
|
249 |
410 |
TagInfo(0x0024, "FlashBias", N_("FlashBias"), N_("Flash bias"), panasonicId, makerTags, signedShort, -1, printValue),
|
250 |
|
TagInfo(0x0025, "InternalSerialNumber", N_("Internal Serial Number"), N_("This number is unique, and contains the date of manufacture, but is not the same as the number printed on the camera body."), panasonicId, makerTags, undefined, -1, printValue),
|
|
411 |
TagInfo(0x0025, "InternalSerialNumber", N_("Internal Serial Number"), N_("This number is unique, and contains the date of manufacture, but is not the same as the number printed on the camera body."), panasonicId, makerTags, undefined, -1, printPanasonicText),
|
251 |
412 |
TagInfo(0x0026, "ExifVersion", "Exif Version", N_("Exif version"), panasonicId, makerTags, undefined, -1, printExifVersion),
|
252 |
413 |
TagInfo(0x0027, "0x0027", "0x0027", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
253 |
414 |
TagInfo(0x0028, "ColorEffect", N_("Color Effect"), N_("Color effect"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicColorEffect)),
|
254 |
|
TagInfo(0x0029, "TimeSincePowerOn", "Time since Power On", N_("Time in 1/100 s from when the camera was powered on to when the image is written to memory card"), panasonicId, makerTags, unsignedLong, -1, printValue),
|
|
415 |
TagInfo(0x0029, "TimeSincePowerOn", "Time since Power On", N_("Time in 1/100 s from when the camera was powered on to when the image is written to memory card"), panasonicId, makerTags, unsignedLong, -1, print0x0029),
|
255 |
416 |
TagInfo(0x002a, "BurstMode", N_("Burst Mode"), N_("Burst mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicBurstMode)),
|
256 |
417 |
TagInfo(0x002b, "SequenceNumber", N_("Sequence Number"), N_("Sequence number"), panasonicId, makerTags, unsignedLong, -1, printValue),
|
257 |
418 |
TagInfo(0x002c, "Contrast", N_("Contrast"), N_("Contrast setting"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicContrast)),
|
... | ... | |
259 |
420 |
TagInfo(0x002e, "SelfTimer", N_("Self Timer"), N_("Self timer"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicSelfTimer)),
|
260 |
421 |
TagInfo(0x002f, "0x002f", "0x002f", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
261 |
422 |
TagInfo(0x0030, "Rotation", N_("Rotation"), N_("Rotation"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicRotation)),
|
262 |
|
TagInfo(0x0031, "0x0031", "0x0031", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
|
423 |
TagInfo(0x0031, "AFAssistLamp", N_("AF Assist Lamp"), N_("AF Assist Lamp"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicAFAssistLamp)),
|
263 |
424 |
TagInfo(0x0032, "ColorMode", N_("Color Mode"), N_("Color mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicColorMode)),
|
264 |
|
TagInfo(0x0033, "BabyAge", N_("Baby Age"), N_("Baby (or pet) age"), panasonicId, makerTags, asciiString, -1, printValue),
|
|
425 |
TagInfo(0x0033, "BabyAge2", N_("Baby Age"), N_("Baby (or pet) age"), panasonicId, makerTags, asciiString, -1, print0x0033),
|
265 |
426 |
TagInfo(0x0034, "OpticalZoomMode", N_("Optical Zoom Mode"), N_("Optical zoom mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicOpticalZoomMode)),
|
266 |
427 |
TagInfo(0x0035, "ConversionLens", N_("Conversion Lens"), N_("Conversion lens"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicConversionLens)),
|
267 |
|
TagInfo(0x0036, "TravelDay", N_("Travel Day"), N_("Travel day"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
|
428 |
TagInfo(0x0036, "TravelDay", N_("Travel Day"), N_("Travel day"), panasonicId, makerTags, unsignedShort, -1, print0x0036),
|
268 |
429 |
TagInfo(0x0039, "Contrast", N_("Contrast"), N_("Contrast"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
269 |
430 |
TagInfo(0x003a, "WorldTimeLocation", N_("World Time Location"), N_("World time location"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicWorldTimeLocation)),
|
270 |
|
TagInfo(0x003c, "ProgramISO", N_("Program ISO"), N_("Program ISO"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
|
431 |
TagInfo(0x003b, "TextStamp", N_("Text Stamp"), N_("Text Stamp"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)),
|
|
432 |
TagInfo(0x003c, "ProgramISO", N_("Program ISO"), N_("Program ISO"), panasonicId, makerTags, unsignedShort, -1, print0x003c),
|
|
433 |
TagInfo(0x003d, "AdvancedSceneType", N_("Advanced Scene Type"), N_("Advanced Scene Type"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
|
434 |
TagInfo(0x003e, "TextStamp2", N_("Text Stamp"), N_("Text Stamp"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)),
|
|
435 |
TagInfo(0x003f, "FacesDetected", N_("Faces detected"), N_("Faces detected"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
271 |
436 |
TagInfo(0x0040, "Saturation", N_("Saturation"), N_("Saturation"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
272 |
437 |
TagInfo(0x0041, "Sharpness", N_("Sharpness"), N_("Sharpness"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
273 |
438 |
TagInfo(0x0042, "FilmMode", N_("Film Mode"), N_("Film mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFilmMode)),
|
|
439 |
TagInfo(0x0044, "ColorTempKelvin", N_("Color Temp Kelvin"), N_("Color Temperatur in Kelvin"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
274 |
440 |
TagInfo(0x0046, "WBAdjustAB", N_("WB Adjust AB"), N_("WB adjust AB. Positive is a shift toward blue."), panasonicId, makerTags, unsignedShort, -1, printValue),
|
275 |
441 |
TagInfo(0x0047, "WBAdjustGM", N_("WB Adjust GM"), N_("WBAdjustGM. Positive is a shift toward green."), panasonicId, makerTags, unsignedShort, -1, printValue),
|
|
442 |
TagInfo(0x0048, "FlashCurtain", N_("Flash Curtain"), N_("Flash Curtain"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashCurtain)),
|
|
443 |
TagInfo(0x004b, "ImageWidth", N_("Image width"), N_("Image width"), panasonicId, makerTags, unsignedLong, -1, printValue),
|
|
444 |
TagInfo(0x004c, "ImageHeight", N_("Image height"), N_("Image height"), panasonicId, makerTags, unsignedLong, -1, printValue),
|
|
445 |
TagInfo(0x004d, "AFPointPosition", N_("AF Point Position"), N_("AF Point Position"), panasonicId, makerTags, unsignedRational, -1, printValue),
|
|
446 |
TagInfo(0x004e, "FaceDetInfo", N_("Face detection info"), N_("Face detection info"), panasonicId, makerTags, undefined, -1, printValue),
|
276 |
447 |
TagInfo(0x0051, "LensType", N_("Lens Type"), N_("Lens type"), panasonicId, makerTags, asciiString, -1, printValue),
|
277 |
448 |
TagInfo(0x0052, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), panasonicId, makerTags, asciiString, -1, printValue),
|
278 |
449 |
TagInfo(0x0053, "AccessoryType", N_("Accessory Type"), N_("Accessory type"), panasonicId, makerTags, asciiString, -1, printValue),
|
|
450 |
TagInfo(0x0059, "Transform", N_("Transform"), N_("Transform"), panasonicId, makerTags, undefined, -1, printValue),
|
|
451 |
TagInfo(0x005d, "IntelligentExposure", N_("Intelligent Exposure"), N_("Intelligent Exposure"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentExposure)),
|
|
452 |
TagInfo(0x0061, "FaceRecInfo", N_("Face recognation info"), N_("Face recognation info"), panasonicId, makerTags, undefined, -1, printValue),
|
|
453 |
TagInfo(0x0062, "FlashWarning", N_("Flash Warning"), N_("Flash warning"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashWarning)),
|
|
454 |
TagInfo(0x0065, "Title", N_("Title"), N_("Title"), panasonicId, makerTags, undefined, -1, printPanasonicText),
|
|
455 |
TagInfo(0x0066, "BabyName", N_("Baby Name"), N_("Baby name (or pet name)"), panasonicId, makerTags, undefined, -1, printPanasonicText),
|
|
456 |
TagInfo(0x0067, "Location", N_("Location"), N_("Location"), panasonicId, makerTags, undefined, -1, printPanasonicText),
|
|
457 |
TagInfo(0x0069, "Country", N_("Country"), N_("Country"), panasonicId, makerTags, undefined, -1, printPanasonicText),
|
|
458 |
TagInfo(0x006b, "State", N_("State"), N_("State"), panasonicId, makerTags, undefined, -1, printPanasonicText),
|
|
459 |
TagInfo(0x006d, "City", N_("City"), N_("City"), panasonicId, makerTags, undefined, -1, printPanasonicText),
|
|
460 |
TagInfo(0x006f, "Landmark", N_("Landmark"), N_("Landmark"), panasonicId, makerTags, undefined, -1, printPanasonicText),
|
|
461 |
TagInfo(0x0070, "IntelligentResolution", N_("Intelligent resolution"), N_("Intelligent resolution"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicIntelligentResolution)),
|
|
462 |
TagInfo(0x0079, "IntelligentDRange", N_("Intelligent Dynamic Range"), N_("Intelligent Dynamic Range"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentDRange)),
|
|
463 |
TagInfo(0x007c, "ClearRetouch", N_("Clear Retouch"), N_("Clear Retouch"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicClearRetouch)),
|
|
464 |
TagInfo(0x0086, "ManometerPressure", N_("Manometer Pressure"), N_("Manometer pressure"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
|
465 |
TagInfo(0x0089, "PhotoStyle", N_("Photo style"), N_("Photo style"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicPhotoStyle)),
|
|
466 |
TagInfo(0x008c, "AccelerometerZ", N_("Accelerometer Z"), N_("positive is acceleration upwards"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer),
|
|
467 |
TagInfo(0x008d, "AccelerometerX", N_("Accelerometer X"), N_("positive is acceleration to the left"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer),
|
|
468 |
TagInfo(0x008e, "AccelerometerY", N_("Accelerometer Y"), N_("positive is acceleration backwards"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer),
|
|
469 |
TagInfo(0x0090, "RollAngle", N_("Roll Angle"), N_("degress of clockwise camera rotation"), panasonicId, makerTags, unsignedShort, -1, printRollAngle),
|
|
470 |
TagInfo(0x0091, "PitchAngle", N_("Pitch Angle"), N_("degress of upwards camera tilt"), panasonicId, makerTags, unsignedShort, -1, printPitchAngle),
|
|
471 |
TagInfo(0x0096, "TimerRecording", N_("Timer Recording"), N_("Timer Recording"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicTimerRecording)),
|
|
472 |
TagInfo(0x009e, "HDR", N_("HDR"), N_("HDR"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicHDR)),
|
|
473 |
TagInfo(0x009f, "ShutterType", N_("Shutter Type"), N_("Shutter Type"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShutterType)),
|
|
474 |
TagInfo(0x00a3, "ClearRetouchValue", N_("Clear Retouch Value"), N_("Clear Retouch Value"), panasonicId, makerTags, unsignedRational, -1, printValue),
|
|
475 |
TagInfo(0x00ab, "TouchAE", N_("TouchAE"), N_("TouchAE"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTouchAE)),
|
279 |
476 |
TagInfo(0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), panasonicId, makerTags, undefined, -1, printValue),
|
280 |
477 |
TagInfo(0x4449, "0x4449", "0x4449", N_("Unknown"), panasonicId, makerTags, undefined, -1, printValue),
|
281 |
478 |
TagInfo(0x8000, "MakerNoteVersion", N_("MakerNote Version"), N_("MakerNote version"), panasonicId, makerTags, undefined, -1, printExifVersion),
|
... | ... | |
283 |
480 |
TagInfo(0x8004, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
284 |
481 |
TagInfo(0x8005, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
285 |
482 |
TagInfo(0x8006, "WBBlueLevel", N_("WB Blue Level"), N_("WB blue level"), panasonicId, makerTags, unsignedShort, -1, printValue),
|
286 |
|
TagInfo(0x8010, "BabyAge", N_("Baby Age"), N_("Baby (or pet) age"), panasonicId, makerTags, asciiString, -1, printValue),
|
|
483 |
TagInfo(0x8007, "FlashFired", N_("Flash Fired"), N_("Flash Fired"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashFired)),
|
|
484 |
TagInfo(0x8008, "TextStamp3", N_("Text Stamp"), N_("Text Stamp"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)),
|
|
485 |
TagInfo(0x8009, "TextStamp4", N_("Text Stamp"), N_("Text Stamp"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)),
|
|
486 |
TagInfo(0x8010, "BabyAge", N_("Baby Age"), N_("Baby (or pet) age"), panasonicId, makerTags, asciiString, -1, print0x0033),
|
|
487 |
TagInfo(0x8012, "Transform2", N_("Transform"), N_("Transform"), panasonicId, makerTags, undefined, -1, printValue),
|
287 |
488 |
// End of list marker
|
288 |
489 |
TagInfo(0xffff, "(UnknownPanasonicMakerNoteTag)", "(UnknownPanasonicMakerNoteTag)", N_("Unknown PanasonicMakerNote tag"), panasonicId, makerTags, asciiString, -1, printValue)
|
289 |
490 |
};
|
... | ... | |
293 |
494 |
return tagInfo_;
|
294 |
495 |
}
|
295 |
496 |
|
|
497 |
// tag Focus Mode
|
296 |
498 |
std::ostream& PanasonicMakerNote::print0x000f(std::ostream& os,
|
297 |
499 |
const Value& value,
|
298 |
500 |
const ExifData*)
|
... | ... | |
302 |
504 |
}
|
303 |
505 |
long l0 = value.toLong(0);
|
304 |
506 |
long l1 = value.toLong(1);
|
305 |
|
if (l0 == 0 && l1 == 1) os << _("Spot mode on");
|
306 |
|
else if (l0 == 0 && l1 == 16) os << _("Spot mode off or 3-area (high speed)");
|
307 |
|
else if (l0 == 1 && l1 == 0) os << _("Spot focussing");
|
308 |
|
else if (l0 == 1 && l1 == 1) os << _("5-area");
|
309 |
|
else if (l0 == 16 && l1 == 0) os << _("1-area");
|
310 |
|
else if (l0 == 16 && l1 == 16) os << _("1-area (high speed)");
|
311 |
|
else if (l0 == 32 && l1 == 0) os << _("3-area (auto)");
|
312 |
|
else if (l0 == 32 && l1 == 1) os << _("3-area (left)");
|
313 |
|
else if (l0 == 32 && l1 == 2) os << _("3-area (center)");
|
314 |
|
else if (l0 == 32 && l1 == 3) os << _("3-area (right)");
|
|
507 |
if (l0 == 0 && l1 == 1) os << _("Spot mode on or 9 area");
|
|
508 |
else if (l0 == 0 && l1 == 16) os << _("Spot mode off or 3-area (high speed)");
|
|
509 |
else if (l0 == 0 && l1 == 23) os << _("23-area");
|
|
510 |
else if (l0 == 1 && l1 == 0) os << _("Spot focussing");
|
|
511 |
else if (l0 == 1 && l1 == 1) os << _("5-area");
|
|
512 |
else if (l0 == 16 && l1 == 0) os << _("1-area");
|
|
513 |
else if (l0 == 16 && l1 == 16) os << _("1-area (high speed)");
|
|
514 |
else if (l0 == 32 && l1 == 0) os << _("3-area (auto)");
|
|
515 |
else if (l0 == 32 && l1 == 1) os << _("3-area (left)");
|
|
516 |
else if (l0 == 32 && l1 == 2) os << _("3-area (center)");
|
|
517 |
else if (l0 == 32 && l1 == 3) os << _("3-area (right)");
|
|
518 |
else if (l0 == 64 && l1 == 0) os << _("Face Detect");
|
|
519 |
else if (l0 == 128 && l1 == 0) os << _("Spot Focusing 2");
|
315 |
520 |
else os << value;
|
316 |
521 |
return os;
|
317 |
522 |
} // PanasonicMakerNote::print0x000f
|
318 |
523 |
|
|
524 |
// tag White balance bias
|
319 |
525 |
std::ostream& PanasonicMakerNote::print0x0023(std::ostream& os,
|
320 |
526 |
const Value& value,
|
321 |
527 |
const ExifData*)
|
... | ... | |
330 |
536 |
|
331 |
537 |
} // PanasonicMakerNote::print0x0023
|
332 |
538 |
|
|
539 |
// Time since power on
|
|
540 |
std::ostream& PanasonicMakerNote::print0x0029(std::ostream& os,
|
|
541 |
const Value& value,
|
|
542 |
const ExifData*)
|
|
543 |
{
|
|
544 |
std::ostringstream oss;
|
|
545 |
oss.copyfmt(os);
|
|
546 |
long time=value.toLong();
|
|
547 |
os << std::setw(2) << std::setfill('0') << time / 360000 << ":"
|
|
548 |
<< std::setw(2) << std::setfill('0') << (time % 360000) / 6000 << ":"
|
|
549 |
<< std::setw(2) << std::setfill('0') << (time % 6000) / 100 << "."
|
|
550 |
<< std::setw(2) << std::setfill('0') << time % 100;
|
|
551 |
os.copyfmt(oss);
|
|
552 |
|
|
553 |
return os;
|
|
554 |
|
|
555 |
} // PanasonicMakerNote::print0x0029
|
|
556 |
|
|
557 |
// bage age
|
|
558 |
std::ostream& PanasonicMakerNote::print0x0033(std::ostream& os,
|
|
559 |
const Value& value,
|
|
560 |
const ExifData*)
|
|
561 |
{
|
|
562 |
if(value.toString()=="9999:99:99 00:00:00")
|
|
563 |
{
|
|
564 |
os << N_("not set");
|
|
565 |
}
|
|
566 |
else
|
|
567 |
{
|
|
568 |
os << value;
|
|
569 |
};
|
|
570 |
return os;
|
|
571 |
} // PanasonicMakerNote::print0x0033
|
|
572 |
|
|
573 |
// Travel days
|
|
574 |
std::ostream& PanasonicMakerNote::print0x0036(std::ostream& os,
|
|
575 |
const Value& value,
|
|
576 |
const ExifData*)
|
|
577 |
{
|
|
578 |
if(value.toLong()==65535)
|
|
579 |
{
|
|
580 |
os << N_("not set");
|
|
581 |
}
|
|
582 |
else
|
|
583 |
{
|
|
584 |
os << value;
|
|
585 |
};
|
|
586 |
return os;
|
|
587 |
} // PanasonicMakerNote::print0x0036
|
|
588 |
|
|
589 |
// Program ISO
|
|
590 |
std::ostream& PanasonicMakerNote::print0x003c(std::ostream& os,
|
|
591 |
const Value& value,
|
|
592 |
const ExifData*)
|
|
593 |
{
|
|
594 |
switch(value.toLong())
|
|
595 |
{
|
|
596 |
case 65534:
|
|
597 |
os << N_("Intelligent ISO");
|
|
598 |
break;
|
|
599 |
case 65535:
|
|
600 |
os << N_("n/a");
|
|
601 |
break;
|
|
602 |
default:
|
|
603 |
os << value;
|
|
604 |
break;
|
|
605 |
};
|
|
606 |
return os;
|
|
607 |
} // PanasonicMakerNote::print0x003c
|
|
608 |
|
|
609 |
std::ostream& PanasonicMakerNote::printPanasonicText(std::ostream& os,
|
|
610 |
const Value& value,
|
|
611 |
const ExifData*)
|
|
612 |
{
|
|
613 |
if(value.size()>0 && value.typeId() == undefined)
|
|
614 |
{
|
|
615 |
for(long i=0; i< value.size(); i++)
|
|
616 |
{
|
|
617 |
if(value.toLong(i)==0)
|
|
618 |
{
|
|
619 |
break;
|
|
620 |
};
|
|
621 |
os << static_cast<char>(value.toLong(i));
|
|
622 |
};
|
|
623 |
return os;
|
|
624 |
}
|
|
625 |
else
|
|
626 |
{
|
|
627 |
return os << value;
|
|
628 |
};
|
|
629 |
} // PanasonicMakerNote::printPanasonicText
|
|
630 |
|
|
631 |
std::ostream& PanasonicMakerNote::printAccelerometer(std::ostream& os, const Value& value, const ExifData*)
|
|
632 |
{
|
|
633 |
// value is stored as unsigned int, but should be readed as signed int, so manually convert it
|
|
634 |
int i = value.toLong();
|
|
635 |
i = i - ((i & 0x8000) >> 15) * 0xffff;
|
|
636 |
return os << i;
|
|
637 |
} // PanasonicMakerNote::printAccelerometer
|
|
638 |
|
|
639 |
std::ostream& PanasonicMakerNote::printRollAngle(std::ostream& os, const Value& value, const ExifData*)
|
|
640 |
{
|
|
641 |
// roll angle is stored as signed int, but tag states to be unsigned int
|
|
642 |
int i = value.toLong();
|
|
643 |
i = i - ((i & 0x8000) >> 15) * 0xffff;
|
|
644 |
std::ostringstream oss;
|
|
645 |
oss.copyfmt(os);
|
|
646 |
os << std::fixed << std::setprecision(1) << i / 10.0;
|
|
647 |
os.copyfmt(oss);
|
|
648 |
|
|
649 |
return os;
|
|
650 |
} // PanasonicMakerNote::printRollAngle
|
|
651 |
|
|
652 |
std::ostream& PanasonicMakerNote::printPitchAngle(std::ostream& os, const Value& value, const ExifData*)
|
|
653 |
{
|
|
654 |
// pitch angle is stored as signed int, but tag states to be unsigned int
|
|
655 |
// change sign to be compatible with ExifTool: positive is upwards
|
|
656 |
int i = value.toLong();
|
|
657 |
i = i - ((i & 0x8000) >> 15) * 0xffff;
|
|
658 |
std::ostringstream oss;
|
|
659 |
oss.copyfmt(os);
|
|
660 |
os << std::fixed << std::setprecision(1) << -i / 10.0;
|
|
661 |
os.copyfmt(oss);
|
|
662 |
|
|
663 |
return os;
|
|
664 |
} // PanasonicMakerNote::printPitchAngle
|
|
665 |
|
333 |
666 |
// Panasonic MakerNote Tag Info
|
334 |
667 |
const TagInfo PanasonicMakerNote::tagInfoRaw_[] = {
|
335 |
668 |
TagInfo(0x0001, "Version", N_("Version"), N_("Panasonic raw version"), panaRawId, panaRaw, undefined, -1, printExifVersion),
|