Blame src/fujimn_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:      fujimn.cpp
Packit 01d647
  Author(s): Andreas Huggel (ahu) <ahuggel@gmx.net>
Packit 01d647
             Gilles Caulier (gc) <caulier dot gilles at gmail dot com>
Packit 01d647
  History:   18-Feb-04, ahu: created
Packit 01d647
             07-Mar-04, ahu: isolated as a separate component
Packit 01d647
  Credits:   See header file.
Packit 01d647
 */
Packit 01d647
// *****************************************************************************
Packit 01d647
// included header files
Packit 01d647
#include "types.hpp"
Packit 01d647
#include "fujimn_int.hpp"
Packit 01d647
#include "tags_int.hpp"
Packit 01d647
#include "value.hpp"
Packit 01d647
#include "i18n.h"                // NLS support.
Packit 01d647
Packit 01d647
// + standard includes
Packit 01d647
#include <string>
Packit 01d647
#include <sstream>
Packit 01d647
#include <iomanip>
Packit 01d647
#include <cassert>
Packit 01d647
#include <cstring>
Packit 01d647
Packit 01d647
// *****************************************************************************
Packit 01d647
// class member definitions
Packit 01d647
namespace Exiv2 {
Packit 01d647
    namespace Internal {
Packit 01d647
Packit 01d647
    //! OffOn, multiple tags
Packit 01d647
    extern const TagDetails fujiOffOn[] = {
Packit 01d647
        { 0, N_("Off") },
Packit 01d647
        { 1, N_("On")  }
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Sharpness, tag 0x1001
Packit 01d647
    extern const TagDetails fujiSharpness[] = {
Packit 01d647
        { 1, N_("Soft mode 1") },
Packit 01d647
        { 2, N_("Soft mode 2") },
Packit 01d647
        { 3, N_("Normal")      },
Packit 01d647
        { 4, N_("Hard mode 1") },
Packit 01d647
        { 5, N_("Hard mode 2") }
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! WhiteBalance, tag 0x1002
Packit 01d647
    extern const TagDetails fujiWhiteBalance[] = {
Packit 01d647
        {    0, N_("Auto")                     },
Packit 01d647
        {  256, N_("Daylight")                 },
Packit 01d647
        {  512, N_("Cloudy")                   },
Packit 01d647
        {  768, N_("Fluorescent (daylight)")   },
Packit 01d647
        {  769, N_("Fluorescent (warm white)") },
Packit 01d647
        {  770, N_("Fluorescent (cool white)") },
Packit 01d647
        { 1024, N_("Incandescent")             },
Packit 01d647
        { 3480, N_("Custom")                   },
Packit 01d647
        { 3480, N_("Custom")                   } // To silence compiler warning
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Color, tag 0x1003
Packit 01d647
    extern const TagDetails fujiColor[] = {
Packit 01d647
        {   0, N_("Normal")                 },
Packit 01d647
        { 256, N_("High")                   },
Packit 01d647
        { 512, N_("Low")                    },
Packit 01d647
        { 768, N_("Monochrome")             },
Packit 01d647
        { 769, N_("Monochrome + R Filter")  },
Packit 01d647
        { 770, N_("Monochrome + Ye Filter") },
Packit 01d647
        { 771, N_("Monochrome + G Filter")  },
Packit 01d647
        { 784, N_("Sepia")                  },
Packit 01d647
        { 768, N_("Monochrome")             } // To silence compiler warning
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Tone, tag 0x1004
Packit 01d647
    extern const TagDetails fujiTone[] = {
Packit 01d647
        {   0, N_("Normal") },
Packit 01d647
        { 256, N_("High")   },
Packit 01d647
        { 512, N_("Low")    }
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! FlashMode, tag 0x1010
Packit 01d647
    extern const TagDetails fujiFlashMode[] = {
Packit 01d647
        {  0, N_("Auto")              },
Packit 01d647
        {  1, N_("On")                },
Packit 01d647
        {  2, N_("Off")               },
Packit 01d647
        {  3, N_("Red-eye reduction") },
Packit 01d647
        {  4, N_("External")          },
Packit 01d647
        { 16, N_("Commander")         },
Packit 01d647
        { 16, N_("Commander")         }         // To silence compiler warning
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! FocusMode, tag 0x1021
Packit 01d647
    extern const TagDetails fujiFocusMode[] = {
Packit 01d647
        { 0, N_("Auto")   },
Packit 01d647
        { 1, N_("Manual") }
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! PictureMode, tag 0x1031
Packit 01d647
    extern const TagDetails fujiPictureMode[] = {
Packit 01d647
        {   0, N_("Auto")                      },
Packit 01d647
        {   1, N_("Portrait")                  },
Packit 01d647
        {   2, N_("Landscape")                 },
Packit 01d647
        {   4, N_("Sports")                    },
Packit 01d647
        {   5, N_("Night scene")               },
Packit 01d647
        {   6, N_("Program AE")                },
Packit 01d647
        {   7, N_("Natural light")             },
Packit 01d647
        {   8, N_("Anti-blur")                 },
Packit 01d647
        {  10, N_("Sunset")                    },
Packit 01d647
        {  11, N_("Museum")                    },
Packit 01d647
        {  12, N_("Party")                     },
Packit 01d647
        {  13, N_("Flower")                    },
Packit 01d647
        {  14, N_("Text")                      },
Packit 01d647
        {  15, N_("Natural light & flash")     },
Packit 01d647
        {  16, N_("Beach")                     },
Packit 01d647
        {  17, N_("Snow")                      },
Packit 01d647
        {  18, N_("Fireworks")                 },
Packit 01d647
        {  19, N_("Underwater")                },
Packit 01d647
        { 256, N_("Aperture-priority AE")      },
Packit 01d647
        { 512, N_("Shutter speed priority AE") },
Packit 01d647
        { 768, N_("Manual")                    }
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! Continuous, tag 0x1100
Packit 01d647
    extern const TagDetails fujiContinuous[] = {
Packit 01d647
        { 0, N_("Off")              },
Packit 01d647
        { 1, N_("On")               },
Packit 01d647
        { 2, N_("No flash & flash") }
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! FinePixColor, tag 0x1210
Packit 01d647
    extern const TagDetails fujiFinePixColor[] = {
Packit 01d647
        { 0,  N_("Standard")      },
Packit 01d647
        { 16, N_("Chrome")        },
Packit 01d647
        { 48, N_("Black & white") }
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! DynamicRange, tag 0x1400
Packit 01d647
    extern const TagDetails fujiDynamicRange[] = {
Packit 01d647
        { 1, N_("Standard") },
Packit 01d647
        { 3, N_("Wide")     }
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! FilmMode, tag 0x1401
Packit 01d647
    extern const TagDetails fujiFilmMode[] = {
Packit 01d647
        {    0, N_("F0/Standard (Provia)")                         },
Packit 01d647
        {  256, N_("F1/Studio Portrait")                           },
Packit 01d647
        {  272, N_("F1a/Studio Portrait Enhanced Saturation")      },
Packit 01d647
        {  288, N_("F1b/Studio Portrait Smooth Skin Tone (Astia)") },
Packit 01d647
        {  304, N_("F1c/Studio Portrait Increased Sharpness")      },
Packit 01d647
        {  512, N_("F2/Fujichrome (Velvia)")                       },
Packit 01d647
        {  768, N_("F3/Studio Portrait Ex")                        },
Packit 01d647
        { 1024, N_("F4/Velvia")                                    },
Packit 01d647
        { 1280, N_("Pro Neg. Std")                                 },
Packit 01d647
        { 1281, N_("Pro Neg. Hi")                                  },
Packit 01d647
        { 1536, N_("Classic Chrome")                               },
Packit 01d647
    };
Packit 01d647
Packit 01d647
    //! DynamicRange, tag 0x1402
Packit 01d647
    extern const TagDetails fujiDynamicRangeSetting[] = {
Packit 01d647
        {     0, N_("Auto (100-400%)")      },
Packit 01d647
        {     1, N_("Raw")                  },
Packit 01d647
        {   256, N_("Standard (100%)")      },
Packit 01d647
        {   512, N_("Wide mode 1 (230%)")   },
Packit 01d647
        {   513, N_("Wide mode 2 (400%)")   },
Packit 01d647
        { 32768, N_("Film simulation mode") }
Packit 01d647
    };
Packit 01d647
Packit 01d647
    // Fujifilm MakerNote Tag Info
Packit 01d647
    const TagInfo FujiMakerNote::tagInfo_[] = {
Packit 01d647
        TagInfo(0x0000, "Version", N_("Version"),
Packit 01d647
                N_("Fujifilm Makernote version"),
Packit 01d647
                fujiId, makerTags, undefined, -1, printValue),
Packit 01d647
        TagInfo(0x0010, "SerialNumber", N_("Serial Number"),
Packit 01d647
                N_("This number is unique, and contains the date of manufacture, "
Packit 01d647
                   "but is not the same as the number printed on the camera body."),
Packit 01d647
                fujiId, makerTags, asciiString, -1, printValue),
Packit 01d647
        TagInfo(0x1000, "Quality", N_("Quality"),
Packit 01d647
                N_("Image quality setting"),
Packit 01d647
                fujiId, makerTags, asciiString, -1, printValue),
Packit 01d647
        TagInfo(0x1001, N_("Sharpness"), N_("Sharpness"),
Packit 01d647
                N_("Sharpness setting"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiSharpness)),
Packit 01d647
        TagInfo(0x1002, "WhiteBalance", N_("White Balance"),
Packit 01d647
                N_("White balance setting"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiWhiteBalance)),
Packit 01d647
        TagInfo(0x1003, "Color", N_("Color"),
Packit 01d647
                N_("Chroma saturation setting"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiColor)),
Packit 01d647
        TagInfo(0x1004, "Tone", N_("Tone"),
Packit 01d647
                N_("Contrast setting"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiTone)),
Packit 01d647
        TagInfo(0x1010, "FlashMode", N_("Flash Mode"),
Packit 01d647
                N_("Flash firing mode setting"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFlashMode)),
Packit 01d647
        TagInfo(0x1011, "FlashStrength", N_("Flash Strength"),
Packit 01d647
                N_("Flash firing strength compensation setting"),
Packit 01d647
                fujiId, makerTags, signedRational, -1, printValue),
Packit 01d647
        TagInfo(0x1020, "Macro", N_("Macro"),
Packit 01d647
                N_("Macro mode setting"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)),
Packit 01d647
        TagInfo(0x1021, "FocusMode", N_("Focus Mode"),
Packit 01d647
                N_("Focusing mode setting"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFocusMode)),
Packit 01d647
        TagInfo(0x1022, "0x1022", "0x1022",
Packit 01d647
                N_("Unknown"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, printValue),
Packit 01d647
        TagInfo(0x1030, "SlowSync", N_("Slow Sync"),
Packit 01d647
                N_("Slow synchro mode setting"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)),
Packit 01d647
        TagInfo(0x1031, "PictureMode", N_("Picture Mode"),
Packit 01d647
                N_("Picture mode setting"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiPictureMode)),
Packit 01d647
        TagInfo(0x1032, "0x1032", "0x1032",
Packit 01d647
                N_("Unknown"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, printValue),
Packit 01d647
        TagInfo(0x1100, "Continuous", N_("Continuous"),
Packit 01d647
                N_("Continuous shooting or auto bracketing setting"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiContinuous)),
Packit 01d647
        TagInfo(0x1101, "SequenceNumber", N_("Sequence Number"),
Packit 01d647
                N_("Sequence number"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, printValue),
Packit 01d647
        TagInfo(0x1200, "0x1200", "0x1200",
Packit 01d647
                N_("Unknown"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, printValue),
Packit 01d647
        TagInfo(0x1210, "FinePixColor", N_("FinePix Color"),
Packit 01d647
                N_("Fuji FinePix color setting"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFinePixColor)),
Packit 01d647
        TagInfo(0x1300, "BlurWarning", N_("Blur Warning"),
Packit 01d647
                N_("Blur warning status"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)),
Packit 01d647
        TagInfo(0x1301, "FocusWarning", N_("Focus Warning"),
Packit 01d647
                N_("Auto Focus warning status"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)),
Packit 01d647
        TagInfo(0x1302, "ExposureWarning", N_("Exposure Warning"),
Packit 01d647
                N_("Auto exposure warning status"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiOffOn)),
Packit 01d647
        TagInfo(0x1400, "DynamicRange", N_("Dynamic Range"),
Packit 01d647
                N_("Dynamic range"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDynamicRange)),
Packit 01d647
        TagInfo(0x1401, "FilmMode", N_("Film Mode"),
Packit 01d647
                N_("Film mode"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiFilmMode)),
Packit 01d647
        TagInfo(0x1402, "DynamicRangeSetting", N_("Dynamic Range Setting"),
Packit 01d647
                N_("Dynamic range settings"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, EXV_PRINT_TAG(fujiDynamicRangeSetting)),
Packit 01d647
        TagInfo(0x1403, "DevelopmentDynamicRange", N_("Development Dynamic Range"),
Packit 01d647
                N_("Development dynamic range"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, printValue),
Packit 01d647
        TagInfo(0x1404, "MinFocalLength", N_("Minimum Focal Length"),
Packit 01d647
                N_("Minimum focal length"),
Packit 01d647
                fujiId, makerTags, unsignedRational, -1, printValue),
Packit 01d647
        TagInfo(0x1405, "MaxFocalLength", N_("Maximum Focal Length"),
Packit 01d647
                N_("Maximum focal length"),
Packit 01d647
                fujiId, makerTags, unsignedRational, -1, printValue),
Packit 01d647
        TagInfo(0x1406, "MaxApertureAtMinFocal", N_("Maximum Aperture at Minimum Focal"),
Packit 01d647
                N_("Maximum aperture at minimum focal"),
Packit 01d647
                fujiId, makerTags, unsignedRational, -1, printValue),
Packit 01d647
        TagInfo(0x1407, "MaxApertureAtMaxFocal", N_("Maximum Aperture at Maximum Focal"),
Packit 01d647
                N_("Maximum aperture at maximum focal"),
Packit 01d647
                fujiId, makerTags, unsignedRational, -1, printValue),
Packit 01d647
        TagInfo(0x8000, "FileSource", N_("File Source"),
Packit 01d647
                N_("File source"),
Packit 01d647
                fujiId, makerTags, asciiString, -1, printValue),
Packit 01d647
        TagInfo(0x8002, "OrderNumber", N_("Order Number"),
Packit 01d647
                N_("Order number"),
Packit 01d647
                fujiId, makerTags, unsignedLong, -1, printValue),
Packit 01d647
        TagInfo(0x8003, "FrameNumber", N_("Frame Number"),
Packit 01d647
                N_("Frame number"),
Packit 01d647
                fujiId, makerTags, unsignedShort, -1, printValue),
Packit 01d647
        // End of list marker
Packit 01d647
        TagInfo(0xffff, "(UnknownFujiMakerNoteTag)", "(UnknownFujiMakerNoteTag)",
Packit 01d647
                N_("Unknown FujiMakerNote tag"),
Packit 01d647
                fujiId, makerTags, asciiString, -1, printValue)
Packit 01d647
    };
Packit 01d647
Packit 01d647
    const TagInfo* FujiMakerNote::tagList()
Packit 01d647
    {
Packit 01d647
        return tagInfo_;
Packit 01d647
    }
Packit 01d647
Packit 01d647
}}                                      // namespace Internal, Exiv2