Project

General

Profile

Support #929 » panasonicmn.cpp.patch

updated patch - Nicolas Nicofo, 13 Aug 2014 15:09

View differences:

trunk/src/panasonicmn.cpp (Revision 3195) → trunk/src/panasonicmn.cpp (Arbeitskopie)
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")          }
301
    };
302

  
303
    //! Bracket Settings, tag 0x0045
304
    extern const TagDetails panasonicBracketSettings[] = {
305
        { 0, N_("No Bracket")               },
306
        { 1, N_("3 images, Sequence 0/-/+") },
307
        { 2, N_("3 images, Sequence -/0/+") },
308
        { 3, N_("5 images, Sequence 0/-/+") },
309
        { 4, N_("5 images, Sequence -/0/+") },
310
        { 5, N_("7 images, Sequence 0/-/+") },
311
        { 6, N_("7 images, Sequence -/0/+") }
312
    };
313

  
314
    //! Flash curtain, tag 0x0048
315
    extern const TagDetails panasonicFlashCurtain[] = {
316
        { 0, N_("n/a") },
317
        { 1, N_("1st") },
318
        { 2, N_("2nd") }
319
    };
320

  
321
    //! Long Shutter Noise Reduction, tag 0x0049
322
    extern const TagDetails panasonicLongShutterNoiseReduction[] = {
323
        { 1, N_("Off") },
324
        { 2, N_("On") }
325
    };
326

  
327
    //! Intelligent exposure, tag 0x005d
328
    extern const TagDetails panasonicIntelligentExposure[] = {
329
        { 0, N_("Off")      },
330
        { 1, N_("Low")      },
331
        { 2, N_("Standard") },
332
        { 3, N_("High")     }
333
    };
334

  
335
    //! Flash warning, tag 0x0062
336
    extern const TagDetails panasonicFlashWarning[] = {
337
        { 0, N_("No")                               },
338
        { 1, N_("Yes (flash required but disabled") }
339
    };
340

  
341
    //! Intelligent resolution, tag 0x0070
342
    extern const TagDetails panasonicIntelligentResolution[] = {
343
        { 0, N_("Off")      },
344
        { 1, N_("Low")      },
345
        { 2, N_("Standard") },
346
        { 3, N_("High")     },
347
        { 4, N_("Extended") }
348
    };
349

  
350
    //! Intelligent D-Range, tag 0x0079
351
    extern const TagDetails panasonicIntelligentDRange[] = {
352
        { 0, N_("Off")      },
353
        { 1, N_("Low")      },
354
        { 2, N_("Standard") },
355
        { 3, N_("High")     }
356
    };
357

  
358
    //! Clear Retouch, tag 0x007c
359
    extern const TagDetails panasonicClearRetouch[] = {
360
        { 0, N_("Off") },
361
        { 1, N_("On") }
362
    };
363

  
364
    //! Photo Style, tag 0x0089
365
    extern const TagDetails panasonicPhotoStyle[] = {
366
        { 0, N_("NoAuto")             },
367
        { 1, N_("Standard or Custom") },
368
        { 2, N_("Vivid")              },
369
        { 3, N_("Natural")            },
370
        { 4, N_("Monochrome")         },
371
        { 5, N_("Scenery")            },
372
        { 6, N_("Portrait")           }
373
    };
374

  
375
    //! Shading compensation, tag 0x008a
376
    extern const TagDetails panasonicShadingCompensation[] = {
377
        { 0, N_("Off") },
378
        { 1, N_("On") }
379
    };
380

  
381
    //! Camera orientation, tag 0x008f
382
    extern const TagDetails panasonicCameraOrientation[] = {
383
        { 0, N_("Normal")         },
384
        { 1, N_("Rotate CW")      },
385
        { 2, N_("Rotate 180")     },
386
        { 3, N_("Rotate CCW")     },
387
        { 4, N_("Tilt upwards")   },
388
        { 5, N_("Tilt downwards") }
389
    };
