Blame src/pentaxmn_int.cpp

Packit 01d647
// ***************************************************************** -*- C++ -*-
Packit 01d647
/*
Packit 01d647
 * Copyright (C) 2004-2018 Exiv2 authors
Packit 01d647
 * This program is part of the Exiv2 distribution.
Packit 01d647
 *
Packit 01d647
 * This program is free software; you can redistribute it and/or
Packit 01d647
 * modify it under the terms of the GNU General Public License
Packit 01d647
 * as published by the Free Software Foundation; either version 2
Packit 01d647
 * of the License, or (at your option) any later version.
Packit 01d647
 *
Packit 01d647
 * This program is distributed in the hope that it will be useful,
Packit 01d647
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 01d647
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 01d647
 * GNU General Public License for more details.
Packit 01d647
 *
Packit 01d647
 * You should have received a copy of the GNU General Public License
Packit 01d647
 * along with this program; if not, write to the Free Software
Packit 01d647
 * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
Packit 01d647
 */
Packit 01d647
/*
Packit 01d647
  File:      pentaxmn.cpp
Packit 01d647
 */
Packit 01d647
// *****************************************************************************
Packit 01d647
// included header files
Packit 01d647
#include "types.hpp"
Packit 01d647
#include "pentaxmn_int.hpp"
Packit 01d647
#include "makernote_int.hpp"
Packit 01d647
#include "value.hpp"
Packit 01d647
#include "exif.hpp"
Packit 01d647
#include "tags.hpp"
Packit 01d647
#include "metadatum.hpp"
Packit 01d647
#include "i18n.h"                // NLS support.
Packit 01d647
Packit 01d647
// + standard includes
Packit 01d647
#include <string>
Packit 01d647
Packit 01d647
// *****************************************************************************
Packit 01d647
// class member definitions
Packit 01d647
namespace Exiv2 {
Packit 01d647
    namespace Internal {
Packit 01d647
Packit 01d647
    //! ShootingMode, tag 0x0001
Packit 01d647
    extern const TagDetails pentaxShootingMode[] = {
Packit 01d647
        {   0, N_("Auto")                      },
Packit 01d647
        {   1, N_("Night-Scene")               },
Packit 01d647
        {   2, N_("Manual")                    },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! CameraModel, tag 0x0005
Packit 01d647
    extern const TagDetails pentaxModel[] = {
Packit 01d647
        {    0x0000d, "Optio 330/430" },
Packit 01d647
        {    0x12926, "Optio 230" },
Packit 01d647
        {    0x12958, "Optio 330GS" },
Packit 01d647
        {    0x12962, "Optio 450/550" },
Packit 01d647
        {    0x1296c, "Optio S" },
Packit 01d647
        {    0x12971, "Optio S V1.01" },
Packit 01d647
        {    0x12994, "*ist D" },
Packit 01d647
        {    0x129b2, "Optio 33L" },
Packit 01d647
        {    0x129bc, "Optio 33LF" },
Packit 01d647
        {    0x129c6, "Optio 33WR/43WR/555" },
Packit 01d647
        {    0x129d5, "Optio S4" },
Packit 01d647
        {    0x12a02, "Optio MX" },
Packit 01d647
        {    0x12a0c, "Optio S40" },
Packit 01d647
        {    0x12a16, "Optio S4i" },
Packit 01d647
        {    0x12a34, "Optio 30" },
Packit 01d647
        {    0x12a52, "Optio S30" },
Packit 01d647
        {    0x12a66, "Optio 750Z" },
Packit 01d647
        {    0x12a70, "Optio SV" },
Packit 01d647
        {    0x12a75, "Optio SVi" },
Packit 01d647
        {    0x12a7a, "Optio X" },
Packit 01d647
        {    0x12a8e, "Optio S5i" },
Packit 01d647
        {    0x12a98, "Optio S50" },
Packit 01d647
        {    0x12aa2, "*ist DS" },
Packit 01d647
        {    0x12ab6, "Optio MX4" },
Packit 01d647
        {    0x12ac0, "Optio S5n" },
Packit 01d647
        {    0x12aca, "Optio WP" },
Packit 01d647
        {    0x12afc, "Optio S55" },
Packit 01d647
        {    0x12b10, "Optio S5z" },
Packit 01d647
        {    0x12b1a, "*ist DL" },
Packit 01d647
        {    0x12b24, "Optio S60" },
Packit 01d647
        {    0x12b2e, "Optio S45" },
Packit 01d647
        {    0x12b38, "Optio S6" },
Packit 01d647
        {    0x12b4c, "Optio WPi" },
Packit 01d647
        {    0x12b56, "BenQ DC X600" },
Packit 01d647
        {    0x12b60, "*ist DS2" },
Packit 01d647
        {    0x12b62, "Samsung GX-1S" },
Packit 01d647
        {    0x12b6a, "Optio A10" },
Packit 01d647
        {    0x12b7e, "*ist DL2" },
Packit 01d647
        {    0x12b80, "Samsung GX-1L" },
Packit 01d647
        {    0x12b9c, "K100D" },
Packit 01d647
        {    0x12b9d, "K110D" },
Packit 01d647
        {    0x12ba2, "K100D Super" },
Packit 01d647
        {    0x12bb0, "Optio T10/T20" },
Packit 01d647
        {    0x12be2, "Optio W10" },
Packit 01d647
        {    0x12bf6, "Optio M10" },
Packit 01d647
        {    0x12c1e, "K10D" },
Packit 01d647
        {    0x12c20, "Samsung GX10" },
Packit 01d647
        {    0x12c28, "Optio S7" },
Packit 01d647
        {    0x12c2d, "Optio L20" },
Packit 01d647
        {    0x12c32, "Optio M20" },
Packit 01d647
        {    0x12c3c, "Optio W20" },
Packit 01d647
        {    0x12c46, "Optio A20" },
Packit 01d647
        {    0x12c78, "Optio E30" },
Packit 01d647
        {    0x12c7d, "Optio E35" },
Packit 01d647
        {    0x12c82, "Optio T30" },
Packit 01d647
        {    0x12c8c, "Optio M30" },
Packit 01d647
        {    0x12c91, "Optio L30" },
Packit 01d647
        {    0x12c96, "Optio W30" },
Packit 01d647
        {    0x12ca0, "Optio A30" },
Packit 01d647
        {    0x12cb4, "Optio E40" },
Packit 01d647
        {    0x12cbe, "Optio M40" },
Packit 01d647
        {    0x12cc3, "Optio L40" },
Packit 01d647
        {    0x12cc5, "Optio L36" },
Packit 01d647
        {    0x12cc8, "Optio Z10" },
Packit 01d647
        {    0x12cd2, "K20D" },
Packit 01d647
        {    0x12cd4, "Samsung GX20" },
Packit 01d647
        {    0x12cdc, "Optio S10" },
Packit 01d647
        {    0x12ce6, "Optio A40" },
Packit 01d647
        {    0x12cf0, "Optio V10" },
Packit 01d647
        {    0x12cfa, "K200D" },
Packit 01d647
        {    0x12d04, "Optio S12" },
Packit 01d647
        {    0x12d0e, "Optio E50" },
Packit 01d647
        {    0x12d18, "Optio M50" },
Packit 01d647
        {    0x12d22, "Optio L50" },
Packit 01d647
        {    0x12d2c, "Optio V20" },
Packit 01d647
        {    0x12d40, "Optio W60" },
Packit 01d647
        {    0x12d4a, "Optio M60" },
Packit 01d647
        {    0x12d68, "Optio E60/M90" },
Packit 01d647
        {    0x12d72, "K2000" },
Packit 01d647
        {    0x12d73, "K-m" },
Packit 01d647
        {    0x12d86, "Optio P70" },
Packit 01d647
        {    0x12d90, "Optio L70" },
Packit 01d647
        {    0x12d9a, "Optio E70" },
Packit 01d647
        {    0x12dae, "X70" },
Packit 01d647
        {    0x12db8, "K-7" },
Packit 01d647
        {    0x12dcc, "Optio W80" },
Packit 01d647
        {    0x12dea, "Optio P80" },
Packit 01d647
        {    0x12df4, "Optio WS80" },
Packit 01d647
        {    0x12dfe, "K-x" },
Packit 01d647
        {    0x12e08, "645D" },
Packit 01d647
        {    0x12e12, "Optio E80" },
Packit 01d647
        {    0x12e30, "Optio W90" },
Packit 01d647
        {    0x12e3a, "Optio I-10" },
Packit 01d647
        {    0x12e44, "Optio H90" },
Packit 01d647
        {    0x12e4e, "Optio E90" },
Packit 01d647
        {    0x12e58, "X90" },
Packit 01d647
        {    0x12e6c, "K-r" },
Packit 01d647
        {    0x12e76, "K-5" },
Packit 01d647
        {    0x12e8a, "Optio RS1000/RS1500" },
Packit 01d647
        {    0x12e94, "Optio RZ10" },
Packit 01d647
        {    0x12e9e, "Optio LS1000" },
Packit 01d647
        {    0x12ebc, "Optio WG-1 GPS" },
Packit 01d647
        {    0x12ed0, "Optio S1" },
Packit 01d647
        {    0x12ee4, "Q" },
Packit 01d647
        {    0x12ef8, "K-01" },
Packit 01d647
        {    0x12f0c, "Optio RZ18" },
Packit 01d647
        {    0x12f16, "Optio VS20" },
Packit 01d647
        {    0x12f2a, "Optio WG-2 GPS" },
Packit 01d647
        {    0x12f48, "Optio LS465" },
Packit 01d647
        {    0x12f52, "K-30" },
Packit 01d647
        {    0x12f5c, "X-5" },
Packit 01d647
        {    0x12f66, "Q10" },
Packit 01d647
        {    0x12f70, "K-5 II" },
Packit 01d647
        {    0x12f71, "K-5 II s" },
Packit 01d647
        {    0x12f7a, "Q7" },
Packit 01d647
        {    0x12f84, "MX-1" },
Packit 01d647
        {    0x12f8e, "WG-3 GPS" },
Packit 01d647
        {    0x12f98, "WG-3" },
Packit 01d647
        {    0x12fa2, "WG-10" },
Packit 01d647
        {    0x12fb6, "K-50" },
Packit 01d647
        {    0x12fc0, "K-3" },
Packit 01d647
        {    0x12fca, "K-500" },
Packit 01d647
        {    0x12fde, "WG-4 GPS" },
Packit 01d647
        {    0x12fe8, "WG-4" },
Packit 01d647
        {    0x13006, "WG-20" },
Packit 01d647
        {    0x13010, "645Z" },
Packit 01d647
        {    0x1301a, "K-S1" },
Packit 01d647
        {    0x13024, "K-S2" },
Packit 01d647
        {    0x1302e, "Q-S1" },
Packit 01d647
        {    0x13056, "WG-30" },
Packit 01d647
        {    0x1307e, "WG-30W" },
Packit 01d647
        {    0x13088, "WG-5 GPS" },
Packit 01d647
        {    0x13092, "K-1" },
Packit 01d647
        {    0x1309c, "K-3 II" },
Packit 01d647
        {    0x131f0, "WG-M2" },
Packit 01d647
        {    0x13222, "K-70" },
Packit 01d647
        {    0x1322c, "KP" },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Quality, tag 0x0008
Packit 01d647
    extern const TagDetails pentaxQuality[] = {
Packit 01d647
        {   0, N_("Good") },
Packit 01d647
        {   1, N_("Better") },
Packit 01d647
        {   2, N_("Best") },
Packit 01d647
        {   3, N_("TIFF") },
Packit 01d647
        {   4, N_("RAW") },
Packit 01d647
        {   5, N_("Premium") },
Packit 01d647
        {   65535, N_("n/a") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Size, tag 0x0009
Packit 01d647
    extern const TagDetails pentaxSize[] = {
Packit 01d647
        {    0, "640x480" },
Packit 01d647
        {    1, N_("Full") },
Packit 01d647
        {    2, "1024x768" },
Packit 01d647
        {    3, "1280x960" },
Packit 01d647
        {    4, "1600x1200" },
Packit 01d647
        {    5, "2048x1536" },
Packit 01d647
        {    8, N_("2560x1920 or 2304x1728") },
Packit 01d647
        {    9, "3072x2304" },
Packit 01d647
        {    10, "3264x2448" },
Packit 01d647
        {    19, "320x240" },
Packit 01d647
        {    20, "2288x1712" },
Packit 01d647
        {    21, "2592x1944" },
Packit 01d647
        {    22, N_("2304x1728 or 2592x1944") },
Packit 01d647
        {    23, "3056x2296" },
Packit 01d647
        {    25, N_("2816x2212 or 2816x2112") },
Packit 01d647
        {    27, "3648x2736" },
Packit 01d647
        {    29, "4000x3000" },
Packit 01d647
        {    30, "4288x3216" },
Packit 01d647
        {    31, "4608x3456" },
Packit 01d647
        {    129, "1920x1080" },
Packit 01d647
        {    135, "4608x2592" },
Packit 01d647
        {    257, "3216x3216" },
Packit 01d647
// not sure what to do with these values:
Packit 01d647
//    '0 0' = 2304x1728
Packit 01d647
//    '4 0' = 1600x1200
Packit 01d647
//    '5 0' = 2048x1536
Packit 01d647
//    '8 0' = 2560x1920
Packit 01d647
//    '32 2' = 960x640
Packit 01d647
//    '33 2' = 1152x768
Packit 01d647
//    '34 2' = 1536x1024
Packit 01d647
//    '35 1' = 2400x1600
Packit 01d647
//    '36 0' = 3008x2008 or 3040x2024
Packit 01d647
//    '37 0' = 3008x2000
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Flash, tag 0x000c
Packit 01d647
    extern const TagDetails pentaxFlash[] = {
Packit 01d647
        {    0x000, N_("Auto, Did not fire") },
Packit 01d647
        {    0x001, N_("Off, Did not fire") },
Packit 01d647
        {    0x002, N_("Off, Did not fire") },
Packit 01d647
        {    0x003, N_("Auto, Did not fire, Red-eye reduction") },
Packit 01d647
        {    0x005, N_("On. Did not fire. Wireless (Master)") },
Packit 01d647
        {    0x100, N_("Auto, Fired") },
Packit 01d647
        {    0x102, N_("On, Fired") },
Packit 01d647
        {    0x103, N_("Auto, Fired, Red-eye reduction") },
Packit 01d647
        {    0x104, N_("On, Red-eye reduction") },
Packit 01d647
        {    0x105, N_("On, Wireless (Master)") },
Packit 01d647
        {    0x106, N_("On, Wireless (Control)") },
Packit 01d647
        {    0x108, N_("On, Soft") },
Packit 01d647
        {    0x109, N_("On, Slow-sync") },
Packit 01d647
        {    0x10a, N_("On, Slow-sync, Red-eye reduction") },
Packit 01d647
        {    0x10b, N_("On, Trailing-curtain Sync") },
Packit 01d647
// exiftool recognises 2 values, the values here correpond with Value 0
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Focus, tag 0x000d
Packit 01d647
    extern const TagDetails pentaxFocus[] = {
Packit 01d647
        {    0, N_("Normal") },
Packit 01d647
        {    1, N_("Macro") },
Packit 01d647
        {    2, N_("Infinity") },
Packit 01d647
        {    3, N_("Manual") },
Packit 01d647
        {    4, N_("Super Macro") },
Packit 01d647
        {    5, N_("Pan Focus") },
Packit 01d647
        {    16, N_("AF-S") },
Packit 01d647
        {    17, N_("AF-C") },
Packit 01d647
        {    18, N_("AF-A") },
Packit 01d647
        {    32, N_("Contrast-detect") },
Packit 01d647
        {    33, N_("Tracking Contrast-detect") },
Packit 01d647
        {    288, N_("Face Detect") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! AFPoint, tag 0x000e
Packit 01d647
    extern const TagDetails pentaxAFPoint[] = {
Packit 01d647
        {    0xffff, N_("Auto") },
Packit 01d647
        {    0xfffe, N_("Fixed Center") },
Packit 01d647
        {    0xfffd, N_("Automatic Tracking AF") },
Packit 01d647
        {    0xfffc, N_("Face Recognition AF") },
Packit 01d647
        {    0xfffb, N_("AF Select") },
Packit 01d647
        {    0, N_("None") },
Packit 01d647
        {    1, N_("Upper-left") },
Packit 01d647
        {    2, N_("Top") },
Packit 01d647
        {    3, N_("Upper-right") },
Packit 01d647
        {    4, N_("Left") },
Packit 01d647
        {    5, N_("Mid-left") },
Packit 01d647
        {    6, N_("Center") },
Packit 01d647
        {    7, N_("Mid-right") },
Packit 01d647
        {    8, N_("Right") },
Packit 01d647
        {    9, N_("Lower-left") },
Packit 01d647
        {    10, N_("Bottom") },
Packit 01d647
        {    11, N_("Lower-right") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! AFPointInFocus, tag 0x000f
Packit 01d647
    extern const TagDetails pentaxAFPointFocus[] = {
Packit 01d647
        {    0xffff, N_("None") },
Packit 01d647
        {    0, N_("Fixed Center or multiple") },
Packit 01d647
        {    1, N_("Top-left") },
Packit 01d647
        {    2, N_("Top-center") },
Packit 01d647
        {    3, N_("Top-right") },
Packit 01d647
        {    4, N_("Left") },
Packit 01d647
        {    5, N_("Center") },
Packit 01d647
        {    6, N_("Right") },
Packit 01d647
        {    7, N_("Bottom-left") },
Packit 01d647
        {    8, N_("Bottom-center") },
Packit 01d647
        {    9, N_("Bottom-right") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! ISO, tag 0x0014
Packit 01d647
    extern const TagDetails pentaxISO[] = {
Packit 01d647
        {    3, "50" },
Packit 01d647
        {    4, "64" },
Packit 01d647
        {    5, "80" },
Packit 01d647
        {    6, "100" },
Packit 01d647
        {    7, "125" },
Packit 01d647
        {    8, "160" },
Packit 01d647
        {    9, "200" },
Packit 01d647
        {    10, "250" },
Packit 01d647
        {    11, "320" },
Packit 01d647
        {    12, "400" },
Packit 01d647
        {    13, "500" },
Packit 01d647
        {    14, "640" },
Packit 01d647
        {    15, "800" },
Packit 01d647
        {    16, "1000" },
Packit 01d647
        {    17, "1250" },
Packit 01d647
        {    18, "1600" },
Packit 01d647
        {    19, "2000" },
Packit 01d647
        {    20, "2500" },
Packit 01d647
        {    21, "3200" },
Packit 01d647
        {    22, "4000" },
Packit 01d647
        {    23, "5000" },
Packit 01d647
        {    24, "6400" },
Packit 01d647
        {    25, "8000" },
Packit 01d647
        {    26, "10000" },
Packit 01d647
        {    27, "12800" },
Packit 01d647
        {    28, "16000" },
Packit 01d647
        {    29, "20000" },
Packit 01d647
        {    30, "25600" },
Packit 01d647
        {    31, "32000" },
Packit 01d647
        {    32, "40000" },
Packit 01d647
        {    33, "51200" },
Packit 01d647
        {    34, "64000" },
Packit 01d647
        {    35, "80000" },
Packit 01d647
        {    36, "102400" },
Packit 01d647
        {    37, "128000" },
Packit 01d647
        {    38, "160000" },
Packit 01d647
        {    39, "204800" },
Packit 01d647
        {    40, "256000" },
Packit 01d647
        {    41, "320000" },
Packit 01d647
        {    42, "409600" },
Packit 01d647
        {    43, "512000" },
Packit 01d647
        {    44, "640000" },
Packit 01d647
        {    45, "819200" },
Packit 01d647
        {    50, "50" },
Packit 01d647
        {    100, "100" },
Packit 01d647
        {    200, "200" },
Packit 01d647
//        {    268, "200" },
Packit 01d647
        {    400, "400" },
Packit 01d647
        {    800, "800" },
Packit 01d647
        {    1600, "1600" },
Packit 01d647
        {    3200, "3200" },
Packit 01d647
        {    258, "50" },
Packit 01d647
        {    259, "70" },
Packit 01d647
        {    260, "100" },
Packit 01d647
        {    261, "140" },
Packit 01d647
        {    262, "200" },
Packit 01d647
        {    263, "280" },
Packit 01d647
        {    264, "400" },
Packit 01d647
        {    265, "560" },
Packit 01d647
        {    266, "800" },
Packit 01d647
        {    267, "1100" },
Packit 01d647
        {    268, "1600" },
Packit 01d647
        {    269, "2200" },
Packit 01d647
        {    270, "3200" },
Packit 01d647
        {    271, "4500" },
Packit 01d647
        {    272, "6400" },
Packit 01d647
        {    273, "9000" },
Packit 01d647
        {    274, "12800" },
Packit 01d647
        {    275, "18000" },
Packit 01d647
        {    276, "25600" },
Packit 01d647
        {    277, "36000" },
Packit 01d647
        {    278, "51200" },
Packit 01d647
        {    279, "72000" },
Packit 01d647
        {    280, "102400" },
Packit 01d647
        {    281, "144000" },
Packit 01d647
        {    282, "204800" },
Packit 01d647
        {    283, "288000" },
Packit 01d647
        {    284, "409600" },
Packit 01d647
        {    285, "576000" },
Packit 01d647
        {    286, "819200" },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Generic for Off/On switches
Packit 01d647
    extern const TagDetails pentaxOffOn[] = {
Packit 01d647
        {    0, N_("Off") },
Packit 01d647
        {    1, N_("On") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Generic for Yes/No switches
Packit 01d647
    extern const TagDetails pentaxYesNo[] = {
Packit 01d647
        {    0, N_("No") },
Packit 01d647
        {    1, N_("Yes") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! MeteringMode, tag 0x0017
Packit 01d647
    extern const TagDetails pentaxMeteringMode[] = {
Packit 01d647
        {    0, N_("Multi Segment") },
Packit 01d647
        {    1, N_("Center Weighted") },
Packit 01d647
        {    2, N_("Spot") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! WhiteBalance, tag 0x0019
Packit 01d647
    extern const TagDetails pentaxWhiteBalance[] = {
Packit 01d647
        {    0, N_("Auto") },
Packit 01d647
        {    1, N_("Daylight") },
Packit 01d647
        {    2, N_("Shade") },
Packit 01d647
        {    3, N_("Fluorescent") },
Packit 01d647
        {    4, N_("Tungsten") },
Packit 01d647
        {    5, N_("Manual") },
Packit 01d647
        {    6, N_("DaylightFluorescent") },
Packit 01d647
        {    7, N_("DaywhiteFluorescent") },
Packit 01d647
        {    8, N_("WhiteFluorescent") },
Packit 01d647
        {    9, N_("Flash") },
Packit 01d647
        {    10, N_("Cloudy") },
Packit 01d647
        {    15, N_("Color Temperature Enhancement") },
Packit 01d647
        {    17, N_("Kelvin") },
Packit 01d647
        {    65534, N_("Unknown") },
Packit 01d647
        {    65535, N_("User Selected") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! WhiteBalance, tag 0x001a
Packit 01d647
    extern const TagDetails pentaxWhiteBalanceMode[] = {
Packit 01d647
        {    1, N_("Auto (Daylight)") },
Packit 01d647
        {    2, N_("Auto (Shade)") },
Packit 01d647
        {    3, N_("Auto (Flash)") },
Packit 01d647
        {    4, N_("Auto (Tungsten)") },
Packit 01d647
        {    6, N_("Auto (DaylightFluorescent)") },
Packit 01d647
        {    7, N_("Auto (DaywhiteFluorescent)") },
Packit 01d647
        {    8, N_("Auto (WhiteFluorescent)") },
Packit 01d647
        {    10, N_("Auto (Cloudy)") },
Packit 01d647
        {    0xffff, N_("User-Selected") },
Packit 01d647
        {    0xfffe, N_("Preset (Fireworks?)") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Saturation, tag 0x001f
Packit 01d647
    extern const TagDetails pentaxSaturation[] = {
Packit 01d647
        {     0, N_("Low")       },
Packit 01d647
        {     1, N_("Normal")    },
Packit 01d647
        {     2, N_("High")      },
Packit 01d647
        {     3, N_("Med Low")   },
Packit 01d647
        {     4, N_("Med High")  },
Packit 01d647
        {     5, N_("Very Low")  },
Packit 01d647
        {     6, N_("Very High") },
Packit 01d647
        {     7, N_("-4") },
Packit 01d647
        {     8, N_("+4") },
Packit 01d647
        { 65535, N_("None")      },
Packit 01d647
        { 65535, N_("None")      }              // To silence compiler warning
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Contrast, tag 0x0020
Packit 01d647
    extern const TagDetails pentaxContrast[] = {
Packit 01d647
        {    0, N_("Low") },
Packit 01d647
        {    1, N_("Normal") },
Packit 01d647
        {    2, N_("High") },
Packit 01d647
        {    3, N_("Med Low") },
Packit 01d647
        {    4, N_("Med High") },
Packit 01d647
        {    5, N_("Very Low") },
Packit 01d647
        {    6, N_("Very High") },
Packit 01d647
        {    7, N_("-4") },
Packit 01d647
        {    8, N_("+4") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Sharpness, tag 0x0021
Packit 01d647
    extern const TagDetails pentaxSharpness[] = {
Packit 01d647
        {    0, N_("Soft") },
Packit 01d647
        {    1, N_("Normal") },
Packit 01d647
        {    2, N_("Hard") },
Packit 01d647
        {    3, N_("Med Soft") },
Packit 01d647
        {    4, N_("Med Hard") },
Packit 01d647
        {    5, N_("Very Soft") },
Packit 01d647
        {    6, N_("Very Hard") },
Packit 01d647
        {    7, N_("-4") },
Packit 01d647
        {    8, N_("+4") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Location, tag 0x0022
Packit 01d647
    extern const TagDetails pentaxLocation[] = {
Packit 01d647
        {    0, N_("Home town") },
Packit 01d647
        {    1, N_("Destination") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! City names, tags 0x0023 and 0x0024
Packit 01d647
    extern const TagDetails pentaxCities[] = {
Packit 01d647
        {    0, N_("Pago Pago") },
Packit 01d647
        {    1, N_("Honolulu") },
Packit 01d647
        {    2, N_("Anchorage") },
Packit 01d647
        {    3, N_("Vancouver") },
Packit 01d647
        {    4, N_("San Fransisco") },
Packit 01d647
        {    5, N_("Los Angeles") },
Packit 01d647
        {    6, N_("Calgary") },
Packit 01d647
        {    7, N_("Denver") },
Packit 01d647
        {    8, N_("Mexico City") },
Packit 01d647
        {    9, N_("Chicago") },
Packit 01d647
        {    10, N_("Miami") },
Packit 01d647
        {    11, N_("Toronto") },
Packit 01d647
        {    12, N_("New York") },
Packit 01d647
        {    13, N_("Santiago") },
Packit 01d647
        {    14, N_("Caracus") },
Packit 01d647
        {    15, N_("Halifax") },
Packit 01d647
        {    16, N_("Buenos Aires") },
Packit 01d647
        {    17, N_("Sao Paulo") },
Packit 01d647
        {    18, N_("Rio de Janeiro") },
Packit 01d647
        {    19, N_("Madrid") },
Packit 01d647
        {    20, N_("London") },
Packit 01d647
        {    21, N_("Paris") },
Packit 01d647
        {    22, N_("Milan") },
Packit 01d647
        {    23, N_("Rome") },
Packit 01d647
        {    24, N_("Berlin") },
Packit 01d647
        {    25, N_("Johannesburg") },
Packit 01d647
        {    26, N_("Istanbul") },
Packit 01d647
        {    27, N_("Cairo") },
Packit 01d647
        {    28, N_("Jerusalem") },
Packit 01d647
        {    29, N_("Moscow") },
Packit 01d647
        {    30, N_("Jeddah") },
Packit 01d647
        {    31, N_("Tehran") },
Packit 01d647
        {    32, N_("Dubai") },
Packit 01d647
        {    33, N_("Karachi") },
Packit 01d647
        {    34, N_("Kabul") },
Packit 01d647
        {    35, N_("Male") },
Packit 01d647
        {    36, N_("Delhi") },
Packit 01d647
        {    37, N_("Colombo") },
Packit 01d647
        {    38, N_("Kathmandu") },
Packit 01d647
        {    39, N_("Dacca") },
Packit 01d647
        {    40, N_("Yangon") },
Packit 01d647
        {    41, N_("Bangkok") },
Packit 01d647
        {    42, N_("Kuala Lumpur") },
Packit 01d647
        {    43, N_("Vientiane") },
Packit 01d647
        {    44, N_("Singapore") },
Packit 01d647
        {    45, N_("Phnom Penh") },
Packit 01d647
        {    46, N_("Ho Chi Minh") },
Packit 01d647
        {    47, N_("Jakarta") },
Packit 01d647
        {    48, N_("Hong Kong") },
Packit 01d647
        {    49, N_("Perth") },
Packit 01d647
        {    50, N_("Beijing") },
Packit 01d647
        {    51, N_("Shanghai") },
Packit 01d647
        {    52, N_("Manila") },
Packit 01d647
        {    53, N_("Taipei") },
Packit 01d647
        {    54, N_("Seoul") },
Packit 01d647
        {    55, N_("Adelaide") },
Packit 01d647
        {    56, N_("Tokyo") },
Packit 01d647
        {    57, N_("Guam") },
Packit 01d647
        {    58, N_("Sydney") },
Packit 01d647
        {    59, N_("Noumea") },
Packit 01d647
        {    60, N_("Wellington") },
Packit 01d647
        {    61, N_("Auckland") },
Packit 01d647
        {    62, N_("Lima") },
Packit 01d647
        {    63, N_("Dakar") },
Packit 01d647
        {    64, N_("Algiers") },
Packit 01d647
        {    65, N_("Helsinki") },
Packit 01d647
        {    66, N_("Athens") },
Packit 01d647
        {    67, N_("Nairobi") },
Packit 01d647
        {    68, N_("Amsterdam") },
Packit 01d647
        {    69, N_("Stockholm") },
Packit 01d647
        {    70, N_("Lisbon") },
Packit 01d647
        {    71, N_("Copenhagen") },
Packit 01d647
        {    72, N_("Warsaw") },
Packit 01d647
        {    73, N_("Prague") },
Packit 01d647
        {    74, N_("Budapest") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! ImageProcessing, combi-tag 0x0032 (4 bytes)
Packit 01d647
    extern const TagDetails pentaxImageProcessing[] = {
Packit 01d647
        { 0x00000000, N_("Unprocessed") },
Packit 01d647
        { 0x00000004, N_("Digital Filter") },
Packit 01d647
        { 0x01000000, N_("Resized") },
Packit 01d647
        { 0x02000000, N_("Cropped") },
Packit 01d647
        { 0x04000000, N_("Color Filter") },
Packit 01d647
        { 0x06000000, N_("Digital Filter 6") },
Packit 01d647
        { 0x10000000, N_("Frame Synthesis?") }
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! PictureMode, combi-tag 0x0033 (3 bytes)
Packit 01d647
    extern const TagDetails pentaxPictureMode[] = {
Packit 01d647
        { 0x000000, N_("Program") },
Packit 01d647
        { 0x000100, N_("Hi-speed Program") },
Packit 01d647
        { 0x000200, N_("DOF Program") },
Packit 01d647
        { 0x000300, N_("MTF Program") },
Packit 01d647
        { 0x000400, N_("Standard") },
Packit 01d647
        { 0x000500, N_("Portrait") },
Packit 01d647
        { 0x000600, N_("Landscape") },
Packit 01d647
        { 0x000700, N_("Macro") },
Packit 01d647
        { 0x000800, N_("Sport") },
Packit 01d647
        { 0x000900, N_("Night Scene Portrait") },
Packit 01d647
        { 0x000a00, N_("No Flash") },
Packit 01d647
        /* SCN modes (menu-selected) */
Packit 01d647
        { 0x000b00, N_("Night Scene") },
Packit 01d647
        { 0x000c00, N_("Surf & Snow") },
Packit 01d647
        { 0x000d00, N_("Text") },
Packit 01d647
        { 0x000e00, N_("Sunset") },
Packit 01d647
        { 0x000f00, N_("Kids") },
Packit 01d647
        { 0x001000, N_("Pet") },
Packit 01d647
        { 0x001100, N_("Candlelight") },
Packit 01d647
        { 0x001200, N_("Museum") },
Packit 01d647
        { 0x001300, N_("Food") },
Packit 01d647
        { 0x001400, N_("Stage Lighting") },
Packit 01d647
        { 0x001500, N_("Night Snap") },
Packit 01d647
        { 0x001700, N_("Blue Sky") },
Packit 01d647
        { 0x001800, N_("Sunset") },
Packit 01d647
        { 0x001a00, N_("Night Scene HDR") },
Packit 01d647
        { 0x001b00, N_("HDR") },
Packit 01d647
        { 0x001c00, N_("Quick Macro") },
Packit 01d647
        { 0x001d00, N_("Forest") },
Packit 01d647
        { 0x001e00, N_("Backlight Silhouette") },
Packit 01d647
        /* AUTO PICT modes (auto-selected) */
Packit 01d647
        { 0x010400, N_("Auto PICT (Standard)") },
Packit 01d647
        { 0x010500, N_("Auto PICT (Portrait)") },
Packit 01d647
        { 0x010600, N_("Auto PICT (Landscape)") },
Packit 01d647
        { 0x010700, N_("Auto PICT (Macro)") },
Packit 01d647
        { 0x010800, N_("Auto PICT (Sport)") },
Packit 01d647
        /* Manual dial modes */
Packit 01d647
        { 0x020000, N_("Program AE") },
Packit 01d647
        { 0x030000, N_("Green Mode") },
Packit 01d647
        { 0x040000, N_("Shutter Speed Priority") },
Packit 01d647
        { 0x050000, N_("Aperture Priority") },
Packit 01d647
        { 0x080000, N_("Manual") },
Packit 01d647
        { 0x090000, N_("Bulb") },
Packit 01d647
        /* *istD modes */
Packit 01d647
        { 0x020001, N_("Program AE") },
Packit 01d647
        { 0x020101, N_("Hi-speed Program") },
Packit 01d647
        { 0x020201, N_("DOF Program") },
Packit 01d647
        { 0x020301, N_("MTF Program") },
Packit 01d647
        { 0x021601, N_("Shallow DOF") },
Packit 01d647
        { 0x030001, N_("Green Mode") },
Packit 01d647
        { 0x040001, N_("Shutter Speed Priority") },
Packit 01d647
        { 0x050001, N_("Aperture Priority") },
Packit 01d647
        { 0x060001, N_("Program Tv Shift") },
Packit 01d647
        { 0x070001, N_("Program Av Shift") },
Packit 01d647
        { 0x080001, N_("Manual") },
Packit 01d647
        { 0x090001, N_("Bulb") },
Packit 01d647
        { 0x0a0001, N_("Aperture Priority (Off-Auto-Aperture)") },
Packit 01d647
        { 0x0b0001, N_("Manual (Off-Auto-Aperture)") },
Packit 01d647
        { 0x0c0001, N_("Bulb (Off-Auto-Aperture)") },
Packit 01d647
        /* K10D modes */
Packit 01d647
        { 0x060000, N_("Shutter Priority") },
Packit 01d647
        { 0x0d0000, N_("Shutter & Aperture Priority AE") },
Packit 01d647
        { 0x0d0001, N_("Shutter & Aperture Priority AE (1)") },
Packit 01d647
        { 0x0f0000, N_("Sensitivity Priority AE") },
Packit 01d647
        { 0x0f0001, N_("Sensitivity Priority AE (1)") },
Packit 01d647
        { 0x100000, N_("Flash X-Sync Speed AE") },
Packit 01d647
        { 0x100001, N_("Flash X-Sync Speed AE (1)") },
Packit 01d647
        { 0x120001, N_("Auto Program (Normal)") },
Packit 01d647
        { 0x120101, N_("Auto Program (Hi-Speed)") },
Packit 01d647
        { 0x120201, N_("Auto Program (DOF)") },
Packit 01d647
        { 0x120301, N_("Auto Program (MTF)") },
Packit 01d647
        { 0x121601, N_("Auto Program (Shallow DOF)") },
Packit 01d647
        { 0x141601, N_("Blur control") },
Packit 01d647
        /* other modes */
Packit 01d647
        { 0x000001, N_("Program") },
Packit 01d647
        { 0xfe0000, N_("Video (30 fps)") },
Packit 01d647
        { 0xff0004, N_("Video (24 fps)") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! DriveMode, combi-tag 0x0034 (4 bytes)
Packit 01d647
    extern const TagDetails pentaxDriveMode[] = {
Packit 01d647
        { 0x00000000, N_("Single-frame") },
Packit 01d647
        { 0x01000000, N_("Continuous") },
Packit 01d647
        { 0x02000000, N_("Continuous (Hi)") },
Packit 01d647
        { 0x03000000, N_("Burst") },
Packit 01d647
        { 0xff000000, N_("Video") },
Packit 01d647
        { 0x00100000, N_("Single-frame") }, /* on 645D */
Packit 01d647
        { 0x00010000, N_("Self-timer (12 sec)") },
Packit 01d647
        { 0x00020000, N_("Self-timer (2 sec)") },
Packit 01d647
        { 0x000f0000, N_("Video") },
Packit 01d647
        { 0x00100000, N_("Mirror Lock-up") },
Packit 01d647
        { 0x00000100, N_("Remote Control (3 sec)") },
Packit 01d647
        { 0x00000200, N_("Remote Control") },
Packit 01d647
        { 0x00000400, N_("Remote Continuous Shooting") },
Packit 01d647
        { 0x00000001, N_("Multiple Exposure") },
Packit 01d647
        { 0x00000010, N_("HDR") },
Packit 01d647
        { 0x00000020, N_("HDR Strong 1") },
Packit 01d647
        { 0x00000030, N_("HDR Strong 2") },
Packit 01d647
        { 0x00000040, N_("HDR Strong 3") },
Packit 01d647
        { 0x000000e0, N_("HDR Auto") },
Packit 01d647
        { 0x000000ff, N_("Video") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! ColorSpace, tag 0x0037
Packit 01d647
    extern const TagDetails pentaxColorSpace[] = {
Packit 01d647
        {    0, N_("sRGB") },
Packit 01d647
        {    1, N_("Adobe RGB") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! LensType, combi-tag 0x003f (2 unsigned long)
Packit 01d647
    extern const TagDetails pentaxLensType[] = {
Packit 01d647
        { 0x0000, N_("M-42 or No Lens") },
Packit 01d647
        { 0x0100, N_("K or M Lens") },
Packit 01d647
        { 0x0200, N_("A Series Lens") },
Packit 01d647
        { 0x0300, "Sigma Lens" },
Packit 01d647
        { 0x0311, "smc PENTAX-FA SOFT 85mm F2.8" },
Packit 01d647
        { 0x0312, "smc PENTAX-F 1.7X AF ADAPTER" },
Packit 01d647
        { 0x0313, "smc PENTAX-F 24-50mm F4" },
Packit 01d647
        { 0x0314, "smc PENTAX-F 35-80mm F4-5.6" },
Packit 01d647
        { 0x0315, "smc PENTAX-F 80-200mm F4.7-5.6" },
Packit 01d647
        { 0x0316, "smc PENTAX-F FISH-EYE 17-28mm F3.5-4.5" },
Packit 01d647
        { 0x0317, "smc PENTAX-F 100-300mm F4.5-5.6" },                   //0
Packit 01d647
        { 0x0317, "Sigma AF 28-300mm F3.5-6.3 DG IF Macro" },            //1
Packit 01d647
        { 0x0317, "Tokina 80-200mm F2.8 ATX-Pro" },                      //2
Packit 01d647
        { 0x0318, "smc PENTAX-F 35-135mm F3.5-4.5" },
Packit 01d647
        { 0x0319, "smc PENTAX-F 35-105mm F4-5.6" },                      //0
Packit 01d647
        { 0x0319, "Sigma AF 28-300mm F3.5-5.6 DL IF" },                  //1
Packit 01d647
        { 0x0319, "Sigma 55-200mm F4-5.6 DC" },                          //2
Packit 01d647
        { 0x0319, "Sigma AF 28-300mm F3.5-5.6 DL IF" },                  //3
Packit 01d647
        { 0x0319, "Sigma AF 28-300mm F3.5-6.3 DG IF Macro" },            //4
Packit 01d647
        { 0x0319, "Tokina 80-200mm F2.8 ATX-Pro" },                      //5
Packit 01d647
        { 0x0319, "Sigma Zoom 70-210mm F4-5.6 UC-II" },                  //6
Packit 01d647
        { 0x031a, "smc PENTAX-F* 250-600mm F5.6 ED[IF]" },
Packit 01d647
        { 0x031b, "smc PENTAX-F 28-80mm F3.5-4.5" },                     //0
Packit 01d647
        { 0x031b, "Tokina AT-X Pro AF 28-70mm F2.6-2.8" },               //1
Packit 01d647
        { 0x031c, "smc PENTAX-F 35-70mm F3.5-4.5" },                     //0
Packit 01d647
        { 0x031c, "Tokina 19-35mm F3.5-4.5 AF" },                        //1
Packit 01d647
        { 0x031c, "Tokina AT-X AF 400mm F5.6" },                         //2
Packit 01d647
        { 0x031d, "PENTAX-F 28-80mm F3.5-4.5" },                         //0
Packit 01d647
        { 0x031d, "Sigma AF 18-125mm F3.5-5.6 DC" },                     //1
Packit 01d647
        { 0x031d, "Tokina AT-X PRO 28-70mm F2.6-2.8" },                  //2
Packit 01d647
        { 0x031e, "PENTAX-F 70-200mm F4-5.6" },
Packit 01d647
        { 0x031f, "smc PENTAX-F 70-210mm F4-5.6" },                      //0
Packit 01d647
        { 0x031f, "Tokina AF 730 75-300mm F4.5-5.6" },                   //1
Packit 01d647
        { 0x031f, "Takumar-F 70-210mm F4-5.6" },                         //2
Packit 01d647
        { 0x0320, "smc PENTAX-F 50mm F1.4" },
Packit 01d647
        { 0x0321, "smc PENTAX-F 50mm F1.7" },
Packit 01d647
        { 0x0322, "smc PENTAX-F 135mm F2.8 [IF]" },
Packit 01d647
        { 0x0323, "smc PENTAX-F 28mm F2.8" },
Packit 01d647
        { 0x0324, "Sigma 20mm F1.8 EX DG Aspherical RF" },
Packit 01d647
        { 0x0326, "smc PENTAX-F* 300mm F4.5 ED[IF]" },
Packit 01d647
        { 0x0327, "smc PENTAX-F* 600mm F4 ED[IF]" },
Packit 01d647
        { 0x0328, "smc PENTAX-F Macro 100mm F2.8" },
Packit 01d647
        { 0x0329, "smc PENTAX-F Macro 50mm F2.8" },                      //0
Packit 01d647
        { 0x0329, "Sigma 50mm F2.8 Macro" },                             //1
Packit 01d647
        { 0x032a, "Sigma 300mm F2.8 EX DG APO IF" },
Packit 01d647
        { 0x032c, "Tamron 35-90mm F4 AF" },                              //0
Packit 01d647
        { 0x032c, "Sigma AF 10-20mm F4-5.6 EX DC" },                     //1
Packit 01d647
        { 0x032c, "Sigma 12-24mm F4.5-5.6 EX DG" },                      //2
Packit 01d647
        { 0x032c, "Sigma 17-70mm F2.8-4.5 DC Macro" },                   //3
Packit 01d647
        { 0x032c, "Sigma 18-50mm F3.5-5.6 DC" },                         //4
Packit 01d647
        { 0x032c, "Sigma 17-35mm F2.8-4 EX DG" },                        //5
Packit 01d647
        { 0x032c, "Sigma AF 18-35mm F3.5-4.5 Aspherical" },              //6
Packit 01d647
        { 0x032e, "Sigma or Samsung Lens" },                             //0
Packit 01d647
        { 0x032e, "Sigma APO 70-200mm F2.8 EX" },                        //1
Packit 01d647
        { 0x032e, "Sigma EX APO 100-300mm F4 IF" },                      //2
Packit 01d647
        { 0x032e, "Samsung/Schneider D-XENON 50-200mm F4-5.6 ED" },      //3
Packit 01d647
        { 0x0332, "smc PENTAX-FA 28-70mm F4 AL" },
Packit 01d647
        { 0x0333, "Sigma 28mm F1.8 EX DG Aspherical Macro" },
Packit 01d647
        { 0x0334, "smc PENTAX-FA 28-200mm F3.8-5.6 AL[IF]" },            //0
Packit 01d647
        { 0x0334, "Tamron AF LD 28-200mm F3.8-5.6 [IF] Aspherical (171D)" },//1
Packit 01d647
        { 0x0335, "smc PENTAX-FA 28-80mm F3.5-5.6 AL" },
Packit 01d647
        { 0x03f7, "smc PENTAX-DA FISH-EYE 10-17mm F3.5-4.5 ED[IF]" },
Packit 01d647
        { 0x03f8, "smc PENTAX-DA 12-24mm F4 ED AL[IF]" },
Packit 01d647
        { 0x03fa, "smc PENTAX-DA 50-200mm F4-5.6 ED" },
Packit 01d647
        { 0x03fb, "smc PENTAX-DA 40mm F2.8 Limited" },
Packit 01d647
        { 0x03fc, "smc PENTAX-DA 18-55mm F3.5-5.6 AL" },
Packit 01d647
        { 0x03fd, "smc PENTAX-DA 14mm F2.8 ED[IF]" },
Packit 01d647
        { 0x03fe, "smc PENTAX-DA 16-45mm F4 ED AL" },
Packit 01d647
        { 0x03ff, "Sigma Lens" },                                        //0
Packit 01d647
        { 0x03ff, "Sigma 18-200mm F3.5-6.3 DC" },                        //1
Packit 01d647
        { 0x03ff, "Sigma DL-II 35-80mm F4-5.6" },                        //2
Packit 01d647
        { 0x03ff, "Sigma DL Zoom 75-300mm F4-5.6" },                     //3
Packit 01d647
        { 0x03ff, "Sigma DF EX Aspherical 28-70mm F2.8" },               //4
Packit 01d647
        { 0x03ff, "Sigma AF Tele 400mm F5.6 Multi-coated" },             //5
Packit 01d647
        { 0x03ff, "Sigma 24-60mm F2.8 EX DG" },                          //6
Packit 01d647
        { 0x03ff, "Sigma 70-300mm F4-5.6 Macro" },                       //7
Packit 01d647
        { 0x03ff, "Sigma 55-200mm F4-5.6 DC" },                          //8
Packit 01d647
        { 0x03ff, "Sigma 18-50mm F2.8 EX DC" },                          //9
Packit 01d647
        { 0x03ff, "Sigma 18-50mm F2.8 EX DC Macro" },                    //10
Packit 01d647
        { 0x0401, "smc PENTAX-FA SOFT 28mm F2.8" },
Packit 01d647
        { 0x0402, "smc PENTAX-FA 80-320mm F4.5-5.6" },
Packit 01d647
        { 0x0403, "smc PENTAX-FA 43mm F1.9 Limited" },
Packit 01d647
        { 0x0406, "smc PENTAX-FA 35-80mm F4-5.6" },
Packit Service fb147c
        { 0x0408, "Irix 150mm F/2.8 Macro" },
Packit Service fb147c
        { 0x0409, "Irix 11mm F/4" },
Packit Service fb147c
        { 0x040a, "Irix 15mm F/2.4" },
Packit 01d647
        { 0x040c, "smc PENTAX-FA 50mm F1.4" },
Packit 01d647
        { 0x040f, "smc PENTAX-FA 28-105mm F4-5.6 [IF]" },
Packit 01d647
        { 0x0410, "Tamron AF 80-210mm F4-5.6 (178D)" },
Packit 01d647
        { 0x0413, "Tamron SP AF 90mm F2.8 (172E)" },
Packit 01d647
        { 0x0414, "smc PENTAX-FA 28-80mm F3.5-5.6" },
Packit 01d647
        { 0x0415, "Cosina AF 100-300mm F5.6-6.7" },
Packit 01d647
        { 0x0416, "Tokina 28-80mm F3.5-5.6" },
Packit 01d647
        { 0x0417, "smc PENTAX-FA 20-35mm F4 AL" },
Packit 01d647
        { 0x0418, "smc PENTAX-FA 77mm F1.8 Limited" },
Packit 01d647
        { 0x0419, "Tamron SP AF 14mm F2.8" },
Packit 01d647
        { 0x041a, "smc PENTAX-FA Macro 100mm F3.5" },                    //0
Packit 01d647
        { 0x041a, "Cosina 100mm F3.5 Macro" },                           //1
Packit 01d647
        { 0x041b, "Tamron AF28-300mm F/3.5-6.3 LD Aspherical[IF] Macro (185D/285D)" },
Packit 01d647
        { 0x041c, "smc PENTAX-FA 35mm F2 AL" },
Packit 01d647
        { 0x041d, "Tamron AF 28-200mm F/3.8-5.6 LD Super II Macro (371D)" },
Packit 01d647
        { 0x0422, "smc PENTAX-FA 24-90mm F3.5-4.5 AL[IF]" },
Packit 01d647
        { 0x0423, "smc PENTAX-FA 100-300mm F4.7-5.8" },
Packit 01d647
        { 0x0424, "Tamron AF 70-300mm F/4-5.6 LD Macro 1:2 (572D/A17)" },
Packit 01d647
        { 0x0425, "Tamron SP AF 24-135mm F3.5-5.6 AD AL (190D)" },
Packit 01d647
        { 0x0426, "smc PENTAX-FA 28-105mm F3.2-4.5 AL[IF]" },
Packit 01d647
        { 0x0427, "smc PENTAX-FA 31mm F1.8AL Limited" },
Packit 01d647
        { 0x0429, "Tamron AF 28-200mm Super Zoom F3.8-5.6 Aspherical XR [IF] Macro (A03)" },
Packit 01d647
        { 0x042b, "smc PENTAX-FA 28-90mm F3.5-5.6" },
Packit 01d647
        { 0x042c, "smc PENTAX-FA J 75-300mm F4.5-5.8 AL" },
Packit 01d647
        { 0x042d, "Tamron Lens" },                                       //0
Packit 01d647
        { 0x042d, "Tamron 28-300mm F3.5-6.3 Ultra zoom XR" },            //1
Packit 01d647
        { 0x042d, "Tamron AF 28-300mm F3.5-6.3 XR Di LD Aspherical [IF] Macro" },//2
Packit 01d647
        { 0x042e, "smc PENTAX-FA J 28-80mm F3.5-5.6 AL" },
Packit 01d647
        { 0x042f, "smc PENTAX-FA J 18-35mm F4-5.6 AL" },
Packit 01d647
        { 0x0431, "Tamron SP AF 28-75mm F2.8 XR Di LD Aspherical [IF] Macro (A09)" },
Packit 01d647
        { 0x0433, "smc PENTAX-D FA 50mm F2.8 Macro" },
Packit 01d647
        { 0x0434, "smc PENTAX-D FA 100mm F2.8 Macro" },
Packit 01d647
        { 0x0437, "Samsung/Schneider D-XENOGON 35mm F2" },
Packit 01d647
        { 0x0438, "Samsung/Schneider D-XENON 100mm F2.8 Macro" },
Packit 01d647
        { 0x044b, "Tamron SP AF 70-200mm F2.8 Di LD [IF] Macro (A001)" },
Packit 01d647
        { 0x04d6, "smc PENTAX-DA 35mm F2.4 AL" },
Packit 01d647
        { 0x04e5, "smc PENTAX-DA 18-55mm F3.5-5.6 AL II" },
Packit 01d647
        { 0x04e6, "Tamron SP AF 17-50mm F2.8 XR Di II" },
Packit 01d647
        { 0x04e7, "smc PENTAX-DA 18-250mm F3.5-6.3 ED AL [IF]" },
Packit 01d647
        { 0x04ed, "Samsung/Schneider D-XENOGON 10-17mm F3.5-4.5" },
Packit 01d647
        { 0x04ef, "Samsung/Schneider D-XENON 12-24mm F4 ED AL [IF]" },
Packit 01d647
        { 0x04f2, "smc PENTAX-DA* 16-50mm F2.8 ED AL [IF] SDM (SDM unused)" },
Packit 01d647
        { 0x04f3, "smc PENTAX-DA 70mm F2.4 Limited" },
Packit 01d647
        { 0x04f4, "smc PENTAX-DA 21mm F3.2 AL Limited" },
Packit 01d647
        { 0x04f5, "Samsung/Schneider D-XENON 50-200mm F4-5.6" },
Packit 01d647
        { 0x04f6, "Samsung/Schneider D-XENON 18-55mm F3.5-5.6" },
Packit 01d647
        { 0x04f7, "smc PENTAX-DA FISH-EYE 10-17mm F3.5-4.5 ED [IF]" },
Packit 01d647
        { 0x04f8, "smc PENTAX-DA 12-24mm F4 ED AL [IF]" },
Packit 01d647
        { 0x04f9, "Tamron XR DiII 18-200mm F3.5-6.3 (A14)" },
Packit 01d647
        { 0x04fa, "smc PENTAX-DA 50-200mm F4-5.6 ED" },
Packit 01d647
        { 0x04fb, "smc PENTAX-DA 40mm F2.8 Limited" },
Packit 01d647
        { 0x04fc, "smc PENTAX-DA 18-55mm F3.5-5.6 AL" },
Packit 01d647
        { 0x04fd, "smc PENTAX-DA 14mm F2.8 ED[IF]" },
Packit 01d647
        { 0x04fe, "smc PENTAX-DA 16-45mm F4 ED AL" },
Packit 01d647
        { 0x0501, "smc PENTAX-FA* 24mm F2 AL[IF]" },
Packit 01d647
        { 0x0502, "smc PENTAX-FA 28mm F2.8 AL" },
Packit 01d647
        { 0x0503, "smc PENTAX-FA 50mm F1.7" },
Packit 01d647
        { 0x0504, "smc PENTAX-FA 50mm F1.4" },
Packit 01d647
        { 0x0505, "smc PENTAX-FA* 600mm F4 ED[IF]" },
Packit 01d647
        { 0x0506, "smc PENTAX-FA* 300mm F4.5 ED[IF]" },
Packit 01d647
        { 0x0507, "smc PENTAX-FA 135mm F2.8 [IF]" },
Packit 01d647
        { 0x0508, "smc PENTAX-FA Macro 50mm F2.8" },
Packit 01d647
        { 0x0509, "smc PENTAX-FA Macro 100mm F2.8" },
Packit 01d647
        { 0x050a, "smc PENTAX-FA* 85mm F1.4 [IF]" },
Packit 01d647
        { 0x050b, "smc PENTAX-FA* 200mm F2.8 ED[IF]" },
Packit 01d647
        { 0x050c, "smc PENTAX-FA 28-80mm F3.5-4.7" },
Packit 01d647
        { 0x050d, "smc PENTAX-FA 70-200mm F4-5.6" },
Packit 01d647
        { 0x050e, "smc PENTAX-FA* 250-600mm F5.6 ED[IF]" },
Packit 01d647
        { 0x050f, "smc PENTAX-FA 28-105mm F4-5.6" },
Packit 01d647
        { 0x0510, "smc PENTAX-FA 100-300mm F4.5-5.6" },
Packit 01d647
        { 0x0562, "smc PENTAX-FA 100-300mm F4.5-5.6" },
Packit 01d647
        { 0x0601, "smc PENTAX-FA* 85mm F1.4[IF]" },
Packit 01d647
        { 0x0602, "smc PENTAX-FA* 200mm F2.8 ED[IF]" },
Packit 01d647
        { 0x0603, "smc PENTAX-FA* 300mm F2.8 ED[IF]" },
Packit 01d647
        { 0x0604, "smc PENTAX-FA* 28-70mm F2.8 AL" },
Packit 01d647
        { 0x0605, "smc PENTAX-FA* 80-200mm F2.8 ED[IF]" },
Packit 01d647
        { 0x0606, "smc PENTAX-FA* 28-70mm F2.8 AL" },
Packit 01d647
        { 0x0607, "smc PENTAX-FA* 80-200mm F2.8 ED[IF]" },
Packit 01d647
        { 0x0608, "smc PENTAX-FA 28-70mm F4AL" },
Packit 01d647
        { 0x0609, "smc PENTAX-FA 20mm F2.8" },
Packit 01d647
        { 0x060a, "smc PENTAX-FA* 400mm F5.6 ED[IF]" },
Packit 01d647
        { 0x060d, "smc PENTAX-FA* 400mm F5.6 ED[IF]" },
Packit 01d647
        { 0x060e, "smc PENTAX-FA* Macro 200mm F4 ED[IF]" },
Packit 01d647
        { 0x0700, "smc PENTAX-DA 21mm F3.2 AL Limited" },
Packit 01d647
        { 0x073a, "smc PENTAX-D FA Macro 100mm F2.8 WR" },
Packit 01d647
        { 0x074b, "Tamron SP AF 70-200mm F2.8 Di LD [IF] Macro (A001)" },
Packit 01d647
        { 0x07c9, "smc Pentax-DA L 50-200mm F4-5.6 ED WR" },
Packit 01d647
        { 0x07ca, "smc PENTAX-DA L 18-55mm F3.5-5.6 AL WR" },
Packit 01d647
        { 0x07cb, "HD PENTAX-DA 55-300mm F4-5.8 ED WR" },
Packit 01d647
        { 0x07cc, "HD PENTAX-DA 15mm F4 ED AL Limited" },
Packit 01d647
        { 0x07cd, "HD PENTAX-DA 35mm F2.8 Macro Limited" },
Packit 01d647
        { 0x07ce, "HD PENTAX-DA 70mm F2.4 Limited" },
Packit 01d647
        { 0x07cf, "HD PENTAX-DA 21mm F3.2 ED AL Limited" },
Packit 01d647
        { 0x07d0, "HD PENTAX-DA 40mm F2.8 Limited" },
Packit 01d647
        { 0x07d4, "smc PENTAX-DA 50mm F1.8" },
Packit 01d647
        { 0x07d5, "smc PENTAX-DA 40mm F2.8 XS" },
Packit 01d647
        { 0x07d6, "smc PENTAX-DA 35mm F2.4 AL" },
Packit 01d647
        { 0x07d8, "smc PENTAX-DA L 55-300mm F4-5.8 ED" },
Packit 01d647
        { 0x07d9, "smc PENTAX-DA 50-200mm F4-5.6 ED WR" },
Packit 01d647
        { 0x07da, "smc PENTAX-DA 18-55mm F3.5-5.6 AL WR" },
Packit 01d647
        { 0x07dc, "Tamron SP AF 10-24mm F3.5-4.5 Di II LD Aspherical [IF]" },
Packit 01d647
        { 0x07dd, "smc PENTAX-DA L 50-200mm F4-5.6 ED" },
Packit 01d647
        { 0x07de, "smc PENTAX-DA L 18-55mm F3.5-5.6" },
Packit 01d647
        { 0x07df, "Samsung/Schneider D-XENON 18-55mm F3.5-5.6 II" },
Packit 01d647
        { 0x07e0, "smc PENTAX-DA 15mm F4 ED AL Limited" },
Packit 01d647
        { 0x07e1, "Samsung/Schneider D-XENON 18-250mm F3.5-6.3" },
Packit 01d647
        { 0x07e2, "smc PENTAX-DA* 55mm F1.4 SDM (SDM unused)" },
Packit 01d647
        { 0x07e3, "smc PENTAX-DA* 60-250mm F4 [IF] SDM (SDM unused)" },
Packit 01d647
        { 0x07e4, "Samsung 16-45mm F4 ED" },
Packit 01d647
        { 0x07e5, "smc PENTAX-DA 18-55mm F3.5-5.6 AL II" },
Packit 01d647
        { 0x07e6, "Tamron AF 17-50mm F2.8 XR Di-II LD (Model A16)" },
Packit 01d647
        { 0x07e7, "smc PENTAX-DA 18-250mm F3.5-6.3ED AL [IF]" },
Packit 01d647
        { 0x07e9, "smc PENTAX-DA 35mm F2.8 Macro Limited" },
Packit 01d647
        { 0x07ea, "smc PENTAX-DA* 300 mm F4ED [IF] SDM (SDM not used)" },
Packit 01d647
        { 0x07eb, "smc PENTAX-DA* 200mm F2.8 ED [IF] SDM (SDM not used)" },
Packit 01d647
        { 0x07ec, "smc PENTAX-DA 55-300mm F4-5.8 ED" },
Packit 01d647
        { 0x07ee, "Tamron AF 18-250mm F3.5-6.3 Di II LD Aspherical [IF] Macro" },
Packit 01d647
        { 0x07f1, "smc PENTAX-DA* 50-135mm F2.8 ED [IF] SDM (SDM not used)" },
Packit 01d647
        { 0x07f2, "smc PENTAX-DA* 16-50mm F2.8 ED AL [IF] SDM (SDM not used)" },
Packit 01d647
        { 0x07f3, "smc PENTAX-DA 70mm F2.4 Limited" },
Packit 01d647
        { 0x07f4, "smc PENTAX-DA 21mm F3.2 AL Limited" },
Packit 01d647
        { 0x0800, "Sigma 50-150mm F2.8 II APO EX DC HSM" },
Packit 01d647
        { 0x0803, "Sigma AF 18-125mm F3.5-5.6 DC" },
Packit 01d647
        { 0x0804, "Sigma 50mm F1.4 EX DG HSM" },
Packit 01d647
        { 0x0807, "Sigma 24-70mm F2.8 IF EX DG HSM" },
Packit 01d647
        { 0x0808, "Sigma 18-250mm F3.5-6.3 DC OS HSM" },
Packit 01d647
        { 0x080b, "Sigma 10-20mm F3.5 EX DC HSM" },
Packit 01d647
        { 0x080c, "Sigma 70-300mm F4-5.6 DG OS" },
Packit 01d647
        { 0x080d, "Sigma 120-400mm F4.5-5.6 APO DG OS HSM" },
Packit 01d647
        { 0x080e, "Sigma 17-70mm F2.8-4.0 DC Macro OS HSM" },
Packit 01d647
        { 0x080f, "Sigma 150-500mm F5-6.3 APO DG OS HSM" },
Packit 01d647
        { 0x0810, "Sigma 70-200mm F2.8 EX DG Macro HSM II" },
Packit 01d647
        { 0x0811, "Sigma 50-500mm F4.5-6.3 DG OS HSM" },
Packit 01d647
        { 0x0812, "Sigma 8-16mm F4.5-5.6 DC HSM" },
Packit 01d647
        { 0x0815, "Sigma 17-50mm F2.8 EX DC OS HSM" },
Packit 01d647
        { 0x0816, "Sigma 85mm F1.4 EX DG HSM" },
Packit 01d647
        { 0x0817, "Sigma 70-200mm F2.8 APO EX DG OS HSM" },
Packit 01d647
        { 0x0819, "Sigma 17-50mm F2.8 EX DC HSM" },
Packit 01d647
        { 0x081b, "Sigma 18-200mm F3.5-6.3 II DC HSM" },
Packit 01d647
        { 0x081c, "Sigma 18-250mm F3.5-6.3 DC Macro HSM" },
Packit 01d647
        { 0x081d, "Sigma 35mm F1.4 DG HSM" },
Packit 01d647
        { 0x081e, "Sigma 17-70mm F2.8-4 DC Macro HSM | C" },
Packit 01d647
        { 0x081f, "Sigma 18-35mm F1.8 DC HSM" },
Packit 01d647
        { 0x0820, "Sigma 30mm F1.4 DC HSM | A" },
Packit 01d647
        { 0x0822, "Sigma 18-300mm F3.5-6.3 DC Macro HSM" },
Packit 01d647
        { 0x083b, "HD PENTAX-D FA 150-450mm F4.5-5.6 ED DC AW" },
Packit 01d647
        { 0x083c, "HD PENTAX-D FA* 70-200mm F2.8 ED DC AW" },
Packit 01d647
        { 0x083d, "HD PENTAX-D FA 28-105mm F3.5-5.6 ED DC WR" },
Packit 01d647
        { 0x083e, "HD PENTAX-D FA 24-70mm F2.8 ED SDM WR" },
Packit 01d647
        { 0x083f, "HD PENTAX-D FA 15-30mm F2.8 ED SDM WR" },
Packit 01d647
        { 0x08c5, "HD PENTAX-DA 55-300mm F4.5-6.3 ED PLM WR RE" },
Packit 01d647
        { 0x08c6, "smc PENTAX-DA L 18-50mm F4-5.6 DC WR RE" },
Packit 01d647
        { 0x08c7, "HD PENTAX-DA 18-50mm F4-5.6 DC WR RE" },
Packit 01d647
        { 0x08c8, "HD PENTAX-DA 16-85mm F3.5-5.6 ED DC WR" },
Packit 01d647
        { 0x08d1, "HD PENTAX-DA 20-40mm F2.8-4 ED Limited DC WR" },
Packit 01d647
        { 0x08d2, "smc PENTAX-DA 18-270mm F3.5-6.3 ED SDM" },
Packit 01d647
        { 0x08d3, "HD PENTAX-DA 560mm F5.6 ED AW" },
Packit 01d647
        { 0x08d7, "smc PENTAX-DA 18-135mm F3.5-5.6 ED AL [IF] DC WR" },
Packit 01d647
        { 0x08e2, "smc PENTAX-DA* 55mm F1.4 SDM" },
Packit 01d647
        { 0x08e3, "smc PENTAX DA* 60-250mm F4 [IF] SDM"},
Packit 01d647
        { 0x08e8, "smc PENTAX-DA 17-70mm F4 AL [IF] SDM" },
Packit 01d647
        { 0x08ea, "smc PENTAX-DA* 300mm F4 ED [IF] SDM" },
Packit 01d647
        { 0x08eb, "smc PENTAX-DA* 200mm F2.8 ED [IF] SDM" },
Packit 01d647
        { 0x08f1, "smc PENTAX-DA* 50-135mm F2.8 ED [IF] SDM" },
Packit 01d647
        { 0x08f2, "smc PENTAX-DA* 16-50mm F2.8 ED AL [IF] SDM" },
Packit 01d647
        { 0x08ff, "Sigma Lens" },                                        //0
Packit 01d647
        { 0x08ff, "Sigma 70-200mm F2.8 EX DG Macro HSM II" },            //1
Packit 01d647
        { 0x08ff, "Sigma 150-500mm F5-6.3 DG APO [OS] HSM" },            //2
Packit 01d647
        { 0x08ff, "Sigma 50-150mm F2.8 II APO EX DC HSM" },              //3
Packit 01d647
        { 0x08ff, "Sigma 4.5mm F2.8 EX DC HSM Circular Fisheye" },       //4
Packit 01d647
        { 0x08ff, "Sigma 50-200mm F4-5.6 DC OS" },                       //5
Packit 01d647
        { 0x08ff, "Sigma 24-70mm F2.8 EX DG HSM" },                      //6
Packit 01d647
        { 0x08ff, "Sigma 18-50mm F2.8-4.5 HSM OS" },                     //7
Packit 01d647
        { 0x0900, "645 Manual Lens" },
Packit 01d647
        { 0x0a00, "645 A Series Lens" },
Packit 01d647
        { 0x0b01, "smc PENTAX-FA 645 75mm F2.8" },
Packit 01d647
        { 0x0b02, "smc PENTAX-FA 645 45mm F2.8" },
Packit 01d647
        { 0x0b03, "smc PENTAX-FA* 645 300mm F4 ED [IF]" },
Packit 01d647
        { 0x0b04, "smc PENTAX-FA 645 45mm-85mm F4.5" },
Packit 01d647
        { 0x0b05, "smc PENTAX-FA 645 400mm F5.6 ED [IF]" },
Packit 01d647
        { 0x0b07, "smc PENTAX-FA 645 Macro 120mm F4" },
Packit 01d647
        { 0x0b08, "smc PENTAX-FA 645 80-160mm F4.5" },
Packit 01d647
        { 0x0b09, "smc PENTAX-FA 645 200mm F4 [IF]" },
Packit 01d647
        { 0x0b0a, "smc PENTAX-FA 645 150mm F2.8 [IF]" },
Packit 01d647
        { 0x0b0b, "smc PENTAX-FA 645 35mm F3.5 AL [IF]" },
Packit 01d647
        { 0x0b0c, "smc PENTAX-FA 645 300mm F5.6 ED [IF]" },
Packit 01d647
        { 0x0b0e, "smc PENTAX-FA 645 55-110mm F5.6" },
Packit 01d647
        { 0x0b10, "smc PENTAX-FA 645 33-55mm F4.5 AL" },
Packit 01d647
        { 0x0b11, "smc PENTAX-FA 645 150-300mm F5.6 ED [IF]" },
Packit 01d647
        { 0x0b15, "HD PENTAX-D FA 645 35mm F3.5 AL [IF]" },
Packit 01d647
        { 0x0d12, "smc PENTAX-D FA 645 55mm F2.8 AL [IF] SDM AW" },
Packit 01d647
        { 0x0d13, "smc PENTAX-D FA 645 25mm F4 AL [IF] SDM AW" },
Packit 01d647
        { 0x0d14, "HD PENTAX-D FA 645 90mm F2.8 ED AW SR" },
Packit 01d647
        { 0x0dfd, "HD PENTAX-DA 645 28-45mm F4.5 ED AW SR" },
Packit 01d647
        { 0x1500, "Pentax Q Manual Lens" },
Packit 01d647
        { 0x1501, "01 Standard Prime 8.5mm F1.9" },
Packit 01d647
        { 0x1502, "02 Standard Zoom 5-15mm F2.8-4.5" },
Packit 01d647
        { 0x1603, "03 Fish-eye 3.2mm F5.6" },
Packit 01d647
        { 0x1604, "04 Toy Lens Wide 6.3mm F7.1" },
Packit 01d647
        { 0x1605, "05 Toy Lens Telephoto 18mm F8" },
Packit 01d647
        { 0x1506, "06 Telephoto Zoom 15-45mm F2.8" },
Packit 01d647
        { 0x1507, "07 Mount Shield 11.5mm F9" },
Packit 01d647
        { 0x1508, "08 Wide Zoom 3.8-5.9mm F3.7-4" },
Packit 01d647
        { 0x15e9, "Adapter Q for K-mount Lens" },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! ImageTone, tag 0x004f
Packit 01d647
    extern const TagDetails pentaxImageTone[] = {
Packit 01d647
        {    0, N_("Natural") },
Packit 01d647
        {    1, N_("Bright") },
Packit 01d647
        {    2, N_("Portrait") },
Packit 01d647
        {    3, N_("Landscape") },
Packit 01d647
        {    4, N_("Vibrant") },
Packit 01d647
        {    5, N_("Monochrome") },
Packit 01d647
        {    6, N_("Muted") },
Packit 01d647
        {    7, N_("Reversal film") },
Packit 01d647
        {    8, N_("Bleach bypass") },
Packit 01d647
        {    9, N_("Radiant") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! DynamicRangeExpansion, tag 0x0069
Packit 01d647
    extern const TagDetails pentaxDynamicRangeExpansion[] = {
Packit 01d647
        {   0, N_("Off") },
Packit 01d647
        {   0x1000000, N_("On") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! HighISONoiseReduction, tag 0x0071
Packit 01d647
    extern const TagDetails pentaxHighISONoiseReduction[] = {
Packit 01d647
        {   0, N_("Off") },
Packit 01d647
        {   1, N_("Weakest") },
Packit 01d647
        {   2, N_("Weak") },
Packit 01d647
        {   3, N_("Strong") },
Packit 01d647
        {   4, N_("Custom") },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    std::ostream& PentaxMakerNote::printVersion(std::ostream& os, const Value& value, const ExifData*)
Packit 01d647
    {
Packit 01d647
        std::string val = value.toString();
Packit 01d647
        size_t i;
Packit 01d647
        while ((i = val.find(' ')) != std::string::npos && i != val.length() - 1) {
Packit 01d647
            val.replace(i, 1, ".");
Packit 01d647
        }
Packit 01d647
        os << val;
Packit 01d647
        return os;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    std::ostream& PentaxMakerNote::printResolution(std::ostream& os, const Value& value, const ExifData*)
Packit 01d647
    {
Packit 01d647
        std::string val = value.toString();
Packit 01d647
        size_t i;
Packit 01d647
        while ((i = val.find(' ')) != std::string::npos && i != val.length() - 1) {
Packit 01d647
            val.replace(i, 1, "x");
Packit 01d647
        }
Packit 01d647
        os << val;
Packit 01d647
        return os;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    std::ostream& PentaxMakerNote::printDate(std::ostream& os, const Value& value, const ExifData*)
Packit 01d647
    {
Packit 01d647
        /* I choose same format as is used inside EXIF itself */
Packit 01d647
        os << ((value.toLong(0) << 8) + value.toLong(1));
Packit 01d647
        os << ":";
Packit 01d647
        os << std::setw(2) << std::setfill('0') << value.toLong(2);
Packit 01d647
        os << ":";
Packit 01d647
        os << std::setw(2) << std::setfill('0') << value.toLong(3);
Packit 01d647
        return os;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    std::ostream& PentaxMakerNote::printTime(std::ostream& os, const Value& value, const ExifData*)
Packit 01d647
    {
Packit 01d647
        std::ios::fmtflags f( os.flags() );
Packit 01d647
        os << std::setw(2) << std::setfill('0') << value.toLong(0);
Packit 01d647
        os << ":";
Packit 01d647
        os << std::setw(2) << std::setfill('0') << value.toLong(1);
Packit 01d647
        os << ":";
Packit 01d647
        os << std::setw(2) << std::setfill('0') << value.toLong(2);
Packit 01d647
        os.flags(f);
Packit 01d647
        return os;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    std::ostream& PentaxMakerNote::printExposure(std::ostream& os, const Value& value, const ExifData*)
Packit 01d647
    {
Packit 01d647
        os << static_cast<float>(value.toLong()) / 100 << " ms";
Packit 01d647
        return os;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    std::ostream& PentaxMakerNote::printFValue(std::ostream& os, const Value& value, const ExifData*)
Packit 01d647
    {
Packit 01d647
        std::ios::fmtflags f( os.flags() );
Packit 01d647
        os << "F" << std::setprecision(2)
Packit 01d647
           << static_cast<float>(value.toLong()) / 10;
Packit 01d647
        os.flags(f);
Packit 01d647
        return os;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    std::ostream& PentaxMakerNote::printFocalLength(std::ostream& os, const Value& value, const ExifData*)
Packit 01d647
    {
Packit 01d647
        std::ios::fmtflags f( os.flags() );
Packit 01d647
        os << std::fixed << std::setprecision(1)
Packit 01d647
           << static_cast<float>(value.toLong()) / 100
Packit 01d647
           << " mm";
Packit 01d647
        os.flags(f);
Packit 01d647
        return os;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    std::ostream& PentaxMakerNote::printCompensation(std::ostream& os, const Value& value, const ExifData*)
Packit 01d647
    {
Packit 01d647
        std::ios::fmtflags f( os.flags() );
Packit 01d647
        os << std::setprecision(2)
Packit 01d647
           << (static_cast<float>(value.toLong()) - 50) / 10
Packit 01d647
           << " EV";
Packit 01d647
        os.flags(f);
Packit 01d647
        return os;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    std::ostream& PentaxMakerNote::printTemperature(std::ostream& os, const Value& value, const ExifData*)
Packit 01d647
    {
Packit 01d647
        os << value.toLong() << " C";
Packit 01d647
        return os;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    std::ostream& PentaxMakerNote::printFlashCompensation(std::ostream& os, const Value& value, const ExifData*)
Packit 01d647
    {
Packit 01d647
        std::ios::fmtflags f( os.flags() );
Packit 01d647
        os << std::setprecision(2)
Packit 01d647
           << static_cast<float>(value.toLong()) / 256
Packit 01d647
           << " EV";
Packit 01d647
        os.flags(f);
Packit 01d647
        return os;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    std::ostream& PentaxMakerNote::printBracketing(std::ostream& os, const Value& value, const ExifData*)
Packit 01d647
    {
Packit 01d647
        long l0 = value.toLong(0);
Packit 01d647
Packit 01d647
        if (l0 < 10) {
Packit 01d647
            os << std::setprecision(2)
Packit 01d647
               << static_cast<float>(l0) / 3
Packit 01d647
               << " EV";
Packit 01d647
        } else {
Packit 01d647
            os << std::setprecision(2)
Packit 01d647
               << static_cast<float>(l0) - 9.5
Packit 01d647
               << " EV";
Packit 01d647
        }
Packit 01d647
Packit 01d647
        if (value.count() == 2) {
Packit 01d647
            long l1 = value.toLong(1);
Packit 01d647
            os << " (";
Packit 01d647
            if (l1 == 0) {
Packit 01d647
                os << _("No extended bracketing");
Packit 01d647
            } else {
Packit 01d647
                long type = l1 >> 8;
Packit 01d647
                long range = l1 & 0xff;
Packit 01d647
                switch (type) {
Packit 01d647
                    case 1:
Packit 01d647
                        os << _("WB-BA");
Packit 01d647
                        break;
Packit 01d647
                    case 2:
Packit 01d647
                        os << _("WB-GM");
Packit 01d647
                        break;
Packit 01d647
                    case 3:
Packit 01d647
                        os << _("Saturation");
Packit 01d647
                        break;
Packit 01d647
                    case 4:
Packit 01d647
                        os << _("Sharpness");
Packit 01d647
                        break;
Packit 01d647
                    case 5:
Packit 01d647
                        os << _("Contrast");
Packit 01d647
                        break;
Packit 01d647
                    default:
Packit 01d647
                        os << _("Unknown ") << type;
Packit 01d647
                        break;
Packit 01d647
                }
Packit 01d647
                os << " " << range;
Packit 01d647
            }
Packit 01d647
            os << ")";
Packit 01d647
        }
Packit 01d647
        return os;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    std::ostream& PentaxMakerNote::printShutterCount(std::ostream& os, const Value& value, const ExifData* metadata)
Packit 01d647
    {
Packit 01d647
        if ( ! metadata ) return os << "undefined" ;
Packit 01d647
Packit 01d647
        ExifData::const_iterator dateIt = metadata->findKey(
Packit 01d647
                ExifKey("Exif.PentaxDng.Date"));
Packit 01d647
        if (dateIt == metadata->end()) {
Packit 01d647
            dateIt = metadata->findKey(ExifKey("Exif.Pentax.Date"));
Packit 01d647
        }
Packit 01d647
        ExifData::const_iterator timeIt = metadata->findKey(
Packit 01d647
                ExifKey("Exif.PentaxDng.Time"));
Packit 01d647
        if (timeIt == metadata->end()) {
Packit 01d647
            timeIt = metadata->findKey(ExifKey("Exif.Pentax.Time"));
Packit 01d647
        }
Packit 01d647
        if (    dateIt == metadata->end() || dateIt->size() != 4 ||
Packit 01d647
                timeIt == metadata->end() || timeIt->size() != 3 ||
Packit 01d647
                value.size() != 4) {
Packit 01d647
            os << "undefined";
Packit 01d647
            return os;
Packit 01d647
        }
Packit 01d647
        const uint32_t date =
Packit 01d647
            (dateIt->toLong(0) << 24) + (dateIt->toLong(1) << 16) +
Packit 01d647
            (dateIt->toLong(2) <<  8) + (dateIt->toLong(3) <<  0);
Packit 01d647
        const uint32_t time =
Packit 01d647
            (timeIt->toLong(0) << 24) + (timeIt->toLong(1) << 16) +
Packit 01d647
            (timeIt->toLong(2) <<  8);
Packit 01d647
        const uint32_t countEnc =
Packit 01d647
            (value.toLong(0) << 24) + (value.toLong(1) << 16) +
Packit 01d647
            (value.toLong(2) <<  8) + (value.toLong(3) <<  0);
Packit 01d647
        // The shutter count is encoded using date and time values stored
Packit 01d647
        // in Pentax-specific tags.  The prototype for the encoding/decoding
Packit 01d647
        // function is taken from Phil Harvey's ExifTool: Pentax.pm file,
Packit 01d647
        // CryptShutterCount() routine.
Packit 01d647
        const uint32_t count = countEnc ^ date ^ (~time);
Packit 01d647
        os << count;
Packit 01d647
        return os;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    // #1144 begin
Packit 01d647
    static std::string getKeyString(const std::string& key,const ExifData* metadata)
Packit 01d647
    {
Packit 01d647
        std::string result;
Packit 01d647
        if ( metadata->findKey(ExifKey(key)) != metadata->end() ) {
Packit 01d647
            result = metadata->findKey(ExifKey(key))->toString();
Packit 01d647
        }
Packit 01d647
        return result;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    static long getKeyLong(const std::string& key,const ExifData* metadata)
Packit 01d647
    {
Packit 01d647
        long result = -1;
Packit 01d647
        if ( metadata->findKey(ExifKey(key)) != metadata->end() ) {
Packit 01d647
            result = (long) metadata->findKey(ExifKey(key))->toFloat(0);
Packit 01d647
        }
Packit 01d647
        return result;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    //! resolveLens0x32c print lens in human format
Packit 01d647
    std::ostream& resolveLens0x32c(std::ostream& os, const Value& value,
Packit 01d647
                                                 const ExifData* metadata)
Packit 01d647
    {
Packit 01d647
        try {
Packit 01d647
            unsigned long index     = 0;
Packit 01d647
Packit 01d647
            long        focalLength = getKeyLong  ("Exif.Photo.FocalLength",metadata);
Packit 01d647
            bool        bFL10_20    = 10 <= focalLength && focalLength <= 20;
Packit 01d647
Packit 01d647
            // std::cout << "model,focalLength = " << model << "," << focalLength << std::endl;
Packit 01d647
            if ( bFL10_20 ) {
Packit 01d647
                index = 1;
Packit 01d647
            }
Packit 01d647
Packit 01d647
            if ( index > 0 )  {
Packit 01d647
                const unsigned long lensID    = 0x32c;
Packit 01d647
                const TagDetails* td = find(pentaxLensType, lensID);
Packit 01d647
                os << exvGettext(td[index].label_);
Packit 01d647
                return os;
Packit 01d647
            }
Packit 01d647
        } catch (...) {}
Packit 01d647
        return EXV_PRINT_COMBITAG_MULTI(pentaxLensType, 2, 1, 2)(os, value, metadata);
Packit 01d647
    }
Packit 01d647
    // #1144 end
Packit 01d647
Packit 01d647
    // #816 begin
Packit 01d647
    //! resolveLens0x3ff print lens in human format
Packit 01d647
    std::ostream& resolveLens0x3ff(std::ostream& os, const Value& value,
Packit 01d647
                                                 const ExifData* metadata)
Packit 01d647
    // ----------------------------------------------------------------------
Packit 01d647
    {
Packit 01d647
        try {
Packit 01d647
            unsigned long index  = 0;
Packit 01d647
Packit 01d647
            // http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/Pentax.html#LensData
Packit 01d647
            const ExifData::const_iterator lensInfo = metadata->findKey(ExifKey("Exif.PentaxDng.LensInfo")) != metadata->end()
Packit 01d647
                                                    ? metadata->findKey(ExifKey("Exif.PentaxDng.LensInfo"))
Packit 01d647
                                                    : metadata->findKey(ExifKey("Exif.Pentax.LensInfo"))
Packit 01d647
                                                    ;
Packit 01d647
            if ( lensInfo == metadata->end() ) return EXV_PRINT_COMBITAG_MULTI(pentaxLensType, 2, 1, 2)(os, value, metadata);
Packit 01d647
            if ( lensInfo->count() < 5       ) return EXV_PRINT_COMBITAG_MULTI(pentaxLensType, 2, 1, 2)(os, value, metadata);
Packit 01d647
Packit 01d647
            if ( value.count() == 2 ) {
Packit 01d647
                // http://dev.exiv2.org/attachments/download/326/IMGP4432.PEF
Packit 01d647
                // exiv2 -pv --grep Lens ~/Downloads/IMGP4432.PEF
Packit 01d647
                // 0x003f Pentax       LensType  Byte        2 3 255
Packit 01d647
                // 0x0207 Pentax       LensInfo  Undefined  36 3 255 0 0 40 148 71 152 80 6 241 65 237 153 88 36 1 76 107 251 255 255 255 0 0 80 6 241 0 0 0 0 0 0 0 0
Packit 01d647
                unsigned long base   = 1;
Packit 01d647
Packit 01d647
                unsigned int  autoAperture     = lensInfo->toLong(base+1) & 0x01 ;
Packit 01d647
                unsigned int  minAperture      = lensInfo->toLong(base+2) & 0x06 ;
Packit 01d647
                unsigned int  minFocusDistance = lensInfo->toLong(base+3) & 0xf8 ;
Packit 01d647
Packit 01d647
                if ( autoAperture == 0x0 && minAperture == 0x0 && minFocusDistance == 0x28 && lensInfo->toLong(base+4) == 148) index = 8;
Packit 01d647
                if ( autoAperture == 0x0 && minAperture == 0x0 && minFocusDistance == 0x28 && lensInfo->toLong(base+5) == 110) index = 7;
Packit 01d647
                if ( autoAperture == 0x0 && minAperture == 0x0 && minFocusDistance == 0x28 && lensInfo->toLong(base+4) == 110) index = 7;
Packit 01d647
Packit 01d647
            } else if ( value.count() == 3 ) {
Packit 01d647
                // http://dev.exiv2.org/attachments/download/858/_IGP9032.DNG
Packit 01d647
                // $ exiv2 -pv --grep Lens ~/Downloads/_IGP9032.DNG
Packit 01d647
                // 0x003f PentaxDng    LensType  Byte        3    3 255   0
Packit 01d647
                // 0x0207 PentaxDng    LensInfo  Undefined  69  131   0   0 255 0  40 148  68 244 ...
Packit 01d647
                //                                                0   1   2   3 4   5   6
Packit 01d647
                if ( lensInfo->toLong(4) == 0 && lensInfo->toLong(5) == 40 && lensInfo->toLong(6) == 148 ) index = 8;
Packit 01d647
Packit 01d647
            } else if ( value.count() == 4 ) {
Packit 01d647
                // http://dev.exiv2.org/attachments/download/868/IMGP2221.JPG
Packit 01d647
                // 0x0207 PentaxDng    LensInfo  Undefined 128    0 131 128   0 0 255   1 184   0 0 0 0 0
Packit 01d647
                //                                                0   1   2   3 4   5   6
Packit 01d647
                if ( lensInfo->count() == 128 && lensInfo->toLong(1) == 131 && lensInfo->toLong(2) == 128 ) index = 8;
Packit 01d647
                // #1155
Packit 01d647
                if ( lensInfo->toLong(6) == 5 )  index = 7;
Packit 01d647
            }
Packit 01d647
Packit 01d647
            if ( index > 0 )  {
Packit 01d647
                const unsigned long lensID = 0x3ff;
Packit 01d647
                const TagDetails* td = find(pentaxLensType, lensID);
Packit 01d647
                os << exvGettext(td[index].label_);
Packit 01d647
                return os;
Packit 01d647
            }
Packit 01d647
        } catch (...) {}
Packit 01d647
        return EXV_PRINT_COMBITAG_MULTI(pentaxLensType, 2, 1, 2)(os, value, metadata);
Packit 01d647
    }
Packit 01d647
Packit 01d647
    // #1155
Packit 01d647
    //! resolveLens0x8ff print lens in human format
Packit 01d647
    std::ostream& resolveLens0x8ff(std::ostream& os, const Value& value,
Packit 01d647
                                                 const ExifData* metadata)
Packit 01d647
    // ----------------------------------------------------------------------
Packit 01d647
    {
Packit 01d647
        try {
Packit 01d647
            unsigned long index  = 0;
Packit 01d647
Packit 01d647
            const ExifData::const_iterator lensInfo = metadata->findKey(ExifKey("Exif.PentaxDng.LensInfo")) != metadata->end()
Packit 01d647
                                                    ? metadata->findKey(ExifKey("Exif.PentaxDng.LensInfo"))
Packit 01d647
                                                    : metadata->findKey(ExifKey("Exif.Pentax.LensInfo"))
Packit 01d647
                                                    ;
Packit 01d647
            if ( value.count() == 4 ) {
Packit 01d647
                std::string model       = getKeyString("Exif.Image.Model"      ,metadata);
Packit 01d647
                if ( model.find("PENTAX K-3")==0 && lensInfo->count() == 128 && lensInfo->toLong(1) == 168 && lensInfo->toLong(2) == 144 ) index = 7;
Packit 01d647
            }
Packit 01d647
Packit 01d647
            if ( index > 0 )  {
Packit 01d647
                const unsigned long lensID = 0x8ff;
Packit 01d647
                const TagDetails* td = find(pentaxLensType, lensID);
Packit 01d647
                os << exvGettext(td[index].label_);
Packit 01d647
                return os;
Packit 01d647
            }
Packit 01d647
        } catch (...) {}
Packit 01d647
        return EXV_PRINT_COMBITAG_MULTI(pentaxLensType, 2, 1, 2)(os, value, metadata);
Packit 01d647
    }
Packit 01d647
Packit 01d647
    // #1155
Packit 01d647
    //! resolveLens0x319 print lens in human format
Packit 01d647
    std::ostream& resolveLens0x319(std::ostream& os, const Value& value,
Packit 01d647
                                                 const ExifData* metadata)
Packit 01d647
    // ----------------------------------------------------------------------
Packit 01d647
    {
Packit 01d647
        try {
Packit 01d647
            unsigned long index  = 0;
Packit 01d647
Packit 01d647
            const ExifData::const_iterator lensInfo = metadata->findKey(ExifKey("Exif.PentaxDng.LensInfo")) != metadata->end()
Packit 01d647
                                                    ? metadata->findKey(ExifKey("Exif.PentaxDng.LensInfo"))
Packit 01d647
                                                    : metadata->findKey(ExifKey("Exif.Pentax.LensInfo"))
Packit 01d647
                                                    ;
Packit 01d647
            if ( value.count() == 4 ) {
Packit 01d647
                std::string model       = getKeyString("Exif.Image.Model"      ,metadata);
Packit 01d647
                if ( model.find("PENTAX K-3")==0 && lensInfo->count() == 128 && lensInfo->toLong(1) == 131 && lensInfo->toLong(2) == 128 )
Packit 01d647
                    index = 6;
Packit 01d647
            }
Packit 01d647
            if ( value.count() == 2 ) {
Packit 01d647
                std::string model       = getKeyString("Exif.Image.Model"      ,metadata);
Packit 01d647
                if ( model.find("PENTAX K100D")==0 && lensInfo->count() == 44 )
Packit 01d647
                    index = 6;
Packit 01d647
                if ( model.find("PENTAX *ist DL")==0 && lensInfo->count() == 36 )
Packit 01d647
                    index = 6;
Packit 01d647
            }
Packit 01d647
Packit 01d647
            if ( index > 0 )  {
Packit 01d647
                const unsigned long lensID = 0x319;
Packit 01d647
                const TagDetails* td = find(pentaxLensType, lensID);
Packit 01d647
                os << exvGettext(td[index].label_);
Packit 01d647
                return os;
Packit 01d647
            }
Packit 01d647
        } catch (...) {}
Packit 01d647
        return EXV_PRINT_COMBITAG_MULTI(pentaxLensType, 2, 1, 2)(os, value, metadata);
Packit 01d647
    }
Packit 01d647
Packit 01d647
    //! resolveLensType print lens in human format
Packit 01d647
    std::ostream& resolveLensType(std::ostream& os, const Value& value,
Packit 01d647
                                                 const ExifData* metadata)
Packit 01d647
    {
Packit 01d647
        return EXV_PRINT_COMBITAG_MULTI(pentaxLensType, 2, 1, 2)(os, value, metadata);
Packit 01d647
    }
Packit 01d647
Packit 01d647
    struct LensIdFct {
Packit 01d647
       long     id_;                           //!< Lens id
Packit 01d647
       PrintFct fct_;                          //!< Pretty-print function
Packit 01d647
       //! Comparison operator for find template
Packit 01d647
       bool operator==(long id) const { return id_ == id; }
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! List of lens ids which require special treatment using resolveLensType
Packit 01d647
    const LensIdFct lensIdFct[] = {
Packit 01d647
       {   0x0317, resolveLensType },
Packit 01d647
       {   0x0319, resolveLens0x319},
Packit 01d647
       {   0x031b, resolveLensType },
Packit 01d647
       {   0x031c, resolveLensType },
Packit 01d647
       {   0x031d, resolveLensType },
Packit 01d647
       {   0x031f, resolveLensType },
Packit 01d647
       {   0x0329, resolveLensType },
Packit 01d647
       {   0x032c, resolveLens0x32c},
Packit 01d647
       {   0x032e, resolveLensType },
Packit 01d647
       {   0x0334, resolveLensType },
Packit 01d647
       {   0x03ff, resolveLens0x3ff},
Packit 01d647
       {   0x041a, resolveLensType },
Packit 01d647
       {   0x042d, resolveLensType },
Packit 01d647
       {   0x08ff, resolveLens0x8ff},
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! A lens id and a pretty-print function for special treatment of the id.
Packit 01d647
    std::ostream& printLensType(std::ostream& os, const Value& value,
Packit 01d647
                                                 const ExifData* metadata)
Packit 01d647
    {
Packit 01d647
        // #1034
Packit 01d647
        const std::string  undefined("undefined") ;
Packit 01d647
        const std::string  section  ("pentax");
Packit 01d647
        if ( Internal::readExiv2Config(section,value.toString(),undefined) != undefined ) {
Packit 01d647
            return os << Internal::readExiv2Config(section,value.toString(),undefined);
Packit 01d647
        }
Packit 01d647
Packit 01d647
        unsigned long index = value.toLong(0)*256+value.toLong(1);
Packit 01d647
Packit 01d647
        // std::cout << std::endl << "printLensType value =" << value.toLong() << " index = " << index << std::endl;
Packit 01d647
        const LensIdFct* lif = find(lensIdFct, index);
Packit 01d647
        if (!lif) {
Packit 01d647
           return EXV_PRINT_COMBITAG_MULTI(pentaxLensType, 2, 1, 2)(os, value, metadata);
Packit 01d647
        }
Packit 01d647
        if (metadata && lif->fct_) {
Packit 01d647
            return lif->fct_(os, value, metadata);
Packit 01d647
        }
Packit 01d647
Packit 01d647
        if (   value.typeId() != unsignedShort
Packit 01d647
                   || value.count() == 0) return os << "(" << value << ")";
Packit 01d647
Packit 01d647
        return os << value;
Packit 01d647
    }
Packit 01d647
Packit 01d647
    // #816 end
Packit 01d647
    // ----------------------------------------------------------------------
Packit 01d647
Packit 01d647
    // Pentax MakerNote Tag Info
Packit 01d647
    const TagInfo PentaxMakerNote::tagInfo_[] = {
Packit 01d647
        TagInfo(0x0000, "Version", N_("Version"),
Packit 01d647
                N_("Pentax Makernote version"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printVersion),
Packit 01d647
        TagInfo(0x0001, "Mode", N_("Shooting mode"),
Packit 01d647
                N_("Camera shooting mode"),
Packit 01d647
                pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxShootingMode)),
Packit 01d647
        TagInfo(0x0002, "PreviewResolution", N_("Resolution of a preview image"),
Packit 01d647
                N_("Resolution of a preview image"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printResolution),
Packit 01d647
        TagInfo(0x0003, "PreviewLength", N_("Length of a preview image"),
Packit 01d647
                N_("Size of an IFD containing a preview image"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue),
Packit 01d647
        TagInfo(0x0004, "PreviewOffset", N_("Pointer to a preview image"),
Packit 01d647
                N_("Offset to an IFD containing a preview image"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue),
Packit 01d647
        TagInfo(0x0005, "ModelID", N_("Model identification"),
Packit 01d647
                N_("Pentax model identification"),
Packit 01d647
                pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxModel)),
Packit 01d647
        TagInfo(0x0006, "Date", N_("Date"),
Packit 01d647
                N_("Date"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printDate),
Packit 01d647
        TagInfo(0x0007, "Time", N_("Time"),
Packit 01d647
                N_("Time"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printTime),
Packit 01d647
        TagInfo(0x0008, "Quality", N_("Image quality"),
Packit 01d647
                N_("Image quality settings"),
Packit 01d647
                pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxQuality)),
Packit 01d647
        TagInfo(0x0009, "Size", N_("Image size"),
Packit 01d647
                N_("Image size settings"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxSize)),
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x000c, "Flash", N_("Flash mode"),
Packit 01d647
                N_("Flash mode settings"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxFlash)),
Packit 01d647
        TagInfo(0x000d, "Focus", N_("Focus mode"),
Packit 01d647
                N_("Focus mode settings"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxFocus)),
Packit 01d647
        TagInfo(0x000e, "AFPoint", N_("AF point"),
Packit 01d647
                N_("Selected AF point"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxAFPoint)),
Packit 01d647
        TagInfo(0x000F, "AFPointInFocus", N_("AF point in focus"),
Packit 01d647
                N_("AF point in focus"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxAFPointFocus)),
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x0012, "ExposureTime", N_("Exposure time"),
Packit 01d647
                N_("Exposure time"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, printExposure),
Packit 01d647
        TagInfo(0x0013, "FNumber", N_("F-Number"),
Packit 01d647
                N_("F-Number"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, printFValue),
Packit 01d647
        TagInfo(0x0014, "ISO", N_("ISO sensitivity"),
Packit 01d647
                N_("ISO sensitivity settings"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, EXV_PRINT_TAG(pentaxISO)),
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x0016, "ExposureCompensation", N_("Exposure compensation"),
Packit 01d647
                N_("Exposure compensation"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, printCompensation),
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x0017, "MeteringMode", N_("MeteringMode"),
Packit 01d647
                N_("MeteringMode"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxMeteringMode)),
Packit 01d647
        TagInfo(0x0018, "AutoBracketing", N_("AutoBracketing"),
Packit 01d647
                N_("AutoBracketing"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printBracketing),
Packit 01d647
        TagInfo(0x0019, "WhiteBalance", N_("White balance"),
Packit 01d647
                N_("White balance"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxWhiteBalance)),
Packit 01d647
        TagInfo(0x001a, "WhiteBalanceMode", N_("White balance mode"),
Packit 01d647
                N_("White balance mode"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxWhiteBalanceMode)),
Packit 01d647
        TagInfo(0x001b, "BlueBalance", N_("Blue balance"),
Packit 01d647
                N_("Blue color balance"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, printValue),
Packit 01d647
        TagInfo(0x001c, "RedBalance", N_("Red balance"),
Packit 01d647
                N_("Red color balance"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, printValue),
Packit 01d647
        TagInfo(0x001d, "FocalLength", N_("FocalLength"),
Packit 01d647
                N_("FocalLength"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printFocalLength),
Packit 01d647
        TagInfo(0x001e, "DigitalZoom", N_("Digital zoom"),
Packit 01d647
                N_("Digital zoom"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, printValue),
Packit 01d647
        TagInfo(0x001f, "Saturation", N_("Saturation"),
Packit 01d647
                N_("Saturation"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxSaturation)),
Packit 01d647
        TagInfo(0x0020, "Contrast", N_("Contrast"),
Packit 01d647
                N_("Contrast"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxContrast)),
Packit 01d647
        TagInfo(0x0021, "Sharpness", N_("Sharpness"),
Packit 01d647
                N_("Sharpness"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxSharpness)),
Packit 01d647
        TagInfo(0x0022, "Location", N_("Location"),
Packit 01d647
                N_("Location"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxLocation)),
Packit 01d647
        TagInfo(0x0023, "Hometown", N_("Hometown"),
Packit 01d647
                N_("Home town"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxCities)),
Packit 01d647
        TagInfo(0x0024, "Destination", N_("Destination"),
Packit 01d647
                N_("Destination"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxCities)),
Packit 01d647
        TagInfo(0x0025, "HometownDST", N_("Hometown DST"),
Packit 01d647
                N_("Whether day saving time is active in home town"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxYesNo)),
Packit 01d647
        TagInfo(0x0026, "DestinationDST", N_("Destination DST"),
Packit 01d647
                N_("Whether day saving time is active in destination"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_TAG(pentaxYesNo)),
Packit 01d647
        TagInfo(0x0027, "DSPFirmwareVersion", N_("DSPFirmwareVersion"),
Packit 01d647
                N_("DSPFirmwareVersion"),
Packit 01d647
                pentaxId, makerTags, unsignedByte, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0028, "CPUFirmwareVersion", N_("CPUFirmwareVersion"),
Packit 01d647
                N_("CPUFirmwareVersion"),
Packit 01d647
                pentaxId, makerTags, unsignedByte, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0029, "FrameNumber", N_("Frame number"),
Packit 01d647
                N_("Frame number"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue),
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x002d, "EffectiveLV", N_("Light value"),
Packit 01d647
                N_("Camera calculated light value, includes exposure compensation"),
Packit 01d647
                pentaxId, makerTags, unsignedShort, -1, printValue),
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x0032, "ImageProcessing", N_("Image processing"),
Packit 01d647
                N_("Image processing"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxImageProcessing, 4, 0)),
Packit 01d647
        TagInfo(0x0033, "PictureMode", N_("Picture mode"),
Packit 01d647
                N_("Picture mode"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxPictureMode, 3, 0)),
Packit 01d647
        TagInfo(0x0034, "DriveMode", N_("Drive mode"),
Packit 01d647
                N_("Drive mode"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxDriveMode, 4, 0)),
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x0037, "ColorSpace", N_("Color space"),
Packit 01d647
                N_("Color space"),
Packit 01d647
                pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxColorSpace)),
Packit 01d647
        TagInfo(0x0038, "ImageAreaOffset", N_("Image area offset"),
Packit 01d647
                N_("Image area offset"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, printValue),
Packit 01d647
        TagInfo(0x0039, "RawImageSize", N_("Raw image size"),
Packit 01d647
                N_("Raw image size"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, printValue),
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x003e, "PreviewImageBorders", N_("Preview image borders"),
Packit 01d647
                N_("Preview image borders"),
Packit 01d647
                pentaxId, makerTags, unsignedByte, -1, printValue),
Packit 01d647
        TagInfo(0x003f, "LensType", N_("Lens type"),
Packit 01d647
                N_("Lens type"),
Packit 01d647
                pentaxId, makerTags, unsignedByte, -1, printLensType), // #816
Packit 01d647
        TagInfo(0x0040, "SensitivityAdjust", N_("Sensitivity adjust"),
Packit 01d647
                N_("Sensitivity adjust"),
Packit 01d647
                pentaxId, makerTags, unsignedLong, -1, printValue),
Packit 01d647
        TagInfo(0x0041, "DigitalFilter", N_("Digital filter"),
Packit 01d647
                N_("Digital filter"),
Packit 01d647
                pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)),
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x0047, "Temperature", N_("Temperature"),
Packit 01d647
                N_("Camera temperature"),
Packit 01d647
                pentaxId, makerTags, signedByte, -1, printTemperature),
Packit 01d647
        TagInfo(0x0048, "AELock", N_("AE lock"),
Packit 01d647
                N_("AE lock"),
Packit 01d647
                pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)),
Packit 01d647
        TagInfo(0x0049, "NoiseReduction", N_("Noise reduction"),
Packit 01d647
                N_("Noise reduction"),
Packit 01d647
                pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxOffOn)),
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x004d, "FlashExposureCompensation", N_("Flash exposure compensation"),
Packit 01d647
                N_("Flash exposure compensation"),
Packit 01d647
                pentaxId, makerTags, signedLong, -1, printFlashCompensation),
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x004f, "ImageTone", N_("Image tone"),
Packit 01d647
                N_("Image tone"),
Packit 01d647
                pentaxId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(pentaxImageTone)),
Packit 01d647
        TagInfo(0x0050, "ColorTemperature", N_("Color temperature"),
Packit 01d647
                N_("Color temperature"),
Packit 01d647
                pentaxId, makerTags, unsignedShort, -1, printValue),
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x005c, "ShakeReduction", N_("Shake reduction"),
Packit 01d647
                N_("Shake reduction information"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue),
Packit 01d647
        TagInfo(0x005d, "ShutterCount", N_("Shutter count"),
Packit 01d647
                N_("Shutter count"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printShutterCount),
Packit 01d647
        TagInfo(0x0069, "DynamicRangeExpansion", N_("Dynamic range expansion"),
Packit 01d647
                N_("Dynamic range expansion"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, EXV_PRINT_COMBITAG(pentaxDynamicRangeExpansion, 4, 0)),
Packit 01d647
        TagInfo(0x0071, "HighISONoiseReduction", N_("High ISO noise reduction"),
Packit 01d647
                N_("High ISO noise reduction"),
Packit 01d647
                pentaxId, makerTags, unsignedByte, -1, EXV_PRINT_TAG(pentaxHighISONoiseReduction)),
Packit 01d647
        TagInfo(0x0072, "AFAdjustment", N_("AF Adjustment"),
Packit 01d647
                N_("AF Adjustment"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue),
Packit 01d647
        /* Many missing ! */
Packit 01d647
        TagInfo(0x0200, "BlackPoint", N_("Black point"),
Packit 01d647
                N_("Black point"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue),
Packit 01d647
        TagInfo(0x0201, "WhitePoint", N_("White point"),
Packit 01d647
                N_("White point"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue),
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x0205, "ShotInfo", N_("ShotInfo"),
Packit 01d647
                N_("ShotInfo"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0206, "AEInfo", N_("AEInfo"),
Packit 01d647
                N_("AEInfo"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0207, "LensInfo", N_("LensInfo"),
Packit 01d647
                N_("LensInfo"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0208, "FlashInfo", N_("FlashInfo"),
Packit 01d647
                N_("FlashInfo"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0209, "AEMeteringSegments", N_("AEMeteringSegments"),
Packit 01d647
                N_("AEMeteringSegments"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x020a, "FlashADump", N_("FlashADump"),
Packit 01d647
                N_("FlashADump"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x020b, "FlashBDump", N_("FlashBDump"),
Packit 01d647
                N_("FlashBDump"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        /* Some missing ! */
Packit 01d647
        TagInfo(0x020d, "WB_RGGBLevelsDaylight", N_("WB_RGGBLevelsDaylight"),
Packit 01d647
                N_("WB_RGGBLevelsDaylight"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x020e, "WB_RGGBLevelsShade", N_("WB_RGGBLevelsShade"),
Packit 01d647
                N_("WB_RGGBLevelsShade"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x020f, "WB_RGGBLevelsCloudy", N_("WB_RGGBLevelsCloudy"),
Packit 01d647
                N_("WB_RGGBLevelsCloudy"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0210, "WB_RGGBLevelsTungsten", N_("WB_RGGBLevelsTungsten"),
Packit 01d647
                N_("WB_RGGBLevelsTungsten"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0211, "WB_RGGBLevelsFluorescentD", N_("WB_RGGBLevelsFluorescentD"),
Packit 01d647
                N_("WB_RGGBLevelsFluorescentD"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0212, "WB_RGGBLevelsFluorescentN", N_("WB_RGGBLevelsFluorescentN"),
Packit 01d647
                N_("WB_RGGBLevelsFluorescentN"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0213, "WB_RGGBLevelsFluorescentW", N_("WB_RGGBLevelsFluorescentW"),
Packit 01d647
                N_("WB_RGGBLevelsFluorescentW"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0214, "WB_RGGBLevelsFlash", N_("WB_RGGBLevelsFlash"),
Packit 01d647
                N_("WB_RGGBLevelsFlash"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0215, "CameraInfo", N_("CameraInfo"),
Packit 01d647
                N_("CameraInfo"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0216, "BatteryInfo", N_("BatteryInfo"),
Packit 01d647
                N_("BatteryInfo"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x021f, "AFInfo", N_("AFInfo"),
Packit 01d647
                N_("AFInfo"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0222, "ColorInfo", N_("ColorInfo"),
Packit 01d647
                N_("ColorInfo"),
Packit 01d647
                pentaxId, makerTags, undefined, -1, printValue), /* TODO: Decoding missing */
Packit 01d647
        TagInfo(0x0229, "SerialNumber", N_("Serial Number"),
Packit 01d647
                N_("Serial Number"),
Packit 01d647
                pentaxId, makerTags, asciiString, -1, printValue),
Packit 01d647
        // End of list marker
Packit 01d647
        TagInfo(0xffff, "(UnknownPentaxMakerNoteTag)", "(UnknownPentaxMakerNoteTag)",
Packit 01d647
                N_("Unknown PentaxMakerNote tag"),
Packit 01d647
                pentaxId, makerTags, asciiString, -1, printValue)
Packit 01d647
    };
Packit 01d647
Packit 01d647
    const TagInfo* PentaxMakerNote::tagList()
Packit 01d647
    {
Packit 01d647
        return tagInfo_;
Packit 01d647
    }
Packit 01d647
Packit 01d647
}}                                       // namespace Internal, Exiv2