/src/exiv2/src/panasonicmn_int.cpp
Line | Count | Source |
1 | | // SPDX-License-Identifier: GPL-2.0-or-later |
2 | | |
3 | | // included header files |
4 | | #include "panasonicmn_int.hpp" |
5 | | #include "i18n.h" // NLS support. |
6 | | #include "image_int.hpp" |
7 | | #include "tags.hpp" |
8 | | #include "tags_int.hpp" |
9 | | #include "types.hpp" |
10 | | #include "value.hpp" |
11 | | |
12 | | // + standard includes |
13 | | #include <cstddef> |
14 | | #include <cstdint> |
15 | | #include <ostream> |
16 | | |
17 | | // ***************************************************************************** |
18 | | // class member definitions |
19 | | namespace Exiv2::Internal { |
20 | | //! Quality, tag 0x0001 |
21 | | constexpr TagDetails panasonicQuality[] = { |
22 | | {1, N_("TIFF")}, {2, N_("High")}, {3, N_("Normal")}, {6, N_("Very High")}, |
23 | | {7, N_("Raw")}, {9, N_("Motion Picture")}, {11, N_("Full HD Movie")}, {12, N_("4k Movie")}, |
24 | | }; |
25 | | |
26 | | //! WhiteBalance, tag 0x0003 |
27 | | constexpr TagDetails panasonicWhiteBalance[] = { |
28 | | {1, N_("Auto")}, {2, N_("Daylight")}, {3, N_("Cloudy")}, {4, N_("Halogen")}, {5, N_("Manual")}, |
29 | | {8, N_("Flash")}, {10, N_("Black and white")}, {11, N_("Manual")}, {12, N_("Shade")}, {13, N_("Kelvin")}, |
30 | | }; |
31 | | |
32 | | //! FocusMode, tag 0x0007 |
33 | | constexpr TagDetails panasonicFocusMode[] = { |
34 | | {1, N_("Auto")}, {2, N_("Manual")}, {4, N_("Auto, focus button")}, {5, N_("Auto, continuous")}, {6, N_("AF-S")}, |
35 | | {7, N_("AF-C")}, {8, N_("AF-F")}, |
36 | | }; |
37 | | |
38 | | //! ImageStabilizer, tag 0x001a |
39 | | constexpr TagDetails panasonicImageStabilizer[] = { |
40 | | {2, N_("On, Mode 1")}, {3, N_("Off")}, {4, N_("On, Mode 2")}, {5, N_("Panning")}, {6, N_("On, Mode 3")}, |
41 | | }; |
42 | | |
43 | | //! Macro, tag 0x001c |
44 | | constexpr TagDetails panasonicMacro[] = { |
45 | | {1, N_("On")}, |
46 | | {2, N_("Off")}, |
47 | | {257, N_("Tele-macro")}, |
48 | | {513, N_("Macro-zoom")}, |
49 | | }; |
50 | | |
51 | | //! ShootingMode, tag 0x001f and SceneMode, tag 0x8001 |
52 | | constexpr TagDetails panasonicShootingMode[] = { |
53 | | {0, N_("Off")}, // only SceneMode |
54 | | {1, N_("Normal")}, |
55 | | {2, N_("Portrait")}, |
56 | | {3, N_("Scenery")}, |
57 | | {4, N_("Sports")}, |
58 | | {5, N_("Night portrait")}, |
59 | | {6, N_("Program")}, |
60 | | {7, N_("Aperture priority")}, |
61 | | {8, N_("Shutter-speed priority")}, |
62 | | {9, N_("Macro")}, |
63 | | {10, N_("Spot")}, |
64 | | {11, N_("Manual")}, |
65 | | {12, N_("Movie preview")}, |
66 | | {13, N_("Panning")}, |
67 | | {14, N_("Simple")}, |
68 | | {15, N_("Color effects")}, |
69 | | {16, N_("Self Portrait")}, |
70 | | {17, N_("Economy")}, |
71 | | {18, N_("Fireworks")}, |
72 | | {19, N_("Party")}, |
73 | | {20, N_("Snow")}, |
74 | | {21, N_("Night scenery")}, |
75 | | {22, N_("Food")}, |
76 | | {23, N_("Baby")}, |
77 | | {24, N_("Soft skin")}, |
78 | | {25, N_("Candlelight")}, |
79 | | {26, N_("Starry night")}, |
80 | | {27, N_("High sensitivity")}, |
81 | | {28, N_("Panorama assist")}, |
82 | | {29, N_("Underwater")}, |
83 | | {30, N_("Beach")}, |
84 | | {31, N_("Aerial photo")}, |
85 | | {32, N_("Sunset")}, |
86 | | {33, N_("Pet")}, |
87 | | {34, N_("Intelligent ISO")}, |
88 | | {35, N_("Clipboard")}, |
89 | | {36, N_("High speed continuous shooting")}, |
90 | | {37, N_("Intelligent auto")}, |
91 | | {39, N_("Multi-aspect")}, |
92 | | {41, N_("Transform")}, |
93 | | {42, N_("Flash Burst")}, |
94 | | {43, N_("Pin Hole")}, |
95 | | {44, N_("Film Grain")}, |
96 | | {45, N_("My Color")}, |
97 | | {46, N_("Photo Frame")}, |
98 | | {51, N_("HDR")}, |
99 | | {55, N_("Handheld Night Shot")}, |
100 | | {57, N_("3D")}, |
101 | | {59, N_("Creative Control")}, |
102 | | {62, N_("Panorama")}, |
103 | | {63, N_("Glass Through")}, |
104 | | {64, N_("HDR")}, |
105 | | {66, N_("Digital Filter")}, |
106 | | {67, N_("Clear Portrait")}, |
107 | | {68, N_("Silky Skin")}, |
108 | | {69, N_("Backlit Softness")}, |
109 | | {70, N_("Clear in Backlight")}, |
110 | | {71, N_("Relaxing Tone")}, |
111 | | {72, N_("Sweet Child's Face")}, |
112 | | {73, N_("Distinct Scenery")}, |
113 | | {74, N_("Bright Blue Sky")}, |
114 | | {75, N_("Romantic Sunset Glow")}, |
115 | | {76, N_("Vivid Sunset Glow")}, |
116 | | {77, N_("Glistening Water")}, |
117 | | {78, N_("Clear Nightscape")}, |
118 | | {79, N_("Cool Night Sky")}, |
119 | | {80, N_("Warm Glowing Nightscape")}, |
120 | | {81, N_("Artistic Nightscape")}, |
121 | | {82, N_("Glittering Illuminations")}, |
122 | | {83, N_("Clear Night Portrait")}, |
123 | | {84, N_("Soft Image of a Flower")}, |
124 | | {85, N_("Appetizing Food")}, |
125 | | {86, N_("Cute Desert")}, |
126 | | {87, N_("Freeze Animal Motion")}, |
127 | | {88, N_("Clear Sports Shot")}, |
128 | | {89, N_("Monochrome")}, |
129 | | {90, N_("Creative Control")}, |
130 | | }; |
131 | | |
132 | | //! Audio, tag 0x0020 |
133 | | constexpr TagDetails panasonicAudio[] = { |
134 | | {1, N_("Yes")}, |
135 | | {2, N_("No")}, |
136 | | {3, N_("Stereo")}, |
137 | | }; |
138 | | |
139 | | //! ColorEffect, tag 0x0028 |
140 | | constexpr TagDetails panasonicColorEffect[] = { |
141 | | {1, N_("Off")}, {2, N_("Warm")}, {3, N_("Cool")}, {4, N_("Black and white")}, {5, N_("Sepia")}, {6, N_("Happy")}, |
142 | | }; |
143 | | |
144 | | //! BustMode, tag 0x002a |
145 | | constexpr TagDetails panasonicBurstMode[] = { |
146 | | {0, N_("Off")}, |
147 | | {1, N_("Low/High quality")}, |
148 | | {2, N_("Infinite")}, |
149 | | }; |
150 | | |
151 | | //! Contrast, tag 0x002c |
152 | | constexpr TagDetails panasonicContrast[] = { |
153 | | {0, N_("Normal")}, {1, N_("Low")}, {2, N_("High")}, {6, N_("Medium low")}, |
154 | | {7, N_("Medium high")}, {256, N_("Low")}, {272, N_("Standard")}, {288, N_("High")}, |
155 | | }; |
156 | | |
157 | | //! NoiseReduction, tag 0x002d |
158 | | constexpr TagDetails panasonicNoiseReduction[] = { |
159 | | {0, N_("Standard")}, {1, N_("Low (-1)")}, {2, N_("High (+1)")}, {3, N_("Lowest (-2)")}, {4, N_("Highest (+2)")}, |
160 | | }; |
161 | | |
162 | | //! SelfTimer, tag 0x002e |
163 | | constexpr TagDetails panasonicSelfTimer[] = { |
164 | | {1, N_("Off")}, |
165 | | {2, "10 s"}, |
166 | | {3, "2 s"}, |
167 | | {4, "10 s / 3 pictures"}, |
168 | | }; |
169 | | |
170 | | //! Rotation, tag 0x0030 |
171 | | constexpr TagDetails panasonicRotation[] = { |
172 | | {1, N_("Horizontal (normal)")}, |
173 | | {3, N_("Rotate 180")}, |
174 | | {6, N_("Rotate 90 CW")}, |
175 | | {8, N_("Rotate 270 CW")}, |
176 | | }; |
177 | | |
178 | | //! AFAssistLamp, tag 0x0031 |
179 | | constexpr TagDetails panasonicAFAssistLamp[] = { |
180 | | {1, N_("Fired")}, |
181 | | {2, N_("Enabled but Not Used")}, |
182 | | {3, N_("Disabled but Required")}, |
183 | | {4, N_("Disabled and Not Required")}, |
184 | | }; |
185 | | |
186 | | //! ColorMode, tag 0x0032 |
187 | | constexpr TagDetails panasonicColorMode[] = { |
188 | | {0, N_("Normal")}, |
189 | | {1, N_("Natural")}, |
190 | | {2, N_("Vivid")}, |
191 | | }; |
192 | | |
193 | | //! OpticalZoomMode, tag 0x0034 |
194 | | constexpr TagDetails panasonicOpticalZoomMode[] = { |
195 | | {1, N_("Standard")}, |
196 | | {2, N_("EX optics")}, |
197 | | }; |
198 | | |
199 | | //! ConversionLens, tag 0x0035 |
200 | | constexpr TagDetails panasonicConversionLens[] = { |
201 | | {1, N_("Off")}, |
202 | | {2, N_("Wide")}, |
203 | | {3, N_("Telephoto")}, |
204 | | {4, N_("Macro")}, |
205 | | }; |
206 | | |
207 | | //! WorldTimeLocation, tag 0x003a |
208 | | constexpr TagDetails panasonicWorldTimeLocation[] = { |
209 | | {1, N_("Home")}, |
210 | | {2, N_("Destination")}, |
211 | | }; |
212 | | |
213 | | //! TextStamp, tag 0x003b, 0x003e, 000x8008 and 0x8009 |
214 | | constexpr TagDetails panasonicTextStamp[] = { |
215 | | {1, N_("Off")}, |
216 | | {2, N_("On")}, |
217 | | }; |
218 | | |
219 | | //! FilmMode, tag 0x0042 |
220 | | constexpr TagDetails panasonicFilmMode[] = { |
221 | | {1, N_("Standard (color)")}, {2, N_("Dynamic (color)")}, {3, N_("Nature (color)")}, |
222 | | {4, N_("Smooth (color)")}, {5, N_("Standard (B&W)")}, {6, N_("Dynamic (B&W)")}, |
223 | | {7, N_("Smooth (B&W)")}, {10, N_("Nostalgic")}, {11, N_("Vibrant")}, |
224 | | }; |
225 | | |
226 | | //! Bracket Settings, tag 0x0045 |
227 | | constexpr TagDetails panasonicBracketSettings[] = { |
228 | | {0, N_("No Bracket")}, |
229 | | {1, N_("3 images, Sequence 0/-/+")}, |
230 | | {2, N_("3 images, Sequence -/0/+")}, |
231 | | {3, N_("5 images, Sequence 0/-/+")}, |
232 | | {4, N_("5 images, Sequence -/0/+")}, |
233 | | {5, N_("7 images, Sequence 0/-/+")}, |
234 | | {6, N_("7 images, Sequence -/0/+")}, |
235 | | }; |
236 | | |
237 | | //! Flash curtain, tag 0x0048 |
238 | | constexpr TagDetails panasonicFlashCurtain[] = { |
239 | | {0, N_("n/a")}, |
240 | | {1, N_("1st")}, |
241 | | {2, N_("2nd")}, |
242 | | }; |
243 | | |
244 | | //! Long Shutter Noise Reduction, tag 0x0049 |
245 | | constexpr TagDetails panasonicLongShutterNoiseReduction[] = { |
246 | | {1, N_("Off")}, |
247 | | {2, N_("On")}, |
248 | | }; |
249 | | |
250 | | //! Intelligent exposure, tag 0x005d |
251 | | constexpr TagDetails panasonicIntelligentExposure[] = { |
252 | | {0, N_("Off")}, |
253 | | {1, N_("Low")}, |
254 | | {2, N_("Standard")}, |
255 | | {3, N_("High")}, |
256 | | }; |
257 | | |
258 | | //! Flash warning, tag 0x0062 |
259 | | constexpr TagDetails panasonicFlashWarning[] = { |
260 | | {0, N_("No")}, |
261 | | {1, N_("Yes (flash required but disabled")}, |
262 | | }; |
263 | | |
264 | | //! Intelligent resolution, tag 0x0070 |
265 | | constexpr TagDetails panasonicIntelligentResolution[] = { |
266 | | {0, N_("Off")}, {1, N_("Low")}, {2, N_("Standard")}, {3, N_("High")}, {4, N_("Extended")}, |
267 | | }; |
268 | | |
269 | | //! Intelligent D-Range, tag 0x0079 |
270 | | constexpr TagDetails panasonicIntelligentDRange[] = { |
271 | | {0, N_("Off")}, |
272 | | {1, N_("Low")}, |
273 | | {2, N_("Standard")}, |
274 | | {3, N_("High")}, |
275 | | }; |
276 | | |
277 | | //! Clear Retouch, tag 0x007c |
278 | | constexpr TagDetails panasonicClearRetouch[] = { |
279 | | {0, N_("Off")}, |
280 | | {1, N_("On")}, |
281 | | }; |
282 | | |
283 | | //! Photo Style, tag 0x0089 |
284 | | constexpr TagDetails panasonicPhotoStyle[] = { |
285 | | {0, N_("NoAuto")}, {1, N_("Standard or Custom")}, {2, N_("Vivid")}, {3, N_("Natural")}, {4, N_("Monochrome")}, |
286 | | {5, N_("Scenery")}, {6, N_("Portrait")}, |
287 | | }; |
288 | | |
289 | | //! Shading compensation, tag 0x008a |
290 | | constexpr TagDetails panasonicShadingCompensation[] = { |
291 | | {0, N_("Off")}, |
292 | | {1, N_("On")}, |
293 | | }; |
294 | | |
295 | | //! Camera orientation, tag 0x008f |
296 | | constexpr TagDetails panasonicCameraOrientation[] = { |
297 | | {0, N_("Normal")}, {1, N_("Rotate CW")}, {2, N_("Rotate 180")}, |
298 | | {3, N_("Rotate CCW")}, {4, N_("Tilt upwards")}, {5, N_("Tilt downwards")}, |
299 | | }; |
300 | | |
301 | | //! Sweep panorama direction, tag 0x0093 |
302 | | constexpr TagDetails panasonicSweepPanoramaDirection[] = { |
303 | | {0, N_("Off")}, {1, N_("Left to Right")}, {2, N_("Right to Left")}, |
304 | | {3, N_("Top to Bottom")}, {4, N_("Bottom to Top")}, |
305 | | }; |
306 | | |
307 | | //! Timer recording, tag 0x0096 |
308 | | constexpr TagDetails panasonicTimerRecording[] = { |
309 | | {0, N_("Off")}, |
310 | | {1, N_("Time Lapse")}, |
311 | | {2, N_("Stop-Motion Animation")}, |
312 | | }; |
313 | | |
314 | | //! HDR, tag 0x009e |
315 | | constexpr TagDetails panasonicHDR[] = { |
316 | | {0, N_("Off")}, |
317 | | {100, N_("1 EV")}, |
318 | | {200, N_("2 EV")}, |
319 | | {300, N_("3 EV")}, |
320 | | {32868, N_("1 EV (Auto)")}, |
321 | | {32968, N_("2 EV (Auto)")}, |
322 | | {33068, N_("3 EV (Auto)")}, |
323 | | }; |
324 | | |
325 | | //! Shutter Type, tag 0x009f |
326 | | constexpr TagDetails panasonicShutterType[] = { |
327 | | {0, N_("Mechanical")}, |
328 | | {1, N_("Electronic")}, |
329 | | {2, N_("Hybrid")}, |
330 | | }; |
331 | | |
332 | | //! Touch AE, tag 0x00ab |
333 | | constexpr TagDetails panasonicTouchAE[] = { |
334 | | {0, N_("Off")}, |
335 | | {1, N_("On")}, |
336 | | }; |
337 | | |
338 | | //! Flash Fired, tag 0x8007 |
339 | | constexpr TagDetails panasonicFlashFired[] = { |
340 | | {1, N_("No")}, |
341 | | {2, N_("Yes")}, |
342 | | }; |
343 | | |
344 | | // Panasonic MakerNote Tag Info |
345 | | constexpr TagInfo PanasonicMakerNote::tagInfo_[] = { |
346 | | {0x0001, "Quality", N_("Quality"), N_("Image Quality"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, |
347 | | EXV_PRINT_TAG(panasonicQuality)}, |
348 | | {0x0002, "FirmwareVersion", N_("Firmware Version"), N_("Firmware version"), IfdId::panasonicId, |
349 | | SectionId::makerTags, undefined, -1, printValue}, |
350 | | {0x0003, "WhiteBalance", N_("White Balance"), N_("White balance setting"), IfdId::panasonicId, SectionId::makerTags, |
351 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicWhiteBalance)}, |
352 | | {0x0004, "0x0004", "0x0004", N_("Unknown"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, |
353 | | printValue}, |
354 | | {0x0007, "FocusMode", N_("Focus Mode"), N_("Focus mode"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, |
355 | | -1, EXV_PRINT_TAG(panasonicFocusMode)}, |
356 | | {0x000f, "AFMode", N_("AF Mode"), N_("AF mode"), IfdId::panasonicId, SectionId::makerTags, unsignedByte, -1, |
357 | | print0x000f}, |
358 | | {0x001a, "ImageStabilization", N_("Image Stabilization"), N_("Image stabilization"), IfdId::panasonicId, |
359 | | SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicImageStabilizer)}, |
360 | | {0x001c, "Macro", N_("Macro"), N_("Macro mode"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, |
361 | | EXV_PRINT_TAG(panasonicMacro)}, |
362 | | {0x001f, "ShootingMode", N_("Shooting Mode"), N_("Shooting mode"), IfdId::panasonicId, SectionId::makerTags, |
363 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicShootingMode)}, |
364 | | {0x0020, "Audio", N_("Audio"), N_("Audio"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, |
365 | | EXV_PRINT_TAG(panasonicAudio)}, |
366 | | {0x0021, "DataDump", N_("Data Dump"), N_("Data dump"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, |
367 | | printValue}, |
368 | | {0x0022, "0x0022", "0x0022", N_("Unknown"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, |
369 | | printValue}, |
370 | | {0x0023, "WhiteBalanceBias", N_("White Balance Bias"), N_("White balance adjustment"), IfdId::panasonicId, |
371 | | SectionId::makerTags, signedShort, -1, print0x0023}, |
372 | | {0x0024, "FlashBias", N_("FlashBias"), N_("Flash bias"), IfdId::panasonicId, SectionId::makerTags, signedShort, -1, |
373 | | printValue}, |
374 | | {0x0025, "InternalSerialNumber", N_("Internal Serial Number"), |
375 | | N_("This number is unique, and contains the date of manufacture, but is not the same as the number printed " |
376 | | "on " |
377 | | "the camera body."), |
378 | | IfdId::panasonicId, SectionId::makerTags, undefined, -1, printPanasonicText}, |
379 | | {0x0026, "ExifVersion", "Exif Version", N_("Exif version"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, |
380 | | printExifVersion}, |
381 | | {0x0027, "0x0027", "0x0027", N_("Unknown"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, |
382 | | printValue}, |
383 | | {0x0028, "ColorEffect", N_("Color Effect"), N_("Color effect"), IfdId::panasonicId, SectionId::makerTags, |
384 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicColorEffect)}, |
385 | | {0x0029, "TimeSincePowerOn", "Time since Power On", |
386 | | N_("Time in 1/100 s from when the camera was powered on to when the image is written to memory card"), |
387 | | IfdId::panasonicId, SectionId::makerTags, unsignedLong, -1, print0x0029}, |
388 | | {0x002a, "BurstMode", N_("Burst Mode"), N_("Burst mode"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, |
389 | | -1, EXV_PRINT_TAG(panasonicBurstMode)}, |
390 | | {0x002b, "SequenceNumber", N_("Sequence Number"), N_("Sequence number"), IfdId::panasonicId, SectionId::makerTags, |
391 | | unsignedLong, -1, printValue}, |
392 | | {0x002c, "Contrast", N_("Contrast"), N_("Contrast setting"), IfdId::panasonicId, SectionId::makerTags, |
393 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicContrast)}, |
394 | | {0x002d, "NoiseReduction", N_("NoiseReduction"), N_("Noise reduction"), IfdId::panasonicId, SectionId::makerTags, |
395 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicNoiseReduction)}, |
396 | | {0x002e, "SelfTimer", N_("Self Timer"), N_("Self timer"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, |
397 | | -1, EXV_PRINT_TAG(panasonicSelfTimer)}, |
398 | | {0x002f, "0x002f", "0x002f", N_("Unknown"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, |
399 | | printValue}, |
400 | | {0x0030, "Rotation", N_("Rotation"), N_("Rotation"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, |
401 | | EXV_PRINT_TAG(panasonicRotation)}, |
402 | | {0x0031, "AFAssistLamp", N_("AF Assist Lamp"), N_("AF Assist Lamp"), IfdId::panasonicId, SectionId::makerTags, |
403 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicAFAssistLamp)}, |
404 | | {0x0032, "ColorMode", N_("Color Mode"), N_("Color mode"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, |
405 | | -1, EXV_PRINT_TAG(panasonicColorMode)}, |
406 | | {0x0033, "BabyAge1", N_("Baby Age 1"), N_("Baby (or pet) age 1"), IfdId::panasonicId, SectionId::makerTags, |
407 | | asciiString, -1, print0x0033}, |
408 | | {0x0034, "OpticalZoomMode", N_("Optical Zoom Mode"), N_("Optical zoom mode"), IfdId::panasonicId, |
409 | | SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicOpticalZoomMode)}, |
410 | | {0x0035, "ConversionLens", N_("Conversion Lens"), N_("Conversion lens"), IfdId::panasonicId, SectionId::makerTags, |
411 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicConversionLens)}, |
412 | | {0x0036, "TravelDay", N_("Travel Day"), N_("Travel day"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, |
413 | | -1, print0x0036}, |
414 | | {0x0039, "Contrast2", N_("Contrast 2"), N_("Contrast 2"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, |
415 | | -1, printValue}, |
416 | | {0x003a, "WorldTimeLocation", N_("World Time Location"), N_("World time location"), IfdId::panasonicId, |
417 | | SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicWorldTimeLocation)}, |
418 | | {0x003b, "TextStamp1", N_("Text Stamp 1"), N_("Text Stamp 1"), IfdId::panasonicId, SectionId::makerTags, |
419 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)}, |
420 | | {0x003c, "ProgramISO", N_("Program ISO"), N_("Program ISO"), IfdId::panasonicId, SectionId::makerTags, |
421 | | unsignedShort, -1, print0x003c}, |
422 | | {0x003d, "AdvancedSceneType", N_("Advanced Scene Type"), N_("Advanced Scene Type"), IfdId::panasonicId, |
423 | | SectionId::makerTags, unsignedShort, -1, printValue}, |
424 | | {0x003e, "TextStamp2", N_("Text Stamp 2"), N_("Text Stamp 2"), IfdId::panasonicId, SectionId::makerTags, |
425 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)}, |
426 | | {0x003f, "FacesDetected", N_("Faces detected"), N_("Faces detected"), IfdId::panasonicId, SectionId::makerTags, |
427 | | unsignedShort, -1, printValue}, |
428 | | {0x0040, "Saturation", N_("Saturation"), N_("Saturation"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, |
429 | | -1, printValue}, |
430 | | {0x0041, "Sharpness", N_("Sharpness"), N_("Sharpness"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, |
431 | | printValue}, |
432 | | {0x0042, "FilmMode", N_("Film Mode"), N_("Film mode"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, |
433 | | EXV_PRINT_TAG(panasonicFilmMode)}, |
434 | | {0x0044, "ColorTempKelvin", N_("Color Temp Kelvin"), N_("Color Temperature in Kelvin"), IfdId::panasonicId, |
435 | | SectionId::makerTags, unsignedShort, -1, printValue}, |
436 | | {0x0045, "BracketSettings", N_("Bracket Settings"), N_("Bracket Settings"), IfdId::panasonicId, |
437 | | SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicBracketSettings)}, |
438 | | {0x0046, "WBAdjustAB", N_("WB Adjust AB"), N_("WB adjust AB. Positive is a shift toward blue."), IfdId::panasonicId, |
439 | | SectionId::makerTags, unsignedShort, -1, printValue}, |
440 | | {0x0047, "WBAdjustGM", N_("WB Adjust GM"), N_("WBAdjustGM. Positive is a shift toward green."), IfdId::panasonicId, |
441 | | SectionId::makerTags, unsignedShort, -1, printValue}, |
442 | | {0x0048, "FlashCurtain", N_("Flash Curtain"), N_("Flash Curtain"), IfdId::panasonicId, SectionId::makerTags, |
443 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashCurtain)}, |
444 | | {0x0049, "LongShutterNoiseReduction", N_("Long Shutter Noise Reduction"), N_("Long Shutter Noise Reduction"), |
445 | | IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicLongShutterNoiseReduction)}, |
446 | | {0x004b, "ImageWidth", N_("Image width"), N_("Image width"), IfdId::panasonicId, SectionId::makerTags, unsignedLong, |
447 | | -1, printValue}, |
448 | | {0x004c, "ImageHeight", N_("Image height"), N_("Image height"), IfdId::panasonicId, SectionId::makerTags, |
449 | | unsignedLong, -1, printValue}, |
450 | | {0x004d, "AFPointPosition", N_("AF Point Position"), N_("AF Point Position"), IfdId::panasonicId, |
451 | | SectionId::makerTags, unsignedRational, -1, printValue}, |
452 | | {0x004e, "FaceDetInfo", N_("Face detection info"), N_("Face detection info"), IfdId::panasonicId, |
453 | | SectionId::makerTags, undefined, -1, printValue}, |
454 | | {0x0051, "LensType", N_("Lens Type"), N_("Lens type"), IfdId::panasonicId, SectionId::makerTags, asciiString, -1, |
455 | | printValue}, |
456 | | {0x0052, "LensSerialNumber", N_("Lens Serial Number"), N_("Lens serial number"), IfdId::panasonicId, |
457 | | SectionId::makerTags, asciiString, -1, printValue}, |
458 | | {0x0053, "AccessoryType", N_("Accessory Type"), N_("Accessory type"), IfdId::panasonicId, SectionId::makerTags, |
459 | | asciiString, -1, printValue}, |
460 | | {0x0054, "AccessorySerialNumber", N_("Accessory Serial Number"), N_("Accessory Serial Number"), IfdId::panasonicId, |
461 | | SectionId::makerTags, asciiString, -1, printValue}, |
462 | | {0x0059, "Transform1", N_("Transform 1"), N_("Transform 1"), IfdId::panasonicId, SectionId::makerTags, undefined, |
463 | | -1, printValue}, |
464 | | {0x005d, "IntelligentExposure", N_("Intelligent Exposure"), N_("Intelligent Exposure"), IfdId::panasonicId, |
465 | | SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentExposure)}, |
466 | | {0x0060, "LensFirmwareVersion", N_("Firmware Version of the Lens"), N_("Firmware Version of the Lens"), |
467 | | IfdId::panasonicId, SectionId::makerTags, undefined, -1, printValue}, |
468 | | {0x0061, "FaceRecInfo", N_("Face recognition info"), N_("Face recognition info"), IfdId::panasonicId, |
469 | | SectionId::makerTags, undefined, -1, printValue}, |
470 | | {0x0062, "FlashWarning", N_("Flash Warning"), N_("Flash warning"), IfdId::panasonicId, SectionId::makerTags, |
471 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashWarning)}, |
472 | | {0x0065, "Title", N_("Title"), N_("Title"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, |
473 | | printPanasonicText}, |
474 | | {0x0066, "BabyName", N_("Baby Name"), N_("Baby name (or pet name)"), IfdId::panasonicId, SectionId::makerTags, |
475 | | undefined, -1, printPanasonicText}, |
476 | | {0x0067, "Location", N_("Location"), N_("Location"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, |
477 | | printPanasonicText}, |
478 | | {0x0069, "Country", N_("Country"), N_("Country"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, |
479 | | printPanasonicText}, |
480 | | {0x006b, "State", N_("State"), N_("State"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, |
481 | | printPanasonicText}, |
482 | | {0x006d, "City", N_("City"), N_("City"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, |
483 | | printPanasonicText}, |
484 | | {0x006f, "Landmark", N_("Landmark"), N_("Landmark"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, |
485 | | printPanasonicText}, |
486 | | {0x0070, "IntelligentResolution", N_("Intelligent resolution"), N_("Intelligent resolution"), IfdId::panasonicId, |
487 | | SectionId::makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicIntelligentResolution)}, |
488 | | {0x0077, "BurstSpeed", N_("Burst Speed"), N_("Burst Speed in pictures per second"), IfdId::panasonicId, |
489 | | SectionId::makerTags, unsignedShort, -1, printValue}, |
490 | | {0x0079, "IntelligentDRange", N_("Intelligent Dynamic Range"), N_("Intelligent Dynamic Range"), IfdId::panasonicId, |
491 | | SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicIntelligentDRange)}, |
492 | | {0x007c, "ClearRetouch", N_("Clear Retouch"), N_("Clear Retouch"), IfdId::panasonicId, SectionId::makerTags, |
493 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicClearRetouch)}, |
494 | | {0x0080, "City2", N_("City2"), N_("City2"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, |
495 | | printPanasonicText}, |
496 | | {0x0086, "ManometerPressure", N_("Manometer Pressure"), N_("Manometer pressure"), IfdId::panasonicId, |
497 | | SectionId::makerTags, unsignedShort, -1, printPressure}, |
498 | | {0x0089, "PhotoStyle", N_("Photo style"), N_("Photo style"), IfdId::panasonicId, SectionId::makerTags, |
499 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicPhotoStyle)}, |
500 | | {0x008a, "ShadingCompensation", N_("Shading Compensation"), N_("Shading Compensation"), IfdId::panasonicId, |
501 | | SectionId::makerTags, unsignedShort, -1, EXV_PRINT_TAG(panasonicShadingCompensation)}, |
502 | | {0x008c, "AccelerometerZ", N_("Accelerometer Z"), N_("positive is acceleration upwards"), IfdId::panasonicId, |
503 | | SectionId::makerTags, unsignedShort, -1, printAccelerometer}, |
504 | | {0x008d, "AccelerometerX", N_("Accelerometer X"), N_("positive is acceleration to the left"), IfdId::panasonicId, |
505 | | SectionId::makerTags, unsignedShort, -1, printAccelerometer}, |
506 | | {0x008e, "AccelerometerY", N_("Accelerometer Y"), N_("positive is acceleration backwards"), IfdId::panasonicId, |
507 | | SectionId::makerTags, unsignedShort, -1, printAccelerometer}, |
508 | | {0x008f, "CameraOrientation", N_("Camera Orientation"), N_("Camera Orientation"), IfdId::panasonicId, |
509 | | SectionId::makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicCameraOrientation)}, |
510 | | {0x0090, "RollAngle", N_("Roll Angle"), N_("degrees of clockwise camera rotation"), IfdId::panasonicId, |
511 | | SectionId::makerTags, unsignedShort, -1, printRollAngle}, |
512 | | {0x0091, "PitchAngle", N_("Pitch Angle"), N_("degrees of upwards camera tilt"), IfdId::panasonicId, |
513 | | SectionId::makerTags, unsignedShort, -1, printPitchAngle}, |
514 | | {0x0093, "SweepPanoramaDirection", N_("Sweep Panorama Direction"), N_("Sweep Panorama Direction"), |
515 | | IfdId::panasonicId, SectionId::makerTags, unsignedByte, -1, EXV_PRINT_TAG(panasonicSweepPanoramaDirection)}, |
516 | | {0x0094, "PanoramaFieldOfView", N_("Field of View of Panorama"), N_("Field of View of Panorama"), |
517 | | IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, printValue}, |
518 | | {0x0096, "TimerRecording", N_("Timer Recording"), N_("Timer Recording"), IfdId::panasonicId, SectionId::makerTags, |
519 | | unsignedByte, -1, EXV_PRINT_TAG(panasonicTimerRecording)}, |
520 | | {0x009d, "InternalNDFilter", N_("Internal ND Filter"), N_("Internal ND Filter"), IfdId::panasonicId, |
521 | | SectionId::makerTags, unsignedRational, -1, printValue}, |
522 | | {0x009e, "HDR", N_("HDR"), N_("HDR"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, |
523 | | EXV_PRINT_TAG(panasonicHDR)}, |
524 | | {0x009f, "ShutterType", N_("Shutter Type"), N_("Shutter Type"), IfdId::panasonicId, SectionId::makerTags, |
525 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicShutterType)}, |
526 | | {0x00a3, "ClearRetouchValue", N_("Clear Retouch Value"), N_("Clear Retouch Value"), IfdId::panasonicId, |
527 | | SectionId::makerTags, unsignedRational, -1, printValue}, |
528 | | {0x00ab, "TouchAE", N_("TouchAE"), N_("TouchAE"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, -1, |
529 | | EXV_PRINT_TAG(panasonicTouchAE)}, |
530 | | {0x0e00, "PrintIM", N_("Print IM"), N_("PrintIM information"), IfdId::panasonicId, SectionId::makerTags, undefined, |
531 | | -1, printValue}, |
532 | | {0x4449, "0x4449", "0x4449", N_("Unknown"), IfdId::panasonicId, SectionId::makerTags, undefined, -1, printValue}, |
533 | | {0x8000, "MakerNoteVersion", N_("MakerNote Version"), N_("MakerNote version"), IfdId::panasonicId, |
534 | | SectionId::makerTags, undefined, -1, printExifVersion}, |
535 | | {0x8001, "SceneMode", N_("Scene Mode"), N_("Scene mode"), IfdId::panasonicId, SectionId::makerTags, unsignedShort, |
536 | | -1, EXV_PRINT_TAG(panasonicShootingMode)}, |
537 | | {0x8004, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), IfdId::panasonicId, SectionId::makerTags, |
538 | | unsignedShort, -1, printValue}, |
539 | | {0x8005, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), IfdId::panasonicId, SectionId::makerTags, |
540 | | unsignedShort, -1, printValue}, |
541 | | {0x8006, "WBBlueLevel", N_("WB Blue Level"), N_("WB blue level"), IfdId::panasonicId, SectionId::makerTags, |
542 | | unsignedShort, -1, printValue}, |
543 | | {0x8007, "FlashFired", N_("Flash Fired"), N_("Flash Fired"), IfdId::panasonicId, SectionId::makerTags, |
544 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicFlashFired)}, |
545 | | {0x8008, "TextStamp3", N_("Text Stamp 3"), N_("Text Stamp 3"), IfdId::panasonicId, SectionId::makerTags, |
546 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)}, |
547 | | {0x8009, "TextStamp4", N_("Text Stamp 4"), N_("Text Stamp 4"), IfdId::panasonicId, SectionId::makerTags, |
548 | | unsignedShort, -1, EXV_PRINT_TAG(panasonicTextStamp)}, |
549 | | {0x8010, "BabyAge2", N_("Baby Age 2"), N_("Baby (or pet) age 2"), IfdId::panasonicId, SectionId::makerTags, |
550 | | asciiString, -1, print0x0033}, |
551 | | {0x8012, "Transform2", N_("Transform 2"), N_("Transform 2"), IfdId::panasonicId, SectionId::makerTags, undefined, |
552 | | -1, printValue}, |
553 | | // End of list marker |
554 | | {0xffff, "(UnknownPanasonicMakerNoteTag)", "(UnknownPanasonicMakerNoteTag)", N_("Unknown PanasonicMakerNote tag"), |
555 | | IfdId::panasonicId, SectionId::makerTags, asciiString, -1, printValue}, |
556 | | }; |
557 | | |
558 | | // tag Focus Mode |
559 | 0 | std::ostream& PanasonicMakerNote::print0x000f(std::ostream& os, const Value& value, const ExifData*) { |
560 | 0 | if (value.count() < 2 || value.typeId() != unsignedByte) { |
561 | 0 | return os << value; |
562 | 0 | } |
563 | 0 | const auto l0 = value.toInt64(0); |
564 | 0 | const auto l1 = value.toInt64(1); |
565 | 0 | if (l0 == 0 && l1 == 1) |
566 | 0 | os << _("Spot mode on or 9 area"); |
567 | 0 | else if (l0 == 0 && l1 == 16) |
568 | 0 | os << _("Spot mode off or 3-area (high speed)"); |
569 | 0 | else if (l0 == 0 && l1 == 23) |
570 | 0 | os << _("23-area"); |
571 | 0 | else if (l0 == 0 && l1 == 49) |
572 | 0 | os << _("49-area"); |
573 | 0 | else if (l0 == 0 && l1 == 225) |
574 | 0 | os << _("225-area"); |
575 | 0 | else if (l0 == 1 && l1 == 0) |
576 | 0 | os << _("Spot focusing"); |
577 | 0 | else if (l0 == 1 && l1 == 1) |
578 | 0 | os << _("5-area"); |
579 | 0 | else if (l0 == 16 && l1 == 0) |
580 | 0 | os << _("1-area"); |
581 | 0 | else if (l0 == 16 && l1 == 16) |
582 | 0 | os << _("1-area (high speed)"); |
583 | 0 | else if (l0 == 32 && l1 == 0) |
584 | 0 | os << _("3-area (auto)"); |
585 | 0 | else if (l0 == 32 && l1 == 1) |
586 | 0 | os << _("3-area (left)"); |
587 | 0 | else if (l0 == 32 && l1 == 2) |
588 | 0 | os << _("3-area (center)"); |
589 | 0 | else if (l0 == 32 && l1 == 3) |
590 | 0 | os << _("3-area (right)"); |
591 | 0 | else if (l0 == 64 && l1 == 0) |
592 | 0 | os << _("Face Detect"); |
593 | 0 | else if (l0 == 128 && l1 == 0) |
594 | 0 | os << _("Spot Focusing 2"); |
595 | 0 | else if (l0 == 240 && l1 == 0) |
596 | 0 | os << _("Tracking"); |
597 | 0 | else |
598 | 0 | os << value; |
599 | 0 | return os; |
600 | 0 | } // PanasonicMakerNote::print0x000f |
601 | | |
602 | | // tag White balance bias |
603 | 0 | std::ostream& PanasonicMakerNote::print0x0023(std::ostream& os, const Value& value, const ExifData*) { |
604 | 0 | return os << stringFormat("{:1}{}", value.toInt64() / 3, _(" EV")); |
605 | 0 | } // PanasonicMakerNote::print0x0023 |
606 | | |
607 | | // Time since power on |
608 | 0 | std::ostream& PanasonicMakerNote::print0x0029(std::ostream& os, const Value& value, const ExifData*) { |
609 | 0 | auto time = value.toInt64(); |
610 | 0 | return os << stringFormat("{:02}:{:02}:{:02}.{:02}", time / 360000, (time % 360000) / 6000, (time % 6000) / 100, |
611 | 0 | time % 100); |
612 | |
|
613 | 0 | } // PanasonicMakerNote::print0x0029 |
614 | | |
615 | | // baby age |
616 | 0 | std::ostream& PanasonicMakerNote::print0x0033(std::ostream& os, const Value& value, const ExifData*) { |
617 | 0 | if (value.toString() == "9999:99:99 00:00:00") { |
618 | 0 | os << N_("not set"); |
619 | 0 | } else { |
620 | 0 | os << value; |
621 | 0 | } |
622 | 0 | return os; |
623 | 0 | } // PanasonicMakerNote::print0x0033 |
624 | | |
625 | | // Travel days |
626 | 0 | std::ostream& PanasonicMakerNote::print0x0036(std::ostream& os, const Value& value, const ExifData*) { |
627 | 0 | if (value.toInt64() == 65535) |
628 | 0 | os << N_("not set"); |
629 | 0 | else |
630 | 0 | os << value; |
631 | 0 | return os; |
632 | 0 | } // PanasonicMakerNote::print0x0036 |
633 | | |
634 | | // Program ISO |
635 | 0 | std::ostream& PanasonicMakerNote::print0x003c(std::ostream& os, const Value& value, const ExifData*) { |
636 | 0 | switch (value.toInt64()) { |
637 | 0 | case 65534: |
638 | 0 | os << N_("Intelligent ISO"); |
639 | 0 | break; |
640 | 0 | case 65535: |
641 | 0 | os << N_("n/a"); |
642 | 0 | break; |
643 | 0 | default: |
644 | 0 | os << value; |
645 | 0 | break; |
646 | 0 | } |
647 | 0 | return os; |
648 | 0 | } // PanasonicMakerNote::print0x003c |
649 | | |
650 | 0 | std::ostream& PanasonicMakerNote::printPanasonicText(std::ostream& os, const Value& value, const ExifData*) { |
651 | 0 | if (value.size() > 0 && value.typeId() == undefined) { |
652 | 0 | for (size_t i = 0; i < value.size(); i++) { |
653 | 0 | if (value.toInt64(i) == 0) { |
654 | 0 | break; |
655 | 0 | } |
656 | 0 | os << static_cast<char>(value.toInt64(i)); |
657 | 0 | } |
658 | 0 | return os; |
659 | 0 | } |
660 | | |
661 | 0 | return os << value; |
662 | 0 | } // PanasonicMakerNote::printPanasonicText |
663 | | |
664 | | // Manometer Pressure |
665 | 0 | std::ostream& PanasonicMakerNote::printPressure(std::ostream& os, const Value& value, const ExifData*) { |
666 | 0 | if (value.toInt64() == 65535) |
667 | 0 | os << N_("infinite"); |
668 | 0 | else |
669 | 0 | os << value << N_(" hPa"); |
670 | 0 | return os; |
671 | 0 | } // PanasonicMakerNote::printPressure |
672 | | |
673 | 0 | std::ostream& PanasonicMakerNote::printAccelerometer(std::ostream& os, const Value& value, const ExifData*) { |
674 | | // value is stored as unsigned int, but should be read as int16_t. |
675 | 0 | const auto i = static_cast<int16_t>(value.toInt64()); |
676 | 0 | return os << i; |
677 | 0 | } // PanasonicMakerNote::printAccelerometer |
678 | | |
679 | 0 | std::ostream& PanasonicMakerNote::printRollAngle(std::ostream& os, const Value& value, const ExifData*) { |
680 | | // value is stored as unsigned int, but should be read as int16_t. |
681 | 0 | const auto i = static_cast<int16_t>(value.toInt64()); |
682 | 0 | return os << stringFormat("{:.1f}", i / 10.0); |
683 | 0 | } // PanasonicMakerNote::printRollAngle |
684 | | |
685 | 0 | std::ostream& PanasonicMakerNote::printPitchAngle(std::ostream& os, const Value& value, const ExifData*) { |
686 | | // value is stored as unsigned int, but should be read as int16_t. |
687 | 0 | const auto i = static_cast<int16_t>(value.toInt64()); |
688 | 0 | return os << stringFormat("{:.1f}", -i / 10.0); |
689 | 0 | } // PanasonicMakerNote::printPitchAngle |
690 | | |
691 | | // Panasonic MakerNote Tag Info |
692 | | constexpr TagInfo PanasonicMakerNote::tagInfoRaw_[] = { |
693 | | {0x0001, "Version", N_("Version"), N_("Panasonic raw version"), IfdId::panaRawId, SectionId::panaRaw, undefined, -1, |
694 | | printExifVersion}, |
695 | | {0x0002, "SensorWidth", N_("Sensor Width"), N_("Sensor width"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, |
696 | | -1, printValue}, |
697 | | {0x0003, "SensorHeight", N_("Sensor Height"), N_("Sensor height"), IfdId::panaRawId, SectionId::panaRaw, |
698 | | unsignedShort, -1, printValue}, |
699 | | {0x0004, "SensorTopBorder", N_("Sensor Top Border"), N_("Sensor top border"), IfdId::panaRawId, SectionId::panaRaw, |
700 | | unsignedShort, -1, printValue}, |
701 | | {0x0005, "SensorLeftBorder", N_("Sensor Left Border"), N_("Sensor left border"), IfdId::panaRawId, |
702 | | SectionId::panaRaw, unsignedShort, -1, printValue}, |
703 | | {0x0006, "ImageHeight", N_("Image Height"), N_("Image height"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, |
704 | | -1, printValue}, |
705 | | {0x0007, "ImageWidth", N_("Image Width"), N_("Image width"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, |
706 | | -1, printValue}, |
707 | | {0x0011, "RedBalance", N_("Red Balance"), N_("Red balance (found in Digilux 2 RAW images)"), IfdId::panaRawId, |
708 | | SectionId::panaRaw, unsignedShort, -1, printValue}, |
709 | | {0x0012, "BlueBalance", N_("Blue Balance"), N_("Blue balance"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, |
710 | | -1, printValue}, |
711 | | {0x0017, "ISOSpeed", N_("ISO Speed"), N_("ISO speed setting"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, |
712 | | -1, printValue}, |
713 | | {0x0024, "WBRedLevel", N_("WB Red Level"), N_("WB red level"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, |
714 | | -1, printValue}, |
715 | | {0x0025, "WBGreenLevel", N_("WB Green Level"), N_("WB green level"), IfdId::panaRawId, SectionId::panaRaw, |
716 | | unsignedShort, -1, printValue}, |
717 | | {0x0026, "WBBlueLevel", N_("WB Blue Level"), N_("WB blue level"), IfdId::panaRawId, SectionId::panaRaw, |
718 | | unsignedShort, -1, printValue}, |
719 | | {0x002e, "PreviewImage", N_("Preview Image"), N_("Preview image"), IfdId::panaRawId, SectionId::panaRaw, undefined, |
720 | | -1, printValue}, |
721 | | {0x010f, "Make", N_("Manufacturer"), N_("The manufacturer of the recording equipment"), IfdId::panaRawId, |
722 | | SectionId::panaRaw, asciiString, -1, printValue}, |
723 | | {0x0110, "Model", N_("Model"), N_("The model name or model number of the equipment"), IfdId::panaRawId, |
724 | | SectionId::panaRaw, asciiString, -1, printValue}, |
725 | | {0x0111, "StripOffsets", N_("Strip Offsets"), N_("Strip offsets"), IfdId::panaRawId, SectionId::panaRaw, |
726 | | unsignedLong, -1, printValue}, |
727 | | {0x0112, "Orientation", N_("Orientation"), N_("Orientation"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, |
728 | | -1, print0x0112}, |
729 | | {0x0116, "RowsPerStrip", N_("Rows Per Strip"), N_("The number of rows per strip"), IfdId::panaRawId, |
730 | | SectionId::panaRaw, unsignedShort, -1, printValue}, |
731 | | {0x0117, "StripByteCounts", N_("Strip Byte Counts"), N_("Strip byte counts"), IfdId::panaRawId, SectionId::panaRaw, |
732 | | unsignedLong, -1, printValue}, |
733 | | {0x0118, "RawDataOffset", N_("Raw Data Offset"), N_("Raw data offset"), IfdId::panaRawId, SectionId::panaRaw, |
734 | | unsignedLong, -1, printValue}, |
735 | | {0x0119, "DistortionInfo", N_("Distortion Info"), N_("Distortion info"), IfdId::panaRawId, SectionId::panaRaw, |
736 | | signedShort, -1, printValue}, |
737 | | {0x011c, "Gamma", N_("Gamma"), N_("Gamma"), IfdId::panaRawId, SectionId::panaRaw, unsignedShort, -1, printValue}, |
738 | | {0x013b, "Artist", N_("Artist"), N_("Artist"), IfdId::panaRawId, SectionId::panaRaw, asciiString, -1, printValue}, |
739 | | {0x8298, "Copyright", N_("Copyright"), N_("Copyright"), IfdId::panaRawId, SectionId::panaRaw, asciiString, -1, |
740 | | printValue}, |
741 | | {0x8769, "ExifTag", N_("Exif IFD Pointer"), N_("A pointer to the Exif IFD"), IfdId::panaRawId, SectionId::panaRaw, |
742 | | unsignedLong, -1, printValue}, |
743 | | {0x8825, "GPSTag", N_("GPS Info IFD Pointer"), N_("A pointer to the GPS Info IFD"), IfdId::panaRawId, |
744 | | SectionId::panaRaw, unsignedLong, -1, printValue}, |
745 | | // End of list marker |
746 | | {0xffff, "(UnknownPanasonicRawTag)", "(UnknownPanasonicRawTag)", N_("Unknown PanasonicRaw tag"), IfdId::panaRawId, |
747 | | SectionId::panaRaw, asciiString, -1, printValue}, |
748 | | }; |
749 | | |
750 | | } // namespace Exiv2::Internal |