390

  
391
    //! Sweep panorama direction, tag 0x0093
392
    extern const TagDetails panasonicSweepPanoramaDirection[] = {
393
        { 0, N_("Off")           },
394
        { 1, N_("Left to Right") },
395
        { 2, N_("Right to Left") },
396
        { 3, N_("Top to Bottom") },
397
        { 4, N_("Bottom to Top") }
398
    };
399

  
400
    //! Timer recording, tag 0x0096
401
    extern const TagDetails panasonicTimerRecording[] = {
402
        { 0, N_("Off")                   },
403
        { 1, N_("Time Lapse")            },
404
        { 2, N_("Stop-Motion Animation") }
405
    };
406

  
407
    //! HDR, tag 0x009e
408
    extern const TagDetails panasonicHDR[] = {
409
        {     0, N_("Off")         },
410
        {   100, N_("1 EV")        },
411
        {   200, N_("2 EV")        },
412
        {   300, N_("3 EV")        },
413
        { 32868, N_("1 EV (Auto)") },
414
        { 32968, N_("2 EV (Auto)") },
415
        { 33068, N_("3 EV (Auto)") }
416
    };
417

  
418
    //! Shutter Type, tag 0x009f
419
    extern const TagDetails panasonicShutterType[] = {
420
        { 0, N_("Mechanical") },
421
        { 1, N_("Electronic") },
422
        { 2, N_("Hybrid")     }
423
    };
424

  
425
    //! Touch AE, tag 0x00ab
426
    extern const TagDetails panasonicTouchAE[] = {
427
        { 0, N_("Off") },
428
        { 1, N_("On")  }
429
    };
430

  
431
    //! Flash Fired, tag 0x8007
432
    extern const TagDetails panasonicFlashFired[] = {
433
        { 1, N_("No")  },
434
        { 2, N_("Yes") }
232 435
    };
233 436

  
234 437
    // Panasonic MakerNote Tag Info
......
247 450
        TagInfo(0x0022, "0x0022", "0x0022", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue),
248 451
        TagInfo(0x0023, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance adjustment"), panasonicId, makerTags, signedShort, -1, print0x0023),
249 452
        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),
453
        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 454
        TagInfo(0x0026, "ExifVersion", "Exif Version", N_("Exif version"), panasonicId, makerTags, undefined, -1, printExifVersion),
252 455
        TagInfo(0x0027, "0x0027", "0x0027", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue),
253 456
        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),
457
        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 458
        TagInfo(0x002a, "BurstMode", N_("Burst Mode"), N_("Burst mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicBurstMode)),
256 459
        TagInfo(0x002b, "SequenceNumber", N_("Sequence Number"), N_("Sequence number"), panasonicId, makerTags, unsignedLong, -1, printValue),
257 460
        TagInfo(0x002c, "Contrast", N_("Contrast"), N_("Contrast setting"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicContrast)),
......
259 462
        TagInfo(0x002e, "SelfTimer", N_("Self Timer"), N_("Self timer"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicSelfTimer)),
260 463
        TagInfo(0x002f, "0x002f", "0x002f", N_("Unknown"), panasonicId, makerTags, unsignedShort, -1, printValue),
261 464
        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),
465
        TagInfo(0x0031, "AFAssistLamp", N_("AF Assist Lamp"), N_("AF Assist Lamp"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicAFAssistLamp)),
263 466
        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),
467
        TagInfo(0x0033, "BabyAge1", N_("Baby Age 1"), N_("Baby (or pet) age 1"), panasonicId, makerTags, asciiString, -1, print0x0033),
265 468
        TagInfo(0x0034, "OpticalZoomMode", N_("Optical Zoom Mode"), N_("Optical zoom mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicOpticalZoomMode)),
266 469
        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),
470
        TagInfo(0x0036, "TravelDay", N_("Travel Day"), N_("Travel day"), panasonicId, makerTags, unsignedShort, -1, print0x0036),
268 471
        TagInfo(0x0039, "Contrast", N_("Contrast"), N_("Contrast"), panasonicId, makerTags, unsignedShort, -1, printValue),
269 472
        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),
