Applied patch from Phil for hardcoded language fixes
This commit is contained in:
13
rtexif/CMakeLists.txt
Normal file
13
rtexif/CMakeLists.txt
Normal file
@@ -0,0 +1,13 @@
|
||||
include_directories (.)
|
||||
add_library (rtexif rtexif.cc stdattribs.cc nikonattribs.cc canonattribs.cc
|
||||
pentaxattribs.cc fujiattribs.cc sonyminoltaattribs.cc olympusattribs.cc)
|
||||
|
||||
IF (WIN32)
|
||||
set_target_properties (rtexif PROPERTIES COMPILE_FLAGS "-O3 -ffast-math -fexpensive-optimizations")
|
||||
ELSE (WIN32)
|
||||
set_target_properties (rtexif PROPERTIES COMPILE_FLAGS "-O3 -ffast-math -fexpensive-optimizations -fPIC")
|
||||
ENDIF (WIN32)
|
||||
|
||||
IF (BUILD_SHARED_LIBS)
|
||||
INSTALL(TARGETS rtexif DESTINATION ${LIBDIR})
|
||||
ENDIF (BUILD_SHARED_LIBS)
|
859
rtexif/canonattribs.cc
Normal file
859
rtexif/canonattribs.cc
Normal file
@@ -0,0 +1,859 @@
|
||||
/*
|
||||
* This file is part of RawTherapee.
|
||||
*
|
||||
* Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
|
||||
*
|
||||
* RawTherapee is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* RawTherapee is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _CANONATTRIBS_
|
||||
#define _CANONATTRIBS_
|
||||
|
||||
#include <rtexif.h>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <math.h>
|
||||
#include <sstream>
|
||||
#include <iomanip>
|
||||
|
||||
namespace rtexif {
|
||||
|
||||
class CAIntSerNumInterpreter : public Interpreter {
|
||||
public:
|
||||
CAIntSerNumInterpreter () {}
|
||||
virtual std::string toString (Tag* t) { return ""; }
|
||||
};
|
||||
|
||||
CAIntSerNumInterpreter caIntSerNumInterpreter;
|
||||
|
||||
class CAFocalLengthInterpreter : public Interpreter {
|
||||
public:
|
||||
CAFocalLengthInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
std::ostringstream str;
|
||||
str << "FocalType = " << t->toInt(0,SHORT) << std::endl;
|
||||
str << "FocalLength = " << t->toInt(2,SHORT) << std::endl;
|
||||
str << "FocalPlaneXSize = " << t->toInt(4,SHORT) << std::endl;
|
||||
str << "FocalPlaneYSize = " << t->toInt(6,SHORT);
|
||||
return str.str();
|
||||
}
|
||||
};
|
||||
CAFocalLengthInterpreter caFocalLengthInterpreter;
|
||||
|
||||
|
||||
class CACameraSettingsInterpreter : public Interpreter {
|
||||
std::map<int,std::string> machoices;
|
||||
std::map<int,std::string> qlchoices;
|
||||
std::map<int,std::string> fmchoices;
|
||||
std::map<int,std::string> cdchoices;
|
||||
std::map<int,std::string> fochoices;
|
||||
std::map<int,std::string> rmchoices;
|
||||
std::map<int,std::string> ischoices;
|
||||
std::map<int,std::string> mmchoices;
|
||||
std::map<int,std::string> dzchoices;
|
||||
std::map<int,std::string> emchoices;
|
||||
std::map<int,std::string> frchoices;
|
||||
std::map<int,std::string> afchoices;
|
||||
std::map<int,std::string> exchoices;
|
||||
std::map<int,std::string> fcchoices;
|
||||
std::map<int,std::string> aechoices;
|
||||
std::map<int,std::string> stchoices;
|
||||
std::map<int,std::string> smchoices;
|
||||
std::map<int,std::string> pechoices;
|
||||
std::map<int,std::string> mfchoices;
|
||||
std::map<int,std::string> choices;
|
||||
public:
|
||||
CACameraSettingsInterpreter () {
|
||||
machoices[1] = "Macro";
|
||||
machoices[2] = "Normal";
|
||||
qlchoices[1] = "Economy";
|
||||
qlchoices[2] = "Normal";
|
||||
qlchoices[3] = "Fine";
|
||||
qlchoices[4] = "RAW";
|
||||
qlchoices[5] = "Superfine";
|
||||
fmchoices[0] = "Off";
|
||||
fmchoices[1] = "Auto";
|
||||
fmchoices[2] = "On";
|
||||
fmchoices[3] = "Red-eye reduction";
|
||||
fmchoices[4] = "Slow-sync";
|
||||
fmchoices[5] = "Red-eye reduction (Auto)";
|
||||
fmchoices[6] = "Red-eye reduction (On)";
|
||||
fmchoices[16] = "External flash";
|
||||
cdchoices[0] = "Single";
|
||||
cdchoices[1] = "Continuous";
|
||||
cdchoices[2] = "Movie";
|
||||
cdchoices[3] = "Continuous, Speed Priority";
|
||||
cdchoices[4] = "Continuous, Low";
|
||||
cdchoices[5] = "Continuous, High";
|
||||
fochoices[0] = "One-shot AF";
|
||||
fochoices[1] = "AI Servo AF";
|
||||
fochoices[2] = "AI Focus AF";
|
||||
fochoices[3] = "Manual Focus";
|
||||
fochoices[4] = "Single";
|
||||
fochoices[5] = "Continuous";
|
||||
fochoices[6] = "Manual Focus";
|
||||
fochoices[16] = "Pan Focus";
|
||||
rmchoices[1] = "JPEG";
|
||||
rmchoices[2] = "CRW+THM";
|
||||
rmchoices[3] = "AVI+THM";
|
||||
rmchoices[4] = "TIF";
|
||||
rmchoices[5] = "TIF+JPEG";
|
||||
rmchoices[6] = "CR2";
|
||||
rmchoices[7] = "CR2+JPEG";
|
||||
ischoices[0] = "Large";
|
||||
ischoices[1] = "Medium";
|
||||
ischoices[2] = "Small";
|
||||
ischoices[5] = "Medium 1";
|
||||
ischoices[6] = "Medium 2";
|
||||
ischoices[7] = "Medium 3";
|
||||
ischoices[8] = "Postcard";
|
||||
ischoices[9] = "Widescreen";
|
||||
emchoices[0] = "Full auto ";
|
||||
emchoices[1] = "Manual ";
|
||||
emchoices[2] = "Landscape ";
|
||||
emchoices[3] = "Fast shutter ";
|
||||
emchoices[4] = "Slow shutter ";
|
||||
emchoices[5] = "Night ";
|
||||
emchoices[6] = "Gray Scale ";
|
||||
emchoices[7] = "Sepia ";
|
||||
emchoices[8] = "Portrait ";
|
||||
emchoices[9] = "Sports ";
|
||||
emchoices[10] = "Macro ";
|
||||
emchoices[11] = "Black & White";
|
||||
emchoices[12] = "Pan focus";
|
||||
emchoices[13] = "Vivid";
|
||||
emchoices[14] = "Neutral";
|
||||
emchoices[15] = "Flash Off";
|
||||
emchoices[16] = "Long Shutter";
|
||||
emchoices[17] = "Super Macro";
|
||||
emchoices[18] = "Foliage";
|
||||
emchoices[19] = "Indoor";
|
||||
emchoices[20] = "Fireworks";
|
||||
emchoices[21] = "Beach";
|
||||
emchoices[22] = "Underwater";
|
||||
emchoices[23] = "Snow";
|
||||
emchoices[24] = "Kids & Pets";
|
||||
emchoices[25] = "Night Snapshot";
|
||||
emchoices[26] = "Digital Macro";
|
||||
emchoices[27] = "My Colors";
|
||||
emchoices[28] = "Still Image";
|
||||
emchoices[30] = "Color Accent";
|
||||
emchoices[31] = "Color Swap";
|
||||
emchoices[32] = "Aquarium";
|
||||
emchoices[33] = "ISO 3200";
|
||||
dzchoices[0] = "None";
|
||||
dzchoices[1] = "2x";
|
||||
dzchoices[2] = "4x";
|
||||
dzchoices[3] = "Other";
|
||||
mmchoices[0] = "Default";
|
||||
mmchoices[1] = "Spot";
|
||||
mmchoices[2] = "Average";
|
||||
mmchoices[3] = "Evaluative";
|
||||
mmchoices[4] = "Partial";
|
||||
mmchoices[5] = "Center-weighted averaging";
|
||||
frchoices[0] = "Manual";
|
||||
frchoices[1] = "Auto";
|
||||
frchoices[2] = "Not Known";
|
||||
frchoices[3] = "Macro";
|
||||
frchoices[4] = "Very Close";
|
||||
frchoices[5] = "Close";
|
||||
frchoices[6] = "Middle Range";
|
||||
frchoices[7] = "Far Range";
|
||||
frchoices[8] = "Pan Focus";
|
||||
frchoices[9] = "Super Macro";
|
||||
frchoices[10] = "Infinity";
|
||||
afchoices[0x2005] = "Manual AF point selection ";
|
||||
afchoices[0x3000] = "None (MF)";
|
||||
afchoices[0x3001] = "Auto AF point selection ";
|
||||
afchoices[0x3002] = "Right ";
|
||||
afchoices[0x3003] = "Center ";
|
||||
afchoices[0x3004] = "Left ";
|
||||
afchoices[0x4001] = "Auto AF point selection ";
|
||||
afchoices[0x4006] = "Face Detect";
|
||||
exchoices[0] = "Easy";
|
||||
exchoices[1] = "Program AE";
|
||||
exchoices[2] = "Shutter speed priority AE";
|
||||
exchoices[3] = "Aperture-priority AE";
|
||||
exchoices[4] = "Manual";
|
||||
exchoices[5] = "Depth-of-field AE";
|
||||
exchoices[6] = "M-Dep";
|
||||
fcchoices[0] = "Single";
|
||||
fcchoices[1] = "Continuous";
|
||||
aechoices[0] = "Normal AE";
|
||||
aechoices[1] = "Exposure Compensation";
|
||||
aechoices[2] = "AE Lock";
|
||||
aechoices[3] = "AE Lock + Exposure Comp.";
|
||||
aechoices[4] = "No AE";
|
||||
stchoices[0] = "Off";
|
||||
stchoices[1] = "On";
|
||||
stchoices[2] = "On, Shot Only";
|
||||
stchoices[3] = "On, Panning";
|
||||
smchoices[0] = "Center";
|
||||
smchoices[1] = "AF Point";
|
||||
pechoices[0] = "Off";
|
||||
pechoices[1] = "Vivid";
|
||||
pechoices[2] = "Neutral";
|
||||
pechoices[3] = "Smooth";
|
||||
pechoices[4] = "Sepia";
|
||||
pechoices[5] = "B&W";
|
||||
pechoices[6] = "Custom";
|
||||
pechoices[100] = "My Color Data";
|
||||
mfchoices[0] = "N/A";
|
||||
mfchoices[0x500] = "Full";
|
||||
mfchoices[0x502] = "Medium";
|
||||
mfchoices[0x504] = "Low";
|
||||
mfchoices[0x7fff] = "N/A";
|
||||
choices[1] = "Canon EF 50mm f/1.8";
|
||||
choices[2] = "Canon EF 28mm f/2.8";
|
||||
choices[3] = "Canon EF 135mm f/2.8 Soft";
|
||||
choices[4] = "Canon EF 35-105mm f/3.5-4.5 or Sigma Lens";
|
||||
choices[5] = "Canon EF 35-70mm f/3.5-4.5";
|
||||
choices[6] = "Canon EF 28-70mm f/3.5-4.5 or Sigma or Tokina Lens";
|
||||
choices[7] = "Canon EF 100-300mm F5.6L";
|
||||
choices[8] = "Canon EF 100-300mm f/5.6 or Sigma or Tokina Lens";
|
||||
choices[9] = "Canon EF 70-210mm f/4 orSigma Lens";
|
||||
choices[10] = "Canon EF 50mm f/2.5 Macro or Sigma Lens";
|
||||
choices[11] = "Canon EF 35mm f/2";
|
||||
choices[13] = "Canon EF 15mm f/2.8";
|
||||
choices[14] = "Canon EF 50-200mm f/3.5-4.5L";
|
||||
choices[15] = "Canon EF 50-200mm f/3.5-4.5";
|
||||
choices[16] = "Canon EF 35-135mm f/3.5-4.5";
|
||||
choices[17] = "Canon EF 35-70mm f/3.5-4.5A";
|
||||
choices[18] = "Canon EF 28-70mm f/3.5-4.5";
|
||||
choices[20] = "Canon EF 100-200mm f/4.5A";
|
||||
choices[21] = "Canon EF 80-200mm f/2.8L";
|
||||
choices[22] = "Canon EF 20-35mm f/2.8L or Tokina 28-80mm F2.8";
|
||||
choices[23] = "Canon EF 35-105mm f/3.5-4.5";
|
||||
choices[24] = "Canon EF 35-80mm f/4-5.6 Power Zoom";
|
||||
choices[25] = "Canon EF 35-80mm f/4-5.6 Power Zoom";
|
||||
choices[26] = "Canon EF 100mm f/2.8 Macro or Cosina 100mm f/3.5 Macro AF or Tamron";
|
||||
choices[28] = "Tamron AF Aspherical 28-200mm f/3.8-5.6 or 28-75mm f/2.8 or 28-105mm f/2.8";
|
||||
choices[27] = "Canon EF 35-80mm f/4-5.6";
|
||||
choices[28] = "Canon EF 80-200mm f/4.5-5.6 or Tamron Lens";
|
||||
choices[29] = "Canon EF 50mm f/1.8 MkII";
|
||||
choices[30] = "Canon EF 35-105mm f/4.5-5.6";
|
||||
choices[31] = "Tamron SP AF 300mm f/2.8 LD IF";
|
||||
choices[32] = "Canon EF 24mm f/2.8 or Sigma 15mm f/2.8 EX Fisheye";
|
||||
choices[33] = "Voigtlander Ultron 40mm f/2 SLII Aspherical";
|
||||
choices[35] = "Canon EF 35-80mm f/4-5.6";
|
||||
choices[36] = "Canon EF 38-76mm f/4.5-5.6";
|
||||
choices[37] = "Canon EF 35-80mm f/4-5.6 or Tamron Lens";
|
||||
choices[38] = "Canon EF 80-200mm f/4.5-5.6";
|
||||
choices[39] = "Canon EF 75-300mm f/4-5.6";
|
||||
choices[40] = "Canon EF 28-80mm f/3.5-5.6";
|
||||
choices[41] = "Canon EF 28-90mm f/4-5.6";
|
||||
choices[42] = "Canon EF 28-200mm f/3.5-5.6 or Tamron AF 28-300mm f/3.5-6.3";
|
||||
choices[43] = "Canon EF 28-105mm f/4-5.6";
|
||||
choices[44] = "Canon EF 90-300mm f/4.5-5.6";
|
||||
choices[45] = "Canon EF-S 18-55mm f/3.5-5.6";
|
||||
choices[46] = "Canon EF 28-90mm f/4-5.6";
|
||||
choices[48] = "Canon EF-S 18-55mm f/3.5-5.6 IS";
|
||||
choices[49] = "Canon EF-S 55-250mm f/4-5.6 IS";
|
||||
choices[50] = "Canon EF-S 18-200mm f/3.5-5.6 IS";
|
||||
choices[51] = "Canon EF-S 18-135mm f/3.5-5.6 IS";
|
||||
choices[94] = "Canon TS-E 17mm f/4L";
|
||||
choices[95] = "Canon TS-E 24.0mm f/3.5 L II";
|
||||
choices[124] = "Canon MP-E 65mm f/2.8 1-5x Macro Photo";
|
||||
choices[125] = "Canon TS-E 24mm f/3.5L";
|
||||
choices[126] = "Canon TS-E 45mm f/2.8";
|
||||
choices[127] = "Canon TS-E 90mm f/2.8";
|
||||
choices[129] = "Canon EF 300mm f/2.8L";
|
||||
choices[130] = "Canon EF 50mm f/1.0L";
|
||||
choices[131] = "Canon EF 28-80mm f/2.8-4L or Sigma Lens";
|
||||
choices[132] = "Canon EF 1200mm f/5.6L";
|
||||
choices[134] = "Canon EF 600mm f/4L IS";
|
||||
choices[135] = "Canon EF 200mm f/1.8L";
|
||||
choices[136] = "Canon EF 300mm f/2.8L";
|
||||
choices[137] = "Canon EF 85mm f/1.2L or Sigma Lens";
|
||||
choices[138] = "Canon EF 28-80mm f/2.8-4L";
|
||||
choices[139] = "Canon EF 400mm f/2.8L";
|
||||
choices[140] = "Canon EF 500mm f/4.5L";
|
||||
choices[141] = "Canon EF 500mm f/4.5L";
|
||||
choices[142] = "Canon EF 300mm f/2.8L IS";
|
||||
choices[143] = "Canon EF 500mm f/4L IS";
|
||||
choices[144] = "Canon EF 35-135mm f/4-5.6 USM";
|
||||
choices[145] = "Canon EF 100-300mm f/4.5-5.6 USM";
|
||||
choices[146] = "Canon EF 70-210mm f/3.5-4.5 USM";
|
||||
choices[147] = "Canon EF 35-135mm f/4-5.6 USM";
|
||||
choices[148] = "Canon EF 28-80mm f/3.5-5.6 USM";
|
||||
choices[149] = "Canon EF 100mm f/2";
|
||||
choices[150] = "Canon EF 14mm f/2.8L or Sigma Lens";
|
||||
choices[151] = "Canon EF 200mm f/2.8L";
|
||||
choices[152] = "Canon EF 300mm f/4L IS or Sigma Lens";
|
||||
choices[153] = "Canon EF 35-350mm f/3.5-5.6L or Tamron or Sigma Lens";
|
||||
choices[154] = "Canon EF 20mm f/2.8 USM";
|
||||
choices[155] = "Canon EF 85mm f/1.8 USM";
|
||||
choices[156] = "Canon EF 28-105mm f/3.5-4.5 USM";
|
||||
choices[160] = "Canon EF 20-35mm f/3.5-4.5 USM or Tamron AF 19-35mm f/3.5-4.5";
|
||||
choices[161] = "Canon EF 28-70mm f/2.8L or Sigma or Tamron Lens";
|
||||
choices[162] = "Canon EF 200mm f/2.8L";
|
||||
choices[163] = "Canon EF 300mm f/4L";
|
||||
choices[164] = "Canon EF 400mm f/5.6L";
|
||||
choices[165] = "Canon EF 70-200mm f/2.8 L";
|
||||
choices[166] = "Canon EF 70-200mm f/2.8 L + x1.4";
|
||||
choices[167] = "Canon EF 70-200mm f/2.8 L + x2";
|
||||
choices[168] = "Canon EF 28mm f/1.8 USM";
|
||||
choices[169] = "Canon EF17-35mm f/2.8L or Sigma Lens";
|
||||
choices[170] = "Canon EF 200mm f/2.8L II";
|
||||
choices[171] = "Canon EF 300mm f/4L";
|
||||
choices[172] = "Canon EF 400mm f/5.6L";
|
||||
choices[173] = "Canon EF 180mm Macro f/3.5L or Sigma 180mm F3.5 or 150mm f/2.8 Macro";
|
||||
choices[174] = "Canon EF 135mm f/2L";
|
||||
choices[175] = "Canon EF 400mm f/2.8L";
|
||||
choices[176] = "Canon EF 24-85mm f/3.5-4.5 USM";
|
||||
choices[177] = "Canon EF 300mm f/4L IS";
|
||||
choices[178] = "Canon EF 28-135mm f/3.5-5.6 IS";
|
||||
choices[179] = "Canon EF 24mm f/1.4L USM";
|
||||
choices[180] = "Canon EF 35mm f/1.4L";
|
||||
choices[181] = "Canon EF 100-400mm f/4.5-5.6L IS + x1.4";
|
||||
choices[182] = "Canon EF 100-400mm f/4.5-5.6L IS + x2";
|
||||
choices[183] = "Canon EF 100-400mm f/4.5-5.6L IS";
|
||||
choices[184] = "Canon EF 400mm f/2.8L + x2";
|
||||
choices[185] = "Canon EF 600mm f/4L IS";
|
||||
choices[186] = "Canon EF 70-200mm f/4L";
|
||||
choices[187] = "Canon EF 70-200mm f/4L + 1.4x";
|
||||
choices[188] = "Canon EF 70-200mm f/4L + 2x";
|
||||
choices[189] = "Canon EF 70-200mm f/4L + 2.8x";
|
||||
choices[190] = "Canon EF 100mm f/2.8 Macro";
|
||||
choices[191] = "Canon EF 400mm f/4 DO IS";
|
||||
choices[193] = "Canon EF 35-80mm f/4-5.6 USM";
|
||||
choices[194] = "Canon EF 80-200mm f/4.5-5.6 USM";
|
||||
choices[195] = "Canon EF 35-105mm f/4.5-5.6 USM";
|
||||
choices[196] = "Canon EF 75-300mm f/4-5.6 USM";
|
||||
choices[197] = "Canon EF 75-300mm f/4-5.6 IS";
|
||||
choices[198] = "Canon EF 50mm f/1.4 USM";
|
||||
choices[199] = "Canon EF 28-80mm f/3.5-5.6 USM";
|
||||
choices[200] = "Canon EF 75-300mm f/4-5.6 USM";
|
||||
choices[201] = "Canon EF 28-80mm f/3.5-5.6 USM";
|
||||
choices[202] = "Canon EF 28-80 f/3.5-5.6 USM IV";
|
||||
choices[208] = "Canon EF 22-55mm f/4-5.6 USM";
|
||||
choices[209] = "Canon EF 55-200mm f/4.5-5.6";
|
||||
choices[210] = "Canon EF 28-90mm f/4-5.6 USM";
|
||||
choices[211] = "Canon EF 28-200mm f/3.5-5.6";
|
||||
choices[212] = "Canon EF 28-105mm f/4-5.6 USM";
|
||||
choices[213] = "Canon EF 90-300mm f/4.5-5.6";
|
||||
choices[214] = "Canon EF-S 18-55mm f/3.5-4.5 USM";
|
||||
choices[215] = "Canon EF 55-200mm f/4.5-5.6 II USM";
|
||||
choices[224] = "Canon EF 70-200mm f/2.8L IS USM";
|
||||
choices[225] = "Canon EF 70-200mm f/2.8L IS USM + x1.4";
|
||||
choices[226] = "Canon EF 70-200mm f/2.8L IS USM + x2";
|
||||
choices[227] = "Canon EF 70-200mm f/2.8L IS + 2.8x";
|
||||
choices[228] = "Canon EF 28-105mm f/3.5-4.5 USM";
|
||||
choices[229] = "Canon EF 16-35mm f/2.8L";
|
||||
choices[230] = "Canon EF 24-70mm f/2.8L";
|
||||
choices[231] = "Canon EF 17-40mm f/4L";
|
||||
choices[232] = "Canon EF 70-300mm f/4.5-5.6 DO IS USM";
|
||||
choices[233] = "Canon EF 28-300mm f/3.5-5.6L IS";
|
||||
choices[234] = "Canon EF-S 17-85mm f4-5.6 IS USM";
|
||||
choices[235] = "Canon EF-S10-22mm F3.5-4.5 USM";
|
||||
choices[236] = "Canon EF-S60mm F2.8 Macro USM";
|
||||
choices[237] = "Canon EF 24-105mm f/4L IS";
|
||||
choices[238] = "Canon EF 70-300mm f/4-5.6 IS USM";
|
||||
choices[239] = "Canon EF 85mm f/1.2L II USM";
|
||||
choices[240] = "Canon EF-S 17-55mm f/2.8 IS USM";
|
||||
choices[241] = "Canon EF 50mm f/1.2L USM";
|
||||
choices[242] = "Canon EF 70-200mm f/4L IS USM";
|
||||
choices[243] = "Canon EF 70-200mm f/4L IS + 1.4x";
|
||||
choices[244] = "Canon EF 70-200mm f/4L IS + 2x";
|
||||
choices[245] = "Canon EF 70-200mm f/4L IS + 2.8x";
|
||||
choices[246] = "Canon EF 16-35mm f/2.8L II";
|
||||
choices[247] = "Canon EF 14mm f/2.8L II USM";
|
||||
choices[248] = "Canon EF 200mm f/2L IS";
|
||||
choices[249] = "Canon EF 800mm f/5.6L IS";
|
||||
choices[250] = "Canon EF 24 f/1.4L II";
|
||||
choices[254] = "Canon EF 100mm f/2.8L Macro IS USM";
|
||||
choices[488] = "Canon EF-S 15-85mm f/3.5-5.6 IS USM";
|
||||
}
|
||||
virtual std::string toString (Tag* t) {
|
||||
std::ostringstream str;
|
||||
str << "MacroMode = " << machoices[t->toInt(2,SHORT)] << std::endl;
|
||||
str << "Self-timer = " << t->toInt(4,SHORT) << std::endl;
|
||||
str << "Quality = " << qlchoices[t->toInt(6,SHORT)] << std::endl;
|
||||
str << "CanonFlashMode = " << fmchoices[t->toInt(8,SHORT)] << std::endl;
|
||||
str << "ContinuousDrive = " << cdchoices[t->toInt(10,SHORT)] << std::endl;
|
||||
str << "FocusMode = " << fochoices[t->toInt(14,SHORT)] << std::endl;
|
||||
str << "RecordMode = " << rmchoices[t->toInt(18,SHORT)] << std::endl;
|
||||
str << "CanonImageSize = " << ischoices[t->toInt(20,SHORT)] << std::endl;
|
||||
str << "EasyMode = " << emchoices[t->toInt(22,SHORT)] << std::endl;
|
||||
str << "DigitalZoom = " << dzchoices[t->toInt(24,SHORT)] << std::endl;
|
||||
str << "Contrast = " << t->toInt(26,SHORT) << std::endl;
|
||||
str << "Saturation = " << t->toInt(28,SHORT) << std::endl;
|
||||
str << "Sharpness = " << t->toInt(30,SHORT) << std::endl;
|
||||
str << "CameraISO = " << t->toInt(32,SHORT) << std::endl;
|
||||
str << "MeteringMode = " << mmchoices[t->toInt(34,SHORT)] << std::endl;
|
||||
str << "FocusRange = " << frchoices[t->toInt(36,SHORT)] << std::endl;
|
||||
str << "AFPoint = " << afchoices[t->toInt(38,SHORT)] << std::endl;
|
||||
str << "CanonExposureMode = " << exchoices[t->toInt(40,SHORT)] << std::endl;
|
||||
str << "LensType = " << choices[t->toInt(44,SHORT)] << " (" << t->toInt(44,SHORT) << ")" << std::endl;
|
||||
str << "LongFocal = " << (double)t->toInt(46,SHORT)/t->toInt(50,SHORT) << " mm" << std::endl;
|
||||
str << "ShortFocal = " << (double)t->toInt(48,SHORT)/t->toInt(50,SHORT) << " mm" << std::endl;
|
||||
str << "FocalUnits = " << t->toInt(50,SHORT) << std::endl;
|
||||
str << "MaxAperture = " << pow (2, t->toInt(52,SHORT)/64.0) << std::endl;
|
||||
str << "MinAperture = " << pow (2, t->toInt(54,SHORT)/64.0) << std::endl;
|
||||
str << "FlashActivity = " << t->toInt(56,SHORT) << std::endl;
|
||||
str << "FlashBits = ";
|
||||
int f = t->toInt(58,SHORT);
|
||||
if (f&1)
|
||||
str << "Manual ";
|
||||
if (f&2)
|
||||
str << "TTL ";
|
||||
if (f&4)
|
||||
str << "A-TTL ";
|
||||
if (f&8)
|
||||
str << "E-TTL ";
|
||||
if (f&16)
|
||||
str << "FP sync enabled ";
|
||||
if (f&(1<<7))
|
||||
str << "2nd-curtain sync used ";
|
||||
if (f&(1<<11))
|
||||
str << "FP sync used ";
|
||||
if (f&(1<<13))
|
||||
str << "Built-in ";
|
||||
if (f&(1<<14))
|
||||
str << "External ";
|
||||
str << std::endl;
|
||||
str << "FocusContinuous = " << fcchoices[t->toInt(64,SHORT)] << std::endl;
|
||||
str << "AESetting = " << aechoices[t->toInt(66,SHORT)] << std::endl;
|
||||
str << "ImageStabilization = " << stchoices[t->toInt(68,SHORT)] << " (" << t->toInt(68,SHORT) << ")" << std::endl;
|
||||
str << "DisplayAperture = " << t->toInt(70,SHORT) << std::endl;
|
||||
str << "ZoomSourceWidth = " << t->toInt(72,SHORT) << std::endl;
|
||||
str << "ZoomTargetWidth = " << t->toInt(74,SHORT) << std::endl;
|
||||
str << "SpotMeteringMode = " << smchoices[t->toInt(78,SHORT)] << std::endl;
|
||||
str << "PhotoEffect = " << pechoices[t->toInt(80,SHORT)] << std::endl;
|
||||
str << "ManualFlashOutput = " << mfchoices[t->toInt(82,SHORT)] << std::endl;
|
||||
str << "ColorTone = " << t->toInt(84,SHORT);
|
||||
return str.str();
|
||||
}
|
||||
};
|
||||
CACameraSettingsInterpreter caCameraSettingsInterpreter;
|
||||
|
||||
|
||||
class CAProcessingInfoInterpreter : public Interpreter {
|
||||
std::map<int,std::string> tcchoices;
|
||||
std::map<int,std::string> sfchoices;
|
||||
std::map<int,std::string> wbchoices;
|
||||
std::map<int,std::string> pschoices;
|
||||
public:
|
||||
CAProcessingInfoInterpreter () {
|
||||
tcchoices[0] = "Standard";
|
||||
tcchoices[1] = "Manual";
|
||||
tcchoices[2] = "Custom";
|
||||
sfchoices[0] = "N/A";
|
||||
sfchoices[1] = "Lowest";
|
||||
sfchoices[2] = "Low";
|
||||
sfchoices[3] = "Standard";
|
||||
sfchoices[4] = "High";
|
||||
sfchoices[5] = "Highest";
|
||||
wbchoices[0] = "Auto";
|
||||
wbchoices[1] = "Daylight";
|
||||
wbchoices[2] = "Cloudy";
|
||||
wbchoices[3] = "Tungsten";
|
||||
wbchoices[4] = "Fluorescent";
|
||||
wbchoices[5] = "Flash";
|
||||
wbchoices[6] = "Custom";
|
||||
wbchoices[7] = "Black & White";
|
||||
wbchoices[8] = "Shade";
|
||||
wbchoices[9] = "Manual Temperature (Kelvin)";
|
||||
wbchoices[10] = "PC Set1";
|
||||
wbchoices[11] = "PC Set2";
|
||||
wbchoices[12] = "PC Set3";
|
||||
wbchoices[14] = "Daylight Fluorescent";
|
||||
wbchoices[15] = "Custom 1";
|
||||
wbchoices[16] = "Custom 2";
|
||||
wbchoices[17] = "Underwater";
|
||||
pschoices[0] = "None";
|
||||
pschoices[1] = "Standard ";
|
||||
pschoices[2] = "Set 1";
|
||||
pschoices[3] = "Set 2";
|
||||
pschoices[4] = "Set 3";
|
||||
pschoices[0x21] = "User Def. 1";
|
||||
pschoices[0x22] = "User Def. 2";
|
||||
pschoices[0x23] = "User Def. 3";
|
||||
pschoices[0x41] = "External 1";
|
||||
pschoices[0x42] = "External 2";
|
||||
pschoices[0x43] = "External 3";
|
||||
pschoices[0x81] = "Standard";
|
||||
pschoices[0x82] = "Portrait";
|
||||
pschoices[0x83] = "Landscape";
|
||||
pschoices[0x84] = "Neutral";
|
||||
pschoices[0x85] = "Faithful";
|
||||
pschoices[0x86] = "Monochrome";
|
||||
}
|
||||
virtual std::string toString (Tag* t) {
|
||||
std::ostringstream str;
|
||||
str << "ToneCurve = " << tcchoices[t->toInt(2,SHORT)] << std::endl;
|
||||
str << "Sharpness = " << t->toInt(4,SHORT) << std::endl;
|
||||
str << "SharpnessFrequency = " << sfchoices[t->toInt(6,SHORT)] << std::endl;
|
||||
str << "SensorRedLevel = " << t->toInt(8,SHORT) << std::endl;
|
||||
str << "SensorBlueLevel = " << t->toInt(10,SHORT) << std::endl;
|
||||
str << "WhiteBalanceRed = " << t->toInt(12,SHORT) << std::endl;
|
||||
str << "WhiteBalanceBlue = " << t->toInt(14,SHORT) << std::endl;
|
||||
str << "WhiteBalance = " << wbchoices[t->toInt(16,SHORT)] << std::endl;
|
||||
str << "ColorTemperature = " << t->toInt(18,SHORT) << std::endl;
|
||||
str << "PictureStyle = " << pschoices[t->toInt(20,SHORT)] << std::endl;
|
||||
str << "DigitalGain = " << t->toInt(22,SHORT) << std::endl;
|
||||
str << "WBShiftAB = " << t->toInt(24,SHORT) << std::endl;
|
||||
str << "WBShiftGM = " << t->toInt(26,SHORT);
|
||||
return str.str();
|
||||
}
|
||||
};
|
||||
CAProcessingInfoInterpreter caProcessingInfoInterpreter;
|
||||
|
||||
class CAShotInfoInterpreter : public Interpreter {
|
||||
std::map<short,std::string> sschoices;
|
||||
std::map<short,std::string> afchoices;
|
||||
std::map<short,std::string> aechoices;
|
||||
std::map<short,std::string> wbchoices;
|
||||
std::map<short,std::string> ctchoices;
|
||||
std::map<short,std::string> cmchoices;
|
||||
std::map<short,std::string> archoices;
|
||||
std::map<short,std::string> ndchoices;
|
||||
public:
|
||||
CAShotInfoInterpreter () {
|
||||
sschoices[0] = "Off";
|
||||
sschoices[1] = "Night Scene";
|
||||
sschoices[2] = "On";
|
||||
sschoices[3] = "None";
|
||||
afchoices[0x3000] = "None (MF)";
|
||||
afchoices[0x3001] = "Right";
|
||||
afchoices[0x3002] = "Center";
|
||||
afchoices[0x3003] = "Center+Right";
|
||||
afchoices[0x3004] = "Left";
|
||||
afchoices[0x3005] = "Left+Right";
|
||||
afchoices[0x3006] = "Left+Center";
|
||||
afchoices[0x3007] = "All";
|
||||
wbchoices[0] = "Auto";
|
||||
wbchoices[1] = "Daylight";
|
||||
wbchoices[2] = "Cloudy";
|
||||
wbchoices[3] = "Tungsten";
|
||||
wbchoices[4] = "Fluorescent";
|
||||
wbchoices[5] = "Flash";
|
||||
wbchoices[6] = "Custom";
|
||||
wbchoices[7] = "Black & White";
|
||||
wbchoices[8] = "Shade";
|
||||
wbchoices[9] = "Manual Temperature (Kelvin)";
|
||||
wbchoices[10] = "PC Set1";
|
||||
wbchoices[11] = "PC Set2";
|
||||
wbchoices[12] = "PC Set3";
|
||||
wbchoices[14] = "Daylight Fluorescent";
|
||||
wbchoices[15] = "Custom 1";
|
||||
wbchoices[16] = "Custom 2";
|
||||
wbchoices[17] = "Underwater";
|
||||
aechoices[-1] = "On ";
|
||||
aechoices[0] = "Off ";
|
||||
aechoices[1] = "On (shot 1)";
|
||||
aechoices[2] = "On (shot 2)";
|
||||
aechoices[3] = "On (shot 3)";
|
||||
cmchoices[0] = "n/a";
|
||||
cmchoices[1] = "Camera Local Control";
|
||||
cmchoices[3] = "Computer Remote Control";
|
||||
ctchoices[248] = "EOS High-end";
|
||||
ctchoices[250] = "Compact";
|
||||
ctchoices[252] = "EOS Mid-end";
|
||||
ctchoices[255] = "DV Camera";
|
||||
ctchoices[0x23] = "User Def. 3";
|
||||
archoices[-1] = "Rotated by Software";
|
||||
archoices[0] = "None";
|
||||
archoices[1] = "Rotate 90 CW";
|
||||
archoices[2] = "Rotate 180";
|
||||
archoices[3] = "Rotate 270 CW";
|
||||
ndchoices[0] = "Off";
|
||||
ndchoices[1] = "On";
|
||||
}
|
||||
virtual std::string toString (Tag* t) {
|
||||
std::ostringstream str;
|
||||
str << "AutoISO = " << t->toInt(2,SHORT) << std::endl;
|
||||
str << "BaseISO = " << pow (2, t->toInt(4,SHORT)/32.0 - 4) * 50 << std::endl;
|
||||
str << "MeasuredEV = " << t->toInt(6,SHORT) << std::endl;
|
||||
str << "TargetAperture = " << pow (2, t->toInt(8,SHORT)/64.0) << std::endl;
|
||||
str << "TargetExposureTime = " << pow (2, -t->toInt(10,SHORT)/32.0) << std::endl;
|
||||
str << "ExposureCompensation = " << t->toInt(12,SHORT)/32.0 << std::endl;
|
||||
str << "WhiteBalance = " << wbchoices[t->toInt(14,SHORT)] << std::endl;
|
||||
str << "SlowShutter = " << sschoices[t->toInt(16,SHORT)] << std::endl;
|
||||
str << "SequenceNumber = " << t->toInt(18,SHORT) << std::endl;
|
||||
str << "OpticalZoomCode = " << t->toInt(20,SHORT) << std::endl;
|
||||
str << "FlashGuideNumber = " << t->toInt(26,SHORT) << std::endl;
|
||||
str << "AFPointsInFocus = " << afchoices[t->toInt(28,SHORT)] << std::endl;
|
||||
str << "FlashExposureComp = " << t->toInt(30,SHORT) << std::endl;
|
||||
str << "AutoExposureBracketing = " << afchoices[t->toInt(32,SHORT)] << std::endl;
|
||||
str << "AEBBracketValue = " << t->toInt(34,SHORT) << std::endl;
|
||||
str << "ControlMode = " << cmchoices[t->toInt(36,SHORT)] << std::endl;
|
||||
str << "FocusDistanceUpper = " << t->toInt(38,SHORT) << std::endl;
|
||||
str << "FocusDistanceLower = " << t->toInt(40,SHORT) << std::endl;
|
||||
str << "FNumber = " << pow (2, t->toInt(42,SHORT)/64.0) << std::endl;
|
||||
str << "ExposureTime = " << pow (2, -t->toInt(44,SHORT)/32.0) << std::endl;
|
||||
str << "BulbDuration = " << t->toInt(48,SHORT) << std::endl;
|
||||
str << "CameraType = " << ctchoices[t->toInt(52,SHORT)] << std::endl;
|
||||
str << "AutoRotate = " << archoices[t->toInt(54,SHORT)] << std::endl;
|
||||
str << "NDFilter = " << ndchoices[t->toInt(56,SHORT)] << std::endl;
|
||||
str << "Self-timer2 = " << t->toInt(58,SHORT) << std::endl;
|
||||
str << "FlashOutput = " << t->toInt(66,SHORT);
|
||||
return str.str();
|
||||
}
|
||||
};
|
||||
CAShotInfoInterpreter caShotInfoInterpreter;
|
||||
|
||||
|
||||
class CAFileInfoInterpreter : public Interpreter {
|
||||
std::map<int,std::string> bmchoices;
|
||||
std::map<int,std::string> rjqchoices;
|
||||
std::map<int,std::string> rjschoices;
|
||||
std::map<int,std::string> nrchoices;
|
||||
std::map<int,std::string> wbchoices;
|
||||
std::map<int,std::string> fechoices;
|
||||
std::map<int,std::string> techoices;
|
||||
public:
|
||||
CAFileInfoInterpreter () {
|
||||
bmchoices[0] = "Off";
|
||||
bmchoices[1] = "AEB";
|
||||
bmchoices[2] = "FEB";
|
||||
bmchoices[3] = "ISO";
|
||||
bmchoices[4] = "WB";
|
||||
|
||||
rjqchoices[1] = "Economy";
|
||||
rjqchoices[2] = "Normal";
|
||||
rjqchoices[3] = "Fine";
|
||||
rjqchoices[4] = "RAW";
|
||||
rjqchoices[5] = "Superfine";
|
||||
|
||||
rjschoices[0] = "Large";
|
||||
rjschoices[1] = "Medium";
|
||||
rjschoices[2] = "Small";
|
||||
rjschoices[5] = "Medium 1";
|
||||
rjschoices[6] = "Medium 2";
|
||||
rjschoices[7] = "Medium 3";
|
||||
rjschoices[8] = "Postcard";
|
||||
rjschoices[9] = "Widescreen";
|
||||
|
||||
nrchoices[0] = "Off";
|
||||
nrchoices[1] = "On (mode 1)";
|
||||
nrchoices[2] = "On (mode 2)";
|
||||
nrchoices[3] = "On (mode 3)";
|
||||
nrchoices[4] = "On (mode 4)";
|
||||
|
||||
wbchoices[0] = "Off";
|
||||
wbchoices[1] = "On (shift AB)";
|
||||
wbchoices[2] = "On (shift GM)";
|
||||
|
||||
fechoices[0] = "None";
|
||||
fechoices[1] = "Yellow";
|
||||
fechoices[2] = "Orange";
|
||||
fechoices[3] = "Red";
|
||||
fechoices[4] = "Green";
|
||||
|
||||
techoices[0] = "None";
|
||||
techoices[1] = "Sepia";
|
||||
techoices[2] = "Blue";
|
||||
techoices[3] = "Purple";
|
||||
techoices[4] = "Green";
|
||||
|
||||
}
|
||||
virtual std::string toString (Tag* t) {
|
||||
|
||||
std::ostringstream str;
|
||||
str << "FileNumber = " << t->toInt(1,SHORT) << std::endl;
|
||||
str << "ShutterCount = " << t->toInt(0,LONG) << std::endl;
|
||||
str << "BracketMode = " << bmchoices[t->toInt(6,SHORT)] << std::endl;
|
||||
str << "BracketValue = " << t->toInt(8,SHORT) << std::endl;
|
||||
str << "BracketShotNumber = " << t->toInt(10,SHORT) << std::endl;
|
||||
str << "RawJpgQuality = " << rjqchoices[t->toInt(12,SHORT)] << std::endl;
|
||||
str << "RawJpgSize = " << rjschoices[t->toInt(14,SHORT)] << std::endl;
|
||||
str << "NoiseReduction = " << nrchoices[t->toInt(16,SHORT)] << std::endl;
|
||||
str << "WBBracketMode = " << t->toInt(18,SHORT) << std::endl;
|
||||
str << "WBBracketValueAB = " << t->toInt(24,SHORT) << std::endl;
|
||||
str << "FilterEffect = " << fechoices[t->toInt(26,SHORT)] << std::endl;
|
||||
str << "ToningEffect = " << techoices[t->toInt(30,SHORT)];
|
||||
return str.str();
|
||||
}
|
||||
};
|
||||
CAFileInfoInterpreter caFileInfoInterpreter;
|
||||
|
||||
class CAModelIDInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
CAModelIDInterpreter () {
|
||||
choices[0x1010000] = "PowerShot A30";
|
||||
choices[0x1040000] = "PowerShot S300 / Digital IXUS 300 / IXY Digital 300";
|
||||
choices[0x1060000] = "PowerShot A20";
|
||||
choices[0x1080000] = "PowerShot A10";
|
||||
choices[0x1090000] = "PowerShot S110 / Digital IXUS v / IXY Digital 200";
|
||||
choices[0x1100000] = "PowerShot G2";
|
||||
choices[0x1110000] = "PowerShot S40";
|
||||
choices[0x1120000] = "PowerShot S30";
|
||||
choices[0x1130000] = "PowerShot A40";
|
||||
choices[0x1140000] = "EOS D30";
|
||||
choices[0x1150000] = "PowerShot A100";
|
||||
choices[0x1160000] = "PowerShot S200 / Digital IXUS v2 / IXY Digital 200a";
|
||||
choices[0x1170000] = "PowerShot A200";
|
||||
choices[0x1180000] = "PowerShot S330 / Digital IXUS 330 / IXY Digital 300a";
|
||||
choices[0x1190000] = "PowerShot G3";
|
||||
choices[0x1210000] = "PowerShot S45";
|
||||
choices[0x1230000] = "PowerShot SD100 / Digital IXUS II / IXY Digital 30";
|
||||
choices[0x1240000] = "PowerShot S230 / Digital IXUS v3 / IXY Digital 320";
|
||||
choices[0x1250000] = "PowerShot A70";
|
||||
choices[0x1260000] = "PowerShot A60";
|
||||
choices[0x1270000] = "PowerShot S400 / Digital IXUS 400 / IXY Digital 400";
|
||||
choices[0x1290000] = "PowerShot G5";
|
||||
choices[0x1300000] = "PowerShot A300";
|
||||
choices[0x1310000] = "PowerShot S50";
|
||||
choices[0x1340000] = "PowerShot A80";
|
||||
choices[0x1350000] = "PowerShot SD10 / Digital IXUS i / IXY Digital L";
|
||||
choices[0x1360000] = "PowerShot S1 IS";
|
||||
choices[0x1370000] = "PowerShot Pro1";
|
||||
choices[0x1380000] = "PowerShot S70";
|
||||
choices[0x1390000] = "PowerShot S60";
|
||||
choices[0x1400000] = "PowerShot G6";
|
||||
choices[0x1410000] = "PowerShot S500 / Digital IXUS 500 / IXY Digital 500";
|
||||
choices[0x1420000] = "PowerShot A75";
|
||||
choices[0x1440000] = "PowerShot SD110 / Digital IXUS IIs / IXY Digital 30a";
|
||||
choices[0x1450000] = "PowerShot A400";
|
||||
choices[0x1470000] = "PowerShot A310";
|
||||
choices[0x1490000] = "PowerShot A85";
|
||||
choices[0x1520000] = "PowerShot S410 / Digital IXUS 430 / IXY Digital 450";
|
||||
choices[0x1530000] = "PowerShot A95";
|
||||
choices[0x1540000] = "PowerShot SD300 / Digital IXUS 40 / IXY Digital 50";
|
||||
choices[0x1550000] = "PowerShot SD200 / Digital IXUS 30 / IXY Digital 40";
|
||||
choices[0x1560000] = "PowerShot A520";
|
||||
choices[0x1570000] = "PowerShot A510";
|
||||
choices[0x1590000] = "PowerShot SD20 / Digital IXUS i5 / IXY Digital L2";
|
||||
choices[0x1640000] = "PowerShot S2 IS";
|
||||
choices[0x1650000] = "PowerShot SD430 / IXUS Wireless / IXY Wireless";
|
||||
choices[0x1660000] = "PowerShot SD500 / Digital IXUS 700 / IXY Digital 600";
|
||||
choices[0x1668000] = "EOS D60";
|
||||
choices[0x1700000] = "PowerShot SD30 / Digital IXUS i zoom / IXY Digital L3";
|
||||
choices[0x1740000] = "PowerShot A430";
|
||||
choices[0x1750000] = "PowerShot A410";
|
||||
choices[0x1760000] = "PowerShot S80";
|
||||
choices[0x1780000] = "PowerShot A620";
|
||||
choices[0x1790000] = "PowerShot A610";
|
||||
choices[0x1800000] = "PowerShot SD630 / Digital IXUS 65 / IXY Digital 80";
|
||||
choices[0x1810000] = "PowerShot SD450 / Digital IXUS 55 / IXY Digital 60";
|
||||
choices[0x1820000] = "PowerShot TX1";
|
||||
choices[0x1870000] = "PowerShot SD400 / Digital IXUS 50 / IXY Digital 55";
|
||||
choices[0x1880000] = "PowerShot A420";
|
||||
choices[0x1890000] = "PowerShot SD900 / Digital IXUS 900 Ti / IXY Digital 1000";
|
||||
choices[0x1900000] = "PowerShot SD550 / Digital IXUS 750 / IXY Digital 700";
|
||||
choices[0x1920000] = "PowerShot A700";
|
||||
choices[0x1940000] = "PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS";
|
||||
choices[0x1950000] = "PowerShot S3 IS";
|
||||
choices[0x1960000] = "PowerShot A540";
|
||||
choices[0x1970000] = "PowerShot SD600 / Digital IXUS 60 / IXY Digital 70";
|
||||
choices[0x1980000] = "PowerShot G7";
|
||||
choices[0x1990000] = "PowerShot A530";
|
||||
choices[0x2000000] = "PowerShot SD800 IS / Digital IXUS 850 IS / IXY Digital 900 IS";
|
||||
choices[0x2010000] = "PowerShot SD40 / Digital IXUS i7 / IXY Digital L4";
|
||||
choices[0x2020000] = "PowerShot A710 IS";
|
||||
choices[0x2030000] = "PowerShot A640";
|
||||
choices[0x2040000] = "PowerShot A630";
|
||||
choices[0x2090000] = "PowerShot S5 IS";
|
||||
choices[0x2100000] = "PowerShot A460";
|
||||
choices[0x2120000] = "PowerShot SD850 IS / Digital IXUS 950 IS / IXY Digital 810 IS";
|
||||
choices[0x2130000] = "PowerShot A570 IS";
|
||||
choices[0x2140000] = "PowerShot A560";
|
||||
choices[0x2150000] = "PowerShot SD750 / Digital IXUS 75 / IXY Digital 90";
|
||||
choices[0x2160000] = "PowerShot SD1000 / Digital IXUS 70 / IXY Digital 10";
|
||||
choices[0x2180000] = "PowerShot A550";
|
||||
choices[0x2190000] = "PowerShot A450";
|
||||
choices[0x2230000] = "PowerShot G9";
|
||||
choices[0x2240000] = "PowerShot A650 IS";
|
||||
choices[0x2260000] = "PowerShot A720 IS";
|
||||
choices[0x2290000] = "PowerShot SX100 IS";
|
||||
choices[0x2300000] = "PowerShot SD950 IS / Digital IXUS 960 IS / IXY Digital 2000 IS";
|
||||
choices[0x2310000] = "PowerShot SD870 IS / Digital IXUS 860 IS / IXY Digital 910 IS";
|
||||
choices[0x3010000] = "PowerShot Pro90 IS";
|
||||
choices[0x4040000] = "PowerShot G1";
|
||||
choices[0x6040000] = "PowerShot S100 / Digital IXUS / IXY Digital";
|
||||
choices[0x4007d675] = "HV10";
|
||||
choices[0x4007d777] = "iVIS DC50";
|
||||
choices[0x4007d778] = "iVIS HV20";
|
||||
choices[0x80000001] = "EOS-1D";
|
||||
choices[0x80000167] = "EOS-1DS";
|
||||
choices[0x80000168] = "EOS 10D";
|
||||
choices[0x80000169] = "EOS-1D Mark III";
|
||||
choices[0x80000170] = "EOS Digital Rebel / 300D / Kiss Digital";
|
||||
choices[0x80000174] = "EOS-1D Mark II";
|
||||
choices[0x80000175] = "EOS 20D";
|
||||
choices[0x80000188] = "EOS-1Ds Mark II";
|
||||
choices[0x80000189] = "EOS Digital Rebel XT / 350D / Kiss Digital N";
|
||||
choices[0x80000190] = "EOS 40D";
|
||||
choices[0x80000213] = "EOS 5D";
|
||||
choices[0x80000215] = "EOS-1Ds Mark III";
|
||||
choices[0x80000232] = "EOS-1D Mark II N";
|
||||
choices[0x80000234] = "EOS 30D";
|
||||
choices[0x80000236] = "EOS Digital Rebel XTi / 400D / Kiss Digital X";
|
||||
choices[0x80000254] = "EOS Rebel XS / 1000D / Kiss F";
|
||||
choices[0x80000261] = "EOS 50D";
|
||||
}
|
||||
};
|
||||
|
||||
CAModelIDInterpreter caModelIDInterpreter;
|
||||
|
||||
|
||||
const TagAttrib canonAttribs[] = {
|
||||
0, 1, 0, 0, 0x0001, "CanonCameraSettings", &caCameraSettingsInterpreter,
|
||||
0, 1, 0, 0, 0x0002, "CanonFocalLength", &caFocalLengthInterpreter,
|
||||
0, 1, 0, 0, 0x0003, "CanonFlashInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0004, "CanonShotInfo", &caShotInfoInterpreter,
|
||||
0, 1, 0, 0, 0x0005, "CanonPanorama", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0006, "CanonImageType", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0007, "CanonFirmwareVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0008, "FileNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0009, "OwnerName", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000a, "ColorInfoD30", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000c, "SerialNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000d, "CanonCameraInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000e, "CanonFileLength", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000f, "CustomFunctions", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0010, "CanonModelID", &caModelIDInterpreter,
|
||||
0, 1, 0, 0, 0x0012, "CanonAFInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0015, "SerialNumberFormat", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001c, "DateStampMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001d, "MyColors", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001e, "FirmwareRevision", &stdInterpreter,
|
||||
0, 3, 0, 0, 0x0024, "FaceDetect1", &stdInterpreter,
|
||||
0, 3, 0, 0, 0x0025, "FaceDetect2", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0026, "CanonAFInfo2", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0083, "OriginalDecisionData", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0090, "CustomFunctions1D", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0091, "PersonalFunctions", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0092, "PersonalFunctionValues", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0093, "CanonFileInfo", &caFileInfoInterpreter,
|
||||
0, 1, 0, 0, 0x0094, "AFPointsInFocus1D", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0095, "LensType", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0096, "InternalSerialNumber", &caIntSerNumInterpreter,
|
||||
0, 1, 0, 0, 0x0097, "DustRemovalData", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0099, "CustomFunctions2", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00a0, "ProccessingInfo", &caProcessingInfoInterpreter,
|
||||
0, 1, 0, 0, 0x00a1, "ToneCurveTable", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00a2, "SharpnessTable", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00a3, "SharpnessFreqTable", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00a4, "WhiteBalanceTable", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00a9, "ColorBalance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00ae, "ColorTemperature", &stdInterpreter,
|
||||
0, 3, 0, 0, 0x00b0, "CanonFlags", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00b1, "ModifiedInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00b2, "ToneCurveMatching", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00b3, "WhiteBalanceMatching", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00b4, "ColorSpace", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x00b6, "PreviewImageInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00d0, "VRDOffset", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00e0, "SensorInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x4001, "ColorBalance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x4002, "UnknownBlock1", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x4003, "ColorInfo", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x4005, "UnknownBlock2", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x4008, "BlackLevel", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
|
||||
};
|
||||
|
||||
#endif
|
263
rtexif/fujiattribs.cc
Normal file
263
rtexif/fujiattribs.cc
Normal file
@@ -0,0 +1,263 @@
|
||||
/*
|
||||
* This file is part of RawTherapee.
|
||||
*
|
||||
* Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
|
||||
*
|
||||
* RawTherapee is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* RawTherapee is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _FUJIATTRIBS_
|
||||
#define _FUJIATTRIBS_
|
||||
|
||||
#include <rtexif.h>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <math.h>
|
||||
#include <sstream>
|
||||
#include <iomanip>
|
||||
|
||||
namespace rtexif {
|
||||
|
||||
class FAOnOffInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FAOnOffInterpreter () {
|
||||
choices[0] = "Off";
|
||||
choices[1] = "On";
|
||||
}
|
||||
};
|
||||
FAOnOffInterpreter faOnOffInterpreter;
|
||||
|
||||
class FASharpnessInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FASharpnessInterpreter () {
|
||||
choices[1] = "Soft";
|
||||
choices[2] = "Soft2";
|
||||
choices[3] = "Normal";
|
||||
choices[4] = "Hard";
|
||||
choices[5] = "Hard2";
|
||||
choices[0x82] = "Medium Soft";
|
||||
choices[0x84] = "Medium Hard";
|
||||
choices[0x8000] = "Film Simulation";
|
||||
choices[0xffff] = "n/a";
|
||||
}
|
||||
};
|
||||
FASharpnessInterpreter faSharpnessInterpreter;
|
||||
|
||||
class FAWhiteBalanceInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FAWhiteBalanceInterpreter () {
|
||||
choices[0] = "Auto";
|
||||
choices[0x100] = "Daylight";
|
||||
choices[0x200] = "Cloudy";
|
||||
choices[0x300] = "Daylight Fluorescent";
|
||||
choices[0x301] = "Day White Fluorescent";
|
||||
choices[0x302] = "White Fluorescent";
|
||||
choices[0x303] = "Warm White Fluorescent";
|
||||
choices[0x304] = "Living Room Warm White Fluorescent";
|
||||
choices[0x400] = "Incandescent";
|
||||
choices[0x500] = "Flash";
|
||||
choices[0xf00] = "Custom";
|
||||
choices[0xf01] = "Custom2";
|
||||
choices[0xf02] = "Custom3";
|
||||
choices[0xf03] = "Custom4";
|
||||
choices[0xf04] = "Custom5";
|
||||
choices[0xff0] = "Kelvin";
|
||||
}
|
||||
};
|
||||
FAWhiteBalanceInterpreter faWhiteBalanceInterpreter;
|
||||
|
||||
class FASaturationInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FASaturationInterpreter () {
|
||||
choices[0] = "Normal";
|
||||
choices[0x80] = "Medium High";
|
||||
choices[0x100] = "High";
|
||||
choices[0x180] = "Medium Low";
|
||||
choices[0x200] = "Low";
|
||||
choices[0x300] = "None (B&W)";
|
||||
choices[0x8000] = "Film Simulation";
|
||||
}
|
||||
};
|
||||
FASaturationInterpreter faSaturationInterpreter;
|
||||
|
||||
class FAContrastInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FAContrastInterpreter () {
|
||||
choices[0] = "Normal";
|
||||
choices[0x80] = "Medium High";
|
||||
choices[0x100] = "High";
|
||||
choices[0x180] = "Medium Low";
|
||||
choices[0x200] = "Low";
|
||||
choices[0x8000] = "Film Simulation";
|
||||
}
|
||||
};
|
||||
FAContrastInterpreter faContrastInterpreter;
|
||||
|
||||
class FAContrast2Interpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FAContrast2Interpreter () {
|
||||
choices[0] = "Normal";
|
||||
choices[0x100] = "High";
|
||||
choices[0x300] = "Low";
|
||||
}
|
||||
};
|
||||
FAContrast2Interpreter faContrast2Interpreter;
|
||||
|
||||
class FANoiseReductionInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FANoiseReductionInterpreter () {
|
||||
choices[0x40] = "Low";
|
||||
choices[0x80] = "Normal";
|
||||
}
|
||||
};
|
||||
FANoiseReductionInterpreter faNoiseReductionInterpreter;
|
||||
|
||||
class FAFlashInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FAFlashInterpreter () {
|
||||
choices[0] = "Auto";
|
||||
choices[1] = "On";
|
||||
choices[2] = "Off";
|
||||
choices[3] = "Red-eye reduction";
|
||||
choices[4] = "External";
|
||||
}
|
||||
};
|
||||
FAFlashInterpreter faFlashInterpreter;
|
||||
|
||||
class FAFocusModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FAFocusModeInterpreter () {
|
||||
choices[0] = "Auto";
|
||||
choices[1] = "Manual";
|
||||
}
|
||||
};
|
||||
FAFocusModeInterpreter faFocusModeInterpreter;
|
||||
|
||||
class FAColorModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FAColorModeInterpreter () {
|
||||
choices[0] = "Standard";
|
||||
choices[0x10] = "Chrome";
|
||||
choices[0x30] = "B & W";
|
||||
}
|
||||
};
|
||||
FAColorModeInterpreter faColorModeInterpreter;
|
||||
|
||||
class FADynamicRangeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FADynamicRangeInterpreter () {
|
||||
choices[1] = "Standard";
|
||||
choices[3] = "Wide";
|
||||
}
|
||||
};
|
||||
FADynamicRangeInterpreter faDynamicRangeInterpreter;
|
||||
|
||||
class FAFilmModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FAFilmModeInterpreter () {
|
||||
choices[0] = "F0/Standard";
|
||||
choices[0x100] = "F1/Studio Portrait";
|
||||
choices[0x110] = "F1a/Studio Portrait Enhanced Saturation";
|
||||
choices[0x120] = "F1b/Studio Portrait Smooth Skin Tone";
|
||||
choices[0x130] = "F1c/Studio Portrait Increased Sharpness ";
|
||||
choices[0x200] = "F2/Fujichrome";
|
||||
choices[0x300] = "F3/Studio Portrait Ex";
|
||||
choices[0x400] = "F4/Velvia";
|
||||
}
|
||||
};
|
||||
FAFilmModeInterpreter faFilmModeInterpreter;
|
||||
|
||||
class FADRSettingInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FADRSettingInterpreter () {
|
||||
choices[0] = "Auto (100-400%)";
|
||||
choices[0x1] = "RAW";
|
||||
choices[0x100] = "Standard (100%)";
|
||||
choices[0x200] = "Wide1 (230%)";
|
||||
choices[0x201] = "Wide2 (400%)";
|
||||
choices[0x8000] = "Film Simulation";
|
||||
}
|
||||
};
|
||||
FADRSettingInterpreter faDRSettingInterpreter;
|
||||
|
||||
class FAPictureModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
FAPictureModeInterpreter () {
|
||||
choices[0] = "Auto";
|
||||
choices[1] = "Portrait";
|
||||
choices[2] = "Landscape";
|
||||
choices[3] = "Macro";
|
||||
choices[4] = "Sports";
|
||||
choices[5] = "Night Scene";
|
||||
choices[6] = "Program AE";
|
||||
choices[7] = "Natural Light";
|
||||
choices[8] = "Anti-blur";
|
||||
choices[9] = "Beach & Snow";
|
||||
choices[10] = "Sunset";
|
||||
choices[11] = "Museum";
|
||||
choices[12] = "Party";
|
||||
choices[13] = "Flower";
|
||||
choices[14] = "Text";
|
||||
choices[15] = "Natural Light & Flash";
|
||||
choices[16] = "Beach";
|
||||
choices[17] = "Fireworks";
|
||||
choices[18] = "Underwater";
|
||||
choices[0x100] = "Aperture-priority AE";
|
||||
choices[0x200] = "Shutter speed priority AE";
|
||||
choices[0x300] = "Manual";
|
||||
}
|
||||
};
|
||||
FAPictureModeInterpreter faPictureModeInterpreter;
|
||||
|
||||
|
||||
|
||||
const TagAttrib fujiAttribs[] = {
|
||||
0, 1, 0, 0, 0x0000, "Version", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0010, "InternalSerialNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1000, "Quality", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1001, "Sharpness", &faSharpnessInterpreter,
|
||||
0, 1, 0, 0, 0x1002, "WhiteBalance", &faWhiteBalanceInterpreter,
|
||||
0, 1, 0, 0, 0x1003, "Saturation", &faSaturationInterpreter,
|
||||
0, 1, 0, 0, 0x1004, "Contrast", &faContrastInterpreter,
|
||||
0, 1, 0, 0, 0x1005, "ColorTemperature", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1006, "Contrast2", &faContrast2Interpreter,
|
||||
0, 1, 0, 0, 0x100a, "WhiteBalanceFineTune", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x100b, "NoiseReduction", &faNoiseReductionInterpreter,
|
||||
0, 1, 0, 0, 0x100b, "FujiFlashMode", &faFlashInterpreter,
|
||||
0, 1, 0, 0, 0x1011, "FlashExposureComp", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1020, "Macro", &faOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x1021, "FocusMode", &faFocusModeInterpreter,
|
||||
0, 1, 0, 0, 0x1023, "FocusPixel", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1030, "SlowSync", &faOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x1031, "PictureMode", &faPictureModeInterpreter,
|
||||
0, 1, 0, 0, 0x1100, "AutoBracketing", &faOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x1101, "SequenceNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1210, "ColorMode", &faColorModeInterpreter,
|
||||
0, 1, 0, 0, 0x1300, "BlurWarning", &faOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x1301, "FocusWarning", &faOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x1302, "ExposureWarning", &faOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x1400, "DynamicRange", &faDynamicRangeInterpreter,
|
||||
0, 1, 0, 0, 0x1401, "FilmMode", &faFilmModeInterpreter,
|
||||
0, 1, 0, 0, 0x1402, "DynamicRangeSetting", &faDRSettingInterpreter,
|
||||
0, 1, 0, 0, 0x1403, "DevelopmentDynamicRange", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1404, "MinFocalLength", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1405, "MaxFocalLength", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1406, "MaxApertureAtMinFocal", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1407, "MaxApertureAtMaxFocal", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x8000, "FileSource", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x8002, "OrderNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x8003, "FrameNumber", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
};
|
||||
|
||||
#endif
|
718
rtexif/nikonattribs.cc
Normal file
718
rtexif/nikonattribs.cc
Normal file
@@ -0,0 +1,718 @@
|
||||
/*
|
||||
* This file is part of RawTherapee.
|
||||
*
|
||||
* Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
|
||||
*
|
||||
* RawTherapee is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* RawTherapee is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _NIKONATTRIBS_
|
||||
#define _NIKONATTRIBS_
|
||||
|
||||
#include <rtexif.h>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <math.h>
|
||||
#include <sstream>
|
||||
#include <iomanip>
|
||||
#include <string.h>
|
||||
|
||||
namespace rtexif {
|
||||
|
||||
class NAISOInterpreter : public Interpreter {
|
||||
public:
|
||||
NAISOInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
sprintf (buffer, "%d", t->toInt(2));
|
||||
return buffer;
|
||||
}
|
||||
};
|
||||
NAISOInterpreter naISOInterpreter;
|
||||
|
||||
class NALensTypeInterpreter : public Interpreter {
|
||||
public:
|
||||
NALensTypeInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
int a = t->toInt();
|
||||
std::ostringstream str;
|
||||
str << "MF = " << (a&1 ? "Yes" : "No") << std::endl;
|
||||
str << "D = " << (a&2 ? "Yes" : "No") << std::endl;
|
||||
str << "G = " << (a&4 ? "Yes" : "No") << std::endl;
|
||||
str << "VR = " << (a&8 ? "Yes" : "No");
|
||||
return str.str();
|
||||
}
|
||||
};
|
||||
NALensTypeInterpreter naLensTypeInterpreter;
|
||||
|
||||
class NAFlashModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
NAFlashModeInterpreter () {
|
||||
choices[0] = "Did Not Fire";
|
||||
choices[1] = "Fired, Manual";
|
||||
choices[7] = "Fired, External";
|
||||
choices[8] = "Fired, Commander Mode";
|
||||
choices[9] = "Fired, TTL Mode";
|
||||
}
|
||||
};
|
||||
NAFlashModeInterpreter naFlashModeInterpreter;
|
||||
|
||||
class NAHiISONRInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
NAHiISONRInterpreter () {
|
||||
choices[0] = "Off";
|
||||
choices[1] = "Minimal";
|
||||
choices[2] = "Low";
|
||||
choices[4] = "Normal";
|
||||
choices[6] = "High";
|
||||
}
|
||||
};
|
||||
NAHiISONRInterpreter naHiISONRInterpreter;
|
||||
|
||||
class NAShootingModeInterpreter : public Interpreter {
|
||||
public:
|
||||
NAShootingModeInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
int a = t->toInt();
|
||||
std::ostringstream str;
|
||||
str << "Continuous = " << (a&1 ? "Yes" : "No") << std::endl;
|
||||
str << "Delay = " << (a&2 ? "Yes" : "No") << std::endl;
|
||||
str << "PC Control = " << (a&4 ? "Yes" : "No") << std::endl;
|
||||
str << "Exposure Bracketing = " << (a&8 ? "Yes" : "No") << std::endl;
|
||||
str << "Auto ISO = " << (a&16 ? "Yes" : "No") << std::endl;
|
||||
str << "White-Balance Bracketing = " << (a&32 ? "Yes" : "No") << std::endl;
|
||||
str << "IR Control = " << (a&64 ? "Yes" : "No");
|
||||
return str.str();
|
||||
}
|
||||
};
|
||||
NAShootingModeInterpreter naShootingModeInterpreter;
|
||||
|
||||
class NAAFInfoInterpreter : public Interpreter {
|
||||
std::map<int,std::string> amchoices;
|
||||
std::map<int,std::string> afpchoices;
|
||||
public:
|
||||
NAAFInfoInterpreter () {
|
||||
amchoices[0] = "Single Area";
|
||||
amchoices[1] = "Dynamic Area";
|
||||
amchoices[2] = "Dynamic Area, Closest Subject";
|
||||
amchoices[3] = "Group Dynamic";
|
||||
amchoices[4] = "Single Area (wide)";
|
||||
amchoices[5] = "Dynamic Area (wide)";
|
||||
afpchoices[0] = "Center";
|
||||
afpchoices[1] = "Top";
|
||||
afpchoices[2] = "Bottom";
|
||||
afpchoices[3] = "Left";
|
||||
afpchoices[4] = "Right";
|
||||
afpchoices[5] = "Upper-left";
|
||||
afpchoices[6] = "Upper-right";
|
||||
afpchoices[7] = "Lower-left";
|
||||
afpchoices[8] = "Lower-right";
|
||||
afpchoices[9] = "Far Left";
|
||||
afpchoices[10] = "Far Right";
|
||||
}
|
||||
virtual std::string toString (Tag* t) {
|
||||
int am = t->toInt (0, BYTE);
|
||||
int afp = t->toInt (1, BYTE);
|
||||
int aff = t->toInt (2, SHORT);
|
||||
std::ostringstream str;
|
||||
str << "AFAreaMode = " << amchoices[am] << std::endl;
|
||||
str << "AFAreaMode = " << afpchoices[afp] << std::endl;
|
||||
|
||||
std::ostringstream af;
|
||||
if (aff&1)
|
||||
if (af.str()=="") af << "Center";
|
||||
else af << ", Center";
|
||||
else if (aff&2)
|
||||
if (af.str()=="") af << "Top";
|
||||
else af << ", Top";
|
||||
else if (aff&4)
|
||||
if (af.str()=="") af << "Bottom";
|
||||
else af << ", Bottom";
|
||||
else if (aff&8)
|
||||
if (af.str()=="") af << "Left";
|
||||
else af << ", Left";
|
||||
else if (aff&16)
|
||||
if (af.str()=="") af << "Right";
|
||||
else af << ", Right";
|
||||
else if (aff&32)
|
||||
if (af.str()=="") af << "Upper-left";
|
||||
else af << ", Upper-left";
|
||||
else if (aff&64)
|
||||
if (af.str()=="") af << "Upper-right";
|
||||
else af << ", Upper-right";
|
||||
else if (aff&128)
|
||||
if (af.str()=="") af << " Lower-left";
|
||||
else af << ", Lower-left";
|
||||
else if (aff&256)
|
||||
if (af.str()=="") af << "Lower-right";
|
||||
else af << ", Lower-right";
|
||||
else if (aff&512)
|
||||
if (af.str()=="") af << "Far Left";
|
||||
else af << ", Far Left";
|
||||
else if (aff&1024)
|
||||
if (af.str()=="") af << "Far Right";
|
||||
else af << ", Far Right";
|
||||
|
||||
str << "AFPointsInFocus = " << af.str();
|
||||
return str.str();
|
||||
}
|
||||
};
|
||||
NAAFInfoInterpreter naAFInfoInterpreter;
|
||||
|
||||
class NALensDataInterpreter : public Interpreter {
|
||||
std::map<std::string,std::string> lenses;
|
||||
public:
|
||||
NALensDataInterpreter () {
|
||||
lenses["00 00 00 00 00 00 00 01"] = "Manual Lens No CPU ";
|
||||
lenses["00 00 00 00 00 00 E1 12"] = "TC-17E II ";
|
||||
lenses["00 00 00 00 00 00 F1 0C"] = "TC-14E [II] or Sigma APO Tele Converter 1.4x EX DG or Kenko Teleplus PRO 300 DG 1.4x";
|
||||
lenses["00 00 00 00 00 00 F2 18"] = "TC-20E [II] or Sigma APO Tele Converter 2x EX DG or Kenko Teleplus PRO 300 DG 2.0x";
|
||||
lenses["00 36 1C 2D 34 3C 00 06"] = "Tamron SP AF11-18mm f/4.5-5.6 Di II LD Aspherical (IF)";
|
||||
lenses["00 3C 1F 37 30 30 00 06"] = "Tokina AT-X 124 AF PRO DX - AF 12-24mm F4";
|
||||
lenses["00 3E 80 A0 38 3F 00 02"] = "Tamron SP AF200-500mm f/5-6.3 Di LD (IF)";
|
||||
lenses["00 3F 2D 80 2B 40 00 06"] = "Tamron AF18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF)";
|
||||
lenses["00 3F 2D 80 2C 40 00 06"] = "Tamron AF18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) Macro";
|
||||
lenses["00 3F 80 A0 38 3F 00 02"] = "Tamron SP AF200-500mm f/5-6.3 Di";
|
||||
lenses["00 40 18 2B 2C 34 00 06"] = "Tokina AT-X 107 DX Fish-Eye - AF 10-17mm F3.5-4.5";
|
||||
lenses["00 40 2A 72 2C 3C 00 06"] = "Tokina AT-X 16.5-135 DX (AF 16.5-135mm F3.5-5.6)";
|
||||
lenses["00 40 2B 2B 2C 2C 00 02"] = "Tokina AT-X 17 AF PRO - AF 17mm F3.5";
|
||||
lenses["00 40 2D 80 2C 40 00 06"] = "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF) Macro (A14NII)";
|
||||
lenses["00 40 2D 88 2C 40 00 06"] = "Tamron AF 18-250mm f/3.5-6.3 Di II LD Aspherical (IF) Macro (A18NII)";
|
||||
lenses["00 40 2D 88 2C 40 62 06"] = "Tamron AF 18-250mm f/3.5-6.3 Di II LD Aspherical (IF) Macro (A18)";
|
||||
lenses["00 40 31 31 2C 2C 00 00"] = "Voigtlander Color Skopar 20mm F3.5 SLII Aspherical";
|
||||
lenses["00 44 60 98 34 3C 00 02"] = "Tokina AT-X 840D 80-400mm F4.5-5.6";
|
||||
lenses["00 47 10 10 24 24 00 00"] = "Fisheye Nikkor 8mm f/2.8 AiS";
|
||||
lenses["00 47 44 44 24 24 00 06"] = "Tokina AT-X M35 PRO DX (AF 35mm f/2.8 Macro)";
|
||||
lenses["00 47 53 80 30 3C 00 06"] = "Tamron AF55-200mm f/4-5.6 Di II LD";
|
||||
lenses["00 48 1C 29 24 24 00 06"] = "Tokina AT-X 116 PRO DX (AF 11-16mm f/2.8)";
|
||||
lenses["00 48 29 50 24 24 00 06"] = "Tokina AT-X 165 PRO DX - AF 16-50mm F2.8";
|
||||
lenses["00 48 3C 60 24 24 00 02"] = "Tokina AT-X 280 AF PRO 28-80mm F2.8 Aspherical";
|
||||
lenses["00 48 3C 6A 24 24 00 02"] = "Tamron SP AF28-105mm f/2.8";
|
||||
lenses["00 48 50 50 18 18 00 00"] = "Nikkor H 50mm f/2";
|
||||
lenses["00 48 50 72 24 24 00 06"] = "Tokina AT-X 535 PRO DX - AF 50-135mm F2.8";
|
||||
lenses["00 48 5C 8E 30 3C 00 06"] = "Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2 (A17)";
|
||||
lenses["00 48 68 68 24 24 00 00"] = "Series E 100mm f/2.8";
|
||||
lenses["00 48 80 80 30 30 00 00"] = "Nikkor 200mm f/4 AiS";
|
||||
lenses["00 49 30 48 22 2B 00 02"] = "Tamron SP AF20-40mm f/2.7-3.5";
|
||||
lenses["00 4C 6A 6A 20 20 00 00"] = "Nikkor 105mm f/2.5 AiS";
|
||||
lenses["00 4C 7C 7C 2C 2C 00 02"] = "Tamron SP AF180mm f/3.5 Di Model B01";
|
||||
lenses["00 53 2B 50 24 24 00 06"] = "Tamron SP AF17-50mm f/2.8 (A16)";
|
||||
lenses["00 54 2B 50 24 24 00 06"] = "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical (IF) (A16NII)";
|
||||
lenses["00 54 44 44 0C 0C 00 00"] = "Nikkor 35mm f/1.4 AiS";
|
||||
lenses["00 54 48 48 18 18 00 00"] = "Voigtlander Ultron 40mm F2 SLII Aspherical";
|
||||
lenses["00 54 55 55 0C 0C 00 00"] = "Voigtlander Nokton 58mm F1.4 SLII";
|
||||
lenses["00 54 56 56 30 30 00 00"] = "Coastal Optical Systems 60mm 1:4 UV-VIS-IR Macro Apo";
|
||||
lenses["00 54 68 68 24 24 00 02"] = "Tokina AT-X M100 PRO D - 100mm F2.8";
|
||||
lenses["00 54 8E 8E 24 24 00 02"] = "Tokina AT-X 300 AF PRO 300mm F2.8";
|
||||
lenses["01 00 00 00 00 00 02 00"] = "AF Teleconverter TC-16A 1.6x";
|
||||
lenses["01 00 00 00 00 00 08 00"] = "AF Teleconverter TC-16A 1.6x";
|
||||
lenses["01 58 50 50 14 14 02 00"] = "AF Nikkor 50mm f/1.8";
|
||||
lenses["02 2F 98 98 3D 3D 02 00"] = "Sigma 400mm F5.6 APO";
|
||||
lenses["02 37 5E 8E 35 3D 02 00"] = "Sigma 75-300mm F4.5-5.6 APO";
|
||||
lenses["02 37 A0 A0 34 34 02 00"] = "Sigma APO 500mm F4.5";
|
||||
lenses["02 3A 5E 8E 32 3D 02 00"] = "Sigma 75-300mm F4.0-5.6";
|
||||
lenses["02 3B 44 61 30 3D 02 00"] = "Sigma 35-80mm F4-5.6";
|
||||
lenses["02 3F 24 24 2C 2C 02 00"] = "Sigma 14mm F3.5";
|
||||
lenses["02 3F 3C 5C 2D 35 02 00"] = "Sigma 28-70mm F3.5-4.5 UC";
|
||||
lenses["02 40 44 73 2B 36 02 00"] = "Sigma 35-135mm F3.5-4.5 a";
|
||||
lenses["02 42 44 5C 2A 34 02 00"] = "AF Zoom-Nikkor 35-70mm f/3.3-4.5";
|
||||
lenses["02 42 44 5C 2A 34 08 00"] = "AF Zoom-Nikkor 35-70mm f/3.3-4.5";
|
||||
lenses["02 46 37 37 25 25 02 00"] = "Sigma 24mm F2.8 Macro";
|
||||
lenses["02 46 3C 5C 25 25 02 00"] = "Sigma 28-70mm F2.8";
|
||||
lenses["02 46 5C 82 25 25 02 00"] = "Sigma 70-210mm F2.8 APO";
|
||||
lenses["02 48 65 65 24 24 02 00"] = "Sigma 90mm F2.8 Macro";
|
||||
lenses["03 43 5C 81 35 35 02 00"] = "Soligor AF C/D ZOOM UMCS 70-210mm 1:4.5";
|
||||
lenses["03 48 5C 81 30 30 02 00"] = "AF Zoom-Nikkor 70-210mm f/4";
|
||||
lenses["04 48 3C 3C 24 24 03 00"] = "AF Nikkor 28mm f/2.8";
|
||||
lenses["05 54 50 50 0C 0C 04 00"] = "AF Nikkor 50mm f/1.4";
|
||||
lenses["06 3F 68 68 2C 2C 06 00"] = "Cosina 100mm f/3.5 Macro";
|
||||
lenses["06 54 53 53 24 24 06 00"] = "AF Micro-Nikkor 55mm f/2.8";
|
||||
lenses["07 36 3D 5F 2C 3C 03 00"] = "Cosina AF Zoom 28-80mm F3.5-5.6 MC Macro";
|
||||
lenses["07 3E 30 43 2D 35 03 00"] = "Soligor AF Zoom 19-35mm 1:3.5-4.5 MC";
|
||||
lenses["07 40 2F 44 2C 34 03 02"] = "Tamron AF19-35mm f/3.5-4.5 N";
|
||||
lenses["07 40 30 45 2D 35 03 02"] = "Tamron AF19-35mm f/3.5-4.5";
|
||||
lenses["07 40 3C 62 2C 34 03 00"] = "AF Zoom-Nikkor 28-85mm f/3.5-4.5";
|
||||
lenses["07 46 2B 44 24 30 03 02"] = "Tamron SP AF17-35mm f/2.8-4 Di LD Aspherical (IF)";
|
||||
lenses["07 46 3D 6A 25 2F 03 00"] = "Cosina AF Zoom 28-105mm F2.8-3.8 MC";
|
||||
lenses["07 47 3C 5C 25 35 03 00"] = "Tokina AF 287 SD (AF 28-70mm f/2.8-4.5)";
|
||||
lenses["07 48 3C 5C 24 24 03 00"] = "Tokina AT-X 287 AF (AF 28-70mm f/2.8)";
|
||||
lenses["08 40 44 6A 2C 34 04 00"] = "AF Zoom-Nikkor 35-105mm f/3.5-4.5";
|
||||
lenses["09 48 37 37 24 24 04 00"] = "AF Nikkor 24mm f/2.8";
|
||||
lenses["0A 48 8E 8E 24 24 03 00"] = "AF Nikkor 300mm f/2.8 IF-ED";
|
||||
lenses["0B 3E 3D 7F 2F 3D 0E 00"] = "Tamron AF28-200mm f/3.8-5.6";
|
||||
lenses["0B 3E 3D 7F 2F 3D 0E 02"] = "Tamron AF28-200mm f/3.8-5.6D";
|
||||
lenses["0B 48 7C 7C 24 24 05 00"] = "AF Nikkor 180mm f/2.8 IF-ED";
|
||||
lenses["0D 40 44 72 2C 34 07 00"] = "AF Zoom-Nikkor 35-135mm f/3.5-4.5";
|
||||
lenses["0E 48 5C 81 30 30 05 00"] = "AF Zoom-Nikkor 70-210mm f/4";
|
||||
lenses["0E 4A 31 48 23 2D 0E 02"] = "Tamron SP AF20-40mm f/2.7-3.5";
|
||||
lenses["0F 58 50 50 14 14 05 00"] = "AF Nikkor 50mm f/1.8 N";
|
||||
lenses["10 3D 3C 60 2C 3C D2 02"] = "Tamron AF28-80mm f/3.5-5.6 Aspherical";
|
||||
lenses["10 48 8E 8E 30 30 08 00"] = "AF Nikkor 300mm f/4 IF-ED";
|
||||
lenses["11 48 44 5C 24 24 08 00"] = "AF Zoom-Nikkor 35-70mm f/2.8";
|
||||
lenses["12 36 5C 81 35 3D 09 00"] = "Cosina AF Zoom 70-210mm F4.5-5.6 MC Macro";
|
||||
lenses["12 39 5C 8E 34 3D 08 02"] = "Cosina AF Zoom 70-300mm F4.5-5.6 MC Macro";
|
||||
lenses["12 3B 68 8D 3D 43 09 02"] = "Unknown 100-290mm f/5.6-6.7";
|
||||
lenses["12 3D 3C 80 2E 3C DF 02"] = "Tamron AF 28-200mm f/3.8-5.6 AF Aspherical LD (IF) (271D)";
|
||||
lenses["12 48 5C 81 30 3C 09 00"] = "AF Nikkor 70-210mm f/4-5.6";
|
||||
lenses["12 4A 5C 81 31 3D 09 00"] = "Soligor AF C/D Auto Zoom+Macro 70-210mm 1:4-5.6 UMCS";
|
||||
lenses["13 42 37 50 2A 34 0B 00"] = "AF Zoom-Nikkor 24-50mm f/3.3-4.5";
|
||||
lenses["14 48 60 80 24 24 0B 00"] = "AF Zoom-Nikkor 80-200mm f/2.8 ED";
|
||||
lenses["14 48 68 8E 30 30 0B 00"] = "Tokina AT-X 340 AF II 100-300mm F4";
|
||||
lenses["14 54 60 80 24 24 0B 00"] = "Tokina AT-X 828 AF 80-200mm F2.8";
|
||||
lenses["15 4C 62 62 14 14 0C 00"] = "AF Nikkor 85mm f/1.8";
|
||||
lenses["17 3C A0 A0 30 30 0F 00"] = "Nikkor 500mm f/4 P ED IF";
|
||||
lenses["17 3C A0 A0 30 30 11 00"] = "Nikkor 500mm f/4 P ED IF";
|
||||
lenses["18 40 44 72 2C 34 0E 00"] = "AF Zoom-Nikkor 35-135mm f/3.5-4.5 N";
|
||||
lenses["1A 54 44 44 18 18 11 00"] = "AF Nikkor 35mm f/2";
|
||||
lenses["1B 44 5E 8E 34 3C 10 00"] = "AF Zoom-Nikkor 75-300mm f/4.5-5.6";
|
||||
lenses["1C 48 30 30 24 24 12 00"] = "AF Nikkor 20mm f/2.8";
|
||||
lenses["1D 42 44 5C 2A 34 12 00"] = "AF Zoom-Nikkor 35-70mm f/3.3-4.5 N";
|
||||
lenses["1E 54 56 56 24 24 13 00"] = "AF Micro-Nikkor 60mm f/2.8";
|
||||
lenses["1E 5D 64 64 20 20 13 00"] = "Unknown 90mm f/2.5";
|
||||
lenses["1F 54 6A 6A 24 24 14 00"] = "AF Micro-Nikkor 105mm f/2.8";
|
||||
lenses["20 3C 80 98 3D 3D 1E 02"] = "Tamron AF200-400mm f/5.6 LD IF";
|
||||
lenses["20 48 60 80 24 24 15 00"] = "AF Zoom-Nikkor ED 80-200mm f/2.8";
|
||||
lenses["21 40 3C 5C 2C 34 16 00"] = "AF Zoom-Nikkor 28-70mm f/3.5-4.5";
|
||||
lenses["22 48 72 72 18 18 16 00"] = "AF DC-Nikkor 135mm f/2";
|
||||
lenses["23 30 BE CA 3C 48 17 00"] = "Zoom-Nikkor 1200-1700mm f/5.6-8 P ED IF";
|
||||
lenses["24 44 60 98 34 3C 1A 02"] = "Tokina AT-X 840 AF II 80-400mm F4.5-5.6";
|
||||
lenses["24 48 60 80 24 24 1A 02"] = "AF Zoom-Nikkor ED 80-200mm f/2.8D";
|
||||
lenses["25 48 3C 5C 24 24 1B 02"] = "Tokina AT-X 287 AF PRO SV 28-70mm F2.8";
|
||||
lenses["25 48 44 5C 24 24 1B 02"] = "AF Zoom-Nikkor 35-70mm f/2.8D";
|
||||
lenses["25 48 44 5C 24 24 52 02"] = "AF Zoom-Nikkor 35-70mm f/2.8D";
|
||||
lenses["26 3C 54 80 30 3C 1C 06"] = "Sigma 55-200mm F4-5.6 DC";
|
||||
lenses["26 3C 5C 82 30 3C 1C 02"] = "Sigma 70-210mm F4-5.6 UC-II";
|
||||
lenses["26 3C 5C 8E 30 3C 1C 02"] = "Sigma 70-300mm F4-5.6 DG Macro";
|
||||
lenses["26 3D 3C 80 2F 3D 1C 02"] = "Sigma 28-300mm F3.8-5.6 Aspherical";
|
||||
lenses["26 3E 3C 6A 2E 3C 1C 02"] = "Sigma 28-105mm F3.8-5.6 UC-III Aspherical IF";
|
||||
lenses["26 40 27 3F 2C 34 1C 02"] = "Sigma 15-30mm F3.5-4.5 EX Aspherical DG DF";
|
||||
lenses["26 40 2D 44 2B 34 1C 02"] = "Sigma 18-35 F3.5-4.5 Aspherical";
|
||||
lenses["26 40 2D 50 2C 3C 1C 06"] = "Sigma 18-50mm F3.5-5.6 DC";
|
||||
lenses["26 40 2D 70 2B 3C 1C 06"] = "Sigma 18-125mm F3.5-5.6 DC";
|
||||
lenses["26 40 2D 80 2C 40 1C 06"] = "Sigma 18-200mm F3.5-6.3 DC";
|
||||
lenses["26 40 37 5C 2C 3C 1C 02"] = "Sigma 24-70mm F3.5-5.6 Aspherical HF";
|
||||
lenses["26 40 3C 60 2C 3C 1C 02"] = "Sigma 28-80mm F3.5-5.6 Mini Zoom Macro II Aspherical";
|
||||
lenses["26 40 3C 65 2C 3C 1C 02"] = "Sigma 28-90mm F3.5-5.6 Macro";
|
||||
lenses["26 40 3C 80 2B 3C 1C 02"] = "Sigma 28-200mm F3.5-5.6 Compact Aspherical Hyperzoom Macro";
|
||||
lenses["26 40 3C 80 2C 3C 1C 02"] = "Sigma 28-200mm F3.5-5.6 Compact Aspherical Hyperzoom Macro";
|
||||
lenses["26 40 3C 8E 2C 40 1C 02"] = "Sigma 28-300mm F3.5-6.3 Macro";
|
||||
lenses["26 40 7B A0 34 40 1C 02"] = "Sigma APO 170-500mm F5-6.3 Aspherical RF";
|
||||
lenses["26 41 3C 8E 2C 40 1C 02"] = "Sigma 28-300mm F3.5-6.3 DG Macro";
|
||||
lenses["26 44 73 98 34 3C 1C 02"] = "Sigma 135-400mm F4.5-5.6 APO Aspherical";
|
||||
lenses["26 48 11 11 30 30 1C 02"] = "Sigma 8mm F4 EX Circular Fisheye";
|
||||
lenses["26 48 27 27 24 24 1C 02"] = "Sigma 15mm F2.8 EX Diagonal Fish-Eye";
|
||||
lenses["26 48 2D 50 24 24 1C 06"] = "Sigma 18-50mm F2.8 EX DC";
|
||||
lenses["26 48 31 49 24 24 1C 02"] = "Sigma 20-40mm F2.8";
|
||||
lenses["26 48 37 56 24 24 1C 02"] = "Sigma 24-60mm F2.8 EX DG";
|
||||
lenses["26 48 3C 5C 24 24 1C 06"] = "Sigma 28-70mm F2.8 EX DG";
|
||||
lenses["26 48 3C 5C 24 30 1C 02"] = "Sigma 28-70mm F2.8-4 High Speed Zoom";
|
||||
lenses["26 48 3C 6A 24 30 1C 02"] = "Sigma 28-105mm F2.8-4 Aspherical";
|
||||
lenses["26 48 8E 8E 30 30 1C 02"] = "Sigma APO TELE MACRO 300mm F4";
|
||||
lenses["26 54 2B 44 24 30 1C 02"] = "Sigma 17-35mm F2.8-4 EX Aspherical";
|
||||
lenses["26 54 37 5C 24 24 1C 02"] = "Sigma 24-70mm F2.8 EX DG Macro";
|
||||
lenses["26 54 37 73 24 34 1C 02"] = "Sigma 24-135mm F2.8-4.5";
|
||||
lenses["26 54 3C 5C 24 24 1C 02"] = "Sigma 28-70mm F2.8 EX";
|
||||
lenses["26 58 31 31 14 14 1C 02"] = "Sigma 20mm F1.8 EX Aspherical DG DF RF";
|
||||
lenses["26 58 37 37 14 14 1C 02"] = "Sigma 24mm F1.8 EX Aspherical DG DF MACRO";
|
||||
lenses["26 58 3C 3C 14 14 1C 02"] = "Sigma 28mm F1.8 EX DG DF";
|
||||
lenses["27 48 8E 8E 24 24 1D 02"] = "AF-I Nikkor 300mm f/2.8D IF-ED";
|
||||
lenses["27 48 8E 8E 24 24 E1 02"] = "AF-I Nikkor 300mm f/2.8D IF-ED + TC-17E";
|
||||
lenses["27 48 8E 8E 24 24 F1 02"] = "AF-I Nikkor 300mm f/2.8D IF-ED + TC-14E";
|
||||
lenses["27 48 8E 8E 24 24 F2 02"] = "AF-I Nikkor 300mm f/2.8D IF-ED + TC-20E";
|
||||
lenses["28 3C A6 A6 30 30 1D 02"] = "AF-I Nikkor 600mm f/4D IF-ED";
|
||||
lenses["28 3C A6 A6 30 30 E1 02"] = "AF-I Nikkor 600mm f/4D IF-ED + TC-17E";
|
||||
lenses["28 3C A6 A6 30 30 F1 02"] = "AF-I Nikkor 600mm f/4D IF-ED + TC-14E";
|
||||
lenses["28 3C A6 A6 30 30 F2 02"] = "AF-I Nikkor 600mm f/4D IF-ED + TC-20E";
|
||||
lenses["2A 54 3C 3C 0C 0C 26 02"] = "AF Nikkor 28mm f/1.4D";
|
||||
lenses["2B 3C 44 60 30 3C 1F 02"] = "AF Zoom-Nikkor 35-80mm f/4-5.6D";
|
||||
lenses["2C 48 6A 6A 18 18 27 02"] = "AF DC-Nikkor 105mm f/2D";
|
||||
lenses["2D 48 80 80 30 30 21 02"] = "AF Micro-Nikkor 200mm f/4D IF-ED";
|
||||
lenses["2E 48 5C 82 30 3C 28 02"] = "AF Nikkor 70-210mm f/4-5.6D";
|
||||
lenses["2F 40 30 44 2C 34 29 02"] = "Unknown 20-35mm f/3.5-4.5D";
|
||||
lenses["2F 48 30 44 24 24 29 02"] = "Tokina AT-X 235 AF PRO - AF 20-35mm f/2.8";
|
||||
lenses["30 48 98 98 24 24 24 02"] = "AF-I Nikkor 400mm f/2.8D IF-ED";
|
||||
lenses["30 48 98 98 24 24 E1 02"] = "AF-I Nikkor 400mm f/2.8D IF-ED + TC-17E";
|
||||
lenses["30 48 98 98 24 24 F1 02"] = "AF-I Nikkor 400mm f/2.8D IF-ED + TC-14E";
|
||||
lenses["30 48 98 98 24 24 F2 02"] = "AF-I Nikkor 400mm f/2.8D IF-ED + TC-20E";
|
||||
lenses["31 54 56 56 24 24 25 02"] = "AF Micro-Nikkor 60mm f/2.8D";
|
||||
lenses["32 53 64 64 24 24 35 02"] = "Tamron SP AF90mm f/2.8 Di Macro 1:2 (272E)";
|
||||
lenses["32 54 50 50 24 24 35 02"] = "Sigma 50mm F2.8 EX DG Macro";
|
||||
lenses["32 54 6A 6A 24 24 35 02"] = "AF Micro-Nikkor 105mm f/2.8D";
|
||||
lenses["33 48 2D 2D 24 24 31 02"] = "AF Nikkor 18mm f/2.8D";
|
||||
lenses["33 54 3C 5E 24 24 62 02"] = "Tamron SP AF28-75mm f/2.8 XR Di LD Aspherical (IF) Macro";
|
||||
lenses["34 48 29 29 24 24 32 02"] = "AF Fisheye Nikkor 16mm f/2.8D";
|
||||
lenses["35 3C A0 A0 30 30 33 02"] = "AF-I Nikkor 500mm f/4D IF-ED";
|
||||
lenses["35 3C A0 A0 30 30 E1 02"] = "AF-I Nikkor 500mm f/4D IF-ED + TC-17E";
|
||||
lenses["35 3C A0 A0 30 30 F1 02"] = "AF-I Nikkor 500mm f/4D IF-ED + TC-14E";
|
||||
lenses["35 3C A0 A0 30 30 F2 02"] = "AF-I Nikkor 500mm f/4D IF-ED + TC-20E";
|
||||
lenses["36 48 37 37 24 24 34 02"] = "AF Nikkor 24mm f/2.8D";
|
||||
lenses["37 48 30 30 24 24 36 02"] = "AF Nikkor 20mm f/2.8D";
|
||||
lenses["38 4C 62 62 14 14 37 02"] = "AF Nikkor 85mm f/1.8D";
|
||||
lenses["3A 40 3C 5C 2C 34 39 02"] = "AF Zoom-Nikkor 28-70mm f/3.5-4.5D";
|
||||
lenses["3B 48 44 5C 24 24 3A 02"] = "AF Zoom-Nikkor 35-70mm f/2.8D N";
|
||||
lenses["3C 48 60 80 24 24 3B 02"] = "AF Zoom-Nikkor 80-200mm f/2.8D ED";
|
||||
lenses["3D 3C 44 60 30 3C 3E 02"] = "AF Zoom-Nikkor 35-80mm f/4-5.6D";
|
||||
lenses["3E 48 3C 3C 24 24 3D 02"] = "AF Nikkor 28mm f/2.8D";
|
||||
lenses["3F 40 44 6A 2C 34 45 02"] = "AF Zoom-Nikkor 35-105mm f/3.5-4.5D";
|
||||
lenses["41 48 7C 7C 24 24 43 02"] = "AF Nikkor 180mm f/2.8D IF-ED";
|
||||
lenses["42 54 44 44 18 18 44 02"] = "AF Nikkor 35mm f/2D";
|
||||
lenses["43 54 50 50 0C 0C 46 02"] = "AF Nikkor 50mm f/1.4D";
|
||||
lenses["44 44 60 80 34 3C 47 02"] = "AF Zoom-Nikkor 80-200mm f/4.5-5.6D ";
|
||||
lenses["45 3D 3C 60 2C 3C 48 02"] = "Tamron AF28-80mm f/3.5-5.6 Aspherical";
|
||||
lenses["45 40 3C 60 2C 3C 48 02"] = "AF Zoom-Nikkor 28-80mm F/3.5-5.6D";
|
||||
lenses["45 41 37 72 2C 3C 48 02"] = "Tamron SP AF24-135mm f/3.5-5.6 AD Aspherical (IF) Macro";
|
||||
lenses["46 3C 44 60 30 3C 49 02"] = "AF Zoom-Nikkor 35-80mm f/4-5.6D N";
|
||||
lenses["47 42 37 50 2A 34 4A 02"] = "AF Zoom-Nikkor 24-50mm f/3.3-4.5D";
|
||||
lenses["48 38 1F 37 34 3C 4B 06"] = "Sigma 12-24mm F4.5-5.6 EX Aspherical DG HSM";
|
||||
lenses["48 3C 19 31 30 3C 4B 06"] = "Sigma 10-20mm F4-5.6 EX DC HSM";
|
||||
lenses["48 3C 50 A0 30 40 4B 02"] = "Sigma 50-500mm F4-6.3 EX APO RF HSM";
|
||||
lenses["48 3C 8E B0 3C 3C 4B 02"] = "Sigma APO 300-800 F5.6 EX DG HSM";
|
||||
lenses["48 3C B0 B0 3C 3C 4B 02"] = "Sigma APO 800mm F5.6 EX HSM";
|
||||
lenses["48 44 A0 A0 34 34 4B 02"] = "Sigma APO 500mm F4.5 EX HSM";
|
||||
lenses["48 48 24 24 24 24 4B 02"] = "Sigma 14mm F2.8 EX Aspherical HSM";
|
||||
lenses["48 48 2B 44 24 30 4B 06"] = "Sigma 17-35mm F2.8-4 EX DG Aspherical HSM";
|
||||
lenses["48 48 68 8E 30 30 4B 02"] = "Sigma 100-300mm F4 EX IF HSM";
|
||||
lenses["48 48 76 76 24 24 4B 06"] = "Sigma 150mm F2.8 EX DG APO Macro HSM";
|
||||
lenses["48 48 8E 8E 24 24 4B 02"] = "AF-S Nikkor 300mm f/2.8D IF-ED";
|
||||
lenses["48 48 8E 8E 24 24 E1 02"] = "AF-S Nikkor 300mm f/2.8D IF-ED + TC-17E";
|
||||
lenses["48 48 8E 8E 24 24 F1 02"] = "AF-S Nikkor 300mm f/2.8D IF-ED + TC-14E";
|
||||
lenses["48 48 8E 8E 24 24 F2 02"] = "AF-S Nikkor 300mm f/2.8D IF-ED + TC-20E";
|
||||
lenses["48 4C 7C 7C 2C 2C 4B 02"] = "Sigma 180mm F3.5 EX DG Macro";
|
||||
lenses["48 4C 7D 7D 2C 2C 4B 02"] = "Sigma APO MACRO 180mm F3.5 EX DG HSM";
|
||||
lenses["48 54 3E 3E 0C 0C 4B 06"] = "Sigma 30mm F1.4 EX DC HSM";
|
||||
lenses["48 54 5C 80 24 24 4B 02"] = "Sigma 70-200mm F2.8 EX APO IF HSM";
|
||||
lenses["48 54 6F 8E 24 24 4B 02"] = "Sigma APO 120-300mm F2.8 EX DG HSM";
|
||||
lenses["48 54 8E 8E 24 24 4B 02"] = "Sigma APO 300mm F2.8 EX DG HSM";
|
||||
lenses["49 3C A6 A6 30 30 4C 02"] = "AF-S Nikkor 600mm f/4D IF-ED";
|
||||
lenses["49 3C A6 A6 30 30 E1 02"] = "AF-S Nikkor 600mm f/4D IF-ED + TC-17E";
|
||||
lenses["49 3C A6 A6 30 30 F1 02"] = "AF-S Nikkor 600mm f/4D IF-ED + TC-14E";
|
||||
lenses["49 3C A6 A6 30 30 F2 02"] = "AF-S Nikkor 600mm f/4D IF-ED + TC-20E";
|
||||
lenses["4A 54 62 62 0C 0C 4D 02"] = "AF Nikkor 85mm f/1.4D IF";
|
||||
lenses["4B 3C A0 A0 30 30 4E 02"] = "AF-S Nikkor 500mm f/4D IF-ED";
|
||||
lenses["4B 3C A0 A0 30 30 E1 02"] = "AF-S Nikkor 500mm f/4D IF-ED + TC-17E";
|
||||
lenses["4B 3C A0 A0 30 30 F1 02"] = "AF-S Nikkor 500mm f/4D IF-ED + TC-14E";
|
||||
lenses["4B 3C A0 A0 30 30 F2 02"] = "AF-S Nikkor 500mm f/4D IF-ED + TC-20E";
|
||||
lenses["4C 40 37 6E 2C 3C 4F 02"] = "AF Zoom-Nikkor 24-120mm f/3.5-5.6D IF";
|
||||
lenses["4D 40 3C 80 2C 3C 62 02"] = "AF Zoom-Nikkor 28-200mm f/3.5-5.6D IF";
|
||||
lenses["4D 41 3C 8E 2B 40 62 02"] = "Tamron AF28-300mm f/3.5-6.3 XR Di LD Aspherical (IF)";
|
||||
lenses["4D 41 3C 8E 2C 40 62 02"] = "Tamron AF28-300mm f/3.5-6.3 XR LD Aspherical (IF)";
|
||||
lenses["4E 48 72 72 18 18 51 02"] = "AF DC-Nikkor 135mm f/2D";
|
||||
lenses["4F 40 37 5C 2C 3C 53 06"] = "IX-Nikkor 24-70mm f/3.5-5.6";
|
||||
lenses["50 48 56 7C 30 3C 54 06"] = "IX-Nikkor 60-180mm f/4-5.6";
|
||||
lenses["53 48 60 80 24 24 57 02"] = "AF Zoom-Nikkor 80-200mm f/2.8D ED";
|
||||
lenses["53 48 60 80 24 24 60 02"] = "AF Zoom-Nikkor 80-200mm f/2.8D ED";
|
||||
lenses["54 44 5C 7C 34 3C 58 02"] = "AF Zoom-Micro Nikkor 70-180mm f/4.5-5.6D ED";
|
||||
lenses["56 3C 5C 8E 30 3C 1C 02"] = "Sigma 70-300mm F4-5.6 APO Macro Super II";
|
||||
lenses["56 48 5C 8E 30 3C 5A 02"] = "AF Zoom-Nikkor 70-300mm f/4-5.6D ED";
|
||||
lenses["59 48 98 98 24 24 5D 02"] = "AF-S Nikkor 400mm f/2.8D IF-ED";
|
||||
lenses["59 48 98 98 24 24 E1 02"] = "AF-S Nikkor 400mm f/2.8D IF-ED + TC-17E";
|
||||
lenses["59 48 98 98 24 24 F1 02"] = "AF-S Nikkor 400mm f/2.8D IF-ED + TC-14E";
|
||||
lenses["59 48 98 98 24 24 F2 02"] = "AF-S Nikkor 400mm f/2.8D IF-ED + TC-20E";
|
||||
lenses["5A 3C 3E 56 30 3C 5E 06"] = "IX-Nikkor 30-60mm f/4-5.6";
|
||||
lenses["5B 44 56 7C 34 3C 5F 06"] = "IX-Nikkor 60-180mm f/4.5-5.6";
|
||||
lenses["5D 48 3C 5C 24 24 63 02"] = "AF-S Zoom-Nikkor 28-70mm f/2.8D IF-ED";
|
||||
lenses["5E 48 60 80 24 24 64 02"] = "AF-S Zoom-Nikkor 80-200mm f/2.8D IF-ED";
|
||||
lenses["5F 40 3C 6A 2C 34 65 02"] = "AF Zoom-Nikkor 28-105mm f/3.5-4.5D IF";
|
||||
lenses["60 40 3C 60 2C 3C 66 02"] = "AF Zoom-Nikkor 28-80mm f/3.5-5.6D";
|
||||
lenses["61 44 5E 86 34 3C 67 02"] = "AF Zoom-Nikkor 75-240mm f/4.5-5.6D";
|
||||
lenses["63 48 2B 44 24 24 68 02"] = "AF-S Nikkor 17-35mm f/2.8D IF-ED";
|
||||
lenses["64 00 62 62 24 24 6A 02"] = "PC Micro-Nikkor 85mm f/2.8D";
|
||||
lenses["65 44 60 98 34 3C 6B 0A"] = "AF VR Zoom-Nikkor 80-400mm f/4.5-5.6D ED";
|
||||
lenses["66 40 2D 44 2C 34 6C 02"] = "AF Zoom-Nikkor 18-35mm f/3.5-4.5D IF-ED";
|
||||
lenses["67 48 37 62 24 30 6D 02"] = "AF Zoom-Nikkor 24-85mm f/2.8-4D IF";
|
||||
lenses["67 54 37 5C 24 24 1C 02"] = "Sigma 24-70mm F2.8 EX DG Macro";
|
||||
lenses["68 42 3C 60 2A 3C 6E 06"] = "AF Zoom-Nikkor 28-80mm f/3.3-5.6G";
|
||||
lenses["69 48 5C 8E 30 3C 6F 02"] = "Tamron AF70-300mm f/4-5.6 LD Macro 1:2";
|
||||
lenses["69 48 5C 8E 30 3C 6F 06"] = "AF Zoom-Nikkor 70-300mm f/4-5.6G";
|
||||
lenses["6A 48 8E 8E 30 30 70 02"] = "AF-S Nikkor 300mm f/4D IF-ED";
|
||||
lenses["6B 48 24 24 24 24 71 02"] = "AF Nikkor ED 14mm f/2.8D";
|
||||
lenses["6D 48 8E 8E 24 24 73 02"] = "AF-S Nikkor 300mm f/2.8D IF-ED II";
|
||||
lenses["6E 48 98 98 24 24 74 02"] = "AF-S Nikkor 400mm f/2.8D IF-ED II";
|
||||
lenses["6F 3C A0 A0 30 30 75 02"] = "AF-S Nikkor 500mm f/4D IF-ED II";
|
||||
lenses["70 3C A6 A6 30 30 76 02"] = "AF-S Nikkor 600mm f/4D IF-ED II";
|
||||
lenses["72 48 4C 4C 24 24 77 00"] = "Nikkor 45mm f/2.8 P";
|
||||
lenses["74 40 37 62 2C 34 78 06"] = "AF-S Zoom-Nikkor 24-85mm f/3.5-4.5G IF-ED";
|
||||
lenses["75 40 3C 68 2C 3C 79 06"] = "AF Zoom-Nikkor 28-100mm f/3.5-5.6G";
|
||||
lenses["76 58 50 50 14 14 7A 02"] = "AF Nikkor 50mm f/1.8D";
|
||||
lenses["77 44 61 98 34 3C 7B 0E"] = "Sigma 80-400mm f4.5-5.6 EX OS";
|
||||
lenses["77 48 5C 80 24 24 7B 0E"] = "AF-S VR Zoom-Nikkor 70-200mm f/2.8G IF-ED";
|
||||
lenses["78 40 37 6E 2C 3C 7C 0E"] = "AF-S VR Zoom-Nikkor 24-120mm f/3.5-5.6G IF-ED";
|
||||
lenses["79 40 11 11 2C 2C 1C 06"] = "Sigma 8mm F3.5 EX";
|
||||
lenses["79 40 3C 80 2C 3C 7F 06"] = "AF Zoom-Nikkor 28-200mm f/3.5-5.6G IF-ED";
|
||||
lenses["79 48 5C 5C 24 24 1C 06"] = "Sigma 70mm F2.8 EX DG Macro";
|
||||
lenses["7A 3B 53 80 30 3C 4B 06"] = "Sigma 55-200mm F4-5.6 DC HSM";
|
||||
lenses["7A 3C 1F 37 30 30 7E 06"] = "AF-S DX Zoom-Nikkor 12-24mm f/4G IF-ED";
|
||||
lenses["7A 40 2D 50 2C 3C 4B 06"] = "Sigma 18-50mm F3.5-5.6 DC HSM";
|
||||
lenses["7A 47 2B 5C 24 34 4B 06"] = "Sigma 17-70mm F2.8-4.5 DC Macro Asp. IF HSM";
|
||||
lenses["7A 47 50 76 24 24 4B 06"] = "Sigma APO 50-150mm F2.8 EX DC HSM";
|
||||
lenses["7A 48 2B 5C 24 34 4B 06"] = "Sigma 17-70mm F2.8-4.5 DC Macro Asp. IF HSM";
|
||||
lenses["7A 48 2D 50 24 24 4B 06"] = "Sigma 18-50mm F2.8 EX DC HSM";
|
||||
lenses["7A 48 5C 80 24 24 4B 06"] = "Sigma 70-200mm F2.8 EX APO DG Macro HSM II";
|
||||
lenses["7A 54 6E 8E 24 24 4B 02"] = "Sigma APO 120-300mm F2.8 EX DG HSM";
|
||||
lenses["7B 48 80 98 30 30 80 0E"] = "AF-S VR Zoom-Nikkor 200-400mm f/4G IF-ED";
|
||||
lenses["7D 48 2B 53 24 24 82 06"] = "AF-S DX Zoom-Nikkor 17-55mm f/2.8G IF-ED";
|
||||
lenses["7F 40 2D 5C 2C 34 84 06"] = "AF-S DX Zoom-Nikkor 18-70mm f/3.5-4.5G IF-ED";
|
||||
lenses["7F 48 2B 5C 24 34 1C 06"] = "Sigma 17-70mm F2.8-4.5 DC Macro Asp. IF";
|
||||
lenses["7F 48 2D 50 24 24 1C 06"] = "Sigma 18-50mm F2.8 EX DC Macro";
|
||||
lenses["80 48 1A 1A 24 24 85 06"] = "AF DX Fisheye-Nikkor 10.5mm f/2.8G ED";
|
||||
lenses["81 54 80 80 18 18 86 0E"] = "AF-S VR Nikkor 200mm f/2G IF-ED";
|
||||
lenses["82 48 8E 8E 24 24 87 0E"] = "AF-S VR Nikkor 300mm f/2.8G IF-ED";
|
||||
lenses["89 3C 53 80 30 3C 8B 06"] = "AF-S DX Zoom-Nikkor 55-200mm f/4-5.6G ED";
|
||||
lenses["8A 54 6A 6A 24 24 8C 0E"] = "AF-S VR Micro-Nikkor 105mm f/2.8G IF-ED";
|
||||
lenses["8B 40 2D 80 2C 3C 8D 0E"] = "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED";
|
||||
lenses["8B 40 2D 80 2C 3C FD 0E"] = "AF-S DX VR Zoom-Nikkor 18-200mm f/3.5-5.6G IF-ED";
|
||||
lenses["8C 40 2D 53 2C 3C 8E 06"] = "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED";
|
||||
lenses["8D 44 5C 8E 34 3C 8F 0E"] = "AF-S VR Zoom-Nikkor 70-300mm f/4.5-5.6G IF-ED";
|
||||
lenses["8F 40 2D 72 2C 3C 91 06"] = "AF-S DX Zoom-Nikkor 18-135mm f/3.5-5.6G IF-ED";
|
||||
lenses["90 3B 53 80 30 3C 92 0E"] = "AF-S DX VR Zoom-Nikkor 55-200mm f/4-5.6G IF-ED";
|
||||
lenses["92 48 24 37 24 24 94 06"] = "AF-S Zoom-Nikkor 14-24mm f/2.8G ED";
|
||||
lenses["93 48 37 5C 24 24 95 06"] = "AF-S Zoom-Nikkor 24-70mm f/2.8G ED";
|
||||
lenses["94 40 2D 53 2C 3C 96 06"] = "AF-S DX Zoom-Nikkor 18-55mm f/3.5-5.6G ED II";
|
||||
lenses["95 00 37 37 2C 2C 97 06"] = "PC-E Nikkor 24mm f/3.5D ED";
|
||||
lenses["95 4C 37 37 2C 2C 97 02"] = "PC-E Nikkor 24mm f/3.5D ED";
|
||||
lenses["96 48 98 98 24 24 98 0E"] = "AF-S VR Nikkor 400mm f/2.8G ED";
|
||||
lenses["97 3C A0 A0 30 30 99 0E"] = "AF-S VR Nikkor 500mm f/4G ED";
|
||||
lenses["98 3C A6 A6 30 30 9A 0E"] = "AF-S VR Nikkor 600mm f/4G ED";
|
||||
lenses["99 40 29 62 2C 3C 9B 0E"] = "AF-S DX VR Zoom-Nikkor 16-85mm f/3.5-5.6G ED";
|
||||
lenses["9A 40 2D 53 2C 3C 9C 0E"] = "AF-S DX VR Zoom-Nikkor 18-55mm f/3.5-5.6G";
|
||||
lenses["9B 00 4C 4C 24 24 9D 06"] = "PC-E Micro Nikkor 45mm f/2.8D ED";
|
||||
lenses["9B 54 4C 4C 24 24 9D 02"] = "PC-E Micro Nikkor 45mm f/2.8D ED";
|
||||
lenses["9C 54 56 56 24 24 9E 06"] = "AF-S Micro Nikkor 60mm f/2.8G ED";
|
||||
lenses["9D 00 62 62 24 24 9F 06"] = "PC-E Micro Nikkor 85mm f/2.8D";
|
||||
lenses["9D 54 62 62 24 24 9F 02"] = "PC-E Micro Nikkor 85mm f/2.8D";
|
||||
lenses["9E 40 2D 6A 2C 3C A0 0E"] = "AF-S DX VR Zoom-Nikkor 18-105mm f/3.5-5.6G ED";
|
||||
lenses["9F 58 44 44 14 14 A1 06"] = "AF-S DX Nikkor 35mm f/1.8G";
|
||||
lenses["A0 54 50 50 0C 0C A2 06"] = "AF-S Nikkor 50mm f/1.4G";
|
||||
lenses["A1 40 18 37 2C 34 A3 06"] = "AF-S DX Nikkor 10-24mm f/3.5-4.5G ED";
|
||||
lenses["A1 41 19 31 2C 2C 4B 06"] = "Sigma 10-20mm F3.5 EX DC HSM";
|
||||
lenses["A2 48 5C 80 24 24 A4 0E"] = "AF-S Nikkor 70-200mm f/2.8G ED VR II";
|
||||
lenses["A5 40 2D 88 2C 40 4B 0E"] = "Sigma 18-250mm F3.5-6.3 DC OS HSM";
|
||||
lenses["A6 48 37 5C 24 24 4B 06"] = "Sigma 24-70mm F2.8 IF EX DG HSM";
|
||||
lenses["B6 48 37 56 24 24 1C 02"] = "Sigma 24-60mm F2.8 EX DG";
|
||||
lenses["CD 3D 2D 70 2E 3C 4B 0E"] = "Sigma 18-125mm F3.8-5.6 DC OS HSM";
|
||||
lenses["CE 34 76 A0 38 40 4B 0E"] = "Sigma 150-500mm F5-6.3 DG OS APO HSM";
|
||||
lenses["CF 38 6E 98 34 3C 4B 0E"] = "Sigma APO 120-400mm F4.5-5.6 DG OS HSM";
|
||||
lenses["DC 48 19 19 24 24 4B 06"] = "Sigma 10mm F2.8 EX DC HSM Fisheye";
|
||||
lenses["DE 54 50 50 0C 0C 4B 06"] = "Sigma 50mm F1.4 EX DG HSM";
|
||||
lenses["E0 3C 5C 8E 30 3C 4B 06"] = "Sigma 70-300mm F4-5.6 APO DG Macro HSM";
|
||||
lenses["E1 58 37 37 14 14 1C 02"] = "Sigma 24mm F1.8 EX DG Aspherical Macro";
|
||||
lenses["E5 54 6A 6A 24 24 35 02"] = "Sigma Macro 105mm F2.8 EX DG";
|
||||
lenses["E9 54 37 5C 24 24 1C 02"] = "Sigma 24-70mm F2.8 EX DG Macro";
|
||||
lenses["ED 40 2D 80 2C 40 4B 0E"] = "Sigma 18-200mm F3.5-6.3 DC OS HSM";
|
||||
lenses["EE 48 5C 80 24 24 4B 06"] = "Sigma 70-200mm F2.8 EX APO DG Macro HSM II";
|
||||
lenses["F0 38 1F 37 34 3C 4B 06"] = "Sigma 12-24mm F4.5-5.6 EX DG Aspherical HSM";
|
||||
lenses["F3 54 2B 50 24 24 84 0E"] = "Tamron SP AF 17-50mm F/2.8 XR Di II VC LD Aspherical (IF) (B005)";
|
||||
lenses["F4 54 56 56 18 18 84 06"] = "Tamron SP AF 60mm f/2.0 Di II Macro 1:1 (G005)";
|
||||
lenses["F5 40 2C 8A 2C 40 40 0E"] = "Tamron AF 18-270mm f/3.5-6.3 Di II VC LD Aspherical (IF) Macro (B003)";
|
||||
lenses["F5 48 76 76 24 24 4B 06"] = "Sigma 150mm F2.8 EX DG APO Macro HSM";
|
||||
lenses["F6 3F 18 37 2C 34 84 06"] = "Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical (IF) (B001)";
|
||||
lenses["F7 53 5C 80 24 24 84 06"] = "Tamron SP AF 70-200mm f/2.8 Di LD (IF) Macro (A001)";
|
||||
lenses["F8 54 3E 3E 0C 0C 4B 06"] = "Sigma 30mm F1.4 EX DC HSM";
|
||||
lenses["F8 55 64 64 24 24 84 06"] = "Tamron SP AF 90mm f/2.8 Di Macro 1:1 (272NII)";
|
||||
lenses["F9 3C 19 31 30 3C 4B 06"] = "Sigma 10-20mm F4-5.6 EX DC HSM";
|
||||
lenses["F9 40 3C 8E 2C 40 40 0E"] = "Tamron AF 28-300mm f/3.5-6.3 XR Di VC LD Aspherical (IF) Macro (A20)";
|
||||
lenses["FA 54 3C 5E 24 24 84 06"] = "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical (IF) Macro (A09NII)";
|
||||
lenses["FB 54 8E 8E 24 24 4B 02"] = "Sigma APO 300mm F2.8 EX DG HSM";
|
||||
lenses["FD 47 50 76 24 24 4B 06"] = "Sigma 50-150mm F2.8 EX APO DC HSM II";
|
||||
lenses["FE 47 00 00 24 24 4B 06"] = "Sigma 4.5mm F2.8 EX DC Circular Fisheye HSM";
|
||||
}
|
||||
virtual std::string toString (Tag* t) {
|
||||
|
||||
static const unsigned char xlat[2][256] = {
|
||||
{ 0xc1,0xbf,0x6d,0x0d,0x59,0xc5,0x13,0x9d,0x83,0x61,0x6b,0x4f,0xc7,0x7f,0x3d,0x3d,
|
||||
0x53,0x59,0xe3,0xc7,0xe9,0x2f,0x95,0xa7,0x95,0x1f,0xdf,0x7f,0x2b,0x29,0xc7,0x0d,
|
||||
0xdf,0x07,0xef,0x71,0x89,0x3d,0x13,0x3d,0x3b,0x13,0xfb,0x0d,0x89,0xc1,0x65,0x1f,
|
||||
0xb3,0x0d,0x6b,0x29,0xe3,0xfb,0xef,0xa3,0x6b,0x47,0x7f,0x95,0x35,0xa7,0x47,0x4f,
|
||||
0xc7,0xf1,0x59,0x95,0x35,0x11,0x29,0x61,0xf1,0x3d,0xb3,0x2b,0x0d,0x43,0x89,0xc1,
|
||||
0x9d,0x9d,0x89,0x65,0xf1,0xe9,0xdf,0xbf,0x3d,0x7f,0x53,0x97,0xe5,0xe9,0x95,0x17,
|
||||
0x1d,0x3d,0x8b,0xfb,0xc7,0xe3,0x67,0xa7,0x07,0xf1,0x71,0xa7,0x53,0xb5,0x29,0x89,
|
||||
0xe5,0x2b,0xa7,0x17,0x29,0xe9,0x4f,0xc5,0x65,0x6d,0x6b,0xef,0x0d,0x89,0x49,0x2f,
|
||||
0xb3,0x43,0x53,0x65,0x1d,0x49,0xa3,0x13,0x89,0x59,0xef,0x6b,0xef,0x65,0x1d,0x0b,
|
||||
0x59,0x13,0xe3,0x4f,0x9d,0xb3,0x29,0x43,0x2b,0x07,0x1d,0x95,0x59,0x59,0x47,0xfb,
|
||||
0xe5,0xe9,0x61,0x47,0x2f,0x35,0x7f,0x17,0x7f,0xef,0x7f,0x95,0x95,0x71,0xd3,0xa3,
|
||||
0x0b,0x71,0xa3,0xad,0x0b,0x3b,0xb5,0xfb,0xa3,0xbf,0x4f,0x83,0x1d,0xad,0xe9,0x2f,
|
||||
0x71,0x65,0xa3,0xe5,0x07,0x35,0x3d,0x0d,0xb5,0xe9,0xe5,0x47,0x3b,0x9d,0xef,0x35,
|
||||
0xa3,0xbf,0xb3,0xdf,0x53,0xd3,0x97,0x53,0x49,0x71,0x07,0x35,0x61,0x71,0x2f,0x43,
|
||||
0x2f,0x11,0xdf,0x17,0x97,0xfb,0x95,0x3b,0x7f,0x6b,0xd3,0x25,0xbf,0xad,0xc7,0xc5,
|
||||
0xc5,0xb5,0x8b,0xef,0x2f,0xd3,0x07,0x6b,0x25,0x49,0x95,0x25,0x49,0x6d,0x71,0xc7 },
|
||||
{ 0xa7,0xbc,0xc9,0xad,0x91,0xdf,0x85,0xe5,0xd4,0x78,0xd5,0x17,0x46,0x7c,0x29,0x4c,
|
||||
0x4d,0x03,0xe9,0x25,0x68,0x11,0x86,0xb3,0xbd,0xf7,0x6f,0x61,0x22,0xa2,0x26,0x34,
|
||||
0x2a,0xbe,0x1e,0x46,0x14,0x68,0x9d,0x44,0x18,0xc2,0x40,0xf4,0x7e,0x5f,0x1b,0xad,
|
||||
0x0b,0x94,0xb6,0x67,0xb4,0x0b,0xe1,0xea,0x95,0x9c,0x66,0xdc,0xe7,0x5d,0x6c,0x05,
|
||||
0xda,0xd5,0xdf,0x7a,0xef,0xf6,0xdb,0x1f,0x82,0x4c,0xc0,0x68,0x47,0xa1,0xbd,0xee,
|
||||
0x39,0x50,0x56,0x4a,0xdd,0xdf,0xa5,0xf8,0xc6,0xda,0xca,0x90,0xca,0x01,0x42,0x9d,
|
||||
0x8b,0x0c,0x73,0x43,0x75,0x05,0x94,0xde,0x24,0xb3,0x80,0x34,0xe5,0x2c,0xdc,0x9b,
|
||||
0x3f,0xca,0x33,0x45,0xd0,0xdb,0x5f,0xf5,0x52,0xc3,0x21,0xda,0xe2,0x22,0x72,0x6b,
|
||||
0x3e,0xd0,0x5b,0xa8,0x87,0x8c,0x06,0x5d,0x0f,0xdd,0x09,0x19,0x93,0xd0,0xb9,0xfc,
|
||||
0x8b,0x0f,0x84,0x60,0x33,0x1c,0x9b,0x45,0xf1,0xf0,0xa3,0x94,0x3a,0x12,0x77,0x33,
|
||||
0x4d,0x44,0x78,0x28,0x3c,0x9e,0xfd,0x65,0x57,0x16,0x94,0x6b,0xfb,0x59,0xd0,0xc8,
|
||||
0x22,0x36,0xdb,0xd2,0x63,0x98,0x43,0xa1,0x04,0x87,0x86,0xf7,0xa6,0x26,0xbb,0xd6,
|
||||
0x59,0x4d,0xbf,0x6a,0x2e,0xaa,0x2b,0xef,0xe6,0x78,0xb6,0x4e,0xe0,0x2f,0xdc,0x7c,
|
||||
0xbe,0x57,0x19,0x32,0x7e,0x2a,0xd0,0xb8,0xba,0x29,0x00,0x3c,0x52,0x7d,0xa8,0x49,
|
||||
0x3b,0x2d,0xeb,0x25,0x49,0xfa,0xa3,0xaa,0x39,0xa7,0xc5,0xa7,0x50,0x11,0x36,0xfb,
|
||||
0xc6,0x67,0x4a,0xf5,0xa5,0x12,0x65,0x7e,0xb0,0xdf,0xaf,0x4e,0xb3,0x61,0x7f,0x2f } };
|
||||
|
||||
int ver = (t->toInt (0, BYTE) - '0') * 1000 + (t->toInt (1, BYTE) - '0') * 100 + (t->toInt (2, BYTE) - '0') * 10 + (t->toInt (3, BYTE) - '0');
|
||||
|
||||
std::ostringstream ld;
|
||||
ld << "Version = " << ver << std::endl;
|
||||
|
||||
int lenstype = t->getParent()->getTag(0x0083)->toInt(0,BYTE);
|
||||
|
||||
std::ostringstream lid;
|
||||
lid.setf (std::ios_base::hex, std::ios_base::basefield);
|
||||
lid.setf (std::ios_base::uppercase);
|
||||
|
||||
std::string model = t->getParent()->getParent()->getParent()->getTag(0x0110)->valueToString();
|
||||
int lidoffs = 7;
|
||||
bool d100 = false;
|
||||
if (model.substr(0,10)=="NIKON D100" || model.substr(0,9)=="NIKON D1X") {
|
||||
lidoffs = 0;
|
||||
d100 = true;
|
||||
}
|
||||
|
||||
unsigned char buffer[15];
|
||||
if (d100)
|
||||
memcpy (buffer, t->getValue()+6, 7);
|
||||
else
|
||||
memcpy (buffer, t->getValue()+4, 15);
|
||||
|
||||
if (ver>=201) {
|
||||
const unsigned char* serval = t->getParent()->getTag(0x001d)->getValue ();
|
||||
int serial = 0;
|
||||
for (int i=0; serval[i]; i++)
|
||||
serial = serial*10 + (isdigit(serval[i]) ? serval[i] - '0' : serval[i] % 10);
|
||||
const unsigned char* scval = t->getParent()->getTag(0x00a7)->getValue ();
|
||||
int key = 0;
|
||||
for (int i=0; i<4; i++)
|
||||
key ^= scval[i];
|
||||
|
||||
unsigned char ci = xlat[0][serial & 0xff];
|
||||
unsigned char cj = xlat[1][key];
|
||||
unsigned char ck = 0x60;
|
||||
for (int i=0; i < 15; i++)
|
||||
buffer[i] ^= (cj += ci * ck++);
|
||||
}
|
||||
|
||||
if (!d100) {
|
||||
ld << "ExitPupilPosition = " << (int) buffer[0] << std::endl;
|
||||
ld << "AFAperture = " << (int) buffer[1] << std::endl;
|
||||
ld << "FocusPosition = " << (int) buffer[4] << std::endl;
|
||||
ld << "FocusDistance = " << (int) buffer[5] << std::endl;
|
||||
ld << "FocalLength = " << (int) buffer[6] << std::endl;
|
||||
ld << "EffectiveMaxAperture = " << (int) buffer[14] << std::endl;
|
||||
}
|
||||
|
||||
for (int i=0; i<7; i++)
|
||||
lid << std::setw(2) << std::setfill('0') << (int)buffer[lidoffs+i] << ' ';
|
||||
lid << std::setw(2) << std::setfill('0') << lenstype;
|
||||
|
||||
std::map<std::string,std::string>::iterator r = lenses.find (lid.str());
|
||||
if (r!=lenses.end())
|
||||
ld << "Lens = " << r->second;
|
||||
else
|
||||
ld << "Lens = Unknown, ID=" << lid.str();
|
||||
|
||||
return ld.str();
|
||||
}
|
||||
|
||||
};
|
||||
NALensDataInterpreter naLensDataInterpreter;
|
||||
|
||||
const TagAttrib nikon2Attribs[] = {
|
||||
0, 1, 0, 0, 0x0002, "Unknown", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0003, "Quality", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0004, "ColorMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0005, "ImageAdjustment", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0006, "ISOSpeed", &naISOInterpreter,
|
||||
0, 1, 0, 0, 0x0007, "WhiteBalance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0008, "Focus", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0009, "Unknown", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000a, "DigitalZoom", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000b, "AuxiliaryLens", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0f00, "Unknown", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
|
||||
const TagAttrib nikon3Attribs[] = {
|
||||
0, 1, 0, 0, 0x0001, "MakerNoteVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0002, "ISOSpeed", &naISOInterpreter,
|
||||
0, 1, 0, 0, 0x0003, "ColorMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0004, "Quality", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0005, "WhiteBalance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0006, "Sharpness", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0007, "FocusMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0008, "FlashSetting", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0009, "FlashType", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000b, "WhiteBalanceFineTune", &stdInterpreter,
|
||||
0, 3, 0, 0, 0x000c, "ColorBalance1", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000d, "ProgramShift", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000e, "ExposureDifference", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000f, "ISOSelection", &naISOInterpreter,
|
||||
0, 1, 0, 0, 0x0010, "DataDump", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x0011, "NikonPreview", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0012, "FlashExposureComp", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0013, "ISOSetting", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0016, "ImageBoundary", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0018, "FlashExposureBracketValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0019, "ExposureBracketValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001a, "ImageProcessing", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001b, "CropHiSpeed", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001d, "SerialNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001e, "ColorSpace", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0020, "ImageAuthentication", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0080, "ImageAdjustment", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0081, "ToneComp", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0082, "AuxiliaryLens", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0083, "LensType", &naLensTypeInterpreter,
|
||||
0, 1, 0, 0, 0x0084, "Lens", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0085, "ManualFocusDistance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0086, "DigitalZoom", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0087, "FlashMode", &naFlashModeInterpreter,
|
||||
0, 1, 0, 0, 0x0088, "AFInfo", &naAFInfoInterpreter,
|
||||
0, 1, 0, 0, 0x0089, "ShootingMode", &naShootingModeInterpreter,
|
||||
0, 1, 0, 0, 0x008a, "AutoBracketRelease", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x008b, "LensFStops", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x008c, "NEFCurve1", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x008d, "ColorHue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x008f, "SceneMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0090, "LightSource", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0091, "ShotInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0092, "HueAdjustment", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0094, "Saturation", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0095, "NoiseReduction", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0096, "NEFCurve2", &stdInterpreter,
|
||||
0, 3, 0, 0, 0x0097, "ColorBalance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0098, "LensData", &naLensDataInterpreter,
|
||||
0, 1, 0, 0, 0x0099, "RawImageCenter", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x009a, "SensorPixelSize", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00a0, "SerialNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00a2, "ImageDataSize", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00a5, "ImageCount", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00a6, "DeletedImageCount", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00a7, "ShutterCount", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00a9, "ImageOptimization", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00aa, "Saturation", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00ab, "VariProgram", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00ac, "ImageStabilization", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00ad, "AFResponse", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00b0, "MultiExposure", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x00b1, "HighISONoiseReduction", &naHiISONRInterpreter,
|
||||
0, 1, 0, 0, 0x0e00, "PrintIM", &stdInterpreter,
|
||||
0, 0, 0, 0, 0x0e01, "NikonCaptureData", &stdInterpreter,
|
||||
0, 0, 0, 0, 0x0e09, "NikonCaptureVersion", &stdInterpreter,
|
||||
0, 0, 0, 0, 0x0e0e, "NikonCaptureOffsets", &stdInterpreter,
|
||||
0, 0, 0, 0, 0x0e10, "NikonScanIFD", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
|
||||
}
|
||||
#endif
|
||||
|
673
rtexif/olympusattribs.cc
Normal file
673
rtexif/olympusattribs.cc
Normal file
@@ -0,0 +1,673 @@
|
||||
/*
|
||||
* This file is part of RawTherapee.
|
||||
*
|
||||
* Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
|
||||
*
|
||||
* RawTherapee is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* RawTherapee is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _OLYMPUSATTRIBS_
|
||||
#define _OLYMPUSATTRIBS_
|
||||
|
||||
#include <rtexif.h>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <math.h>
|
||||
#include <sstream>
|
||||
#include <iomanip>
|
||||
|
||||
namespace rtexif {
|
||||
|
||||
class OLOnOffInterpreter : public Interpreter {
|
||||
public:
|
||||
OLOnOffInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
if (t->toInt()==0)
|
||||
return "Off";
|
||||
else
|
||||
return "On";
|
||||
}
|
||||
};
|
||||
OLOnOffInterpreter olOnOffInterpreter;
|
||||
|
||||
class OLYesNoInterpreter : public Interpreter {
|
||||
public:
|
||||
OLYesNoInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
if (t->toInt()==0)
|
||||
return "No";
|
||||
else
|
||||
return "Yes";
|
||||
}
|
||||
};
|
||||
OLYesNoInterpreter olYesNoInterpreter;
|
||||
|
||||
class OLApertureInterpreter : public Interpreter {
|
||||
public:
|
||||
OLApertureInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
std::ostringstream str;
|
||||
str.precision(2);
|
||||
str << pow(2, t->toInt() / 512.0);
|
||||
return str.str();
|
||||
}
|
||||
};
|
||||
OLApertureInterpreter olApertureInterpreter;
|
||||
|
||||
class OLLensTypeInterpreter : public Interpreter {
|
||||
std::map<int, std::string> lenses;
|
||||
public:
|
||||
OLLensTypeInterpreter () {
|
||||
lenses[1] = "Zuiko Digital ED 50mm F2.0 Macro";
|
||||
lenses[1 +65536] = "Zuiko Digital 40-150mm F3.5-4.5";
|
||||
lenses[2] = "Zuiko Digital ED 150mm F2.0";
|
||||
lenses[3] = "Zuiko Digital ED 300mm F2.8";
|
||||
lenses[5] = "Zuiko Digital 14-54mm F2.8-3.5";
|
||||
lenses[5 +65536] = "Zuiko Digital Pro ED 90-250mm F2.8";
|
||||
lenses[6] = "Zuiko Digital ED 50-200mm F2.8-3.5";
|
||||
lenses[6 +65536] = "Zuiko Digital ED 8mm F3.5 Fisheye";
|
||||
lenses[7] = "Zuiko Digital 11-22mm F2.8-3.5";
|
||||
lenses[7 +65536] = "Zuiko Digital 18-180mm F3.5-6.3";
|
||||
lenses[8] = "Zuiko Digital 70-300mm F4.0-5.6";
|
||||
lenses[21] = "Zuiko Digital ED 7-14mm F4.0";
|
||||
lenses[23] = "Zuiko Digital Pro ED 35-100mm F2.0";
|
||||
lenses[24] = "Zuiko Digital 14-45mm F3.5-5.6";
|
||||
lenses[32] = "Zuiko Digital 35mm F3.5 Macro";
|
||||
lenses[34] = "Zuiko Digital 17.5-45mm F3.5-5.6";
|
||||
lenses[35] = "Zuiko Digital ED 14-42mm F3.5-5.6";
|
||||
lenses[36] = "Zuiko Digital ED 40-150mm F4.0-5.6";
|
||||
lenses[48] = "Zuiko Digital ED 50-200mm SWD F2.8-3.5";
|
||||
lenses[49] = "Zuiko Digital ED 12-60mm SWD F2.8-4.0";
|
||||
lenses[256+ 1] = "18-50mm F3.5-5.6";
|
||||
lenses[256+ 2] = "55-200mm F4.0-5.6 DC";
|
||||
lenses[256+ 3] = "18-125mm F3.5-5.6 DC";
|
||||
lenses[256+ 4] = "18-125mm F3.5-5.6";
|
||||
lenses[256+ 5] = "30mm F1.4";
|
||||
lenses[256+ 6] = "50-500mm F4.0-6.3 EX DG APO HSM RF";
|
||||
lenses[256+ 7] = "105mm F2.8 DG";
|
||||
lenses[256+ 8] = "150mm F2.8 DG HSM";
|
||||
lenses[256+ 17] = "135-400mm F4.5-5.6 DG ASP APO RF";
|
||||
lenses[256+ 18] = "300-800mm F5.6 EX DG APO";
|
||||
lenses[512+ 1] = "D Vario Elmarit 14-50mm, F2.8-3.5 Asph.";
|
||||
lenses[512+ 2] = "D Summilux 25mm, F1.4 Asph.";
|
||||
lenses[512+ 4] = "Vario Elmar 14-150mm f3.5-5.6";
|
||||
lenses[768+ 1] = "D Vario Elmarit 14-50mm, F2.8-3.5 Asph.";
|
||||
lenses[768+ 2] = "D Summilux 25mm, F1.4 Asph.";
|
||||
}
|
||||
virtual std::string toString (Tag* t) {
|
||||
int make = t->toInt(0);
|
||||
int model = t->toInt(2);
|
||||
int add = 0;
|
||||
if (make==0 && (model==1 || model==5 || model==7 || model==6))
|
||||
add += 65536 * t->toInt(3);
|
||||
return lenses [256 * make + model + add];
|
||||
}
|
||||
};
|
||||
OLLensTypeInterpreter olLensTypeInterpreter;
|
||||
|
||||
class OLFlashTypeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
OLFlashTypeInterpreter () {
|
||||
choices[0] = "None";
|
||||
choices[2] = "Simple E-System";
|
||||
choices[3] = "E-System";
|
||||
}
|
||||
};
|
||||
OLFlashTypeInterpreter olFlashTypeInterpreter;
|
||||
|
||||
class OLExposureModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
OLExposureModeInterpreter () {
|
||||
choices[1] = "Manual";
|
||||
choices[2] = "Program";
|
||||
choices[3] = "Aperture-priority AE";
|
||||
choices[4] = "Shutter speed priority AE";
|
||||
choices[5] = "Program-shift";
|
||||
}
|
||||
};
|
||||
OLExposureModeInterpreter olExposureModeInterpreter;
|
||||
|
||||
class OLMeteringModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
OLMeteringModeInterpreter () {
|
||||
choices[2] = "Center-weighted average";
|
||||
choices[3] = "Spot";
|
||||
choices[5] = "ESP";
|
||||
choices[261] = "Pattern+AF";
|
||||
choices[515] = "Spot+Highlight control";
|
||||
choices[1027] = "Spot+Shadow control";
|
||||
}
|
||||
};
|
||||
OLMeteringModeInterpreter olMeteringModeInterpreter;
|
||||
|
||||
class OLFocusModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
OLFocusModeInterpreter () {
|
||||
choices[0] = "Single AF";
|
||||
choices[1] = "Sequential shooting AF";
|
||||
choices[2] = "Continuous AF";
|
||||
choices[3] = "Multi AF";
|
||||
choices[10] = "MF";
|
||||
}
|
||||
};
|
||||
OLFocusModeInterpreter olFocusModeInterpreter;
|
||||
|
||||
class OLWhitebalance2Interpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
OLWhitebalance2Interpreter () {
|
||||
choices[0] = "Auto";
|
||||
choices[16] = "7500K (Fine Weather with Shade)";
|
||||
choices[17] = "6000K (Cloudy)";
|
||||
choices[18] = "5300K (Fine Weather)";
|
||||
choices[20] = "3000K (Tungsten light)";
|
||||
choices[21] = "3600K (Tungsten light-like)";
|
||||
choices[33] = "6600K (Daylight fluorescent)";
|
||||
choices[34] = "4500K (Neutral white fluorescent)";
|
||||
choices[35] = "4000K (Cool white fluorescent)";
|
||||
choices[48] = "3600K (Tungsten light-like)";
|
||||
choices[256] = "Custom WB 1";
|
||||
choices[257] = "Custom WB 2";
|
||||
choices[258] = "Custom WB 3";
|
||||
choices[259] = "Custom WB 4";
|
||||
choices[512] = "Custom WB 5400K";
|
||||
choices[513] = "Custom WB 2900K";
|
||||
choices[514] = "Custom WB 8000K";
|
||||
}
|
||||
};
|
||||
OLWhitebalance2Interpreter olWhitebalance2Interpreter;
|
||||
|
||||
class OLSceneModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
OLSceneModeInterpreter () {
|
||||
choices[0] = "Standard";
|
||||
choices[6] = "Auto";
|
||||
choices[7] = "Sport";
|
||||
choices[8] = "Portrait";
|
||||
choices[9] = "Landscape+Portrait";
|
||||
choices[10] = "Landscape";
|
||||
choices[11] = "Night Scene";
|
||||
choices[12] = "Self Portrait";
|
||||
choices[13] = "Panorama";
|
||||
choices[14] = "2 in 1";
|
||||
choices[15] = "Movie";
|
||||
choices[16] = "Landscape+Portrait";
|
||||
choices[17] = "Night+Portrait";
|
||||
choices[18] = "Indoor";
|
||||
choices[19] = "Fireworks";
|
||||
choices[20] = "Sunset";
|
||||
choices[22] = "Macro";
|
||||
choices[23] = "Super Macro";
|
||||
choices[24] = "Food";
|
||||
choices[25] = "Documents";
|
||||
choices[26] = "Museum";
|
||||
choices[27] = "Shoot & Select";
|
||||
choices[28] = "Beach & Snow";
|
||||
choices[29] = "Self Protrait+Timer";
|
||||
choices[30] = "Candle";
|
||||
choices[31] = "Available Light";
|
||||
choices[32] = "Behind Glass";
|
||||
choices[33] = "My Mode";
|
||||
choices[34] = "Pet";
|
||||
choices[35] = "Underwater Wide1";
|
||||
choices[36] = "Underwater Macro";
|
||||
choices[37] = "Shoot & Select1";
|
||||
choices[38] = "Shoot & Select2";
|
||||
choices[39] = "High Key";
|
||||
choices[40] = "Digital Image Stabilization";
|
||||
choices[41] = "Auction";
|
||||
choices[42] = "Beach";
|
||||
choices[43] = "Snow";
|
||||
choices[44] = "Underwater Wide2";
|
||||
choices[45] = "Low Key";
|
||||
choices[46] = "Children";
|
||||
choices[47] = "Vivid";
|
||||
choices[48] = "Nature Macro";
|
||||
choices[49] = "Underwater Snapshot";
|
||||
choices[50] = "Shooting Guide";
|
||||
}
|
||||
};
|
||||
OLSceneModeInterpreter olSceneModeInterpreter;
|
||||
|
||||
class OLPictureModeBWFilterInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
OLPictureModeBWFilterInterpreter () {
|
||||
choices[0] = "n/a";
|
||||
choices[1] = "Neutral";
|
||||
choices[2] = "Yellow";
|
||||
choices[3] = "Orange";
|
||||
choices[4] = "Red";
|
||||
choices[5] = "Green";
|
||||
}
|
||||
};
|
||||
OLPictureModeBWFilterInterpreter olPictureModeBWFilterInterpreter;
|
||||
|
||||
class OLPictureModeToneInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
OLPictureModeToneInterpreter () {
|
||||
choices[0] = "n/a";
|
||||
choices[1] = "Neutral";
|
||||
choices[2] = "Sepia";
|
||||
choices[3] = "Blue";
|
||||
choices[4] = "Purple";
|
||||
choices[5] = "Green";
|
||||
}
|
||||
};
|
||||
OLPictureModeToneInterpreter olPictureModeToneInterpreter;
|
||||
|
||||
class OLImageQuality2Interpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
OLImageQuality2Interpreter () {
|
||||
choices[1] = "SQ";
|
||||
choices[2] = "HQ";
|
||||
choices[3] = "SHQ";
|
||||
choices[4] = "RAW";
|
||||
}
|
||||
};
|
||||
OLImageQuality2Interpreter olImageQuality2Interpreter;
|
||||
|
||||
class OLDevEngineInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
OLDevEngineInterpreter () {
|
||||
choices[0] = "High Speed";
|
||||
choices[1] = "High Function";
|
||||
choices[2] = "Advanced High Speed";
|
||||
choices[3] = "Advanced High Function";
|
||||
}
|
||||
};
|
||||
OLDevEngineInterpreter olDevEngineInterpreter;
|
||||
|
||||
class OLPictureModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
OLPictureModeInterpreter () {
|
||||
choices[1] = "Vivid";
|
||||
choices[2] = "Natural";
|
||||
choices[3] = "Muted";
|
||||
choices[4] = "Portrait";
|
||||
choices[256] = "Monotone";
|
||||
choices[512] = "Sepia";
|
||||
}
|
||||
};
|
||||
OLPictureModeInterpreter olPictureModeInterpreter;
|
||||
|
||||
class OLColorSpaceInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
OLColorSpaceInterpreter () {
|
||||
choices[0] = "sRGB";
|
||||
choices[1] = "Adobe RGB";
|
||||
choices[2] = "Pro Photo RGB";
|
||||
}
|
||||
};
|
||||
OLColorSpaceInterpreter olColorSpaceInterpreter;
|
||||
|
||||
class OLNoiseFilterInterpreter : public Interpreter {
|
||||
public:
|
||||
OLNoiseFilterInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
int a = t->toInt (0);
|
||||
int b = t->toInt (2);
|
||||
int c = t->toInt (4);
|
||||
if (a==-1 && b==-2 && c==1)
|
||||
return "Low";
|
||||
else if (a==-2 && b==-2 && c==1)
|
||||
return "Off";
|
||||
else if (a==0 && b==-2 && c==1)
|
||||
return "Standard";
|
||||
else if (a==1 && b==-2 && c==1)
|
||||
return "High";
|
||||
else return "Unknown";
|
||||
}
|
||||
};
|
||||
OLNoiseFilterInterpreter olNoiseFilterInterpreter;
|
||||
|
||||
class OLFlashModeInterpreter : public Interpreter {
|
||||
public:
|
||||
OLFlashModeInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
std::ostringstream str;
|
||||
int a = t->toInt ();
|
||||
str << "Flash Used = " << ((a&1) ? "Yes" : "No") << std::endl;
|
||||
str << "Fill-in = " << ((a&2) ? "On" : "Off") << std::endl;
|
||||
str << "Red-eye = " << ((a&4) ? "On" : "Off") << std::endl;
|
||||
str << "Slow-sync = " << ((a&8) ? "On" : "Off") << std::endl;
|
||||
str << "Forced On = " << ((a&16) ? "On" : "Off") << std::endl;
|
||||
str << "2nd Curtain = " << ((a&32) ? "On" : "Off");
|
||||
return str.str();
|
||||
}
|
||||
};
|
||||
OLFlashModeInterpreter olFlashModeInterpreter;
|
||||
|
||||
class OLNoiseReductionInterpreter : public Interpreter {
|
||||
public:
|
||||
OLNoiseReductionInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
std::ostringstream str;
|
||||
int a = t->toInt ();
|
||||
str << "Noise Reduction = " << ((a&1) ? "On" : "Off") << std::endl;
|
||||
str << "Noise Filter = " << ((a&2) ? "On" : "Off") << std::endl;
|
||||
str << "Noise Filter (ISO Boost) = " << ((a&4) ? "On" : "Off");
|
||||
return str.str();
|
||||
}
|
||||
};
|
||||
OLNoiseReductionInterpreter olNoiseReductionInterpreter;
|
||||
|
||||
class OLFlashModelInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
OLFlashModelInterpreter () {
|
||||
choices[0] = "None";
|
||||
choices[1] = "FL-20";
|
||||
choices[2] = "FL-50";
|
||||
choices[3] = "RF-11";
|
||||
choices[4] = "TF-22";
|
||||
choices[5] = "FL-36";
|
||||
choices[6] = "FL-50R";
|
||||
choices[7] = "FL-36R";
|
||||
}
|
||||
};
|
||||
OLFlashModelInterpreter olFlashModelInterpreter;
|
||||
|
||||
const TagAttrib olyFocusInfoAttribs[] = {
|
||||
0, 1, 0, 0, 0x0000, "FocusInfoVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0209, "AutoFocus", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x0210, "SceneDetect", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0211, "SceneArea", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0212, "SceneDetectData", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0300, "ZoomStepCount", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0301, "FocusStepCount", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0303, "FocusStepInfinity", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0304, "FocusStepNear", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0305, "FocusDistance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0308, "AFPoint", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1201, "ExternalFlash", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x1203, "ExternalFlashGuideNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1204, "ExternalFlashBounce", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1205, "ExternalFlashZoom", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1208, "InternalFlash", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x1209, "ManualFlash", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x1500, "SensorTemperature", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1600, "ImageStabilization", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
|
||||
const TagAttrib olyImageProcessingAttribs[] = {
|
||||
0, 1, 0, 0, 0x0000, "ImageProcessingVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0100, "WB_RBLevels", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0102, "WB_RBLevels3000K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0103, "WB_RBLevels3300K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0104, "WB_RBLevels3600K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0105, "WB_RBLevels3900K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0106, "WB_RBLevels4000K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0107, "WB_RBLevels4300K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0108, "WB_RBLevels4500K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0109, "WB_RBLevels4800K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x010a, "WB_RBLevels5300K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x010b, "WB_RBLevels6000K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x010c, "WB_RBLevels6600K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x010d, "WB_RBLevels7500K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x010e, "WB_RBLevelsCWB1", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x010f, "WB_RBLevelsCWB2", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0110, "WB_RBLevelsCWB3", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0111, "WB_RBLevelsCWB4", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0113, "WB_GLevel3000K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0114, "WB_GLevel3300K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0115, "WB_GLevel3600K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0116, "WB_GLevel3900K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0117, "WB_GLevel4000K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0118, "WB_GLevel4300K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0119, "WB_GLevel4500K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x011a, "WB_GLevel4800K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x011b, "WB_GLevel5300K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x011c, "WB_GLevel6000K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x011d, "WB_GLevel6600K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x011e, "WB_GLevel7500K", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x011f, "WB_GLevel", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0200, "ColorMatrix", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0300, "Enhancer", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0301, "EnhancerValues", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0310, "CoringFilter", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0311, "CoringValues", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0600, "BlackLevel2", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0610, "GainBase", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0611, "ValidBits", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0612, "CropLeft", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0613, "CropTop", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0614, "CropWidth", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0615, "CropHeight", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1010, "NoiseReduction2", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1011, "DistortionCorrection2", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x1012, "ShadingCompensation2", &olOnOffInterpreter,
|
||||
1, 1, 0, 0, 0x1103, "UnknownBlock", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1200, "FaceDetect", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x1201, "FaceDetectArea", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
|
||||
const TagAttrib olyRawDevelopmentAttribs[] = {
|
||||
0, 1, 0, 0, 0x0000, "RawDevVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0100, "RawDevExposureBiasValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0101, "RawDevWhiteBalanceValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0102, "RawDevWBFineAdjustment", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0103, "RawDevGrayPoint", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0104, "RawDevSaturationEmphasis", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0105, "RawDevMemoryColorEmphasis", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0106, "RawDevContrastValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0107, "RawDevSharpnessValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0108, "RawDevColorSpace", &olColorSpaceInterpreter,
|
||||
0, 1, 0, 0, 0x0109, "RawDevEngine", &olDevEngineInterpreter,
|
||||
0, 1, 0, 0, 0x010a, "RawDevNoiseReduction", &olNoiseReductionInterpreter,
|
||||
0, 1, 0, 0, 0x010b, "RawDevEditStatus", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x010c, "RawDevSettings", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
|
||||
const TagAttrib olyRawDevelopment2Attribs[] = {
|
||||
0, 1, 0, 0, 0x0000, "RawDevVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0100, "RawDevExposureBiasValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0101, "RawDevWhiteBalance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0102, "RawDevWhiteBalanceValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0103, "RawDevWBFineAdjustment", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0104, "RawDevGrayPoint", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0105, "RawDevContrastValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0106, "RawDevSharpnessValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0107, "RawDevSaturationEmphasis", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0108, "RawDevMemoryColorEmphasis", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0109, "RawDevColorSpace", &olColorSpaceInterpreter,
|
||||
0, 1, 0, 0, 0x010a, "RawDevNoiseReduction", &olNoiseReductionInterpreter,
|
||||
0, 1, 0, 0, 0x010b, "RawDevEngine", &olDevEngineInterpreter,
|
||||
0, 1, 0, 0, 0x010c, "RawDevPictureMode", &olPictureModeInterpreter,
|
||||
0, 1, 0, 0, 0x010d, "RawDevPMSaturation", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x010e, "RawDevPMContrast", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x010f, "RawDevPMSharpness", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0110, "RawDevPM_BWFilter", &olPictureModeBWFilterInterpreter,
|
||||
0, 1, 0, 0, 0x0111, "RawDevPMPictureTone", &olPictureModeToneInterpreter,
|
||||
0, 1, 0, 0, 0x0112, "RawDevGradation", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0113, "RawDevSaturation3", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0119, "RawDevAutoGradation", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x0120, "RawDevPMNoiseFilter", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
|
||||
const TagAttrib olyCameraSettingsAttribs[] = {
|
||||
0, 1, 0, 0, 0x0000, "CameraSettingsVersion", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x0100, "PreviewImageValid", &olYesNoInterpreter,
|
||||
1, 1, 0, 0, 0x0101, "PreviewImageStart", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x0102, "PreviewImageLength", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0200, "ExposureMode", &olExposureModeInterpreter,
|
||||
0, 1, 0, 0, 0x0201, "AELock", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x0202, "MeteringMode", &olMeteringModeInterpreter,
|
||||
0, 1, 0, 0, 0x0300, "MacroMode", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x0301, "FocusMode", &olFocusModeInterpreter,
|
||||
0, 1, 0, 0, 0x0302, "FocusProcess", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0303, "AFSearch", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0304, "AFAreas", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0400, "FlashMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0401, "FlashExposureComp", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0500, "WhiteBalance2", &olWhitebalance2Interpreter,
|
||||
0, 1, 0, 0, 0x0501, "WhiteBalanceTemperature", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0502, "WhiteBalanceBracket", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0503, "CustomSaturation", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0504, "ModifiedSaturation", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0505, "ContrastSetting", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0506, "SharpnessSetting", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0507, "ColorSpace", &olColorSpaceInterpreter,
|
||||
0, 1, 0, 0, 0x0509, "SceneMode", &olSceneModeInterpreter,
|
||||
0, 1, 0, 0, 0x050a, "NoiseReduction", &olNoiseReductionInterpreter,
|
||||
0, 1, 0, 0, 0x050b, "DistortionCorrection", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x050c, "ShadingCompensation", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x050d, "CompressionFactor", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x050f, "Gradation", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0520, "PictureMode", &olPictureModeInterpreter,
|
||||
0, 1, 0, 0, 0x0521, "PictureModeSaturation", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0522, "PictureModeHue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0523, "PictureModeContrast", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0524, "PictureModeSharpness", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0525, "PictureModeBWFilter", &olPictureModeBWFilterInterpreter,
|
||||
0, 1, 0, 0, 0x0526, "PictureModeTone", &olPictureModeToneInterpreter,
|
||||
0, 1, 0, 0, 0x0527, "NoiseFilter", &olNoiseFilterInterpreter,
|
||||
0, 1, 0, 0, 0x0600, "DriveMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0601, "PanoramaMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0603, "ImageQuality2", &olImageQuality2Interpreter,
|
||||
0, 1, 0, 0, 0x0900, "ManometerPressure", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0901, "ManometerReading", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0902, "ExtendedWBDetect", &olOnOffInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
|
||||
const TagAttrib olyEquipmentAttribs[] = {
|
||||
0, 1, 0, 0, 0x0000, "EquipmentVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0100, "CameraType2", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0101, "SerialNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0102, "InternalSerialNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0103, "FocalPlaneDiagonal", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0104, "BodyFirmwareVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0201, "LensType", &olLensTypeInterpreter,
|
||||
0, 1, 0, 0, 0x0202, "LensSerialNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0204, "LensFirmwareVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0205, "MaxApertureAtMinFocal", &olApertureInterpreter,
|
||||
0, 1, 0, 0, 0x0206, "MaxApertureAtMaxFocal", &olApertureInterpreter,
|
||||
0, 1, 0, 0, 0x0207, "MinFocalLength", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0208, "MaxFocalLength", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x020a, "MaxApertureAtCurrentFocal", &olApertureInterpreter,
|
||||
0, 1, 0, 0, 0x020b, "LensProperties", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0301, "Extender", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0302, "ExtenderSerialNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0303, "ExtenderModel", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0304, "ExtenderFirmwareVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1000, "FlashType", &olFlashTypeInterpreter,
|
||||
0, 1, 0, 0, 0x1001, "FlashModel", &olFlashModelInterpreter,
|
||||
0, 1, 0, 0, 0x1002, "FlashFirmwareVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1003, "FlashSerialNumber", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
|
||||
const TagAttrib olympusAttribs[] = {
|
||||
0, 1, 0, 0, 0x0104, "BodyFirmwareVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0200, "SpecialMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0201, "Quality", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0202, "Macro", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x0203, "BWMode", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x0204, "DigitalZoom", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0205, "FocalPlaneDiagonal", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0206, "LensDistortionParams", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0207, "CameraType", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x0208, "TextInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0209, "CameraID", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x020b, "EpsonImageWidth", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x020c, "EpsonImageHeight", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x020d, "EpsonSoftware", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0280, "PreviewImage", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0300, "PreCaptureFrames", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0301, "WhiteBoard", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0302, "OneTouchWB", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x0303, "WhiteBalanceBracket", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0304, "WhiteBalanceBias", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0403, "SceneMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0404, "SerialNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0405, "Firmware", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x0e00, "PrintIM", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0f00, "DataDump", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0f01, "DataDump2", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1000, "ShutterSpeedValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1001, "ISOValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1002, "ApertureValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1003, "BrightnessValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1004, "FlashMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1005, "FlashDevice", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1006, "ExposureCompensation", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1007, "SensorTemperature", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1008, "LensTemperature", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1009, "LightCondition", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x100a, "FocusRange", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x100b, "FocusMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x100c, "ManualFocusDistance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x100d, "ZoomStepCount", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x100e, "FocusStepCount", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x100f, "Sharpness", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1010, "FlashChargeLevel", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1011, "ColorMatrix", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1012, "BlackLevel", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1013, "ColorTemperatureBG", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1014, "ColorTemperatureRG", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1015, "WBMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1017, "RedBalance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1018, "BlueBalance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1019, "ColorMatrixNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x101a, "SerialNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x101b, "ExternalFlashAE1_0", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x101c, "ExternalFlashAE2_0", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x101d, "InternalFlashAE1_0", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x101e, "InternalFlashAE2_0", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x101f, "ExternalFlashAE1", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1020, "ExternalFlashAE2", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1021, "InternalFlashAE1", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1022, "InternalFlashAE2", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1023, "FlashExposureComp", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1024, "InternalFlashTable", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1025, "ExternalFlashGValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1026, "ExternalFlashBounce", &olYesNoInterpreter,
|
||||
0, 1, 0, 0, 0x1027, "ExternalFlashZoom", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1028, "ExternalFlashMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1029, "Contrast", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x102a, "SharpnessFactor", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x102b, "ColorControl", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x102c, "ValidBits", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x102d, "CoringFilter", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x102e, "OlympusImageWidth", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x102f, "OlympusImageHeight", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1030, "SceneDetect", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1031, "SceneArea", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1033, "SceneDetectData", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1034, "CompressionRatio", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x1035, "PreviewImageValid", &olYesNoInterpreter,
|
||||
1, 1, 0, 0, 0x1036, "PreviewImageStart", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x1037, "PreviewImageLength", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1038, "AFResult", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x1039, "CCDScanMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x103a, "NoiseReduction", &olOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x103b, "InfinityLensStep", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x103c, "NearLensStep", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x103d, "LightValueCenter", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x103e, "LightValuePeriphery", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x103f, "FieldCount", &stdInterpreter,
|
||||
0, 1, 0, olyEquipmentAttribs, 0x2010, "Equipment", &stdInterpreter,
|
||||
0, 1, 0, olyCameraSettingsAttribs, 0x2020, "CameraSettings", &stdInterpreter,
|
||||
0, 1, 0, olyRawDevelopmentAttribs, 0x2030, "RawDevelopment", &stdInterpreter,
|
||||
0, 1, 0, olyRawDevelopment2Attribs, 0x2031, "RawDev2", &stdInterpreter,
|
||||
0, 1, 0, olyImageProcessingAttribs, 0x2040, "ImageProcessing", &stdInterpreter,
|
||||
0, 1, 0, olyFocusInfoAttribs, 0x2050, "FocusInfo", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x2100, "Olympus2100", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x2300, "Olympus2300", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x2400, "Olympus2400", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x2500, "Olympus2500", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x2600, "Olympus2600", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x2700, "Olympus2700", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x2800, "Olympus2800", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x2900, "Olympus2900", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x3000, "RawInfo", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
};
|
||||
|
||||
#endif
|
585
rtexif/pentaxattribs.cc
Normal file
585
rtexif/pentaxattribs.cc
Normal file
@@ -0,0 +1,585 @@
|
||||
/*
|
||||
* This file is part of RawTherapee.
|
||||
*
|
||||
* Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
|
||||
*
|
||||
* RawTherapee is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* RawTherapee is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _PENTAXATTRIBS_
|
||||
#define _PENTAXATTRIBS_
|
||||
|
||||
#include <rtexif.h>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <math.h>
|
||||
#include <sstream>
|
||||
#include <iomanip>
|
||||
|
||||
namespace rtexif {
|
||||
|
||||
|
||||
class PAQualityInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PAQualityInterpreter () {
|
||||
choices[0] = "Good";
|
||||
choices[1] = "Better";
|
||||
choices[2] = "Best";
|
||||
choices[3] = "TIFF";
|
||||
choices[4] = "RAW";
|
||||
choices[5] = "Premium";
|
||||
}
|
||||
};
|
||||
PAQualityInterpreter paQualityInterpreter;
|
||||
|
||||
class PAOnOffInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PAOnOffInterpreter () {
|
||||
choices[0] = "Off";
|
||||
choices[1] = "On";
|
||||
}
|
||||
};
|
||||
PAOnOffInterpreter paOnOffInterpreter;
|
||||
|
||||
class PAPictureModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PAPictureModeInterpreter () {
|
||||
choices[0] = "Program";
|
||||
choices[1] = "Shutter Speed Priority";
|
||||
choices[2] = "Program AE";
|
||||
choices[3] = "Manual";
|
||||
choices[5] = "Portrait";
|
||||
choices[6] = "Landscape";
|
||||
choices[8] = "Sport";
|
||||
choices[9] = "Night Scene";
|
||||
choices[11] = "Soft";
|
||||
choices[12] = "Surf & Snow";
|
||||
choices[13] = "Candlelight";
|
||||
choices[14] = "Autumn";
|
||||
choices[15] = "Macro";
|
||||
choices[17] = "Fireworks";
|
||||
choices[18] = "Text";
|
||||
choices[19] = "Panorama";
|
||||
choices[30] = "Self Portrait";
|
||||
choices[31] = "Illustrations";
|
||||
choices[33] = "Digital Filter";
|
||||
choices[35] = "Night Scene Portrait";
|
||||
choices[37] = "Museum";
|
||||
choices[38] = "Food";
|
||||
choices[39] = "Underwater";
|
||||
choices[40] = "Green Mode";
|
||||
choices[49] = "Light Pet";
|
||||
choices[50] = "Dark Pet";
|
||||
choices[51] = "Medium Pet";
|
||||
choices[53] = "Underwater";
|
||||
choices[54] = "Candlelight";
|
||||
choices[55] = "Natural Skin Tone";
|
||||
choices[56] = "Synchro Sound Record";
|
||||
choices[58] = "Frame Composite";
|
||||
choices[59] = "Report";
|
||||
choices[60] = "Kids";
|
||||
choices[61] = "Blur Reduction";
|
||||
choices[65] = "Half-length Portrait";
|
||||
}
|
||||
};
|
||||
PAPictureModeInterpreter paPictureModeInterpreter;
|
||||
|
||||
class PAFlashModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PAFlashModeInterpreter () {
|
||||
choices[0x0] = "Auto, Did not fire";
|
||||
choices[0x1] = "Off";
|
||||
choices[0x2] = "On, Did not fire";
|
||||
choices[0x3] = "Auto, Did not fire, Red-eye reduction";
|
||||
choices[0x100] = "Auto, Fired";
|
||||
choices[0x102] = "On";
|
||||
choices[0x103] = "Auto, Fired, Red-eye reduction";
|
||||
choices[0x104] = "On, Red-eye reduction";
|
||||
choices[0x105] = "On, Wireless (Master)";
|
||||
choices[0x106] = "On, Wireless (Control)";
|
||||
choices[0x108] = "On, Soft";
|
||||
choices[0x109] = "On, Slow-sync";
|
||||
choices[0x10a] = "On, Slow-sync, Red-eye reduction";
|
||||
choices[0x10b] = "On, Trailing-curtain Sync";
|
||||
}
|
||||
};
|
||||
PAFlashModeInterpreter paFlashModeInterpreter;
|
||||
|
||||
class PAFocusModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PAFocusModeInterpreter () {
|
||||
choices[0] = "Normal";
|
||||
choices[1] = "Macro";
|
||||
choices[2] = "Infinity";
|
||||
choices[3] = "Manual";
|
||||
choices[4] = "Super Macro";
|
||||
choices[5] = "Pan Focus";
|
||||
choices[16] = "AF-S";
|
||||
choices[17] = "AF-C";
|
||||
choices[18] = "AF-A";
|
||||
}
|
||||
};
|
||||
PAFocusModeInterpreter paFocusModeInterpreter;
|
||||
|
||||
class PAAFPointInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PAAFPointInterpreter () {
|
||||
choices[1] = "Upper-left";
|
||||
choices[2] = "Top";
|
||||
choices[3] = "Upper-right";
|
||||
choices[4] = "Left";
|
||||
choices[5] = "Mid-left";
|
||||
choices[6] = "Center";
|
||||
choices[7] = "Mid-right";
|
||||
choices[8] = "Right";
|
||||
choices[9] = "Lower-left";
|
||||
choices[10] = "Bottom";
|
||||
choices[11] = "Lower-right";
|
||||
choices[65532] = "Face Recognition AF";
|
||||
choices[65533] = "Automatic Tracking AF";
|
||||
choices[65534] = "Fixed Center";
|
||||
choices[65535] = "Auto";
|
||||
}
|
||||
};
|
||||
PAAFPointInterpreter paAFPointInterpreter;
|
||||
|
||||
class PAAFFocusInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PAAFFocusInterpreter () {
|
||||
choices[0x0] = "Fixed Center or Multiple";
|
||||
choices[0x1] = "Top-left";
|
||||
choices[0x2] = "Top-center";
|
||||
choices[0x3] = "Top-right";
|
||||
choices[0x4] = "Left";
|
||||
choices[0x5] = "Center";
|
||||
choices[0x6] = "Right";
|
||||
choices[0x7] = "Bottom-left";
|
||||
choices[0x8] = "Bottom-center";
|
||||
choices[0x9] = "Bottom-right";
|
||||
choices[0xffff] = "None";
|
||||
}
|
||||
};
|
||||
PAAFFocusInterpreter paAFFocusInterpreter;
|
||||
|
||||
class PAISOInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PAISOInterpreter () {
|
||||
choices[3] = "50";
|
||||
choices[4] = "64";
|
||||
choices[5] = "80";
|
||||
choices[6] = "100";
|
||||
choices[7] = "125";
|
||||
choices[8] = "160";
|
||||
choices[9] = "200";
|
||||
choices[10] = "250";
|
||||
choices[11] = "320";
|
||||
choices[12] = "400";
|
||||
choices[13] = "500";
|
||||
choices[14] = "640";
|
||||
choices[15] = "800";
|
||||
choices[16] = "1000";
|
||||
choices[17] = "1250";
|
||||
choices[18] = "1600";
|
||||
choices[19] = "2000";
|
||||
choices[20] = "2500";
|
||||
choices[21] = "3200";
|
||||
choices[50] = "50";
|
||||
choices[100] = "100";
|
||||
choices[200] = "200";
|
||||
choices[258] = "50";
|
||||
choices[259] = "70";
|
||||
choices[260] = "100";
|
||||
choices[261] = "140";
|
||||
choices[262] = "200";
|
||||
choices[263] = "280";
|
||||
choices[264] = "400";
|
||||
choices[265] = "560";
|
||||
choices[266] = "800";
|
||||
choices[267] = "1100";
|
||||
choices[268] = "1600";
|
||||
choices[269] = "2200";
|
||||
choices[270] = "3200";
|
||||
choices[400] = "400";
|
||||
choices[800] = "800";
|
||||
choices[1600] = "1600";
|
||||
choices[3200] = "320";
|
||||
}
|
||||
};
|
||||
PAISOInterpreter paISOInterpreter;
|
||||
|
||||
class PAMeteringModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PAMeteringModeInterpreter () {
|
||||
choices[0] = "Multi-segment";
|
||||
choices[1] = "Center-weighted average";
|
||||
choices[2] = "Spot";
|
||||
}
|
||||
};
|
||||
PAMeteringModeInterpreter paMeteringModeInterpreter;
|
||||
|
||||
class PAWhiteBalanceInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PAWhiteBalanceInterpreter () {
|
||||
choices[0] = "Auto";
|
||||
choices[1] = "Daylight";
|
||||
choices[2] = "Shade";
|
||||
choices[3] = "Fluorescent";
|
||||
choices[4] = "Tungsten";
|
||||
choices[5] = "Manual";
|
||||
choices[6] = "DaylightFluorescent";
|
||||
choices[7] = "DaywhiteFluorescent";
|
||||
choices[8] = "WhiteFluorescent";
|
||||
choices[9] = "Flash";
|
||||
choices[10] = "Cloudy";
|
||||
choices[17] = "Kelvin";
|
||||
choices[65534] = "Unknown";
|
||||
choices[65535] = "User Selected";
|
||||
}
|
||||
};
|
||||
PAWhiteBalanceInterpreter paWhiteBalanceInterpreter;
|
||||
|
||||
class PAWhiteBalanceModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PAWhiteBalanceModeInterpreter () {
|
||||
choices[1] = "Auto (Daylight)";
|
||||
choices[2] = "Auto (Shade)";
|
||||
choices[3] = "Auto (Flash)";
|
||||
choices[4] = "Auto (Tungsten)";
|
||||
choices[6] = "Auto (DaylightFluorescent)";
|
||||
choices[7] = "Auto (DaywhiteFluorescent)";
|
||||
choices[8] = "Auto (WhiteFluorescent)";
|
||||
choices[10] = "Auto (Cloudy)";
|
||||
choices[65534] = "Preset (Fireworks?)";
|
||||
choices[65535] = "User-Selected";
|
||||
}
|
||||
};
|
||||
PAWhiteBalanceModeInterpreter paWhiteBalanceModeInterpreter;
|
||||
|
||||
class PASaturationInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PASaturationInterpreter () {
|
||||
choices[0] = "Low";
|
||||
choices[1] = "Normal";
|
||||
choices[2] = "High";
|
||||
choices[3] = "Med Low";
|
||||
choices[4] = "Med High";
|
||||
choices[5] = "Very Low";
|
||||
choices[6] = "Very High";
|
||||
}
|
||||
};
|
||||
PASaturationInterpreter paSaturationInterpreter;
|
||||
|
||||
class PAContrastInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PAContrastInterpreter () {
|
||||
choices[0] = "Low";
|
||||
choices[1] = "Normal";
|
||||
choices[2] = "High";
|
||||
choices[3] = "Med Low";
|
||||
choices[4] = "Med High";
|
||||
choices[5] = "Very Low";
|
||||
choices[6] = "Very High";
|
||||
}
|
||||
};
|
||||
PAContrastInterpreter paContrastInterpreter;
|
||||
|
||||
class PASharpnessInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PASharpnessInterpreter () {
|
||||
choices[0] = "Soft";
|
||||
choices[1] = "Normal";
|
||||
choices[2] = "Hard";
|
||||
choices[3] = "Med Soft";
|
||||
choices[4] = "Med Hard";
|
||||
choices[5] = "Very Soft";
|
||||
choices[6] = "Very Hard";
|
||||
}
|
||||
};
|
||||
PASharpnessInterpreter paSharpnessInterpreter;
|
||||
|
||||
class PALensTypeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
PALensTypeInterpreter () {
|
||||
choices[256*0+ 0] = "M-42 or No Lens";
|
||||
choices[256*1+ 0] = "K,M Lens";
|
||||
choices[256*2+ 0] = "A Series Lens";
|
||||
choices[256*3+ 0] = "SIGMA";
|
||||
choices[256*3+ 17] = "smc PENTAX-FA SOFT 85mm F2.8";
|
||||
choices[256*3+ 18] = "smc PENTAX-F 1.7X AF ADAPTER";
|
||||
choices[256*3+ 19] = "smc PENTAX-F 24-50mm F4";
|
||||
choices[256*3+ 20] = "smc PENTAX-F 35-80mm F4-5.6";
|
||||
choices[256*3+ 21] = "smc PENTAX-F 80-200mm F4.7-5.6";
|
||||
choices[256*3+ 22] = "smc PENTAX-F FISH-EYE 17-28mm F3.5-4.5";
|
||||
choices[256*3+ 23] = "smc PENTAX-F 100-300mm F4.5-5.6";
|
||||
choices[256*3+ 24] = "smc PENTAX-F 35-135mm F3.5-4.5";
|
||||
choices[256*3+ 25] = "smc PENTAX-F 35-105mm F4-5.6 or SIGMA or Tokina";
|
||||
choices[256*3+ 26] = "smc PENTAX-F* 250-600mm F5.6 ED[IF]";
|
||||
choices[256*3+ 27] = "smc PENTAX-F 28-80mm F3.5-4.5";
|
||||
choices[256*3+ 28] = "smc PENTAX-F 35-70mm F3.5-4.5";
|
||||
choices[256*3+ 29] = "PENTAX-F 28-80mm F3.5-4.5 or SIGMA AF 18-125mm F3.5-5.6 DC";
|
||||
choices[256*3+ 30] = "PENTAX-F 70-200mm F4-5.6";
|
||||
choices[256*3+ 31] = "smc PENTAX-F 70-210mm F4-5.6";
|
||||
choices[256*3+ 32] = "smc PENTAX-F 50mm F1.4";
|
||||
choices[256*3+ 33] = "smc PENTAX-F 50mm F1.7";
|
||||
choices[256*3+ 34] = "smc PENTAX-F 135mm F2.8 [IF]";
|
||||
choices[256*3+ 35] = "smc PENTAX-F 28mm F2.8";
|
||||
choices[256*3+ 36] = "SIGMA 20mm F1.8 EX DG ASPHERICAL RF";
|
||||
choices[256*3+ 38] = "smc PENTAX-F* 300mm F4.5 ED[IF]";
|
||||
choices[256*3+ 39] = "smc PENTAX-F* 600mm F4 ED[IF]";
|
||||
choices[256*3+ 40] = "smc PENTAX-F MACRO 100mm F2.8";
|
||||
choices[256*3+ 41] = "smc PENTAX-F MACRO 50mm F2.8 or Sigma 50mm F2,8 MACRO";
|
||||
choices[256*3+ 44] = "Tamron 35-90mm F4 AF or various SIGMA models";
|
||||
choices[256*3+ 46] = "SIGMA APO 70-200mm F2.8 EX";
|
||||
choices[256*3+ 50] = "smc PENTAX-FA 28-70 F4 AL";
|
||||
choices[256*3+ 51] = "SIGMA 28mm F1.8 EX DG ASPHERICAL MACRO";
|
||||
choices[256*3+ 52] = "smc PENTAX-FA 28-200mm F3.8-5.6 AL[IF]";
|
||||
choices[256*3+ 53] = "smc PENTAX-FA 28-80mm F3.5-5.6 AL";
|
||||
choices[256*3+ 247] = "smc PENTAX-DA FISH-EYE 10-17mm F3.5-4.5 ED[IF]";
|
||||
choices[256*3+ 248] = "smc PENTAX-DA 12-24mm F4 ED AL[IF]";
|
||||
choices[256*3+ 250] = "smc PENTAX-DA 50-200mm F4-5.6 ED";
|
||||
choices[256*3+ 251] = "smc PENTAX-DA 40mm F2.8 Limited";
|
||||
choices[256*3+ 252] = "smc PENTAX-DA 18-55mm F3.5-5.6 AL";
|
||||
choices[256*3+ 253] = "smc PENTAX-DA 14mm F2.8 ED[IF]";
|
||||
choices[256*3+ 254] = "smc PENTAX-DA 16-45mm F4 ED AL";
|
||||
choices[256*3+ 255] = "SIGMA";
|
||||
choices[256*4+ 1] = "smc PENTAX-FA SOFT 28mm F2.8";
|
||||
choices[256*4+ 2] = "smc PENTAX-FA 80-320mm F4.5-5.6";
|
||||
choices[256*4+ 3] = "smc PENTAX-FA 43mm F1.9 Limited";
|
||||
choices[256*4+ 6] = "smc PENTAX-FA 35-80mm F4-5.6";
|
||||
choices[256*4+ 12] = "smc PENTAX-FA 50mm F1.4";
|
||||
choices[256*4+ 15] = "smc PENTAX-FA 28-105mm F4-5.6 [IF]";
|
||||
choices[256*4+ 16] = "TAMRON AF 80-210mm F4-5.6 (178D)";
|
||||
choices[256*4+ 19] = "TAMRON SP AF 90mm F2.8 (172E)";
|
||||
choices[256*4+ 20] = "smc PENTAX-FA 28-80mm F3.5-5.6";
|
||||
choices[256*4+ 21] = "Cosina AF 100-300mm F5.6-6.7";
|
||||
choices[256*4+ 22] = "TOKINA 28-80mm F3.5-5.6";
|
||||
choices[256*4+ 23] = "smc PENTAX-FA 20-35mm F4 AL";
|
||||
choices[256*4+ 24] = "smc PENTAX-FA 77mm F1.8 Limited";
|
||||
choices[256*4+ 25] = "TAMRON SP AF 14mm F2.8";
|
||||
choices[256*4+ 26] = "smc PENTAX-FA MACRO 100mm F3.5";
|
||||
choices[256*4+ 27] = "TAMRON AF28-300mm F/3.5-6.3 LD Aspherical[IF] MACRO (285D)";
|
||||
choices[256*4+ 28] = "smc PENTAX-FA 35mm F2 AL";
|
||||
choices[256*4+ 29] = "TAMRON AF 28-200mm F/3.8-5.6 LD Super II MACRO (371D)";
|
||||
choices[256*4+ 34] = "smc PENTAX-FA 24-90mm F3.5-4.5 AL[IF]";
|
||||
choices[256*4+ 35] = "smc PENTAX-FA 100-300mm F4.7-5.8";
|
||||
choices[256*4+ 36] = "TAMRON AF70-300mm F/4-5.6 LD MACRO";
|
||||
choices[256*4+ 37] = "TAMRON SP AF 24-135mm F3.5-5.6 AD AL (190D)";
|
||||
choices[256*4+ 38] = "smc PENTAX-FA 28-105mm F3.2-4.5 AL[IF]";
|
||||
choices[256*4+ 39] = "smc PENTAX-FA 31mm F1.8AL Limited";
|
||||
choices[256*4+ 41] = "TAMRON AF 28-200mm Super Zoom F3.8-5.6 Aspherical XR [IF] MACRO (A03)";
|
||||
choices[256*4+ 43] = "smc PENTAX-FA 28-90mm F3.5-5.6";
|
||||
choices[256*4+ 44] = "smc PENTAX-FA J 75-300mm F4.5-5.8 AL";
|
||||
choices[256*4+ 45] = "TAMRON 28-300mm F3.5-6.3 Ultra zoom XR";
|
||||
choices[256*4+ 46] = "smc PENTAX-FA J 28-80mm F3.5-5.6 AL";
|
||||
choices[256*4+ 47] = "smc PENTAX-FA J 18-35mm F4-5.6 AL";
|
||||
choices[256*4+ 49] = "TAMRON SP AF 28-75mm F2.8 XR Di (A09)";
|
||||
choices[256*4+ 51] = "smc PENTAX-D FA 50mm F2.8 MACRO";
|
||||
choices[256*4+ 52] = "smc PENTAX-D FA 100mm F2.8 MACRO";
|
||||
choices[256*4+ 75] = "TAMRON SP AF 70-200 F2.8 Di LD [IF] Macro (A001)";
|
||||
choices[256*4+ 229] = "smc PENTAX-DA 18-55mm F3.5-5.6 AL II";
|
||||
choices[256*4+ 230] = "TAMRON SP AF 17-50mm F2.8 XR Di II";
|
||||
choices[256*4+ 231] = "smc PENTAX-DA 18-250mm F3.5-6.3 ED AL [IF]";
|
||||
choices[256*4+ 237] = "Samsung/Schneider D-XENOGON 10-17mm F3.5-4.5";
|
||||
choices[256*4+ 239] = "Samsung D-XENON 12-24mm F4 ED AL [IF]";
|
||||
choices[256*4+ 243] = "smc PENTAX-DA 70mm F2.4 Limited";
|
||||
choices[256*4+ 244] = "smc PENTAX-DA 21mm F3.2 AL Limited";
|
||||
choices[256*4+ 245] = "Schneider D-XENON 50-200mm";
|
||||
choices[256*4+ 246] = "Schneider D-XENON 18-55mm";
|
||||
choices[256*4+ 247] = "smc PENTAX-DA 10-17mm F3.5-4.5 ED [IF] Fisheye zoom";
|
||||
choices[256*4+ 248] = "smc PENTAX-DA 12-24mm F4 ED AL [IF]";
|
||||
choices[256*4+ 249] = "TAMRON XR DiII 18-200mm F3.5-6.3 (A14)";
|
||||
choices[256*4+ 250] = "smc PENTAX-DA 50-200mm F4-5.6 ED";
|
||||
choices[256*4+ 251] = "smc PENTAX-DA 40mm F2.8 Limited";
|
||||
choices[256*4+ 252] = "smc PENTAX-DA 18-55mm F3.5-5.6 AL";
|
||||
choices[256*4+ 253] = "smc PENTAX-DA 14mm F2.8 ED[IF]";
|
||||
choices[256*4+ 254] = "smc PENTAX-DA 16-45mm F4 ED AL";
|
||||
choices[256*5+ 1] = "smc PENTAX-FA* 24mm F2 AL[IF]";
|
||||
choices[256*5+ 2] = "smc PENTAX-FA 28mm F2.8 AL";
|
||||
choices[256*5+ 3] = "smc PENTAX-FA 50mm F1.7";
|
||||
choices[256*5+ 4] = "smc PENTAX-FA 50mm F1.4";
|
||||
choices[256*5+ 5] = "smc PENTAX-FA* 600mm F4 ED[IF]";
|
||||
choices[256*5+ 6] = "smc PENTAX-FA* 300mm F4.5 ED[IF]";
|
||||
choices[256*5+ 7] = "smc PENTAX-FA 135mm F2.8 [IF]";
|
||||
choices[256*5+ 8] = "smc PENTAX-FA MACRO 50mm F2.8";
|
||||
choices[256*5+ 9] = "smc PENTAX-FA MACRO 100mm F2.8";
|
||||
choices[256*5+ 10] = "smc PENTAX-FA* 85mm F1.4 [IF]";
|
||||
choices[256*5+ 11] = "smc PENTAX-FA* 200mm F2.8 ED[IF]";
|
||||
choices[256*5+ 12] = "smc PENTAX-FA 28-80mm F3.5-4.7";
|
||||
choices[256*5+ 13] = "smc PENTAX-FA 70-200mm F4-5.6";
|
||||
choices[256*5+ 14] = "smc PENTAX-FA* 250-600mm F5.6 ED[IF]";
|
||||
choices[256*5+ 15] = "smc PENTAX-FA 28-105mm F4-5.6";
|
||||
choices[256*5+ 16] = "smc PENTAX-FA 100-300mm F4.5-5.6";
|
||||
choices[256*5+ 98] = "smc PENTAX-FA 100-300mm F4.5-5.6";
|
||||
choices[256*6+ 1] = "smc PENTAX-FA* 85mm F1.4 [IF]";
|
||||
choices[256*6+ 2] = "smc PENTAX-FA* 200mm F2.8 ED[IF]";
|
||||
choices[256*6+ 3] = "smc PENTAX-FA* 300mm F2.8 ED[IF]";
|
||||
choices[256*6+ 4] = "smc PENTAX-FA* 28-70mm F2.8 AL";
|
||||
choices[256*6+ 5] = "smc PENTAX-FA* 80-200mm F2.8 ED[IF]";
|
||||
choices[256*6+ 6] = "smc PENTAX-FA* 28-70mm F2.8 AL";
|
||||
choices[256*6+ 7] = "smc PENTAX-FA* 80-200mm F2.8 ED[IF]";
|
||||
choices[256*6+ 8] = "smc PENTAX-FA 28-70mm F4AL";
|
||||
choices[256*6+ 9] = "smc PENTAX-FA 20mm F2.8";
|
||||
choices[256*6+ 10] = "smc PENTAX-FA* 400mm F5.6 ED[IF]";
|
||||
choices[256*6+ 13] = "smc PENTAX-FA* 400mm F5.6 ED[IF]";
|
||||
choices[256*6+ 14] = "smc PENTAX-FA* MACRO 200mm F4 ED[IF]";
|
||||
choices[256*7+ 0] = "smc PENTAX-DA 21mm F3.2 AL Limited";
|
||||
choices[256*7+ 75] = "TAMRON SP AF 70-200mm F2.8 Di LD [IF] Macro (A001)";
|
||||
choices[256*7+ 217] = "smc PENTAX-DA 50-200mm F4-5.6 ED WR";
|
||||
choices[256*7+ 218] = "smc PENTAX-DA 18-55mm F3.5-5.6 AL WR";
|
||||
choices[256*7+ 220] = "TAMRON SP AF 10-24mm F3.5-4.5 Di II LD Aspherical [IF]";
|
||||
choices[256*7+ 222] = "smc PENTAX-DA 18-55mm F3.5-5.6 AL II";
|
||||
choices[256*7+ 223] = "Samsung D-XENON 18-55mm F3.5-5.6 II";
|
||||
choices[256*7+ 224] = "smc PENTAX-DA 15mm F4 ED AL Limited";
|
||||
choices[256*7+ 225] = "Samsung D-XENON 18-250mm F3.5-6.3";
|
||||
choices[256*7+ 229] = "smc PENTAX-DA 18-55mm F3.5-5.6 AL II";
|
||||
choices[256*7+ 230] = "TAMRON AF 17-50mm F2.8 XR Di-II LD (Model A16)";
|
||||
choices[256*7+ 231] = "smc PENTAX-DA 18-250mm F3.5-6.3 ED AL [IF]";
|
||||
choices[256*7+ 233] = "smc PENTAX-DA 35mm F2.8 Macro Limited";
|
||||
choices[256*7+ 234] = "smc PENTAX-DA* 300mm F4 ED [IF] SDM (SDM unused)";
|
||||
choices[256*7+ 235] = "smc PENTAX-DA* 200mm F2.8 ED [IF] SDM (SDM unused)";
|
||||
choices[256*7+ 236] = "smc PENTAX-DA 55-300mm F4-5.8 ED";
|
||||
choices[256*7+ 238] = "TAMRON AF 18-250mm F3.5-6.3 Di II LD Aspherical [IF] MACRO";
|
||||
choices[256*7+ 241] = "smc PENTAX-DA* 50-135mm F2.8 ED [IF] SDM (SDM unused)";
|
||||
choices[256*7+ 242] = "smc PENTAX-DA* 16-50mm F2.8 ED AL [IF] SDM (SDM unused)";
|
||||
choices[256*7+ 243] = "smc PENTAX-DA 70mm F2.4 Limited";
|
||||
choices[256*7+ 244] = "smc PENTAX-DA 21mm F3.2 AL Limited";
|
||||
choices[256*8+ 226] = "smc PENTAX-DA* 55mm F1.4 SDM";
|
||||
choices[256*8+ 227] = "smc PENTAX DA* 60-250mm F4 [IF] SDM";
|
||||
choices[256*8+ 232] = "smc PENTAX-DA 17-70mm F4 AL [IF] SDM";
|
||||
choices[256*8+ 234] = "smc PENTAX-DA* 300mm F4 ED [IF] SDM";
|
||||
choices[256*8+ 235] = "smc PENTAX-DA* 200mm F2.8 ED [IF] SDM";
|
||||
choices[256*8+ 241] = "smc PENTAX-DA* 50-135mm F2.8 ED [IF] SDM";
|
||||
choices[256*8+ 242] = "smc PENTAX-DA* 16-50mm F2.8 ED AL [IF] SDM";
|
||||
choices[256*8+ 255] = "Sigma 70-200mm F2.8 EX DG Macro HSM II or 150-500mm F5-6.3 DG OS";
|
||||
}
|
||||
virtual std::string toString (Tag* t) {
|
||||
return choices[256*t->toInt(0,BYTE) + t->toInt(1,BYTE)];
|
||||
}
|
||||
};
|
||||
PALensTypeInterpreter paLensTypeInterpreter;
|
||||
|
||||
class PASRInfoInterpreter : public Interpreter {
|
||||
public:
|
||||
PASRInfoInterpreter () { }
|
||||
|
||||
virtual std::string toString (Tag* t) {
|
||||
std::ostringstream str;
|
||||
int b = t->toInt(0,BYTE);
|
||||
if (!b)
|
||||
str << "SRResult = Not stabilized" << std::endl;
|
||||
else if (b & 1)
|
||||
str << "SRResult = Stabilized" << std::endl;
|
||||
b = t->toInt(1,BYTE);
|
||||
if (!b)
|
||||
str << "ShakeReduction = Off" << std::endl;
|
||||
else
|
||||
str << "ShakeReduction = On" << std::endl;
|
||||
str << "SRHalfPressTime = " << t->toInt(2,BYTE) << std::endl;
|
||||
str << "SRFocalLength = " << t->toInt(3,BYTE);
|
||||
return str.str();
|
||||
}
|
||||
};
|
||||
PASRInfoInterpreter paSRInfoInterpreter;
|
||||
|
||||
|
||||
const TagAttrib pentaxAttribs[] = {
|
||||
0, 1, 0, 0, 0x0001, "PentaxVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0001, "PentaxModelType", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0002, "PreviewImageSize", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0003, "PreviewImageLength", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0004, "PreviewImageStart", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0005, "PentaxModelID", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0006, "Date", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0007, "Time", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0008, "Quality", &paQualityInterpreter,
|
||||
0, 1, 0, 0, 0x0009, "PentaxImageSize", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000b, "PictureMode", &paPictureModeInterpreter,
|
||||
0, 1, 0, 0, 0x000c, "FlashMode", &paFlashModeInterpreter,
|
||||
0, 1, 0, 0, 0x000d, "FocusMode", &paFocusModeInterpreter,
|
||||
0, 1, 0, 0, 0x000e, "AFPointSelected", &paAFPointInterpreter,
|
||||
0, 1, 0, 0, 0x000f, "AFPointsInFocus", &paAFFocusInterpreter,
|
||||
0, 1, 0, 0, 0x0010, "FocusPosition", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0012, "ExposureTime", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0013, "FNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0014, "ISO", &paISOInterpreter,
|
||||
0, 1, 0, 0, 0x0015, "LightReading", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0016, "ExposureCompensation", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0017, "MeteringMode", &paMeteringModeInterpreter,
|
||||
0, 1, 0, 0, 0x0018, "AutoBracketing", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0019, "WhiteBalance", &paWhiteBalanceInterpreter,
|
||||
0, 1, 0, 0, 0x001a, "WhiteBalanceMode", &paWhiteBalanceModeInterpreter,
|
||||
0, 1, 0, 0, 0x001b, "BlueBalance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001c, "RedBalance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001d, "FocalLength", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001e, "DigitalZoom", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001f, "Saturation", &paSaturationInterpreter,
|
||||
0, 1, 0, 0, 0x0020, "Contrast", &paContrastInterpreter,
|
||||
0, 1, 0, 0, 0x0021, "Sharpness", &paSharpnessInterpreter,
|
||||
0, 1, 0, 0, 0x0022, "WorldTimeLocation", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0023, "HometownCity", &stdInterpreter,
|
||||
0, 3, 0, 0, 0x0024, "DestinationCity", &stdInterpreter,
|
||||
0, 3, 0, 0, 0x0025, "HometownDST", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0026, "DestinationDST", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0027, "DSPFirmwareVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0028, "CPUFirmwareVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0029, "FrameNumber", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x002d, "EffectiveLV", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0032, "ImageProcessing", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0033, "PictureMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0034, "DriveMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0037, "ColorSpace", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0038, "ImageAreaOffset", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0039, "RawImageSize", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x003c, "AFPointsInFocus", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x003e, "PreviewImageBorders", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x003f, "LensType", &paLensTypeInterpreter,
|
||||
0, 1, 0, 0, 0x0040, "SensitivityAdjust", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0041, "ImageProcessingCount", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0047, "CameraTemperature", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0048, "AELock", &paOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x0049, "NoiseReduction", &paOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x004d, "FlashExposureComp", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x004f, "ImageTone", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0050, "ColorTemperature", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x005c, "ShakeReductionInfo", &paSRInfoInterpreter,
|
||||
0, 1, 0, 0, 0x005d, "ShutterCount", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0200, "BlackPoint", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0201, "WhitePoint", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0205, "ShotInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0206, "AEInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0207, "LensInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0208, "FlashInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0209, "AEMeteringSegments", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x020a, "FlashADump", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x020b, "FlashBDump", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x020d, "WB_RGGBLevelsDaylight", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x020e, "WB_RGGBLevelsShade", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x020f, "WB_RGGBLevelsCloudy", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0210, "WB_RGGBLevelsTungsten", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0211, "WB_RGGBLevelsFluorescentD", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0212, "WB_RGGBLevelsFluorescentN", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0213, "WB_RGGBLevelsFluorescentW", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0214, "WB_RGGBLevelsFlash", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0215, "CameraInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0216, "BatteryInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x021f, "AFInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0222, "ColorInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x03fe, "DataDump", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x03ff, "UnknownInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0402, "ToneCurve", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0403, "ToneCurves", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0e00, "PrintIM", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
};
|
||||
|
||||
#endif
|
1434
rtexif/rtexif.cc
Normal file
1434
rtexif/rtexif.cc
Normal file
File diff suppressed because it is too large
Load Diff
249
rtexif/rtexif.h
Normal file
249
rtexif/rtexif.h
Normal file
@@ -0,0 +1,249 @@
|
||||
/*
|
||||
* This file is part of RawTherapee.
|
||||
*
|
||||
* Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
|
||||
*
|
||||
* RawTherapee is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* RawTherapee is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _MEXIF3_
|
||||
#define _MEXIF3_
|
||||
|
||||
#include <stdio.h>
|
||||
#include <vector>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <stdlib.h>
|
||||
|
||||
namespace rtexif {
|
||||
|
||||
enum TagType {INVALID=0, BYTE=1, ASCII=2, SHORT=3, LONG=4, RATIONAL=5, UNDEFINED=7, SSHORT=8, SLONG=9, SRATIONAL=10, FLOAT=11, DOUBLE=12, OLYUNDEF=13, SUBDIR=99};
|
||||
enum ActionCode {DONTWRITE=0, WRITE=1, SYSTEM=2};
|
||||
enum ByteOrder {INTEL=0x4949, MOTOROLA=0x4D4D};
|
||||
enum MNKind {NOMK, IFD, HEADERIFD, NIKON3, OLYMPUS2, FUJI};
|
||||
|
||||
struct TIFFHeader {
|
||||
|
||||
unsigned short byteOrder;
|
||||
unsigned short fixed;
|
||||
unsigned int ifdOffset;
|
||||
};
|
||||
|
||||
class Tag;
|
||||
class Interpreter;
|
||||
|
||||
// structure of informations describing an exif tag
|
||||
struct TagAttrib {
|
||||
int ignore; // =0: never ignore, =1: always ignore, =2: ignore if the subdir type is reduced image, =-1: end of table
|
||||
int action; //=0: dont write it to the output, =1: write it to the output, =2: dont write, dont show, =3: write, dont show
|
||||
int editable;
|
||||
const TagAttrib* subdirAttribs; // =0 ->not subdir
|
||||
unsigned short ID;
|
||||
const char* name;
|
||||
Interpreter* interpreter;
|
||||
};
|
||||
|
||||
// a directory of tags
|
||||
class TagDirectory {
|
||||
|
||||
protected:
|
||||
std::vector<Tag*> tags; // tags in the directory
|
||||
const TagAttrib* attribs; // descriptor table to decode the tags
|
||||
ByteOrder order; // byte order
|
||||
TagDirectory* parent; // parent directory (NULL if root)
|
||||
|
||||
public:
|
||||
TagDirectory ();
|
||||
TagDirectory (TagDirectory* p, FILE* f, int base, const TagAttrib* ta, ByteOrder border);
|
||||
TagDirectory (TagDirectory* p, const TagAttrib* ta, ByteOrder border);
|
||||
~TagDirectory ();
|
||||
|
||||
inline ByteOrder getOrder () const { return order; }
|
||||
TagDirectory* getParent () { return parent; }
|
||||
inline int getCount () const { return tags.size (); }
|
||||
const TagAttrib* getAttrib (int id);
|
||||
const TagAttrib* getAttrib (const char* name);
|
||||
const TagAttrib* getAttribTable() { return attribs; }
|
||||
Tag* getTag (const char* name);
|
||||
Tag* getTag (int ID);
|
||||
void addTag (Tag* a);
|
||||
void addTagFront (Tag* a);
|
||||
void replaceTag (Tag* a);
|
||||
inline Tag* getTagByIndex (int ix) { return tags[ix]; }
|
||||
inline void setOrder (ByteOrder bo) { order = bo; }
|
||||
|
||||
int calculateSize ();
|
||||
int write (int start, unsigned char* buffer);
|
||||
TagDirectory* clone (TagDirectory* parent);
|
||||
void applyChange (std::string field, std::string value);
|
||||
|
||||
void printAll () const;
|
||||
void sort ();
|
||||
};
|
||||
|
||||
// a class representing a single tag
|
||||
class Tag {
|
||||
|
||||
protected:
|
||||
unsigned short tag;
|
||||
TagType type;
|
||||
unsigned int count;
|
||||
unsigned char* value;
|
||||
int valuesize;
|
||||
bool keep;
|
||||
|
||||
const TagAttrib* attrib;
|
||||
TagDirectory* parent;
|
||||
TagDirectory** directory;
|
||||
MNKind makerNoteKind;
|
||||
|
||||
public:
|
||||
Tag (TagDirectory* parent, FILE* f, int base); // parse next tag from the file
|
||||
Tag (TagDirectory* parent, const TagAttrib* attr);
|
||||
Tag (TagDirectory* parent, const TagAttrib* attr, int data, TagType t); // create a new tag from array (used
|
||||
Tag (TagDirectory* parent, const TagAttrib* attr, const char* data); // create a new tag from array (used
|
||||
~Tag ();
|
||||
void initInt (int data, TagType t, int count=1);
|
||||
void initString (const char* text);
|
||||
void initSubDir ();
|
||||
void initMakerNote (MNKind mnk, const TagAttrib* ta);
|
||||
void initUndefArray (const char* data, int len);
|
||||
void initLongArray (const char* data, int len);
|
||||
void initRational (int num, int den);
|
||||
|
||||
// get basic tag properties
|
||||
int getID () const { return tag; }
|
||||
int getCount () const { return count; }
|
||||
TagType getType () const { return type; }
|
||||
unsigned char* getValue () const { return value; }
|
||||
const TagAttrib* getAttrib () const { return attrib; }
|
||||
inline ByteOrder getOrder () const { return parent ? parent->getOrder() : INTEL; }
|
||||
inline TagDirectory* getParent () const { return parent; }
|
||||
int getValueSize () const { return valuesize; }
|
||||
|
||||
// read/write value
|
||||
int toInt (int ofs=0, TagType astype=INVALID);
|
||||
void fromInt (int v);
|
||||
double toDouble (int ofs=0);
|
||||
void toRational (int& num, int& denom, int ofs=0);
|
||||
void toString (char* buffer, int ofs=0);
|
||||
void fromString (const char* v, int size=-1);
|
||||
void setInt (int v, int ofs=0, TagType astype=LONG);
|
||||
|
||||
// additional getter/setter for more confortable use
|
||||
std::string valueToString ();
|
||||
std::string nameToString (int i=0);
|
||||
void valueFromString (const std::string& value);
|
||||
|
||||
// functions for writing
|
||||
int calculateSize ();
|
||||
int write (int offs, int dataOffs, unsigned char* buffer);
|
||||
Tag* clone (TagDirectory* parent);
|
||||
|
||||
// to control if the tag shall be written
|
||||
bool getKeep () { return keep; }
|
||||
void setKeep (bool k) { keep = k; }
|
||||
|
||||
// get subdirectory (there can be several, the last is NULL)
|
||||
bool isDirectory () { return directory!=NULL; }
|
||||
TagDirectory* getDirectory (int i=0) { return directory[i]; }
|
||||
|
||||
MNKind getMakerNoteFormat () { return makerNoteKind; }
|
||||
};
|
||||
|
||||
class ExifManager {
|
||||
|
||||
static std::vector<Tag*> defTags;
|
||||
|
||||
static Tag* saveCIFFMNTag (FILE* f, TagDirectory* root, int len, const char* name);
|
||||
public:
|
||||
static TagDirectory* parse (FILE*f, int base);
|
||||
static TagDirectory* parseJPEG (FILE*f);
|
||||
static TagDirectory* parseTIFF (FILE*f);
|
||||
static TagDirectory* parseCIFF (FILE* f, int base, int length);
|
||||
static void parseCIFF (FILE* f, int base, int length, TagDirectory* root);
|
||||
|
||||
static const std::vector<Tag*>& getDefaultTIFFTags (TagDirectory* forthis);
|
||||
static int createJPEGMarker (const TagDirectory* root, const std::vector< std::pair<std::string,std::string> >& changeList, int W, int H, unsigned char* buffer);
|
||||
static int createTIFFHeader (const TagDirectory* root, const std::vector< std::pair<std::string,std::string> >& changeList, int W, int H, int bps, const char* profiledata, int profilelen, const char* iptcdata, int iptclen, unsigned char* buffer);
|
||||
};
|
||||
|
||||
class Interpreter {
|
||||
protected:
|
||||
char buffer[1024];
|
||||
public:
|
||||
Interpreter () {}
|
||||
virtual std::string toString (Tag* t) { return ""; }
|
||||
virtual void fromString (Tag* t, const std::string& value) {}
|
||||
};
|
||||
|
||||
class StdInterpreter : public Interpreter {
|
||||
public:
|
||||
StdInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
t->toString (buffer);
|
||||
std::string s(buffer);
|
||||
std::string::size_type p1 = s.find_first_not_of(' ');
|
||||
if( p1 == std::string::npos )
|
||||
return s;
|
||||
else
|
||||
return s.substr(p1, s.find_last_not_of(' ')-p1+1);
|
||||
}
|
||||
virtual void fromString (Tag* t, const std::string& value) {
|
||||
if (t->getType()==SHORT || t->getType()==LONG)
|
||||
t->fromInt (atoi(value.c_str()));
|
||||
else
|
||||
t->fromString (value.c_str());
|
||||
}
|
||||
};
|
||||
extern StdInterpreter stdInterpreter;
|
||||
class ChoiceInterpreter : public Interpreter {
|
||||
protected:
|
||||
std::map<int,std::string> choices;
|
||||
public:
|
||||
ChoiceInterpreter () {};
|
||||
virtual std::string toString (Tag* t) {
|
||||
std::map<int,std::string>::iterator r = choices.find (t->toInt());
|
||||
if (r!=choices.end())
|
||||
return r->second;
|
||||
else {
|
||||
t->toString (buffer);
|
||||
return std::string (buffer);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
inline unsigned short sget2 (unsigned char *s, ByteOrder order);
|
||||
inline int sget4 (unsigned char *s, ByteOrder order);
|
||||
inline unsigned short get2 (FILE* f, ByteOrder order);
|
||||
inline int get4 (FILE* f, ByteOrder order);
|
||||
inline void sset2 (unsigned short v, unsigned char *s, ByteOrder order);
|
||||
inline void sset4 (int v, unsigned char *s, ByteOrder order);
|
||||
inline float int_to_float (int i);
|
||||
inline short int int2_to_signed (short unsigned int i);
|
||||
bool extractLensInfo(std::string &fullname,double &minFocal, double &maxFocal, double &maxApertureAtMinFocal, double &maxApertureAtMaxFocal);
|
||||
|
||||
extern const TagAttrib exifAttribs[];
|
||||
extern const TagAttrib gpsAttribs[];
|
||||
extern const TagAttrib iopAttribs[];
|
||||
extern const TagAttrib ifdAttribs[];
|
||||
extern const TagAttrib nikon2Attribs[];
|
||||
extern const TagAttrib nikon3Attribs[];
|
||||
extern const TagAttrib canonAttribs[];
|
||||
extern const TagAttrib pentaxAttribs[];
|
||||
extern const TagAttrib fujiAttribs[];
|
||||
extern const TagAttrib minoltaAttribs[];
|
||||
extern const TagAttrib sonyAttribs[];
|
||||
extern const TagAttrib olympusAttribs[];
|
||||
};
|
||||
#endif
|
616
rtexif/sonyminoltaattribs.cc
Normal file
616
rtexif/sonyminoltaattribs.cc
Normal file
@@ -0,0 +1,616 @@
|
||||
/*
|
||||
* This file is part of RawTherapee.
|
||||
*
|
||||
* Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
|
||||
*
|
||||
* RawTherapee is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* RawTherapee is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _SONYMINOLTAATTRIBS_
|
||||
#define _SONYMINOLTAATTRIBS_
|
||||
|
||||
#include <rtexif.h>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <math.h>
|
||||
#include <sstream>
|
||||
#include <iomanip>
|
||||
|
||||
#undef ABS
|
||||
#define ABS(a) (((a) < 0) ? -(a) : (a))
|
||||
|
||||
namespace rtexif {
|
||||
|
||||
class SAOnOffInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
SAOnOffInterpreter () {
|
||||
choices[0] = "Off";
|
||||
choices[1] = "On";
|
||||
choices[5] = "On";
|
||||
}
|
||||
};
|
||||
SAOnOffInterpreter saOnOffInterpreter;
|
||||
|
||||
class SASceneModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
SASceneModeInterpreter () {
|
||||
choices[0] = "Normal (P,A,S or M)";
|
||||
choices[1] = "Portrait";
|
||||
choices[2] = "Text";
|
||||
choices[3] = "Night Scene";
|
||||
choices[4] = "Sunset";
|
||||
choices[5] = "Sports";
|
||||
choices[6] = "Landscape";
|
||||
choices[8] = "Macro";
|
||||
choices[8] = "Super Macro";
|
||||
choices[16] = "Auto";
|
||||
choices[17] = "Night Portrait";
|
||||
}
|
||||
};
|
||||
SASceneModeInterpreter saSceneModeInterpreter;
|
||||
|
||||
class SAZoneMatchingInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
SAZoneMatchingInterpreter () {
|
||||
choices[0] = "ISO Setting Used";
|
||||
choices[1] = "High Key";
|
||||
choices[2] = "Low Key";
|
||||
}
|
||||
};
|
||||
SAZoneMatchingInterpreter saZoneMatchingInterpreter;
|
||||
|
||||
class SADynamicRangeOptimizerInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
SADynamicRangeOptimizerInterpreter () {
|
||||
choices[0] = "Off";
|
||||
choices[1] = "Standard";
|
||||
choices[2] = "Advanced";
|
||||
choices[3] = "Auto";
|
||||
choices[8] = "Advanced Lv1";
|
||||
choices[9] = "Advanced Lv2";
|
||||
choices[10] = "Advanced Lv3";
|
||||
choices[11] = "Advanced Lv4";
|
||||
choices[12] = "Advanced Lv5";
|
||||
}
|
||||
};
|
||||
SADynamicRangeOptimizerInterpreter saDynamicRangeOptimizerInterpreter;
|
||||
|
||||
class SAColorModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
SAColorModeInterpreter () {
|
||||
choices[0] = "Standard";
|
||||
choices[1] = "Vivid";
|
||||
choices[2] = "Portrait";
|
||||
choices[3] = "Landscape";
|
||||
choices[4] = "Sunset";
|
||||
choices[5] = "Night Scene";
|
||||
choices[6] = "B&W";
|
||||
choices[7] = "Adobe RGB";
|
||||
choices[12] = "Neutral";
|
||||
choices[100]= "Neutral";
|
||||
choices[101]= "Clear";
|
||||
choices[102]= "Deep";
|
||||
choices[103]= "Light";
|
||||
choices[104]= "Night View";
|
||||
choices[105]= "Autumn Leaves";
|
||||
}
|
||||
};
|
||||
SAColorModeInterpreter saColorModeInterpreter;
|
||||
|
||||
class SAExposureModeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
SAExposureModeInterpreter () {
|
||||
choices[0] = "Auto";
|
||||
choices[5] = "Landscape";
|
||||
choices[6] = "Program";
|
||||
choices[7] = "Aperture Priority";
|
||||
choices[8] = "Shutter Priority";
|
||||
choices[9] = "Night Scene";
|
||||
choices[15] = "Manual";
|
||||
choices[34] = "Panorama";
|
||||
choices[35] = "Handheld Twilight";
|
||||
choices[36] = "Anti Motion Blur";
|
||||
}
|
||||
};
|
||||
SAExposureModeInterpreter saExposureModeInterpreter;
|
||||
|
||||
class SAQualityInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
SAQualityInterpreter () {
|
||||
choices[0] = "Normal";
|
||||
choices[1] = "Fine";
|
||||
}
|
||||
};
|
||||
SAQualityInterpreter saQualityInterpreter;
|
||||
|
||||
class SAAntiBlurInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
SAAntiBlurInterpreter () {
|
||||
choices[0] = "Off";
|
||||
choices[1] = "On (Continuous)";
|
||||
choices[2] = "On (Shooting)";
|
||||
choices[65535] = "n/a";
|
||||
}
|
||||
};
|
||||
SAAntiBlurInterpreter saAntiBlurInterpreter;
|
||||
|
||||
class SALensIDInterpreter : public Interpreter {
|
||||
typedef std::multimap<int, std::string> container_t;
|
||||
typedef std::pair<int,std::string> p_t;
|
||||
protected:
|
||||
container_t choices;
|
||||
public:
|
||||
SALensIDInterpreter () {
|
||||
choices.insert(p_t(0, "Minolta AF 28-85mm f/3.5-4.5"));
|
||||
choices.insert(p_t(1, "Minolta AF 80-200mm f/2.8 HS-APO G"));
|
||||
choices.insert(p_t(2, "Minolta AF 28-70mm f/2.8 G"));
|
||||
choices.insert(p_t(3, "Minolta AF 28-80mm f/4-5.6"));
|
||||
choices.insert(p_t(5, "Minolta AF 35-70mm f/3.5-4.5"));
|
||||
choices.insert(p_t(6, "Minolta AF 24-85mm f/3.5-4.5 [New]"));
|
||||
choices.insert(p_t(7, "Minolta AF 100-300mm f/4.5-5.6 APO [New]"));
|
||||
choices.insert(p_t(7, "Sigma AF 100-300mm f/4 EX DG IF"));
|
||||
choices.insert(p_t(8, "Minolta AF 70-210mm f/4.5-5.6"));
|
||||
choices.insert(p_t(9, "Minolta AF 50mm f/3.5 Macro"));
|
||||
choices.insert(p_t(10, "Minolta AF 28-105mm f/3.5-4.5 [New]"));
|
||||
choices.insert(p_t(11, "Minolta AF 300mm f/4 HS-APO G"));
|
||||
choices.insert(p_t(12, "Minolta AF 100mm f/2.8 Soft Focus"));
|
||||
choices.insert(p_t(13, "Minolta AF 75-300mm f/4.5-5.6"));
|
||||
choices.insert(p_t(14, "Minolta AF 100-400mm f/4.5-6.7 APO"));
|
||||
choices.insert(p_t(15, "Minolta AF 400mm f/4.5 HS-APO G"));
|
||||
choices.insert(p_t(16, "Minolta AF 17-35mm f/3.5 G"));
|
||||
choices.insert(p_t(17, "Minolta AF 20-35mm f/3.5-4.5"));
|
||||
choices.insert(p_t(18, "Minolta AF 28-80mm f/3.5-5.6 II"));
|
||||
choices.insert(p_t(19, "Minolta AF 35mm f/1.4"));
|
||||
choices.insert(p_t(20, "Minolta/Sony STF 135mm F2.8 [T4.5]"));
|
||||
choices.insert(p_t(22, "Minolta AF 35-80mm f/4-5.6"));
|
||||
choices.insert(p_t(23, "Minolta AF 200mm f/4 G APO Macro"));
|
||||
choices.insert(p_t(24, "Minolta/Sony AF 24-105mm f/3.5-4.5 (D)"));
|
||||
choices.insert(p_t(24, "Sigma 18-50mm f/2.8 EX DC Macro"));
|
||||
choices.insert(p_t(24, "Sigma 17-70mm f/2.8-4.5 DC Macro"));
|
||||
choices.insert(p_t(24, "Sigma 20-40mm f/2.8 EX DG Aspherical IF"));
|
||||
choices.insert(p_t(24, "Sigma 18-200mm f/3.5-6.3 DC"));
|
||||
choices.insert(p_t(24, "Tamron SP AF 28-75mm f/2.8 XR Di (IF) Macro"));
|
||||
choices.insert(p_t(25, "Minolta AF 100-300mm f/4.5-5.6 APO D"));
|
||||
choices.insert(p_t(25, "Sigma 100-300mm f/4 EX DG APO"));
|
||||
choices.insert(p_t(25, "Sigma 70mm f/2.8 EX DG Macro"));
|
||||
choices.insert(p_t(25, "Sigma 20mm f/1.8 EX DG Aspherical RF"));
|
||||
choices.insert(p_t(25, "Sigma 30mm f/1.4 EX DG"));
|
||||
choices.insert(p_t(27, "Minolta AF 85mm f71.4 G"));
|
||||
choices.insert(p_t(28, "Minolta AF 100mm f/2.8 Macro (D)"));
|
||||
choices.insert(p_t(28, "Tamron SP AF 90mm f/2.8 Di Macro "));
|
||||
choices.insert(p_t(29, "Minolta AF 75-300mm f/4.5-5.6 (D)"));
|
||||
choices.insert(p_t(30, "Minolta AF 28-80mm f/3.5-5.6 (D)"));
|
||||
choices.insert(p_t(30, "Sigma 10-20mm f/4-5.6 EX DC"));
|
||||
choices.insert(p_t(30, "Sigma 12-24mm f/4.5-5.6 EX DG"));
|
||||
choices.insert(p_t(30, "Sigma 28-70mm f/2.8 EX DG"));
|
||||
choices.insert(p_t(30, "Sigma 55-200mm f/4-5.6 DC"));
|
||||
choices.insert(p_t(31, "Minolta/Sony AF 50mm f/2.8 Macro (D)"));
|
||||
choices.insert(p_t(32, "Minolta AF 300mm f/2.8 G"));
|
||||
choices.insert(p_t(33, "Minolta/Sony AF 70-200mm f/2.8 G (D) SSM"));
|
||||
choices.insert(p_t(35, "Minolta AF 85mm f/1.4 G (D) Limited"));
|
||||
choices.insert(p_t(36, "Minolta AF 28-100mm f/3.5-5.6 (D)"));
|
||||
choices.insert(p_t(38, "Minolta AF 17-35mm f/2.8-4 (D)"));
|
||||
choices.insert(p_t(39, "Minolta AF 28-75mm f/2.8 (D)"));
|
||||
choices.insert(p_t(40, "Minolta/Sony AF DT 18-70mm f/3.5-5.6 (D)"));
|
||||
choices.insert(p_t(41, "Minolta/Sony AF DT 11-18mm f/4.5-5.6 (D)"));
|
||||
choices.insert(p_t(42, "Minolta AF DT 18-200mm f/3.5-6.3 (D)"));
|
||||
choices.insert(p_t(43, "Minolta AF 35mm f/1.4 G"));
|
||||
choices.insert(p_t(44, "Sony AF 50mm f/1.4"));
|
||||
choices.insert(p_t(45, "Carl Zeiss Planar T* 85mm f/1.4 ZA"));
|
||||
choices.insert(p_t(46, "Carl Zeiss Vario-Sonnar T* DT 16-80mm f/3.5-4.5 ZA"));
|
||||
choices.insert(p_t(47, "Carl Zeiss Sonnar T* 135mm F1.8 ZA"));
|
||||
choices.insert(p_t(48, "Carl Zeiss Vario-Sonnar T* 24-70mm f/2.8 ZA SSM"));
|
||||
choices.insert(p_t(49, "Sony AF DT 55-200mm f/4-5.6"));
|
||||
choices.insert(p_t(50, "Sony AF DT 18-250mm f/3.5-6.3"));
|
||||
choices.insert(p_t(51, "Sony AF DT 16-105mm f/3.5-5.6 or 55-200mm f/4-5.5"));
|
||||
choices.insert(p_t(52, "Sony AF 70-300mm f/4.5-5.6 G SSM"));
|
||||
choices.insert(p_t(53, "Sony AF 70-400mm f/4.5-5.6 G SSM"));
|
||||
choices.insert(p_t(54, "Carl Zeiss Vario-Sonnar T* 16-35mm f/2.8 ZA SSM"));
|
||||
choices.insert(p_t(55, "Sony DT 18-55mm f/3.5-5.6 SAM"));
|
||||
choices.insert(p_t(56, "Sony AF DT 55-200mm f/4-5.6 SAM"));
|
||||
choices.insert(p_t(57, "Sony AF DT 50mm f/1.8 SAM"));
|
||||
choices.insert(p_t(58, "Sony AF DT 30mm f/2.8 SAM Macro"));
|
||||
choices.insert(p_t(59, "Sony AF 28-75mm f/2.8 SAM"));
|
||||
choices.insert(p_t(128, "Tamron AF 18-200mm f/3.5-6.3 XR Di II LD Aspherical (IF)"));
|
||||
choices.insert(p_t(128, "Tamron AF 28-300mm f/3.5-6.3"));
|
||||
choices.insert(p_t(128, "Tamron AF 28-200mm f/3.8-5.6 XR Di Aspherical (IF) Macro "));
|
||||
choices.insert(p_t(128, "Tamron SP AF 17-35mm f/2.8-4 Di LD Aspherical IF"));
|
||||
choices.insert(p_t(128, "Sigma 10-20mm f/3.5 EX DC"));
|
||||
choices.insert(p_t(128, "Sigma 70-200mm f/2.8 II EX DG APO Macro"));
|
||||
choices.insert(p_t(129, "Tamron 200-400mm f/5.6 LD (IF)"));
|
||||
choices.insert(p_t(129, "Tamron 70-300mm f/4-5.6 LD"));
|
||||
choices.insert(p_t(135, "Vivitar 28-210mm f/3.5-5.6"));
|
||||
choices.insert(p_t(136, "Tokina EMZ M100 AF 100mm f/3.5"));
|
||||
choices.insert(p_t(137, "Cosina 70-210mm f/2.8-4 AF"));
|
||||
choices.insert(p_t(138, "Soligor 19-35mm f/3.5-4.5"));
|
||||
choices.insert(p_t(142, "Voigtlander 70-300mm f/4.5-5.6"));
|
||||
choices.insert(p_t(146, "Voigtlander Macro APO-Lanthar 125mm f/2.5 SL"));
|
||||
choices.insert(p_t(255, "Tamron SP AF 17-50mm f/2.8 XR Di II LD Aspherical"));
|
||||
choices.insert(p_t(255, "Tamron AF 18-250mm f/3.5-6.3 XR Di II LD"));
|
||||
choices.insert(p_t(255, "Tamron AF 55-200mm f/4-5.6 Di II"));
|
||||
choices.insert(p_t(255, "Tamron AF 70-300mm f/4-5.6 Di LD Macro 1:2"));
|
||||
choices.insert(p_t(255, "Tamron SP AF 200-500mm f/5.0-6.3 Di LD (IF)"));
|
||||
choices.insert(p_t(255, "Tamron SP AF 10-24mm f/3.5-4.5 Di II LD Aspherical (IF)"));
|
||||
choices.insert(p_t(255, "Tamron SP AF 70-200mm f/2.8 Di LD Macro (IF)"));
|
||||
choices.insert(p_t(255, "Tamron SP AF 28-75mm f/2.8 XR Di LD Aspherical (IF)"));
|
||||
choices.insert(p_t(2550, "Minolta AF 50mm f/1.7"));
|
||||
choices.insert(p_t(2551, "Minolta AF 35-70mm f/4"));
|
||||
choices.insert(p_t(2551, "Sigma UC AF 28-70mm f/3.5-4.5"));
|
||||
choices.insert(p_t(2551, "Sigma AF 28-70mm f/2.8"));
|
||||
choices.insert(p_t(2551, "Sigma M-AF 70-200mm f/2.8 EX Aspherical"));
|
||||
choices.insert(p_t(2551, "Quantaray M-AF 35-80mm f/4-5.6"));
|
||||
choices.insert(p_t(2552, "Minolta AF 28-85mm f/3.5-4.5 [New]"));
|
||||
choices.insert(p_t(2552, "Tokina 19-35mm f/3.5-4.5"));
|
||||
choices.insert(p_t(2552, "Tokina 28-70mm f/2.8 AT-X"));
|
||||
choices.insert(p_t(2552, "Tokina 80-400mm f/4.5-5.6 AT-X AF II 840"));
|
||||
choices.insert(p_t(2552, "Tokina AF PRO 28-80mm f/2.8 AT-X 280"));
|
||||
choices.insert(p_t(2552, "Tokina AT-X PRO II AF 28-70mm f/2.6-2.8 270"));
|
||||
choices.insert(p_t(2552, "Tamron AF 19-35mm f/3.5-4.5"));
|
||||
choices.insert(p_t(2552, "Angenieux AF 28-70mm f/2.6"));
|
||||
choices.insert(p_t(2553, "Minolta AF 28-135mm f/4-4.5"));
|
||||
choices.insert(p_t(2553, "Sigma ZOOM-alpha 35-135mm f/3.5-4.5"));
|
||||
choices.insert(p_t(2553, "Sigma 28-105mm f/2.8-4 Aspherical"));
|
||||
choices.insert(p_t(2554, "Minolta AF 35-105mm f/3.5-4.5"));
|
||||
choices.insert(p_t(2555, "Minolta AF 70-210mm f/4 Macro"));
|
||||
choices.insert(p_t(2555, "Sigma 70-210mm f/4-5.6 APO"));
|
||||
choices.insert(p_t(2555, "Sigma M-AF 70-200mm f/2.8 EX APO"));
|
||||
choices.insert(p_t(2555, "Sigma 75-200mm f/2.8-3.5"));
|
||||
choices.insert(p_t(2556, "Minolta AF 135mm f/2.8"));
|
||||
choices.insert(p_t(2557, "Minolta AF 28mm f/2.8"));
|
||||
choices.insert(p_t(2558, "Minolta AF 24-50mm f/4"));
|
||||
choices.insert(p_t(2560, "Minolta AF 100-200mm f/4.5"));
|
||||
choices.insert(p_t(2561, "Minolta AF 75-300mm f/4.5-5.6"));
|
||||
choices.insert(p_t(2561, "Sigma 70-300mm f/4-5.6 DL Macro"));
|
||||
choices.insert(p_t(2561, "Sigma 300mm f/4 APO Macro"));
|
||||
choices.insert(p_t(2561, "Sigma AF 500mm f/4.5 APO"));
|
||||
choices.insert(p_t(2561, "Sigma AF 170-500mm f/5-6.3 APO Aspherical"));
|
||||
choices.insert(p_t(2561, "Tokina AT-X AF 300mm f/4"));
|
||||
choices.insert(p_t(2561, "Tokina AT-X AF 400mm f/5.6 SD"));
|
||||
choices.insert(p_t(2561, "Tokina AF 730 II 75-300mm f/4.5-5.6"));
|
||||
choices.insert(p_t(2562, "Minolta/Sony AF 50mm f/1.4 [New]"));
|
||||
choices.insert(p_t(2563, "Minolta AF 300mm f/2.8 G"));
|
||||
choices.insert(p_t(2563, "Sigma AF 50-500mm f/4-6.3 EX DG APO"));
|
||||
choices.insert(p_t(2563, "Sigma AF 170-500mm f/5-6.3 APO Aspherical"));
|
||||
choices.insert(p_t(2563, "Sigma AF 500mm f/4.5 EX DG APO"));
|
||||
choices.insert(p_t(2563, "Sigma 400mm f/5.6 APO"));
|
||||
choices.insert(p_t(2564, "Minolta AF 50mm f/2.8 Macro"));
|
||||
choices.insert(p_t(2564, "Sigma 50mm f/2.8 EX Macro"));
|
||||
choices.insert(p_t(2565, "Minolta AF 600mm f/4"));
|
||||
choices.insert(p_t(2566, "Minolta AF 24mm f/2.8"));
|
||||
choices.insert(p_t(2572, "Minolta/Sony AF 500mm f/8 Reflex"));
|
||||
choices.insert(p_t(2578, "Minolta AF 16mm f/2.8 Fisheye"));
|
||||
choices.insert(p_t(2578, "Sigma 8mm f/4 EX DG Fisheye"));
|
||||
choices.insert(p_t(2578, "Sigma 14mm f/3.5"));
|
||||
choices.insert(p_t(2578, "Sigma 15mm f/2.8 Fisheye"));
|
||||
choices.insert(p_t(2579, "Minolta AF 20mm f/2.8"));
|
||||
choices.insert(p_t(2581, "Minolta/Sony AF 100mm f/2.8 Macro"));
|
||||
choices.insert(p_t(2581, "Sigma AF 90mm f/2.8 Macro"));
|
||||
choices.insert(p_t(2581, "Sigma AF 105mm f/2.8 EX DG Macro"));
|
||||
choices.insert(p_t(2581, "Sigma 180mm f/5.6 Macro"));
|
||||
choices.insert(p_t(2581, "Tamron AF 90mm f/2.8 Macro"));
|
||||
choices.insert(p_t(2585, "Minolta AF 35-105mm f/3.5-4.5 New"));
|
||||
choices.insert(p_t(2585, "Tamron AF 24-135mm f/3.5-5.6"));
|
||||
choices.insert(p_t(2588, "Minolta AF 70-210mm f/3.5-4.5"));
|
||||
choices.insert(p_t(2589, "Minolta AF 80-200 f/2.8 APO"));
|
||||
choices.insert(p_t(2589, "Tokina 80-200mm f/2.8"));
|
||||
choices.insert(p_t(2591, "Minolta AF 35mm f/1.4"));
|
||||
choices.insert(p_t(2592, "Minolta AF 85mm f/1.4 G (D)"));
|
||||
choices.insert(p_t(2593, "Minolta AF 200mm f/2.8 G APO"));
|
||||
choices.insert(p_t(2594, "Minolta AF 3x-1x f/1.7-2.8 Macro"));
|
||||
choices.insert(p_t(2596, "Minolta AF 28mm f/2"));
|
||||
choices.insert(p_t(2597, "Minolta AF 35mm f/2"));
|
||||
choices.insert(p_t(2598, "Minolta AF 100mm f/2"));
|
||||
choices.insert(p_t(2604, "Minolta AF 80-200mm f/4.5-5.6"));
|
||||
choices.insert(p_t(2605, "Minolta AF 35-80mm f/4-5.6"));
|
||||
choices.insert(p_t(2606, "Minolta AF 100-300mm f/4.5-5.6 (D)"));
|
||||
choices.insert(p_t(2607, "Minolta AF 35-80mm f/4-5.6"));
|
||||
choices.insert(p_t(2608, "Minolta AF 300mm f/2.8 G"));
|
||||
choices.insert(p_t(2609, "Minolta AF 600mm f/4 HS-APO G"));
|
||||
choices.insert(p_t(2612, "Minolta AF 200mm f/2.8 G HS-APO"));
|
||||
choices.insert(p_t(2613, "Minolta AF 50mm f/1.7 New"));
|
||||
choices.insert(p_t(2615, "Minolta AF 28-105mm f/3.5-4.5 Power Zoom"));
|
||||
choices.insert(p_t(2616, "Minolta AF 35-200mm f/4.5-5.6 Power Zoom"));
|
||||
choices.insert(p_t(2618, "Minolta AF 28-80mm f/4-5.6 Power Zoom"));
|
||||
choices.insert(p_t(2619, "Minolta AF 80-200mm f/4.5-5.6 Power Zoom"));
|
||||
choices.insert(p_t(2620, "Minolta AF 28-70mm f/2.8 G"));
|
||||
choices.insert(p_t(2621, "Minolta AF 100-300mm f/4.5-5.6 Power Zoom"));
|
||||
choices.insert(p_t(2624, "Minolta AF 35-80mm f/4-5.6 Power Zoom"));
|
||||
choices.insert(p_t(2628, "Minolta AF 80-200mm f/2.8 G"));
|
||||
choices.insert(p_t(2629, "Minolta AF 85mm f/1.4 New"));
|
||||
choices.insert(p_t(2631, "Minolta/Sony AF 100-300mm f/4.5-5.6 APO"));
|
||||
choices.insert(p_t(2632, "Minolta AF 24-50mm f/4 New"));
|
||||
choices.insert(p_t(2638, "Minolta AF 50mm f/2.8 Macro New"));
|
||||
choices.insert(p_t(2639, "Minolta AF 100mm f/2.8 Macro"));
|
||||
choices.insert(p_t(2641, "Minolta AF 20mm f/2.8 New"));
|
||||
choices.insert(p_t(2642, "Minolta AF 24mm f/2.8 New"));
|
||||
choices.insert(p_t(2644, "Minolta AF 100-400mm f/4.5-6.7 APO"));
|
||||
choices.insert(p_t(2662, "Minolta AF 50mm f/1.4 New"));
|
||||
choices.insert(p_t(2667, "Minolta AF 35mm f/2 New"));
|
||||
choices.insert(p_t(2668, "Minolta AF 28mm f/2 New"));
|
||||
choices.insert(p_t(2672, "Minolta AF 24-105mm f/3.5-4.5 (D)"));
|
||||
choices.insert(p_t(4574, "Minolta AF 200mm f/2.8 G x2"));
|
||||
choices.insert(p_t(4575, "1.4 x Teleconverter"));
|
||||
choices.insert(p_t(4585, "Tamron SP AF 300mm f/2.8 LD IF"));
|
||||
choices.insert(p_t(6553, "Arax MC 35mm f/2.8 Tilt+Shift"));
|
||||
choices.insert(p_t(6553, "Arax MC 80mm f/2.8 Tilt+Shift"));
|
||||
choices.insert(p_t(6553, "Zenitar MF 16mm f/2.8 Fisheye M42"));
|
||||
choices.insert(p_t(6553, "Samyang 500mm Mirror f/8"));
|
||||
choices.insert(p_t(6553, "Pentacon Auto 135mm f/2.8"));
|
||||
choices.insert(p_t(6553, "Pentacon Auto 29mm f/2.8"));
|
||||
choices.insert(p_t(6553, "Helios 44-2 58mm f/2"));
|
||||
choices.insert(p_t(25501, "Minolta AF 50mm f/1.7"));
|
||||
choices.insert(p_t(25511, "Minolta AF 35-70mm f/4"));
|
||||
choices.insert(p_t(25511, "Sigma UC AF 28-70mm f/3.5-4.5"));
|
||||
choices.insert(p_t(25511, "Sigma AF 28-70mm f/2.8"));
|
||||
choices.insert(p_t(25511, "Sigma M-AF 70-200mm f/2.8 EX Aspherical"));
|
||||
choices.insert(p_t(25511, "Quantaray M-AF 35-80mm f/4-5.6"));
|
||||
choices.insert(p_t(25521, "Minolta AF 28-85mm f/3.5-4.5 [New]"));
|
||||
choices.insert(p_t(25521, "Tokina 19-35mm f/3.5-4.5"));
|
||||
choices.insert(p_t(25521, "Tokina 28-70mm f/2.8 AT-X"));
|
||||
choices.insert(p_t(25521, "Tokina 80-400mm f/4.5-5.6 AT-X AF II 840"));
|
||||
choices.insert(p_t(25521, "Tokina AF PRO 28-80mm f/2.8 AT-X 280"));
|
||||
choices.insert(p_t(25521, "Tokina AT-X PRO II AF 28-70mm f/2.6-2.8 270"));
|
||||
choices.insert(p_t(25521, "Tamron AF 19-35mm f/3.5-4.5"));
|
||||
choices.insert(p_t(25521, "Angenieux AF 28-70mm f/2.6"));
|
||||
choices.insert(p_t(25531, "Minolta AF 28-135mm f/4-4.5"));
|
||||
choices.insert(p_t(25531, "Sigma ZOOM-alpha 35-135mm f/3.5-4.5"));
|
||||
choices.insert(p_t(25531, "Sigma 28-105mm f/2.8-4 Aspherical"));
|
||||
choices.insert(p_t(25541, "Minolta AF 35-105mm f/3.5-4.5"));
|
||||
choices.insert(p_t(25551, "Minolta AF 70-210mm f/4 Macro"));
|
||||
choices.insert(p_t(25551, "Sigma 70-210mm f/4-5.6 APO"));
|
||||
choices.insert(p_t(25551, "Sigma M-AF 70-200mm f/2.8 EX APO"));
|
||||
choices.insert(p_t(25551, "Sigma 75-200mm f/2.8-3.5"));
|
||||
choices.insert(p_t(25561, "Minolta AF 135mm f/2.8"));
|
||||
choices.insert(p_t(25571, "Minolta AF 28mm f/2.8"));
|
||||
choices.insert(p_t(25581, "Minolta AF 24-50mm f/4"));
|
||||
choices.insert(p_t(25601, "Minolta AF 100-200mm f/4.5"));
|
||||
choices.insert(p_t(25611, "Minolta AF 75-300mm f/4.5-5.6"));
|
||||
choices.insert(p_t(25611, "Sigma 70-300mm f/4-5.6 DL Macro"));
|
||||
choices.insert(p_t(25611, "Sigma 300mm f/4 APO Macro"));
|
||||
choices.insert(p_t(25611, "Sigma AF 500mm f/4.5 APO"));
|
||||
choices.insert(p_t(25611, "Sigma AF 170-500mm f/5-6.3 APO Aspherical"));
|
||||
choices.insert(p_t(25611, "Tokina AT-X AF 300mm f/4"));
|
||||
choices.insert(p_t(25611, "Tokina AT-X AF 400mm f/5.6 SD"));
|
||||
choices.insert(p_t(25611, "Tokina AF 730 II 75-300mm f/4.5-5.6"));
|
||||
choices.insert(p_t(25621, "Minolta AF 50mm f/1.4"));
|
||||
choices.insert(p_t(25631, "Minolta AF 300mm f/2.8 G"));
|
||||
choices.insert(p_t(25631, "Sigma AF 50-500mm f/4-6.3 EX DG APO"));
|
||||
choices.insert(p_t(25631, "Sigma AF 170-500mm f/5-6.3 APO Aspherical"));
|
||||
choices.insert(p_t(25631, "Sigma AF 500mm f/4.5 EX DG APO"));
|
||||
choices.insert(p_t(25631, "Sigma 400mm f/5.6 APO"));
|
||||
choices.insert(p_t(25641, "Minolta AF 50mm f/2.8 Macro"));
|
||||
choices.insert(p_t(25641, "Sigma AF 50mm f/2.8 Macro"));
|
||||
choices.insert(p_t(25651, "Minolta AF 600mm f/4"));
|
||||
choices.insert(p_t(25661, "Minolta AF 24mm f/2.8"));
|
||||
choices.insert(p_t(25721, "Minolta/Sony AF 500mm f/8 Reflex"));
|
||||
choices.insert(p_t(25781, "Minolta AF 16mm f/2.8 Fisheye"));
|
||||
choices.insert(p_t(25781, "Sigma 8mm f/4 EX DG Fisheye"));
|
||||
choices.insert(p_t(25781, "Sigma 14mm f/3.5"));
|
||||
choices.insert(p_t(25781, "Sigma 15mm f/2.8 Fisheye"));
|
||||
choices.insert(p_t(25791, "Minolta AF 20mm f/2.8"));
|
||||
choices.insert(p_t(25811, "Minolta/Sony AF 100mm f/2.8 Macro New"));
|
||||
choices.insert(p_t(25811, "Sigma AF 90mm f/2.8 Macro"));
|
||||
choices.insert(p_t(25811, "Sigma AF 105mm f/2.8 EX DG Macro"));
|
||||
choices.insert(p_t(25811, "Sigma 180mm f/5.6 Macro"));
|
||||
choices.insert(p_t(25811, "Tamron 90mm f/2.8 Macro"));
|
||||
choices.insert(p_t(25851, "Beroflex 35-135mm f/3.5-4.5"));
|
||||
choices.insert(p_t(25858, "Minolta AF 35-105mm f/3.5-4.5 New"));
|
||||
choices.insert(p_t(25858, "Tamron 24-135mm f/3.5-5.6"));
|
||||
choices.insert(p_t(25881, "Minolta AF 70-210mm f/3.5-4.5"));
|
||||
choices.insert(p_t(25891, "Minolta AF 80-200 f/2.8 APO"));
|
||||
choices.insert(p_t(25891, "Tokina 80-200mm f/2.8"));
|
||||
choices.insert(p_t(25911, "Minolta AF 35mm f/1.4"));
|
||||
choices.insert(p_t(25921, "Minolta AF 85mm f/1.4 G (D)"));
|
||||
choices.insert(p_t(25931, "Minolta AF 200mm f/2.8 G APO"));
|
||||
choices.insert(p_t(25941, "Minolta AF 3x-1x f/1.7-2.8 Macro"));
|
||||
choices.insert(p_t(25961, "Minolta AF 28mm f/2"));
|
||||
choices.insert(p_t(25971, "Minolta AF 35mm f/2"));
|
||||
choices.insert(p_t(25981, "Minolta AF 100mm f/2"));
|
||||
choices.insert(p_t(26041, "Minolta AF 80-200mm f/4.5-5.6"));
|
||||
choices.insert(p_t(26051, "Minolta AF 35-80mm f/4-5.6"));
|
||||
choices.insert(p_t(26061, "Minolta AF 100-300mm f/4.5-5.6 (D)"));
|
||||
choices.insert(p_t(26071, "Minolta AF 35-80mm f/4-5.6"));
|
||||
choices.insert(p_t(26081, "Minolta AF 300mm f/2.8 HS-APO G"));
|
||||
choices.insert(p_t(26091, "Minolta AF 600mm f/4 HS-APO G"));
|
||||
choices.insert(p_t(26121, "Minolta AF 200mm f/2.8 HS-APO G"));
|
||||
choices.insert(p_t(26131, "Minolta AF 50mm f/1.7 New"));
|
||||
choices.insert(p_t(26151, "Minolta AF 28-105mm f/3.5-4.5 Power Zoom"));
|
||||
choices.insert(p_t(26161, "Minolta AF 35-200mm f/4.5-5.6 Power Zoom"));
|
||||
choices.insert(p_t(26181, "Minolta AF 28-80mm f/4-5.6 Power Zoom"));
|
||||
choices.insert(p_t(26191, "Minolta AF 80-200mm f/4.5-5.6 Power Zoom"));
|
||||
choices.insert(p_t(26201, "Minolta AF 28-70mm f/2.8 G"));
|
||||
choices.insert(p_t(26211, "Minolta AF 100-300mm f/4.5-5.6 Power Zoom"));
|
||||
choices.insert(p_t(26241, "Minolta AF 35-80mm f/4-5.6 Power Zoom"));
|
||||
choices.insert(p_t(26281, "Minolta AF 80-200mm f/2.8 G"));
|
||||
choices.insert(p_t(26291, "Minolta AF 85mm f/1.4 New"));
|
||||
choices.insert(p_t(26311, "Minolta/Sony AF 100-300mm f/4.5-5.6 APO"));
|
||||
choices.insert(p_t(26321, "Minolta AF 24-50mm f/4 New"));
|
||||
choices.insert(p_t(26381, "Minolta AF 50mm f/2.8 Macro New"));
|
||||
choices.insert(p_t(26391, "Minolta AF 100mm f/2.8 Macro"));
|
||||
choices.insert(p_t(26411, "Minolta AF 20mm f/2.8 New"));
|
||||
choices.insert(p_t(26421, "Minolta AF 24mm f/2.8 New"));
|
||||
choices.insert(p_t(26441, "Minolta AF 100-400mm f/4.5-6.7 APO"));
|
||||
choices.insert(p_t(26621, "Minolta AF 50mm f/1.4 New"));
|
||||
choices.insert(p_t(26671, "Minolta AF 35mm f/2 New"));
|
||||
choices.insert(p_t(26681, "Minolta AF 28mm f/2 New"));
|
||||
choices.insert(p_t(26721, "Minolta AF 24-105mm f/3.5-4.5 (D)"));
|
||||
choices.insert(p_t(45671, "Tokina 70-210mm f/4-5.6"));
|
||||
choices.insert(p_t(45741, "Minolta AF 200mm f/2.8 G x2"));
|
||||
choices.insert(p_t(45851, "Tamron SP AF 300mm f/2.8 LD IF"));
|
||||
choices.insert(p_t(45871, "Tamron SP AF 70-210mm f/2.8 LD"));
|
||||
choices.insert(p_t(65535, "Arax MC 35mm f/2.8 Tilt+Shift"));
|
||||
choices.insert(p_t(65535, "Arax MC 80mm f/2.8 Tilt+Shift"));
|
||||
choices.insert(p_t(65535, "Zenitar MF 16mm f/2.8 Fisheye M42"));
|
||||
choices.insert(p_t(65535, "Samyang 500mm f/8 Mirror"));
|
||||
choices.insert(p_t(65535, "Pentacon Auto 135mm f/2.8"));
|
||||
choices.insert(p_t(65535, "Pentacon Auto 29mm f/2.8"));
|
||||
choices.insert(p_t(65535, "Helios 44-2 58mm f/2"));
|
||||
}
|
||||
|
||||
|
||||
virtual std::string toString (Tag* t)
|
||||
{
|
||||
int lensID = t->toInt();
|
||||
size_t nFound = choices.count( lensID );
|
||||
container_t::iterator r;
|
||||
switch( nFound )
|
||||
{
|
||||
case 0: // lens Unknown
|
||||
t->toString (buffer);
|
||||
return std::string (buffer);
|
||||
case 1: // lens found
|
||||
r = choices.find ( lensID );
|
||||
return r->second;
|
||||
default:
|
||||
// More than one hit: we must guess
|
||||
break;
|
||||
}
|
||||
|
||||
double maxApertureAtFocal = pow(2.0, t->getParent()->getParent()->getTag(0x9205)->toDouble()/2.0); // MaxApertureValue at focal Length
|
||||
double focalLength = t->getParent()->getParent()->getTag(0x920A)->toDouble(); // Focal Length
|
||||
double deltaMin = 1000.;
|
||||
|
||||
/* Choose the best match: thanks to exiftool by Phil Harvey
|
||||
* first throws for "out of focal range" and lower or upper aperture of the lens compared to MaxApertureAtFocal
|
||||
* if the lens is not constant aperture, calculate aprox. aperture of the lens at focalLength
|
||||
* and compare with actual aperture.
|
||||
*/
|
||||
std::string bestMatch("Unknown");
|
||||
std::ostringstream candidates;
|
||||
for ( r = choices.lower_bound( lensID ); r != choices.upper_bound(lensID); r++ ){
|
||||
double a1,a2,f1,f2,lensAperture,dif;
|
||||
|
||||
if( !extractLensInfo( r->second ,f1,f2,a1,a2) )
|
||||
continue;
|
||||
if( f1 == 0. || a1 == 0.)
|
||||
continue;
|
||||
|
||||
if( focalLength < f1 - .5 || focalLength > f2 + 0.5 )
|
||||
continue;
|
||||
if( maxApertureAtFocal < a1 - 0.15 || maxApertureAtFocal > a2 +0.15)
|
||||
continue;
|
||||
|
||||
if( a1 == a2 || f1 == f2)
|
||||
lensAperture = a1;
|
||||
else
|
||||
lensAperture = exp( log(a1)+(log(a2)-log(a1))/(log(f2)-log(f1))*(log(focalLength)-log(f1)) );
|
||||
|
||||
dif = ABS(lensAperture - maxApertureAtFocal);
|
||||
if( dif < deltaMin ){
|
||||
deltaMin = dif;
|
||||
bestMatch = r->second;
|
||||
}
|
||||
if( dif < 0.15){
|
||||
if( candidates.tellp() )
|
||||
candidates << "\n or " << r->second;
|
||||
else
|
||||
candidates << r->second;
|
||||
}
|
||||
}
|
||||
if( !candidates.tellp() )
|
||||
return bestMatch;
|
||||
else
|
||||
return candidates.str();
|
||||
}
|
||||
};
|
||||
SALensIDInterpreter saLensIDInterpreter;
|
||||
|
||||
class MATeleconverterInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
MATeleconverterInterpreter () {
|
||||
choices[0] = "None ";
|
||||
choices[0x48] = "Minolta AF 2x APO (D)";
|
||||
choices[0x50] = "Minolta AF 2x APO II";
|
||||
choices[0x88] = "Minolta AF 1.4x APO (D)";
|
||||
choices[0x90] = "Minolta AF 1.4x APO II";
|
||||
}
|
||||
};
|
||||
MATeleconverterInterpreter maTeleconverterInterpreter;
|
||||
|
||||
class MAQualityInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
MAQualityInterpreter () {
|
||||
choices[0] = "Raw";
|
||||
choices[1] = "Super Fine";
|
||||
choices[2] = "Fine";
|
||||
choices[3] = "Standard";
|
||||
choices[4] = "Economy";
|
||||
choices[5] = "Extra fine";
|
||||
choices[6] = "RAW + JPEG";
|
||||
choices[7] = "cRAW";
|
||||
choices[8] = "cRAW + JPEG";
|
||||
}
|
||||
};
|
||||
MAQualityInterpreter maQualityInterpreter;
|
||||
|
||||
class MAImageSizeInterpreter : public ChoiceInterpreter {
|
||||
public:
|
||||
MAImageSizeInterpreter () {
|
||||
choices[1] = "1600x1200";
|
||||
choices[2] = "1280x960";
|
||||
choices[3] = "640x480";
|
||||
choices[5] = "2560x1920";
|
||||
choices[6] = "2272x1704";
|
||||
choices[7] = "2048x1536";
|
||||
}
|
||||
};
|
||||
MAImageSizeInterpreter maImageSizeInterpreter;
|
||||
|
||||
const TagAttrib minoltaAttribs[] = {
|
||||
0, 1, 0, 0, 0x0000, "MakerNoteVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0001, "MinoltaCameraSettingsOld", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0003, "MinoltaCameraSettings", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0004, "MinoltaCameraSettings7D", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0018, "ImageStabilization", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0040, "CompressedImageSize", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x0081, "PreviewImage", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x0088, "PreviewImageStart", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x0089, "PreviewImageLength", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0100, "SceneMode", &saSceneModeInterpreter,
|
||||
0, 1, 0, 0, 0x0101, "ColorMode", &saColorModeInterpreter,
|
||||
0, 1, 0, 0, 0x0102, "MinoltaQuality", &maQualityInterpreter,
|
||||
0, 1, 0, 0, 0x0103, "MinoltaImageSize", &maImageSizeInterpreter,
|
||||
0, 1, 0, 0, 0x0104, "FlashExposureComp", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0105, "Teleconverter", &maTeleconverterInterpreter,
|
||||
0, 1, 0, 0, 0x0107, "ImageStabilization", &saOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x010a, "ZoneMatching", &saZoneMatchingInterpreter,
|
||||
0, 1, 0, 0, 0x010b, "ColorTemperature", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x010c, "LensID", &saLensIDInterpreter,
|
||||
0, 1, 0, 0, 0x0113, "ImageStabilization", &saOnOffInterpreter,
|
||||
0, 1, 0, 0, 0x0114, "MinoltaCameraSettings", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x0e00, "PrintIM", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0f00, "MinoltaCameraSettings2", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
|
||||
const TagAttrib sonyAttribs[] = {
|
||||
1, 1, 0, 0, 0x0e00, "PrintIM", &stdInterpreter,
|
||||
1, 1, 0, 0, 0x2001, "PreviewImage", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xb020, "ColorReproduction", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xb021, "ColorTemperature", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xb023, "SceneMode", &saSceneModeInterpreter,
|
||||
0, 1, 0, 0, 0xb024, "ZoneMatching", &saZoneMatchingInterpreter,
|
||||
0, 1, 0, 0, 0xb025, "DynamicRangeOptimizer", &saDynamicRangeOptimizerInterpreter,
|
||||
0, 1, 0, 0, 0xb026, "ImageStabilization", &saOnOffInterpreter,
|
||||
0, 1, 0, 0, 0xb027, "LensID", &saLensIDInterpreter,
|
||||
0, 1, 0, minoltaAttribs, 0xb028, "MinoltaMakerNote", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xb029, "ColorMode", &saColorModeInterpreter,
|
||||
0, 1, 0, 0, 0xb040, "Macro", &saOnOffInterpreter,
|
||||
0, 1, 0, 0, 0xb041, "ExposureMode", &saExposureModeInterpreter,
|
||||
0, 1, 0, 0, 0xb047, "Quality", &saQualityInterpreter,
|
||||
0, 1, 0, 0, 0xb04b, "AntiBlur", &saAntiBlurInterpreter,
|
||||
0, 1, 0, 0, 0xb04e, "LongExposureNoiseReduction", &saOnOffInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
|
||||
};
|
||||
|
||||
#endif
|
486
rtexif/stdattribs.cc
Normal file
486
rtexif/stdattribs.cc
Normal file
@@ -0,0 +1,486 @@
|
||||
/*
|
||||
* This file is part of RawTherapee.
|
||||
*
|
||||
* Copyright (c) 2004-2010 Gabor Horvath <hgabor@rawtherapee.com>
|
||||
*
|
||||
* RawTherapee is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* RawTherapee is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with RawTherapee. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#ifndef _STDATTRIBS_
|
||||
#define _STDATTRIBS_
|
||||
|
||||
#include <rtexif.h>
|
||||
#include <string>
|
||||
#include <map>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
||||
namespace rtexif {
|
||||
|
||||
class ColorSpaceInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
ColorSpaceInterpreter () {
|
||||
choices[1] = "sRGB";
|
||||
choices[0xffff] = "Uncalibrated";
|
||||
}
|
||||
};
|
||||
ColorSpaceInterpreter colorSpaceInterpreter;
|
||||
|
||||
class ExposureProgramInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
ExposureProgramInterpreter () {
|
||||
choices[0] = "Not defined";
|
||||
choices[1] = "Manual";
|
||||
choices[2] = "Normal program";
|
||||
choices[3] = "Aperture priority";
|
||||
choices[4] = "Shutter priority";
|
||||
choices[5] = "Creative program";
|
||||
choices[6] = "Action program";
|
||||
choices[7] = "Portrait mode";
|
||||
choices[8] = "Landscape mode";
|
||||
}
|
||||
};
|
||||
ExposureProgramInterpreter exposureProgramInterpreter;
|
||||
|
||||
class MeteringModeInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
MeteringModeInterpreter () {
|
||||
choices[0] = "Unknown";
|
||||
choices[1] = "Average";
|
||||
choices[2] = "Center weighted";
|
||||
choices[3] = "Spot";
|
||||
choices[4] = "Multispot";
|
||||
choices[5] = "Pattern";
|
||||
choices[6] = "Partial";
|
||||
choices[255] = "Other";
|
||||
}
|
||||
};
|
||||
MeteringModeInterpreter meteringModeInterpreter;
|
||||
|
||||
class ExposureModeInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
ExposureModeInterpreter () {
|
||||
choices[0] = "Auto exposure";
|
||||
choices[1] = "Manual exposure";
|
||||
choices[2] = "Auto bracket";
|
||||
}
|
||||
};
|
||||
ExposureModeInterpreter exposureModeInterpreter;
|
||||
|
||||
class WhiteBalanceInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
WhiteBalanceInterpreter () {
|
||||
choices[0] = "Auto white balance";
|
||||
choices[1] = "Manual white balance";
|
||||
}
|
||||
};
|
||||
WhiteBalanceInterpreter whiteBalanceInterpreter;
|
||||
|
||||
class SceneCaptureInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
SceneCaptureInterpreter () {
|
||||
choices[0] = "Standard";
|
||||
choices[1] = "Landscape";
|
||||
choices[2] = "Portrait";
|
||||
choices[3] = "Night scene";
|
||||
}
|
||||
};
|
||||
SceneCaptureInterpreter sceneCaptureInterpreter;
|
||||
|
||||
class GainControlInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
GainControlInterpreter () {
|
||||
choices[0] = "None";
|
||||
choices[1] = "Low gain up";
|
||||
choices[2] = "High gain up";
|
||||
choices[3] = "Low gain down";
|
||||
choices[4] = "High gain down";
|
||||
}
|
||||
};
|
||||
GainControlInterpreter gainControlInterpreter;
|
||||
|
||||
class ContrastInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
ContrastInterpreter () {
|
||||
choices[0] = "Normal";
|
||||
choices[1] = "Soft";
|
||||
choices[2] = "Hard";
|
||||
}
|
||||
};
|
||||
ContrastInterpreter contrastInterpreter;
|
||||
|
||||
class SharpnessInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
SharpnessInterpreter () {
|
||||
choices[0] = "Normal";
|
||||
choices[1] = "Soft";
|
||||
choices[2] = "Hard";
|
||||
}
|
||||
};
|
||||
SharpnessInterpreter sharpnessInterpreter;
|
||||
|
||||
class SaturationInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
SaturationInterpreter () {
|
||||
choices[0] = "Normal";
|
||||
choices[1] = "Low saturation";
|
||||
choices[2] = "High saturation";
|
||||
}
|
||||
};
|
||||
SaturationInterpreter saturationInterpreter;
|
||||
|
||||
class FlashInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
FlashInterpreter () {
|
||||
choices[0x0000] = "Flash did not fire";
|
||||
choices[0x0001] = "Flash fired";
|
||||
choices[0x0005] = "Strobe return light not detected";
|
||||
choices[0x0007] = "Strobe return light detected";
|
||||
choices[0x0009] = "Flash fired, compulsory flash mode";
|
||||
choices[0x000D] = "Flash fired, compulsory flash mode, return light not detected";
|
||||
choices[0x000F] = "Flash fired, compulsory flash mode, return light detected";
|
||||
choices[0x0010] = "Flash did not fire, compulsory flash mode";
|
||||
choices[0x0018] = "Flash did not fire, auto mode";
|
||||
choices[0x0019] = "Flash fired, auto mode";
|
||||
choices[0x001D] = "Flash fired, auto mode, return light not detected";
|
||||
choices[0x001F] = "Flash fired, auto mode, return light detected";
|
||||
choices[0x0020] = "No flash function";
|
||||
choices[0x0041] = "Flash fired, red-eye reduction mode";
|
||||
choices[0x0045] = "Flash fired, red-eye reduction mode, return light not detected";
|
||||
choices[0x0047] = "Flash fired, red-eye reduction mode, return light detected";
|
||||
choices[0x0049] = "Flash fired, compulsory flash mode, red-eye reduction mode";
|
||||
choices[0x004D] = "Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected";
|
||||
choices[0x004F] = "Flash fired, compulsory flash mode, red-eye reduction mode, return light detected";
|
||||
choices[0x0059] = "Flash fired, auto mode, red-eye reduction mode";
|
||||
choices[0x005D] = "Flash fired, auto mode, return light not detected, red-eye reduction mode";
|
||||
choices[0x005F] = "Flash fired, auto mode, return light detected, red-eye reduction mode";
|
||||
}
|
||||
};
|
||||
FlashInterpreter flashInterpreter;
|
||||
|
||||
class LightSourceInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
LightSourceInterpreter () {
|
||||
choices[0] = "Unknown";
|
||||
choices[1] = "Daylight";
|
||||
choices[2] = "Fluorescent";
|
||||
choices[3] = "Tungsten";
|
||||
choices[4] = "Flash";
|
||||
choices[9] = "Fine weather";
|
||||
choices[10] = "Cloudy weather";
|
||||
choices[11] = "Shade";
|
||||
choices[12] = "Daylight fluorescent";
|
||||
choices[13] = "Day white fluorescent";
|
||||
choices[14] = "Cool white fluorescent";
|
||||
choices[15] = "White fluorescent";
|
||||
choices[17] = "Standard light A";
|
||||
choices[18] = "Standard light B";
|
||||
choices[19] = "Standard light C";
|
||||
choices[20] = "D55";
|
||||
choices[21] = "D65";
|
||||
choices[22] = "D75";
|
||||
choices[23] = "D50";
|
||||
choices[24] = "ISO studio tungsten";
|
||||
choices[255] = "Other light source";
|
||||
}
|
||||
};
|
||||
LightSourceInterpreter lightSourceInterpreter;
|
||||
|
||||
class CompressionInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
CompressionInterpreter () {
|
||||
choices[1] = "Uncompressed";
|
||||
choices[6] = "JPEG Compression";
|
||||
}
|
||||
};
|
||||
CompressionInterpreter compressionInterpreter;
|
||||
|
||||
class PhotometricInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
PhotometricInterpreter () {
|
||||
choices[2] = "RGB";
|
||||
choices[6] = "YCbCr";
|
||||
}
|
||||
};
|
||||
PhotometricInterpreter photometricInterpreter;
|
||||
|
||||
class PlanarConfigInterpreter : public ChoiceInterpreter {
|
||||
|
||||
public:
|
||||
PlanarConfigInterpreter () {
|
||||
choices[1] = "Chunky format";
|
||||
choices[2] = "Planar format";
|
||||
}
|
||||
};
|
||||
PlanarConfigInterpreter planarConfigInterpreter;
|
||||
|
||||
class FNumberInterpreter : public Interpreter {
|
||||
public:
|
||||
FNumberInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
sprintf (buffer, "%0.1f", t->toDouble());
|
||||
return buffer;
|
||||
}
|
||||
};
|
||||
FNumberInterpreter fNumberInterpreter;
|
||||
|
||||
class ApertureInterpreter : public Interpreter {
|
||||
public:
|
||||
ApertureInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
sprintf (buffer, "%0.1f", pow(2.0, t->toDouble()/2.0));
|
||||
return buffer;
|
||||
}
|
||||
};
|
||||
ApertureInterpreter apertureInterpreter;
|
||||
|
||||
class ExposureBiasInterpreter : public Interpreter {
|
||||
public:
|
||||
ExposureBiasInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
sprintf (buffer, "%+0.2f", t->toDouble());
|
||||
return buffer;
|
||||
}
|
||||
};
|
||||
ExposureBiasInterpreter exposureBiasInterpreter;
|
||||
|
||||
class ShutterSpeedInterpreter : public Interpreter {
|
||||
public:
|
||||
ShutterSpeedInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
double d = pow (2.0, -t->toDouble());
|
||||
if (d > 0.0 && d < 0.9)
|
||||
sprintf (buffer, "1/%0.0f", 1.0 / d);
|
||||
else
|
||||
sprintf (buffer, "%0.1f", d);
|
||||
return buffer;
|
||||
}
|
||||
};
|
||||
ShutterSpeedInterpreter shutterSpeedInterpreter;
|
||||
|
||||
class ExposureTimeInterpreter : public Interpreter {
|
||||
public:
|
||||
ExposureTimeInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
double d = t->toDouble();
|
||||
if (d > 0.0 && d < 0.9)
|
||||
sprintf (buffer, "1/%0.0f", 1.0 / d);
|
||||
else
|
||||
sprintf (buffer, "%0.1f", d);
|
||||
return buffer;
|
||||
}
|
||||
};
|
||||
ExposureTimeInterpreter exposureTimeInterpreter;
|
||||
|
||||
class FocalLengthInterpreter : public Interpreter {
|
||||
public:
|
||||
FocalLengthInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
sprintf (buffer, "%0.1f", t->toDouble());
|
||||
return buffer;
|
||||
}
|
||||
};
|
||||
FocalLengthInterpreter focalLengthInterpreter;
|
||||
|
||||
class UserCommentInterpreter : public Interpreter {
|
||||
public:
|
||||
UserCommentInterpreter () {}
|
||||
virtual std::string toString (Tag* t) {
|
||||
if (!strncmp((char*)t->getValue(), "ASCII\0\0\0",8))
|
||||
strncpy (buffer, (char*)t->getValue()+8, t->getCount()-8);
|
||||
else
|
||||
buffer[0]=0;
|
||||
return buffer;
|
||||
}
|
||||
virtual void fromString (Tag* t, const std::string& value) {
|
||||
memcpy (buffer, "ASCII\0\0\0", 8);
|
||||
strcpy (buffer+8, value.c_str());
|
||||
t->fromString (buffer, value.size() + 9);
|
||||
}
|
||||
};
|
||||
UserCommentInterpreter userCommentInterpreter;
|
||||
|
||||
const TagAttrib exifAttribs[] = {
|
||||
0, 2, 0, 0, 0x0103, "Compression", &compressionInterpreter,
|
||||
0, 2, 0, 0, 0xA000, "FlashpixVersion", &stdInterpreter,
|
||||
0, 2, 0, 0, 0xA001, "ColorSpace", &colorSpaceInterpreter,
|
||||
0, 1, 0, 0, 0x9000, "ExifVersion", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x9003, "DateTimeOriginal", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x9004, "DateTimeDigitized", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x9101, "ComponentsConfiguration", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x9102, "CompressedBitsPerPixel", &stdInterpreter,
|
||||
0, 2, 0, 0, 0xA002, "PixelXDimension", &stdInterpreter,
|
||||
0, 2, 0, 0, 0xA003, "PixelYDimension", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x927C, "MakerNote", &stdInterpreter,
|
||||
0, 1, 1, 0, 0x9286, "UserComment", &userCommentInterpreter,
|
||||
1, 0, 0, 0, 0xA004, "RelatedSoundFile", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x9290, "SubSecTime", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x9291, "SubSecTimeOriginal", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x9292, "SubSecTimeDigitized", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA420, "ImageUniqueID", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x829A, "ExposureTime", &exposureTimeInterpreter,
|
||||
0, 1, 0, 0, 0x829D, "FNumber", &fNumberInterpreter,
|
||||
0, 1, 0, 0, 0x8822, "ExposureProgram", &exposureProgramInterpreter,
|
||||
0, 1, 0, 0, 0x8824, "SpectralSensitivity", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x8827, "ISOSpeedRatings", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x8828, "OECF", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x9201, "ShutterSpeedValue", &shutterSpeedInterpreter,
|
||||
0, 1, 0, 0, 0x9202, "ApertureValue", &apertureInterpreter,
|
||||
0, 1, 0, 0, 0x9203, "BrightnessValue", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x9204, "ExposureBiasValue", &exposureBiasInterpreter,
|
||||
0, 1, 0, 0, 0x9205, "MaxApertureValue", &apertureInterpreter,
|
||||
0, 1, 0, 0, 0x9206, "SubjectDistance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x9207, "MeteringMode", &meteringModeInterpreter,
|
||||
0, 1, 0, 0, 0x9208, "LightSource", &lightSourceInterpreter,
|
||||
0, 1, 0, 0, 0x9209, "Flash", &flashInterpreter,
|
||||
0, 1, 0, 0, 0x920A, "FocalLength", &focalLengthInterpreter,
|
||||
0, 1, 0, 0, 0x9214, "SubjectArea", &stdInterpreter,
|
||||
0, 0, 0, 0, 0x9216, "TIFFEPSStandardID", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x9217, "SensingMethod", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA20B, "FlashEnergy", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA20C, "SpatialFrequencyResponse", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA20E, "FocalPlaneXResolution", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA20F, "FocalPlaneYResolution", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA210, "FocalPlaneResolutionUnit", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA214, "SubjectLocation", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA215, "ExposureIndex", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA217, "SensingMethod", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA300, "FileSource", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA301, "SceneType", &stdInterpreter,
|
||||
0, 0, 0, 0, 0xA302, "CFAPattern", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA401, "CustomRendered", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA402, "ExposureMode", &exposureModeInterpreter,
|
||||
0, 1, 0, 0, 0xA403, "WhiteBalance", &whiteBalanceInterpreter,
|
||||
0, 1, 0, 0, 0xA404, "DigitalZoomRatio", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA405, "FocalLengthIn35mmFilm", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA406, "SceneCaptureType", &sceneCaptureInterpreter,
|
||||
0, 1, 0, 0, 0xA407, "GainControl", &gainControlInterpreter,
|
||||
0, 1, 0, 0, 0xA408, "Contrast", &contrastInterpreter,
|
||||
0, 1, 0, 0, 0xA409, "Saturation", &saturationInterpreter,
|
||||
0, 1, 0, 0, 0xA40A, "Sharpness", &sharpnessInterpreter,
|
||||
0, 1, 0, 0, 0xA40B, "DeviceSettingDescription", &stdInterpreter,
|
||||
0, 1, 0, 0, 0xA40C, "SubjectDistanceRange", &stdInterpreter,
|
||||
0, 0, 0, 0, 0x828d, "CFAPattern", &stdInterpreter,
|
||||
0, 0, 0, 0, 0x828e, "CFARepeatPatternDim", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL };
|
||||
// 0, 0xA005, LONG, 1, "Interoperability tag", "Interoperability IFD Pointer"};
|
||||
|
||||
const TagAttrib gpsAttribs[] = {
|
||||
0, 1, 0, 0, 0x0000, "GPSVersionID", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0001, "GPSLatitudeRef", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0002, "GPSLatitude", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0003, "GPSLongitudeRef", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0004, "GPSLongitude", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0005, "GPSAltitudeRef", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0006, "GPSAltitude", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0007, "GPSTimeStamp", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0008, "GPSSatelites", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0009, "GPSStatus", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000a, "GPSMeasureMode", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000b, "GPSDOP", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000c, "GPSSpeedRef", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000d, "GPSSpeed", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000e, "GPSTrackRef", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x000f, "GPSTrack", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0010, "GPSImgDirectionRef", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0011, "GPSImgDirection", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0012, "GPSMapDatum", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0013, "GPSDestLatitudeRef", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0014, "GPSDestLatitude", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0015, "GPSDestLongitudeRef", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0016, "GPSDestLongitude", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0017, "GPSDestBearingRef", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0018, "GPSDestBearing", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0019, "GPSDestDistanceRef", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001a, "GPSDestDistance", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001b, "GPSProcessingMethod", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001c, "GPSAreaInformation", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001d, "GPSDateStamp", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x001e, "GPSDifferential", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL };
|
||||
|
||||
|
||||
|
||||
const TagAttrib iopAttribs[] = {
|
||||
0, 1, 0, 0, 0x0001, "InteroperabilityIndex", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0002, "InteroperabilityVersion", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL };
|
||||
|
||||
const TagAttrib ifdAttribs[] = {
|
||||
0, 2, 0, 0, 0x0017, "PanaISO", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0100, "ImageWidth", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0101, "ImageHeight", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0102, "BitsPerSample", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0103, "Compression", &compressionInterpreter,
|
||||
0, 2, 0, 0, 0x0106, "PhotometricInterpretation", &photometricInterpreter,
|
||||
0, 2, 0, 0, 0x0112, "Orientation", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0115, "SamplesPerPixel", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x011C, "PlanarConfiguration", &planarConfigInterpreter,
|
||||
0, 2, 0, 0, 0x0212, "YCbCrSubSampling", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0213, "YCbCrPositioning", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x011A, "XResolution", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x011B, "YResolution", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0128, "ResolutionUnit", &stdInterpreter,
|
||||
1, 0, 0, 0, 0x0111, "StripOffsets", &stdInterpreter,
|
||||
1, 0, 0, 0, 0x0116, "RowsPerStrip", &stdInterpreter,
|
||||
1, 0, 0, 0, 0x0117, "StripByteCounts", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0201, "JPEGInterchangeFormat", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0202, "JPEGInterchangeFormatLength", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x012D, "TransferFunction", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x013E, "WhitePoint", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x013F, "PriomaryChromaticities", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0211, "YCbCrCoefficients", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0214, "ReferenceBlackWhite", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0132, "DateTime", &stdInterpreter,
|
||||
0, 1, 1, 0, 0x010E, "ImageDescription", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x010F, "Make", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x0110, "Model", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x0131, "Software", &stdInterpreter,
|
||||
0, 1, 1, 0, 0x013B, "Artist", &stdInterpreter,
|
||||
0, 1, 1, 0, 0x8298, "Copyright", &stdInterpreter,
|
||||
0, 1, 0, exifAttribs, 0x8769, "Exif", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x8773, "ICCProfile", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x83BB, "IPTCData", &stdInterpreter,
|
||||
0, 1, 0, gpsAttribs, 0x8825, "GPSInfo", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x9003, "DateTimeOriginal", &stdInterpreter,
|
||||
0, 1, 0, 0, 0x9004, "DateTimeDigitized", &stdInterpreter,
|
||||
0, 1, 0, iopAttribs, 0xA005, "Interoperability", &stdInterpreter,
|
||||
1, 2, 0, ifdAttribs, 0x014A, "SubIFD", &stdInterpreter,
|
||||
0, 0, 0, 0, 0xC4A5, "PrintIMInformation", &stdInterpreter,
|
||||
0, 2, 0, 0, 0x00fe, "NewSubFileType", &stdInterpreter,
|
||||
-1, 0, 0, 0, 0, "", NULL};
|
||||
|
||||
};
|
||||
|
||||
/*#include <nikonattribs.h>
|
||||
#include <canonattribs.h>
|
||||
#include <pentaxattribs.h>
|
||||
#include <olympusattribs.h>
|
||||
#include <fujiattribs.h>
|
||||
#include <sonyminoltaattribs.h>*/
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user