1 // ***************************************************************** -*- C++ -*-
2 /*
3  * Copyright (C) 2004-2017 Andreas Huggel <ahuggel@gmx.net>
4  *
5  * This program is part of the Exiv2 distribution.
6  *
7  * This program is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU General Public License
9  * as published by the Free Software Foundation; either version 2
10  * of the License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, 5th Floor, Boston, MA 02110-1301 USA.
20  */
21 /*!
22   @file    sigmamn_int.hpp
23   @brief   Sigma and Foveon MakerNote implemented according to the specification
24            <a href="http://www.x3f.info/technotes/FileDocs/MakerNoteDoc.html">
25            SIGMA and FOVEON EXIF MakerNote Documentation</a> by Foveon.
26   @version $Rev: 4719 $
27   @author  Andreas Huggel (ahu)
28            <a href="mailto:ahuggel@gmx.net">ahuggel@gmx.net</a>
29   @date    02-Apr-04, ahu: created
30  */
31 #ifndef SIGMAMN_INT_HPP_
32 #define SIGMAMN_INT_HPP_
33 
34 // *****************************************************************************
35 // included header files
36 #include "tags.hpp"
37 #include "types.hpp"
38 
39 // + standard includes
40 #include <string>
41 #include <iosfwd>
42 #include <memory>
43 
44 // *****************************************************************************
45 // namespace extensions
46 namespace Exiv2 {
47     namespace Internal {
48 
49 // *****************************************************************************
50 // class definitions
51 
52     //! MakerNote for Sigma (Foveon) cameras
53     class SigmaMakerNote {
54     public:
55         //! Return read-only list of built-in Sigma tags
56         static const TagInfo* tagList();
57 
58         //! @name Print functions for Sigma (Foveon) %MakerNote tags
59         //@{
60         //! Strip the label from the value and print the remainder
61         static std::ostream& printStripLabel(std::ostream& os, const Value& value, const ExifData*);
62         //! Print exposure mode
63         static std::ostream& print0x0008(std::ostream& os, const Value& value, const ExifData*);
64         //! Print metering mode
65         static std::ostream& print0x0009(std::ostream& os, const Value& value, const ExifData*);
66         //@}
67 
68     private:
69         //! Tag information
70         static const TagInfo tagInfo_[];
71 
72     }; // class SigmaMakerNote
73 
74 }}                                      // namespace Internal, Exiv2
75 
76 #endif                                  // #ifndef SIGMAMN_INT_HPP_
77