473
        TagInfo(0x003b, "TextStamp1", N_("Text Stamp 1"), N_("Text Stamp 1"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)),
474
        TagInfo(0x003c, "ProgramISO", N_("Program ISO"), N_("Program ISO"), panasonicId, makerTags, unsignedShort, -1, print0x003c),
475
        TagInfo(0x003d, "AdvancedSceneType", N_("Advanced Scene Type"), N_("Advanced Scene Type"), panasonicId, makerTags, unsignedShort, -1, printValue),
476
        TagInfo(0x003e, "TextStamp2", N_("Text Stamp 2"), N_("Text Stamp 2"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)),
477
        TagInfo(0x003f, "FacesDetected", N_("Faces detected"), N_("Faces detected"), panasonicId, makerTags, unsignedShort, -1, printValue),
271 478
        TagInfo(0x0040, "Saturation", N_("Saturation"), N_("Saturation"), panasonicId, makerTags, unsignedShort, -1, printValue),
272 479
        TagInfo(0x0041, "Sharpness", N_("Sharpness"), N_("Sharpness"), panasonicId, makerTags, unsignedShort, -1, printValue),
273 480
        TagInfo(0x0042, "FilmMode", N_("Film Mode"), N_("Film mode"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFilmMode)),
481
        TagInfo(0x0044, "ColorTempKelvin", N_("Color Temp Kelvin"), N_("Color Temperatur in Kelvin"), panasonicId, makerTags, unsignedShort, -1, printValue),
482
        TagInfo(0x0045, "BracketSettings", N_("Bracket Settings"), N_("Bracket Settings"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicBracketSettings)),
274 483
        TagInfo(0x0046, "WBAdjustAB", N_("WB Adjust AB"), N_("WB adjust AB. Positive is a shift toward blue."), panasonicId, makerTags, unsignedShort, -1, printValue),
275 484
        TagInfo(0x0047, "WBAdjustGM", N_("WB Adjust GM"), N_("WBAdjustGM. Positive is a shift toward green."), panasonicId, makerTags, unsignedShort, -1, printValue),
485
        TagInfo(0x0048, "FlashCurtain", N_("Flash Curtain"), N_("Flash Curtain"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashCurtain)),
486
        TagInfo(0x0049, "LongShutterNoiseReduction", N_("Long Shutter Noise Reduction"), N_("Long Shutter Noise Reduction"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicLongShutterNoiseReduction)),
487
        TagInfo(0x004b, "ImageWidth", N_("Image width"), N_("Image width"), panasonicId, makerTags, unsignedLong, -1, printValue),
488
        TagInfo(0x004c, "ImageHeight", N_("Image height"), N_("Image height"), panasonicId, makerTags, unsignedLong, -1, printValue),
489
        TagInfo(0x004d, "AFPointPosition", N_("AF Point Position"), N_("AF Point Position"), panasonicId, makerTags, unsignedRational, -1, printValue),
490
        TagInfo(0x004e, "FaceDetInfo", N_("Face detection info"), N_("Face detection info"), panasonicId, makerTags, undefined, -1, printValue),
276 491
        TagInfo(0x0051, "LensType", N_("Lens Type"), N_("Lens type"), panasonicId, makerTags, asciiString, -1, printValue),
277 492
        TagInfo(0x0052, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), panasonicId, makerTags, asciiString, -1, printValue),
278 493
        TagInfo(0x0053, "AccessoryType", N_("Accessory Type"), N_("Accessory type"), panasonicId, makerTags, asciiString, -1, printValue),
494
        TagInfo(0x0054, "AccessorySerialNumber", N_("Accessory Serial Number"), N_("Accessory Serial Number"), panasonicId, makerTags, asciiString, -1, printValue),
