// ***************************************************************** -*- C++ -*- /* * Copyright (C) 2004-2009 Andreas Huggel * * This program is part of the Exiv2 distribution. * * This program 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 2 * of the License, or (at your option) any later version. * * This program 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 this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA. */ /* File: pentaxmn.cpp Version: $Rev$ Author(s): Michal Cihar Based on fujimn.cpp by: Andreas Huggel (ahu) Gilles Caulier (gc) History: 27-Sep-07 created Credits: See header file. */ // ***************************************************************************** #include "rcsid.hpp" EXIV2_RCSID("@(#) $Id$") // ***************************************************************************** // included header files #include "types.hpp" #include "pentaxmn.hpp" #include "value.hpp" #include "i18n.h" // NLS support. // + standard includes #include #include #include #include #include // ***************************************************************************** // class member definitions namespace Exiv2 { //! ShootingMode, tag 0x0001 extern const TagDetails pentaxShootingMode[] = { { 0, N_("Auto") }, { 1, N_("Night-Scene") }, { 2, N_("Manual") }, }; //! CameraModel, tag 0x0005 extern const TagDetails pentaxModel[] = { { 0x0000d, N_("Optio 330/430") }, { 0x12926, N_("Optio 230") }, { 0x12958, N_("Optio 330GS") }, { 0x12962, N_("Optio 450/550") }, { 0x1296c, N_("Optio S") }, { 0x12994, N_("*ist D") }, { 0x129b2, N_("Optio 33L") }, { 0x129bc, N_("Optio 33LF") }, { 0x129c6, N_("Optio 33WR/43WR/555") }, { 0x129d5, N_("Optio S4") }, { 0x12a02, N_("Optio MX") }, { 0x12a0c, N_("Optio S40") }, { 0x12a16, N_("Optio S4i") }, { 0x12a34, N_("Optio 30") }, { 0x12a52, N_("Optio S30") }, { 0x12a66, N_("Optio 750Z") }, { 0x12a70, N_("Optio SV") }, { 0x12a75, N_("Optio SVi") }, { 0x12a7a, N_("Optio X") }, { 0x12a8e, N_("Optio S5i") }, { 0x12a98, N_("Optio S50") }, { 0x12aa2, N_("*ist DS") }, { 0x12ab6, N_("Optio MX4") }, { 0x12ac0, N_("Optio S5n") }, { 0x12aca, N_("Optio WP") }, { 0x12afc, N_("Optio S55") }, { 0x12b10, N_("Optio S5z") }, { 0x12b1a, N_("*ist DL") }, { 0x12b24, N_("Optio S60") }, { 0x12b2e, N_("Optio S45") }, { 0x12b38, N_("Optio S6") }, { 0x12b4c, N_("Optio WPi") }, { 0x12b56, N_("BenQ DC X600") }, { 0x12b60, N_("*ist DS2") }, { 0x12b62, N_("Samsung GX-1S") }, { 0x12b6a, N_("Optio A10") }, { 0x12b7e, N_("*ist DL2") }, { 0x12b80, N_("Samsung GX-1L") }, { 0x12b9c, N_("K100D") }, { 0x12b9d, N_("K110D") }, { 0x12ba2, N_("K100D Super") }, { 0x12bb0, N_("Optio T10") }, { 0x12be2, N_("Optio W10") }, { 0x12bf6, N_("Optio M10") }, { 0x12c1e, N_("K10D") }, { 0x12c20, N_("Samsung GX10") }, { 0x12c28, N_("Optio S7") }, { 0x12c32, N_("Optio M20") }, { 0x12c3c, N_("Optio W20") }, { 0x12c46, N_("Optio A20") }, { 0x12c8c, N_("Optio M30") }, { 0x12c78, N_("Optio E30") }, { 0x12c82, N_("Optio T30") }, { 0x12c96, N_("Optio W30") }, { 0x12ca0, N_("Optio A30") }, { 0x12cb4, N_("Optio E40") }, { 0x12cbe, N_("Optio M40") }, { 0x12cc8, N_("Optio Z10") }, { 0x12cdc, N_("Optio S10") }, { 0x12ce6, N_("Optio A40") }, { 0x12cf0, N_("Optio V10") }, { 0x12cd2, N_("K20D") }, { 0x12cdc, N_("Optio S10") }, { 0x12ce6, N_("Optio A40") }, { 0x12cf0, N_("Optio V10") }, { 0x12cfa, N_("K200D") }, { 0x12d0e, N_("Optio E50") }, { 0x12d18, N_("Optio M50") }, }; //! Quality, tag 0x0008 extern const TagDetails pentaxQuality[] = { { 0, N_("Good") }, { 1, N_("Better") }, { 2, N_("Best") }, { 3, N_("TIFF") }, { 4, N_("RAW") }, { 5, N_("Premium") }, }; //! Size, tag 0x0009 extern const TagDetails pentaxSize[] = { { 0, N_("640x480") }, { 1, N_("Full") }, { 2, N_("1024x768") }, { 3, N_("1280x960") }, { 4, N_("1600x1200") }, { 5, N_("2048x1536") }, { 8, N_("2560x1920 or 2304x1728") }, { 9, N_("3072x2304") }, { 10, N_("3264x2448") }, { 19, N_("320x240") }, { 20, N_("2288x1712") }, { 21, N_("2592x1944") }, { 22, N_("2304x1728 or 2592x1944") }, { 23, N_("3056x2296") }, { 25, N_("2816x2212 or 2816x2112") }, { 27, N_("3648x2736") }, }; //! Flash, tag 0x000c extern const TagDetails pentaxFlash[] = { { 0x000, N_("Auto, Did not fire") }, { 0x001, N_("Off") }, { 0x003, N_("Auto, Did not fire, Red-eye reduction") }, { 0x100, N_("Auto, Fired") }, { 0x102, N_("On") }, { 0x103, N_("Auto, Fired, Red-eye reduction") }, { 0x104, N_("On, Red-eye reduction") }, { 0x105, N_("On, Wireless") }, { 0x108, N_("On, Soft") }, { 0x109, N_("On, Slow-sync") }, { 0x10a, N_("On, Slow-sync, Red-eye reduction") }, { 0x10b, N_("On, Trailing-curtain Sync") }, }; //! Focus, tag 0x000d extern const TagDetails pentaxFocus[] = { { 0, N_("Normal") }, { 1, N_("Macro") }, { 2, N_("Infinity") }, { 3, N_("Manual") }, { 5, N_("Pan Focus") }, { 16, N_("AF-S") }, { 17, N_("AF-C") }, }; //! AFPoint, tag 0x000e extern const TagDetails pentaxAFPoint[] = { { 0xffff, N_("Auto") }, { 0xfffe, N_("Fixed Center") }, { 1, N_("Upper-left") }, { 2, N_("Top") }, { 3, N_("Upper-right") }, { 4, N_("Left") }, { 5, N_("Mid-left") }, { 6, N_("Center") }, { 7, N_("Mid-right") }, { 8, N_("Right") }, { 9, N_("Lower-left") }, { 10, N_("Bottom") }, { 11, N_("Lower-right") }, }; //! ISO, tag 0x0014 extern const TagDetails pentaxISO[] = { { 3, N_("50") }, { 4, N_("64") }, { 5, N_("80") }, { 6, N_("100") }, { 7, N_("125") }, { 8, N_("160") }, { 9, N_("200") }, { 10, N_("250") }, { 11, N_("320") }, { 12, N_("400") }, { 13, N_("500") }, { 14, N_("640") }, { 15, N_("800") }, { 16, N_("1000") }, { 17, N_("1250") }, { 18, N_("1600") }, { 21, N_("3200") }, { 50, N_("50") }, { 100, N_("100") }, { 200, N_("200") }, { 268, N_("200") }, { 400, N_("400") }, { 800, N_("800") }, { 1600, N_("1600") }, { 3200, N_("3200") }, }; //! Generic for Off/On switches extern const TagDetails pentaxOffOn[] = { { 0, N_("Off") }, { 1, N_("On") }, }; //! Generic for Yes/No switches extern const TagDetails pentaxYesNo[] = { { 0, N_("No") }, { 1, N_("Yes") }, }; //! MeteringMode, tag 0x0017 extern const TagDetails pentaxMeteringMode[] = { { 0, N_("Multi Segment") }, { 1, N_("Center Weighted") }, { 2, N_("Spot") }, }; //! WhiteBallance, tag 0x0019 extern const TagDetails pentaxWhiteBallance[] = { { 0, N_("Auto") }, { 1, N_("Daylight") }, { 2, N_("Shade") }, { 3, N_("Fluorescent") }, { 4, N_("Tungsten") }, { 5, N_("Manual") }, { 6, N_("DaylightFluorescent") }, { 7, N_("DaywhiteFluorescent") }, { 8, N_("WhiteFluorescent") }, { 9, N_("Flash") }, { 10, N_("Cloudy") }, { 65534, N_("Unknown") }, { 65535, N_("User Selected") }, }; //! WhiteBallance, tag 0x001a extern const TagDetails pentaxWhiteBallanceMode[] = { { 1, N_("Auto (Daylight)") }, { 2, N_("Auto (Shade)") }, { 3, N_("Auto (Flash)") }, { 4, N_("Auto (Tungsten)") }, { 7, N_("Auto (DaywhiteFluorescent)") }, { 8, N_("Auto (WhiteFluorescent)") }, { 10, N_("Auto (Cloudy)") }, { 0xffff, N_("User-Selected") }, { 0xfffe, N_("Preset (Fireworks?)") }, }; //! Saturation, tag 0x001f extern const TagDetails pentaxSaturation[] = { { 0, N_("Low") }, { 1, N_("Normal") }, { 2, N_("High") }, { 3, N_("Med Low") }, { 4, N_("Med High") }, { 5, N_("Very Low") }, { 6, N_("Very High") }, }; //! Contrast, tag 0x0020 extern const TagDetails pentaxContrast[] = { { 0, N_("Low") }, { 1, N_("Normal") }, { 2, N_("High") }, { 3, N_("Med Low") }, { 4, N_("Med High") }, { 5, N_("Very Low") }, { 6, N_("Very High") }, }; //! Sharpness, tag 0x0021 extern const TagDetails pentaxSharpness[] = { { 0, N_("Soft") }, { 1, N_("Normal") }, { 2, N_("Hard") }, { 3, N_("Med Soft") }, { 4, N_("Med Hard") }, { 5, N_("Very Soft") }, { 6, N_("Very Hard") }, }; //! Location, tag 0x0022 extern const TagDetails pentaxLocation[] = { { 0, N_("Home town") }, { 1, N_("Destination") }, }; //! City names, tags 0x0023 and 0x0024 extern const TagDetails pentaxCities[] = { { 0, N_("Pago Pago") }, { 1, N_("Honolulu") }, { 2, N_("Anchorage") }, { 3, N_("Vancouver") }, { 4, N_("San Fransisco") }, { 5, N_("Los Angeles") }, { 6, N_("Calgary") }, { 7, N_("Denver") }, { 8, N_("Mexico City") }, { 9, N_("Chicago") }, { 10, N_("Miami") }, { 11, N_("Toronto") }, { 12, N_("New York") }, { 13, N_("Santiago") }, { 14, N_("Caracus") }, { 15, N_("Halifax") }, { 16, N_("Buenos Aires") }, { 17, N_("Sao Paulo") }, { 18, N_("Rio de Janeiro") }, { 19, N_("Madrid") }, { 20, N_("London") }, { 21, N_("Paris") }, { 22, N_("Milan") }, { 23, N_("Rome") }, { 24, N_("Berlin") }, { 25, N_("Johannesburg") }, { 26, N_("Istanbul") }, { 27, N_("Cairo") }, { 28, N_("Jerusalem") }, { 29, N_("Moscow") }, { 30, N_("Jeddah") }, { 31, N_("Tehran") }, { 32, N_("Dubai") }, { 33, N_("Karachi") }, { 34, N_("Kabul") }, { 35, N_("Male") }, { 36, N_("Delhi") }, { 37, N_("Colombo") }, { 38, N_("Kathmandu") }, { 39, N_("Dacca") }, { 40, N_("Yangon") }, { 41, N_("Bangkok") }, { 42, N_("Kuala Lumpur") }, { 43, N_("Vientiane") }, { 44, N_("Singapore") }, { 45, N_("Phnom Penh") }, { 46, N_("Ho Chi Minh") }, { 47, N_("Jakarta") }, { 48, N_("Hong Kong") }, { 49, N_("Perth") }, { 50, N_("Beijing") }, { 51, N_("Shanghai") }, { 52, N_("Manila") }, { 53, N_("Taipei") }, { 54, N_("Seoul") }, { 55, N_("Adelaide") }, { 56, N_("Tokyo") }, { 57, N_("Guam") }, { 58, N_("Sydney") }, { 59, N_("Noumea") }, { 60, N_("Wellington") }, { 61, N_("Auckland") }, { 62, N_("Lima") }, { 63, N_("Dakar") }, { 64, N_("Algiers") }, { 65, N_("Helsinki") }, { 66, N_("Athens") }, { 67, N_("Nairobi") }, { 68, N_("Amsterdam") }, { 69, N_("Stockholm") }, { 70, N_("Lisbon") }, }; //! ImageProcessing, combi-tag 0x0032 (4 bytes) extern const TagDetails pentaxImageProcessing[] = { { 0x00000000, N_("Unprocessed") }, { 0x00000004, N_("Digital Filter") }, { 0x02000000, N_("Cropped") }, { 0x04000000, N_("Color Filter") }, { 0x10000000, N_("Frame Synthesis?") } }; //! PictureMode, combi-tag 0x0033 (3 bytes) extern const TagDetails pentaxPictureMode[] = { { 0x000000, N_("Program") }, { 0x000300, N_("MTF Program") }, { 0x000400, N_("Standard") }, { 0x000500, N_("Portrait") }, { 0x000600, N_("Landscape") }, { 0x000700, N_("Macro") }, { 0x000800, N_("Sport") }, { 0x000900, N_("Night Scene Portrait") }, { 0x000a00, N_("No Flash") }, /* SCN modes (menu-selected) */ { 0x000b00, N_("Night Scene") }, { 0x000c00, N_("Surf & Snow") }, { 0x000d00, N_("Text") }, { 0x000e00, N_("Sunset") }, { 0x000f00, N_("Kids") }, { 0x001000, N_("Pet") }, { 0x001100, N_("Candlelight") }, { 0x001200, N_("Museum") }, /* AUTO PICT modes (auto-selected) */ { 0x010400, N_("Auto PICT (Standard)") }, { 0x010500, N_("Auto PICT (Portrait)") }, { 0x010600, N_("Auto PICT (Landscape)") }, { 0x010700, N_("Auto PICT (Macro)") }, { 0x010800, N_("Auto PICT (Sport)") }, /* Manual dial modes */ { 0x020000, N_("Program AE") }, { 0x030000, N_("Green Mode") }, { 0x040000, N_("Shutter Speed Priority") }, { 0x050000, N_("Aperture Priority") }, { 0x080000, N_("Manual") }, { 0x090000, N_("Bulb") }, /* *istD modes */ { 0x020001, N_("Program AE") }, { 0x020101, N_("Hi-speed Program") }, { 0x020201, N_("DOF Program") }, { 0x020301, N_("MTF Program") }, { 0x030001, N_("Green Mode") }, { 0x040001, N_("Shutter Speed Priority") }, { 0x050001, N_("Aperture Priority") }, { 0x060001, N_("Program Tv Shift") }, { 0x070001, N_("Program Av Shift") }, { 0x080001, N_("Manual") }, { 0x090001, N_("Bulb") }, { 0x0a0001, N_("Aperture Priority (Off-Auto-Aperture)") }, { 0x0b0001, N_("Manual (Off-Auto-Aperture)") }, { 0x0c0001, N_("Bulb (Off-Auto-Aperture)") }, /* K10D modes */ { 0x060000, N_("Shutter Priority") }, { 0x0d0000, N_("Shutter & Aperture Priority AE") }, { 0x0d0001, N_("Shutter & Aperture Priority AE (1)") }, { 0x0f0000, N_("Sensitivity Priority AE") }, { 0x0f0001, N_("Sensitivity Priority AE (1)") }, { 0x100000, N_("Flash X-Sync Speed AE") }, { 0x100001, N_("Flash X-Sync Speed AE (1)") }, /* other modes */ { 0x000001, N_("Program") } }; //! DriveMode, combi-tag 0x0034 (4 bytes) extern const TagDetails pentaxDriveMode[] = { { 0x00000000, N_("Single-frame") }, { 0x01000000, N_("Continuous") }, { 0x02000000, N_("Continuous (Hi)") }, { 0x03000000, N_("Burst") }, { 0x00010000, N_("Self-timer (12 sec)") }, { 0x00020000, N_("Self-timer (2 sec)") }, { 0x00000100, N_("Remote Control (3 sec)") }, { 0x00000200, N_("Remote Control") }, { 0x00000001, N_("Multiple Exposure") }, }; //! ColorSpace, tag 0x0037 extern const TagDetails pentaxColorSpace[] = { { 0, N_("sRGB") }, { 1, N_("Adobe RGB") }, }; //! LensType, combi-tag 0x003f (2 unsigned long) extern const TagDetails pentaxLensType[] = { { 0x0000, N_("M-42 or No Lens") }, { 0x0100, N_("K,M Lens") }, { 0x0200, N_("A Series Lens") }, { 0x0300, "SIGMA" }, { 0x0311, "smc PENTAX-FA SOFT 85mm F2.8" }, { 0x0312, "smc PENTAX-F 1.7X AF ADAPTER" }, { 0x0313, "smc PENTAX-F 24-50mm F4" }, { 0x0314, "smc PENTAX-F 35-80mm F4-5.6" }, { 0x0315, "smc PENTAX-F 80-200mm F4.7-5.6" }, { 0x0316, "smc PENTAX-F FISH-EYE 17-28mm F3.5-4.5" }, { 0x0317, "smc PENTAX-F 100-300mm F4.5-5.6" }, { 0x0318, "smc PENTAX-F 35-135mm F3.5-4.5" }, { 0x0319, "smc PENTAX-F 35-105mm F4-5.6 or SIGMA or Tokina" }, { 0x031a, "smc PENTAX-F* 250-600mm F5.6 ED[IF]" }, { 0x031b, "smc PENTAX-F 28-80mm F3.5-4.5" }, { 0x031c, "smc PENTAX-F 35-70mm F3.5-4.5" }, { 0x031d, "PENTAX-F 28-80mm F3.5-4.5 or SIGMA AF 18-125mm F3.5-5.6 DC" }, { 0x031e, "PENTAX-F 70-200mm F4-5.6" }, { 0x031f, "smc PENTAX-F 70-210mm F4-5.6" }, { 0x0320, "smc PENTAX-F 50mm F1.4" }, { 0x0321, "smc PENTAX-F 50mm F1.7" }, { 0x0322, "smc PENTAX-F 135mm F2.8 [IF]" }, { 0x0323, "smc PENTAX-F 28mm F2.8" }, { 0x0324, "SIGMA 20mm F1.8 EX DG ASPHERICAL RF" }, { 0x0326, "smc PENTAX-F* 300mm F4.5 ED[IF]" }, { 0x0327, "smc PENTAX-F* 600mm F4 ED[IF]" }, { 0x0328, "smc PENTAX-F MACRO 100mm F2.8" }, { 0x0329, "smc PENTAX-F MACRO 50mm F2.8 or Sigma 50mm F2,8 MACRO" }, { 0x032c, "Tamron 35-90mm F4 AF or various SIGMA models" }, { 0x032e, "SIGMA APO 70-200mm F2.8 EX" }, { 0x0332, "smc PENTAX-FA 28-70mm F4 AL" }, { 0x0333, "SIGMA 28mm F1.8 EX DG ASPHERICAL MACRO" }, { 0x0334, "smc PENTAX-FA 28-200mm F3.8-5.6 AL[IF]" }, { 0x0335, "smc PENTAX-FA 28-80mm F3.5-5.6 AL" }, { 0x03f7, "smc PENTAX-DA FISH-EYE 10-17mm F3.5-4.5 ED[IF]" }, { 0x03f8, "smc PENTAX-DA 12-24mm F4 ED AL[IF]" }, { 0x03fa, "smc PENTAX-DA 50-200mm F4-5.6 ED" }, { 0x03fb, "smc PENTAX-DA 40mm F2.8 Limited" }, { 0x03fc, "smc PENTAX-DA 18-55mm F3.5-5.6 AL" }, { 0x03fd, "smc PENTAX-DA 14mm F2.8 ED[IF]" }, { 0x03fe, "smc PENTAX-DA 16-45mm F4 ED AL" }, { 0x03ff, "SIGMA" }, { 0x0401, "smc PENTAX-FA SOFT 28mm F2.8" }, { 0x0402, "smc PENTAX-FA 80-320mm F4.5-5.6" }, { 0x0403, "smc PENTAX-FA 43mm F1.9 Limited" }, { 0x0406, "smc PENTAX-FA 35-80mm F4-5.6" }, { 0x040c, "smc PENTAX-FA 50mm F1.4" }, { 0x040f, "smc PENTAX-FA 28-105mm F4-5.6 [IF]" }, { 0x0410, "TAMRON AF 80-210mm F4-5.6 (178D)" }, { 0x0413, "TAMRON SP AF 90mm F2.8 (172E)" }, { 0x0414, "smc PENTAX-FA 28-80mm F3.5-5.6" }, { 0x0416, "TOKINA 28-80mm F3.5-5.6" }, { 0x0417, "smc PENTAX-FA 20-35mm F4 AL" }, { 0x0418, "smc PENTAX-FA 77mm F1.8 Limited" }, { 0x0419, "TAMRON SP AF 14mm F2.8" }, { 0x041a, "smc PENTAX-FA MACRO 100mm F3.5" }, { 0x041b, "TAMRON AF28-300mm F/3.5-6.3 LD Aspherical[IF] MACRO (285D)" }, { 0x041c, "smc PENTAX-FA 35mm F2 AL" }, { 0x041d, "TAMRON AF 28-200mm F/3.8-5.6 LD Super II MACRO (371D)" }, { 0x0422, "smc PENTAX-FA 24-90mm F3.5-4.5 AL[IF]" }, { 0x0423, "smc PENTAX-FA 100-300mm F4.7-5.8" }, { 0x0424, "TAMRON AF70-300mm F/4-5.6 LD MACRO" }, { 0x0425, "TAMRON SP AF 24-135mm F3.5-5.6 AD AL (190D)" }, { 0x0426, "smc PENTAX-FA 28-105mm F3.2-4.5 AL[IF]" }, { 0x0427, "smc PENTAX-FA 31mm F1.8AL Limited" }, { 0x0429, "TAMRON AF 28-200mm Super Zoom F3.8-5.6 Aspherical XR [IF] MACRO (A03)" }, { 0x042b, "smc PENTAX-FA 28-90mm F3.5-5.6" }, { 0x042c, "smc PENTAX-FA J 75-300mm F4.5-5.8 AL" }, { 0x042d, "TAMRON 28-300mm F3.5-6.3 Ultra zoom XR" }, { 0x042e, "smc PENTAX-FA J 28-80mm F3.5-5.6 AL" }, { 0x042f, "smc PENTAX-FA J 18-35mm F4-5.6 AL" }, { 0x0431, "TAMRON SP AF 28-75mm F2.8 XR Di (A09)" }, { 0x0433, "smc PENTAX-D FA 50mm F2.8 MACRO" }, { 0x0434, "smc PENTAX-D FA 100mm F2.8 MACRO" }, { 0x04f4, "smc PENTAX-DA 21mm F3.2 AL Limited" }, { 0x04f5, "Schneider D-XENON 50-200mm" }, { 0x04f6, "Schneider D-XENON 18-55mm" }, { 0x04f7, "smc PENTAX-DA 10-17mm F3.5-4.5 ED [IF] Fisheye zoom" }, { 0x04f8, "smc PENTAX-DA 12-24mm F4 ED AL [IF]" }, { 0x04f9, "TAMRON XR DiII 18-200mm F3.5-6.3 (A14)" }, { 0x04fa, "smc PENTAX-DA 50-200mm F4-5.6 ED" }, { 0x04fb, "smc PENTAX-DA 40mm F2.8 Limited" }, { 0x04fc, "smc PENTAX-DA 18-55mm F3.5-5.6 AL" }, { 0x04fd, "smc PENTAX-DA 14mm F2.8 ED[IF]" }, { 0x04fe, "smc PENTAX-DA 16-45mm F4 ED AL" }, { 0x0501, "smc PENTAX-FA* 24mm F2 AL[IF]" }, { 0x0502, "smc PENTAX-FA 28mm F2.8 AL" }, { 0x0503, "smc PENTAX-FA 50mm F1.7" }, { 0x0504, "smc PENTAX-FA 50mm F1.4" }, { 0x0505, "smc PENTAX-FA* 600mm F4 ED[IF]" }, { 0x0506, "smc PENTAX-FA* 300mm F4.5 ED[IF]" }, { 0x0507, "smc PENTAX-FA 135mm F2.8 [IF]" }, { 0x0508, "smc PENTAX-FA MACRO 50mm F2.8" }, { 0x0509, "smc PENTAX-FA MACRO 100mm F2.8" }, { 0x050a, "smc PENTAX-FA* 85mm F1.4 [IF]" }, { 0x050b, "smc PENTAX-FA* 200mm F2.8 ED[IF]" }, { 0x050c, "smc PENTAX-FA 28-80mm F3.5-4.7" }, { 0x050d, "smc PENTAX-FA 70-200mm F4-5.6" }, { 0x050e, "smc PENTAX-FA* 250-600mm F5.6 ED[IF]" }, { 0x050f, "smc PENTAX-FA 28-105mm F4-5.6" }, { 0x0510, "smc PENTAX-FA 100-300mm F4.5-5.6" }, { 0x0601, "smc PENTAX-FA* 85mm F1.4[IF]" }, { 0x0602, "smc PENTAX-FA* 200mm F2.8 ED[IF]" }, { 0x0603, "smc PENTAX-FA* 300mm F2.8 ED[IF]" }, { 0x0604, "smc PENTAX-FA* 28-70mm F2.8 AL" }, { 0x0605, "smc PENTAX-FA* 80-200mm F2.8 ED[IF]" }, { 0x0606, "smc PENTAX-FA* 28-70mm F2.8 AL" }, { 0x0607, "smc PENTAX-FA* 80-200mm F2.8 ED[IF]" }, { 0x0608, "smc PENTAX-FA 28-70mm F4AL" }, { 0x0609, "smc PENTAX-FA 20mm F2.8" }, { 0x060a, "smc PENTAX-FA* 400mm F5.6 ED[IF]" }, { 0x060d, "smc PENTAX-FA* 400mm F5.6 ED[IF]" }, { 0x060e, "smc PENTAX-FA* MACRO 200mm F4 ED[IF]" }, { 0x0700, "smc PENTAX-DA 21mm F3.2 AL Limited" }, { 0x07e5, "smc PENTAX-DA 18-55mm F3.5-5.6 AL II" }, { 0x07e6, "Tamron AF 17-50mm F2.8 XR Di-II LD (Model A16)" }, { 0x07e7, "smc PENTAX-DA 18-250mm F3.5-6.3ED AL [IF]" }, { 0x07e9, "smc PENTAX-DA 35mm F2.8 Macro Limited" }, { 0x07ea, "smc PENTAX-DA* 300 mm F4ED [IF] SDM (SDM not used)" }, { 0x07eb, "smc PENTAX-DA* 200mm F2.8 ED [IF] SDM (SDM not used)" }, { 0x07ee, "TAMRON AF 18-250mm F3.5-6.3 Di II LD Aspherical [IF] MACRO" }, { 0x07f1, "smc PENTAX-DA* 50-135mm F2.8 ED [IF] SDM (SDM not used)" }, { 0x07f2, "smc PENTAX-DA* 16-50mm F2.8 ED AL [IF] SDM (SDM not used)" }, { 0x07f3, "smc PENTAX-DA 70mm F2.4 Limited" }, { 0x07f4, "smc PENTAX-DA 21mm F3.2 AL Limited" }, { 0x08ea, "smc PENTAX-DA* 300 mm F4ED [IF] SDM" }, { 0x08eb, "smc PENTAX-DA* 200mm F2.8 ED [IF] SDM" }, { 0x08f1, "smc PENTAX-DA* 50-135mm F2.8 ED [IF] SDM" }, { 0x08f2, "smc PENTAX-DA* 16-50mm F2.8 ED AL [IF] SDM" }, }; //! ImageTone, tag 0x004f extern const TagDetails pentaxImageTone[] = { { 0, N_("Natural") }, { 1, N_("Bright") }, { 2, N_("Portrait") }, { 3, N_("Landscape") }, { 4, N_("Vibrant") }, { 5, N_("Monochrome") }, }; //! DynamicRangeExpansion, tag 0x0069 extern const TagDetails pentaxDynamicRangeExpansion[] = { { 0, N_("Off") }, { 0x1000000, N_("On") }, }; //! HighISONoiseReduction, tag 0x0071 extern const TagDetails pentaxHighISONoiseReduction[] = { { 0, N_("Off") }, { 1, N_("Weakest") }, { 2, N_("Weak") }, { 3, N_("Strong") }, }; std::ostream& PentaxMakerNote::printPentaxVersion(std::ostream& os, const Value& value, const ExifData*) { std::string val = value.toString(); size_t i; while ((i = val.find(' ')) != std::string::npos && i != val.length() - 1) { val.replace(i, 1, "."); } os << val; return os; } std::ostream& PentaxMakerNote::printPentaxResolution(std::ostream& os, const Value& value, const ExifData*) { std::string val = value.toString(); size_t i; while ((i = val.find(' ')) != std::string::npos && i != val.length() - 1) { val.replace(i, 1, "x"); } os << val; return os; } std::ostream& PentaxMakerNote::printPentaxDate(std::ostream& os, const Value& value, const ExifData*) { /* I choose same format as is used inside EXIF itself */ os << ((value.toLong(0) << 8) + value.toLong(1)); os << ":"; os << std::setw(2) << std::setfill('0') << value.toLong(2); os << ":"; os << std::setw(2) << std::setfill('0') << value.toLong(3); return os; } std::ostream& PentaxMakerNote::printPentaxTime(std::ostream& os, const Value& value, const ExifData*) { os << std::setw(2) << std::setfill('0') << value.toLong(0); os << ":"; os << std::setw(2) << std::setfill('0') << value.toLong(1); os << ":"; os << std::setw(2) << std::setfill('0') << value.toLong(2); return os; } std::ostream& PentaxMakerNote::printPentaxExposure(std::ostream& os, const Value& value, const ExifData*) { os << static_cast(value.toLong()) / 100 << " ms"; return os; } std::ostream& PentaxMakerNote::printPentaxFValue(std::ostream& os, const Value& value, const ExifData*) { os << "F" << std::setprecision(2) << static_cast(value.toLong()) / 10; return os; } std::ostream& PentaxMakerNote::printPentaxFocalLength(std::ostream& os, const Value& value, const ExifData*) { os << std::fixed << std::setprecision(1) << static_cast(value.toLong()) / 100 << " mm"; return os; } std::ostream& PentaxMakerNote::printPentaxCompensation(std::ostream& os, const Value& value, const ExifData*) { os << std::setprecision(2) << (static_cast(value.toLong()) - 50) / 10 << " EV"; return os; } std::ostream& PentaxMakerNote::printPentaxTemperature(std::ostream& os, const Value& value, const ExifData*) { os << value.toLong() << " C"; return os; } std::ostream& PentaxMakerNote::printPentaxFlashCompensation(std::ostream& os, const Value& value, const ExifData*) { os << std::setprecision(2) << static_cast(value.toLong()) / 256 << " EV"; return os; } std::ostream& PentaxMakerNote::printPentaxBracketing(std::ostream& os, const Value& value, const ExifData*) { long l0 = value.toLong(0); if (l0 < 10) { os << std::setprecision(2) << static_cast(l0) / 3 << " EV"; } else { os << std::setprecision(2) << static_cast(l0) - 9.5 << " EV"; } if (value.count() == 2) { long l1 = value.toLong(1); long type; long range; os << " ("; if (l1 == 0) { os << _("No extended bracketing"); } else { type = l1 >> 8; range = l1 & 0xff; switch (type) { case 1: os << _("WB-BA"); break; case 2: os << _("WB-GM"); break; case 3: os << _("Saturation"); break; case 4: os << _("Sharpness"); break; case 5: os << _("Contrast"); break; default: os << _("Unknown ") << type; break; } os << " " << range; } os << ")"; } return os; } // Pentax MakerNote Tag Info const TagInfo PentaxMakerNote::tagInfo_[] = { TagInfo(0x0000, "Version", N_("Version"), N_("Pentax Makernote version"), pentaxIfdId, makerTags, undefined, printPentaxVersion), TagInfo(0x0001, "Mode", N_("Shooting mode"), N_("Camera shooting mode"), pentaxIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(pentaxShootingMode)), TagInfo(0x0002, "PreviewResolution", N_("Resolution of a preview image"), N_("Resolution of a preview image"), pentaxIfdId, makerTags, undefined, printPentaxResolution), TagInfo(0x0003, "PreviewLength", N_("Length of a preview image"), N_("Size of an IFD containing a preview image"), pentaxIfdId, makerTags, undefined, printValue), TagInfo(0x0004, "PreviewOffset", N_("Pointer to a preview image"), N_("Offset to an IFD containing a preview image"), pentaxIfdId, makerTags, undefined, printValue), TagInfo(0x0005, "ModelID", N_("Model identification"), N_("Pentax model idenfication"), pentaxIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(pentaxModel)), TagInfo(0x0006, "Date", N_("Date"), N_("Date"), pentaxIfdId, makerTags, undefined, printPentaxDate), TagInfo(0x0007, "Time", N_("Time"), N_("Time"), pentaxIfdId, makerTags, undefined, printPentaxTime), TagInfo(0x0008, "Quality", N_("Image quality"), N_("Image quality settings"), pentaxIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(pentaxQuality)), TagInfo(0x0009, "Size", N_("Image size"), N_("Image size settings"), pentaxIfdId, makerTags, unsignedLong, EXV_PRINT_TAG(pentaxSize)), /* Some missing ! */ TagInfo(0x000c, "Flash", N_("Flash mode"), N_("Flash mode settings"), pentaxIfdId, makerTags, unsignedLong, EXV_PRINT_TAG(pentaxFlash)), TagInfo(0x000d, "Focus", N_("Focus mode"), N_("Focus mode settings"), pentaxIfdId, makerTags, unsignedLong, EXV_PRINT_TAG(pentaxFocus)), TagInfo(0x000e, "AFPoint", N_("AF point"), N_("Selected AF point"), pentaxIfdId, makerTags, unsignedLong, EXV_PRINT_TAG(pentaxAFPoint)), /* Some missing ! */ TagInfo(0x0012, "ExposureTime", N_("Exposure time"), N_("Exposure time"), pentaxIfdId, makerTags, unsignedLong, printPentaxExposure), TagInfo(0x0013, "FNumber", N_("F-Number"), N_("F-Number"), pentaxIfdId, makerTags, unsignedLong, printPentaxFValue), TagInfo(0x0014, "ISO", N_("ISO sensitivity"), N_("ISO sensitivity settings"), pentaxIfdId, makerTags, unsignedLong, EXV_PRINT_TAG(pentaxISO)), /* Some missing ! */ TagInfo(0x0016, "ExposureCompensation", N_("Exposure compensation"), N_("Exposure compensation"), pentaxIfdId, makerTags, unsignedLong, printPentaxCompensation), /* Some missing ! */ TagInfo(0x0017, "MeteringMode", N_("MeteringMode"), N_("MeteringMode"), pentaxIfdId, makerTags, undefined, EXV_PRINT_TAG(pentaxMeteringMode)), TagInfo(0x0018, "AutoBracketing", N_("AutoBracketing"), N_("AutoBracketing"), pentaxIfdId, makerTags, undefined, printPentaxBracketing), TagInfo(0x0019, "WhiteBallance", N_("White ballance"), N_("White ballance"), pentaxIfdId, makerTags, undefined, EXV_PRINT_TAG(pentaxWhiteBallance)), TagInfo(0x001a, "WhiteBallanceMode", N_("White ballance mode"), N_("White ballance mode"), pentaxIfdId, makerTags, undefined, EXV_PRINT_TAG(pentaxWhiteBallanceMode)), /* Some missing ! */ TagInfo(0x001d, "FocalLength", N_("FocalLength"), N_("FocalLength"), pentaxIfdId, makerTags, undefined, printPentaxFocalLength), /* Some missing ! */ TagInfo(0x001f, "Saturation", N_("Saturation"), N_("Saturation"), pentaxIfdId, makerTags, undefined, EXV_PRINT_TAG(pentaxSaturation)), TagInfo(0x0020, "Contrast", N_("Contrast"), N_("Contrast"), pentaxIfdId, makerTags, undefined, EXV_PRINT_TAG(pentaxContrast)), TagInfo(0x0021, "Sharpness", N_("Sharpness"), N_("Sharpness"), pentaxIfdId, makerTags, undefined, EXV_PRINT_TAG(pentaxSharpness)), TagInfo(0x0022, "Location", N_("Location"), N_("Location"), pentaxIfdId, makerTags, undefined, EXV_PRINT_TAG(pentaxLocation)), TagInfo(0x0023, "Hometown", N_("Hometown"), N_("Home town"), pentaxIfdId, makerTags, undefined, EXV_PRINT_TAG(pentaxCities)), TagInfo(0x0024, "Destination", N_("Destination"), N_("Destination"), pentaxIfdId, makerTags, undefined, EXV_PRINT_TAG(pentaxCities)), TagInfo(0x0025, "HometownDST", N_("Hometown DST"), N_("Whether day saving time is active in home town"), pentaxIfdId, makerTags, undefined, EXV_PRINT_TAG(pentaxYesNo)), TagInfo(0x0026, "DestinationDST", N_("Destination DST"), N_("Whether day saving time is active in destination"), pentaxIfdId, makerTags, undefined, EXV_PRINT_TAG(pentaxYesNo)), TagInfo(0x0027, "DSPFirmwareVersion", N_("DSPFirmwareVersion"), N_("DSPFirmwareVersion"), pentaxIfdId, makerTags, unsignedByte, printValue), /* TODO: Decoding missing */ TagInfo(0x0028, "CPUFirmwareVersion", N_("CPUFirmwareVersion"), N_("CPUFirmwareVersion"), pentaxIfdId, makerTags, unsignedByte, printValue), /* TODO: Decoding missing */ TagInfo(0x0029, "FrameNumber", N_("Frame number"), N_("Frame number"), pentaxIfdId, makerTags, undefined, printValue), /* Some missing ! */ TagInfo(0x002d, "EffectiveLV", N_("Light value"), N_("Camera calculated light value, includes exposure compensation"), pentaxIfdId, makerTags, unsignedShort, printValue), /* Some missing ! */ TagInfo(0x0032, "ImageProcessing", N_("Image processing"), N_("Image processing"), pentaxIfdId, makerTags, undefined, EXV_PRINT_COMBITAG(pentaxImageProcessing, 4, 0)), TagInfo(0x0033, "PictureMode", N_("Picture mode"), N_("Picture mode"), pentaxIfdId, makerTags, undefined, EXV_PRINT_COMBITAG(pentaxPictureMode, 3, 0)), TagInfo(0x0034, "DriveMode", N_("Drive mode"), N_("Drive mode"), pentaxIfdId, makerTags, undefined, EXV_PRINT_COMBITAG(pentaxDriveMode, 4, 0)), /* Some missing ! */ TagInfo(0x0037, "ColorSpace", N_("Color space"), N_("Color space"), pentaxIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(pentaxColorSpace)), /* Some missing ! */ TagInfo(0x003e, "PreviewImageBorders", N_("Preview image borders"), N_("Preview image borders"), pentaxIfdId, makerTags, unsignedByte, printValue), TagInfo(0x003f, "LensType", N_("Lens type"), N_("Lens type"), pentaxIfdId, makerTags, unsignedByte, EXV_PRINT_COMBITAG(pentaxLensType, 2, 1)), TagInfo(0x0040, "SensitivityAdjust", N_("Sensitivity adjust"), N_("Sensitivity adjust"), pentaxIfdId, makerTags, unsignedLong, printValue), TagInfo(0x0041, "DigitalFilter", N_("Digital filter"), N_("Digital filter"), pentaxIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(pentaxOffOn)), /* Some missing ! */ TagInfo(0x0047, "Temperature", N_("Temperature"), N_("Camera temperature"), pentaxIfdId, makerTags, signedByte, printPentaxTemperature), TagInfo(0x0048, "AELock", N_("AE lock"), N_("AE lock"), pentaxIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(pentaxOffOn)), TagInfo(0x0049, "NoiseReduction", N_("Noise reduction"), N_("Noise reduction"), pentaxIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(pentaxOffOn)), /* Some missing ! */ TagInfo(0x004d, "FlashExposureCompensation", N_("Flash exposure compensation"), N_("Flash exposure compensation"), pentaxIfdId, makerTags, signedLong, printPentaxFlashCompensation), /* Some missing ! */ TagInfo(0x004f, "ImageTone", N_("Image tone"), N_("Image tone"), pentaxIfdId, makerTags, unsignedShort, EXV_PRINT_TAG(pentaxImageTone)), TagInfo(0x0050, "ColorTemperature", N_("Colort temperature"), N_("Colort temperature"), pentaxIfdId, makerTags, unsignedShort, printValue), /* Some missing ! */ TagInfo(0x005c, "ShakeReduction", N_("Shake reduction"), N_("Shake reduction information"), pentaxIfdId, makerTags, undefined, printValue), TagInfo(0x005d, "ShutterCount", N_("Shutter count"), N_("Shutter count"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: This has some encryption by date (see exiftool) */ TagInfo(0x0069, "DynamicRangeExpansion", N_("Dynamic range expansion"), N_("Dynamic range expansion"), pentaxIfdId, makerTags, undefined, EXV_PRINT_COMBITAG(pentaxDynamicRangeExpansion, 4, 0)), TagInfo(0x0071, "HighISONoiseReduction", N_("High ISO noise reduction"), N_("High ISO noise reduction"), pentaxIfdId, makerTags, unsignedByte, EXV_PRINT_TAG(pentaxHighISONoiseReduction)), /* Many missing ! */ TagInfo(0x0200, "BlackPoint", N_("Black point"), N_("Black point"), pentaxIfdId, makerTags, undefined, printValue), TagInfo(0x0201, "WhitePoint", N_("White point"), N_("White point"), pentaxIfdId, makerTags, undefined, printValue), /* Some missing ! */ TagInfo(0x0205, "ShotInfo", N_("ShotInfo"), N_("ShotInfo"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x0206, "AEInfo", N_("AEInfo"), N_("AEInfo"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x0207, "LensInfo", N_("LensInfo"), N_("LensInfo"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x0208, "FlashInfo", N_("FlashInfo"), N_("FlashInfo"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x0209, "AEMeteringSegments", N_("AEMeteringSegments"), N_("AEMeteringSegments"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x020a, "FlashADump", N_("FlashADump"), N_("FlashADump"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x020b, "FlashBDump", N_("FlashBDump"), N_("FlashBDump"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ /* Some missing ! */ TagInfo(0x020d, "WB_RGGBLevelsDaylight", N_("WB_RGGBLevelsDaylight"), N_("WB_RGGBLevelsDaylight"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x020e, "WB_RGGBLevelsShade", N_("WB_RGGBLevelsShade"), N_("WB_RGGBLevelsShade"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x020f, "WB_RGGBLevelsCloudy", N_("WB_RGGBLevelsCloudy"), N_("WB_RGGBLevelsCloudy"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x0210, "WB_RGGBLevelsTungsten", N_("WB_RGGBLevelsTungsten"), N_("WB_RGGBLevelsTungsten"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x0211, "WB_RGGBLevelsFluorescentD", N_("WB_RGGBLevelsFluorescentD"), N_("WB_RGGBLevelsFluorescentD"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x0212, "WB_RGGBLevelsFluorescentN", N_("WB_RGGBLevelsFluorescentN"), N_("WB_RGGBLevelsFluorescentN"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x0213, "WB_RGGBLevelsFluorescentW", N_("WB_RGGBLevelsFluorescentW"), N_("WB_RGGBLevelsFluorescentW"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x0214, "WB_RGGBLevelsFlash", N_("WB_RGGBLevelsFlash"), N_("WB_RGGBLevelsFlash"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x0215, "CameraInfo", N_("CameraInfo"), N_("CameraInfo"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x0216, "BatteryInfo", N_("BatteryInfo"), N_("BatteryInfo"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x021f, "AFInfo", N_("AFInfo"), N_("AFInfo"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ TagInfo(0x0222, "ColorInfo", N_("ColorInfo"), N_("ColorInfo"), pentaxIfdId, makerTags, undefined, printValue), /* TODO: Decoding missing */ // End of list marker TagInfo(0xffff, "(UnknownPentaxMakerNoteTag)", "(UnknownPentaxMakerNoteTag)", N_("Unknown PentaxMakerNote tag"), pentaxIfdId, makerTags, invalidTypeId, printValue) }; const TagInfo* PentaxMakerNote::tagList() { return tagInfo_; } } // namespace Exiv2