495
        TagInfo(0x0059, "Transform1", N_("Transform 1"), N_("Transform 1"), panasonicId, makerTags, undefined, -1, printValue),
496
        TagInfo(0x005d, "IntelligentExposure", N_("Intelligent Exposure"), N_("Intelligent Exposure"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentExposure)),
497
        TagInfo(0x0060, "LensFirmwareVersion", N_("Firmware Version of the Lens"), N_("Firmware Version of the Lens"), panasonicId, makerTags, undefined, -1, printValue),
498
        TagInfo(0x0061, "FaceRecInfo", N_("Face recognation info"), N_("Face recognation info"), panasonicId, makerTags, undefined, -1, printValue),
499
        TagInfo(0x0062, "FlashWarning", N_("Flash Warning"), N_("Flash warning"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashWarning)),
500
        TagInfo(0x0065, "Title", N_("Title"), N_("Title"), panasonicId, makerTags, undefined, -1, printPanasonicText),
501
        TagInfo(0x0066, "BabyName", N_("Baby Name"), N_("Baby name (or pet name)"), panasonicId, makerTags, undefined, -1, printPanasonicText),
502
        TagInfo(0x0067, "Location", N_("Location"), N_("Location"), panasonicId, makerTags, undefined, -1, printPanasonicText),
503
        TagInfo(0x0069, "Country", N_("Country"), N_("Country"), panasonicId, makerTags, undefined, -1, printPanasonicText),
504
        TagInfo(0x006b, "State", N_("State"), N_("State"), panasonicId, makerTags, undefined, -1, printPanasonicText),
505
        TagInfo(0x006d, "County", N_("County"), N_("County"), panasonicId, makerTags, undefined, -1, printPanasonicText),
506
        TagInfo(0x006f, "Landmark", N_("Landmark"), N_("Landmark"), panasonicId, makerTags, undefined, -1, printPanasonicText),
507
        TagInfo(0x0070, "IntelligentResolution", N_("Intelligent resolution"), N_("Intelligent resolution"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicIntelligentResolution)),
508
        TagInfo(0x0077, "BurstSheed", N_("Burst Speed"), N_("Burst Speed in pictures per second"), panasonicId, makerTags, unsignedShort, -1, printValue),
509
        TagInfo(0x0079, "IntelligentDRange", N_("Intelligent Dynamic Range"), N_("Intelligent Dynamic Range"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentDRange)),
510
        TagInfo(0x007c, "ClearRetouch", N_("Clear Retouch"), N_("Clear Retouch"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicClearRetouch)),
511
        TagInfo(0x0080, "City", N_("City"), N_("City"), panasonicId, makerTags, undefined, -1, printPanasonicText),
512
        TagInfo(0x0086, "ManometerPressure", N_("Manometer Pressure"), N_("Manometer pressure"), panasonicId, makerTags, unsignedShort, -1, printValue),
513
        TagInfo(0x0089, "PhotoStyle", N_("Photo style"), N_("Photo style"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicPhotoStyle)),
514
        TagInfo(0x008a, "ShadingCompensation", N_("Shading Compensation"), N_("Shading Compensation"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShadingCompensation)),
515
        TagInfo(0x008c, "AccelerometerZ", N_("Accelerometer Z"), N_("positive is acceleration upwards"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer),
516
        TagInfo(0x008d, "AccelerometerX", N_("Accelerometer X"), N_("positive is acceleration to the left"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer),
517
        TagInfo(0x008e, "AccelerometerY", N_("Accelerometer Y"), N_("positive is acceleration backwards"), panasonicId, makerTags, unsignedShort, -1, printAccelerometer),
518
        TagInfo(0x008f, "CameraOrientation", N_("Camera Orientation"), N_("Camera Orientation"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicCameraOrientation)),
519
        TagInfo(0x0090, "RollAngle", N_("Roll Angle"), N_("degress of clockwise camera rotation"), panasonicId, makerTags, unsignedShort, -1, printRollAngle),
520
        TagInfo(0x0091, "PitchAngle", N_("Pitch Angle"), N_("degress of upwards camera tilt"), panasonicId, makerTags, unsignedShort, -1, printPitchAngle),
521
        TagInfo(0x0093, "SweepPanoramaDirection", N_("Sweep Panorama Direction"), N_("Sweep Panorama Direction"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicSweepPanoramaDirection)),
522
        TagInfo(0x0094, "PanoramaFieldOfView", N_("Field of View of Panorama"), N_("Field of View of Panorama"), panasonicId, makerTags, unsignedShort, -1, printValue),
523
        TagInfo(0x0096, "TimerRecording", N_("Timer Recording"), N_("Timer Recording"), panasonicId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicTimerRecording)),
524
        TagInfo(0x009d, "InternalNDFilter", N_("Internal ND Filter"), N_("Internal ND Filter"), panasonicId, makerTags, unsignedRational, -1, printValue),
525
        TagInfo(0x009e, "HDR", N_("HDR"), N_("HDR"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicHDR)),
526
        TagInfo(0x009f, "ShutterType", N_("Shutter Type"), N_("Shutter Type"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShutterType)),
527
        TagInfo(0x00a3, "ClearRetouchValue", N_("Clear Retouch Value"), N_("Clear Retouch Value"), panasonicId, makerTags, unsignedRational, -1, printValue),
528
        TagInfo(0x00ab, "TouchAE", N_("TouchAE"), N_("TouchAE"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTouchAE)),
279 529
        TagInfo(0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), panasonicId, makerTags, undefined, -1, printValue),
280 530
        TagInfo(0x4449, "0x4449", "0x4449", N_("Unknown"), panasonicId, makerTags, undefined, -1, printValue),
281 531
        TagInfo(0x8000, "MakerNoteVersion", N_("MakerNote Version"), N_("MakerNote version"), panasonicId, makerTags, undefined, -1, printExifVersion),
......
283 533
        TagInfo(0x8004, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), panasonicId, makerTags, unsignedShort, -1, printValue),
284 534
        TagInfo(0x8005, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), panasonicId, makerTags, unsignedShort, -1, printValue),
285 535
        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),
536
        TagInfo(0x8007, "FlashFired", N_("Flash Fired"), N_("Flash Fired"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashFired)),
537
        TagInfo(0x8008, "TextStamp3", N_("Text Stamp 3"), N_("Text Stamp 3"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)),
538
        TagInfo(0x8009, "TextStamp4", N_("Text Stamp 4"), N_("Text Stamp 4"), panasonicId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)),
539
        TagInfo(0x8010, "BabyAge2", N_("Baby Age 2"), N_("Baby (or pet) age 2"), panasonicId, makerTags, asciiString, -1, print0x0033),
540
        TagInfo(0x8012, "Transform2", N_("Transform 2"), N_("Transform 2"), panasonicId, makerTags, undefined, -1, printValue),
287 541
        // End of list marker
288 542
        TagInfo(0xffff, "(UnknownPanasonicMakerNoteTag)", "(UnknownPanasonicMakerNoteTag)", N_("Unknown PanasonicMakerNote tag"), panasonicId, makerTags, asciiString, -1, printValue)
289 543
    };
......
293 547
        return tagInfo_;
294 548
    }
295 549

  
550
    // tag Focus Mode
296 551
    std::ostream& PanasonicMakerNote::print0x000f(std::ostream& os,
297 552
                                                  const Value& value,
298 553
                                                  const ExifData*)
......
302 557
        }
303 558
        long l0 = value.toLong(0);
304 559
        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)");
560
        if      (l0 ==   0 && l1 ==  1) os << _("Spot mode on or 9 area");
561
        else if (l0 ==   0 && l1 == 16) os << _("Spot mode off or 3-area (high speed)");
562
        else if (l0 ==   0 && l1 == 23) os << _("23-area");
563
        else if (l0 ==   1 && l1 ==  0) os << _("Spot focussing");
564
        else if (l0 ==   1 && l1 ==  1) os << _("5-area");
565
        else if (l0 ==  16 && l1 ==  0) os << _("1-area");
566
        else if (l0 ==  16 && l1 == 16) os << _("1-area (high speed)");
567
        else if (l0 ==  32 && l1 ==  0) os << _("3-area (auto)");
568
        else if (l0 ==  32 && l1 ==  1) os << _("3-area (left)");
569
        else if (l0 ==  32 && l1 ==  2) os << _("3-area (center)");
570
        else if (l0 ==  32 && l1 ==  3) os << _("3-area (right)");
571
        else if (l0 ==  64 && l1 ==  0) os << _("Face Detect");
572
        else if (l0 == 128 && l1 ==  0) os << _("Spot Focusing 2");
315 573
        else os << value;
316 574
        return os;
317 575
    } // PanasonicMakerNote::print0x000f
318 576

  
577
    // tag White balance bias
319 578
    std::ostream& PanasonicMakerNote::print0x0023(std::ostream& os,
320 579
                                                  const Value& value,
321 580
                                                  const ExifData*)
......
330 589

  
331 590
    } // PanasonicMakerNote::print0x0023
332 591

  
592
    // Time since power on
593
    std::ostream& PanasonicMakerNote::print0x0029(std::ostream& os,
594
                                                  const Value& value,
595
                                                  const ExifData*)
596
    {
597
        std::ostringstream oss;
598
        oss.copyfmt(os);
599
        long time=value.toLong();
600
        os << std::setw(2) << std::setfill('0') << time / 360000 << ":"
601
           << std::setw(2) << std::setfill('0') << (time % 360000) / 6000 << ":"
602
           << std::setw(2) << std::setfill('0') << (time % 6000) / 100 << "."
603
           << std::setw(2) << std::setfill('0') << time % 100;
604
        os.copyfmt(oss);
605

  
606
        return os;
607

  
608
    } // PanasonicMakerNote::print0x0029
609

  
610
    // bage age
611
    std::ostream& PanasonicMakerNote::print0x0033(std::ostream& os,
612
                                                  const Value& value,
613
                                                  const ExifData*)
614
    {
615
        if(value.toString()=="9999:99:99 00:00:00")
616
        {
617
            os << N_("not set");
618
        }
619
        else
620
        {
621
            os << value;
622
        };
623
        return os;
624
    } // PanasonicMakerNote::print0x0033
625

  
626
    // Travel days
627
    std::ostream& PanasonicMakerNote::print0x0036(std::ostream& os,
628
                                                  const Value& value,
629
                                                  const ExifData*)
630
    {
631
        if(value.toLong()==65535)
632
        {
633
            os << N_("not set");
634
        }
635
        else
636
        {
637
            os << value;
638
        };
639
        return os;
640
    } // PanasonicMakerNote::print0x0036
641

  
642
    // Program ISO
643
    std::ostream& PanasonicMakerNote::print0x003c(std::ostream& os,
644
                                                  const Value& value,
645
                                                  const ExifData*)
646
    {
647
        switch(value.toLong())
648
        {
649
            case 65534:
650
                os << N_("Intelligent ISO");
651
                break;
652
            case 65535:
653
                os << N_("n/a");
654
                break;
655
            default:
656
                os << value;
657
                break;
658
        };
659
        return os;
660
    } // PanasonicMakerNote::print0x003c
661

  
662
    std::ostream& PanasonicMakerNote::printPanasonicText(std::ostream& os,
663
                                                  const Value& value,
664
                                                  const ExifData*)
665
    {
666
        if(value.size()>0 && value.typeId() == undefined)
667
        {
668
            for(long i=0; i< value.size(); i++)
669
            {
670
                if(value.toLong(i)==0)
671
                {
672
                    break;
673
                };
674
                os << static_cast<char>(value.toLong(i));
675
            };
676
            return os;
677
        }
678
        else
679
        {
680
            return os << value;
681
        };
682
    } // PanasonicMakerNote::printPanasonicText
683

  
684
    std::ostream& PanasonicMakerNote::printAccelerometer(std::ostream& os, const Value& value, const ExifData*)
685
    {
686
        // value is stored as unsigned int, but should be readed as signed int, so manually convert it
687
        int i = value.toLong();
688
        i = i - ((i & 0x8000) >> 15) * 0xffff;
689
        return os << i;
690
    }  // PanasonicMakerNote::printAccelerometer
691

  
692
    std::ostream& PanasonicMakerNote::printRollAngle(std::ostream& os, const Value& value, const ExifData*)
693
    {
694
        // roll angle is stored as signed int, but tag states to be unsigned int
695
        int i = value.toLong();
696
        i = i - ((i & 0x8000) >> 15) * 0xffff;
697
        std::ostringstream oss;
698
        oss.copyfmt(os);
699
        os << std::fixed << std::setprecision(1) << i / 10.0;
700
        os.copyfmt(oss);
701

  
702
        return os;
703
    }  // PanasonicMakerNote::printRollAngle
704

  
705
    std::ostream& PanasonicMakerNote::printPitchAngle(std::ostream& os, const Value& value, const ExifData*)
706
    {
707
        // pitch angle is stored as signed int, but tag states to be unsigned int
708
        // change sign to be compatible with ExifTool: positive is upwards
709
        int i = value.toLong();
710
        i = i - ((i & 0x8000) >> 15) * 0xffff;
711
        std::ostringstream oss;
712
        oss.copyfmt(os);
713
        os << std::fixed << std::setprecision(1) << -i / 10.0;
714
        os.copyfmt(oss);
715

  
716
        return os;
717
    }  // PanasonicMakerNote::printPitchAngle
718

  
333 719
    // Panasonic MakerNote Tag Info
334 720
    const TagInfo PanasonicMakerNote::tagInfoRaw_[] = {
335 721
        TagInfo(0x0001, "Version", N_("Version"), N_("Panasonic raw version"), panaRawId, panaRaw, undefined, -1, printExifVersion),
trunk/src/panasonicmn_int.hpp (Revision 3195) → trunk/src/panasonicmn_int.hpp (Arbeitskopie)
65 65
        static std::ostream& print0x000f(std::ostream& os, const Value& value, const ExifData*);
66 66
        //! Print WhiteBalanceBias
67 67
        static std::ostream& print0x0023(std::ostream& os, const Value& value, const ExifData*);
68
        //! Print TimeSincePowerOn
69
        static std::ostream& print0x0029(std::ostream& os, const Value& value, const ExifData*);
70
        //! Print Baby age
71
        static std::ostream& print0x0033(std::ostream& os, const Value& value, const ExifData*);
72
        //! Print Travel days
73
        static std::ostream& print0x0036(std::ostream& os, const Value& value, const ExifData*);
74
        //! Print ISO
75
        static std::ostream& print0x003c(std::ostream& os, const Value& value, const ExifData*);
76
        //! Print special text values: title, landmark, county and so on
77
        static std::ostream& printPanasonicText(std::ostream& os, const Value& value, const ExifData*);
78
        //! Print accerometer readings
79
        static std::ostream& printAccelerometer(std::ostream& os, const Value& value, const ExifData*);
80
        //! Print roll angle
81
        static std::ostream& printRollAngle(std::ostream& os, const Value& value, const ExifData*);
82
        //! Print pitch angle
83
        static std::ostream& printPitchAngle(std::ostream& os, const Value& value, const ExifData*);
68 84
        //@}
69 85

  
70 86
    private:
(9-9/9)