Coverage Report

Created: 2026-03-21 06:42

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/exiv2/src/olympusmn_int.hpp
Line
Count
Source
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
/*!
3
  @file    olympusmn_int.hpp
4
  @brief   Olympus makernote tags.<br>References:<br>
5
           [1] <a href="http://park2.wakwak.com/%7Etsuruzoh/Computer/Digicams/exif-e.html#APP1">Exif file format,
6
  Appendix 1: MakerNote of Olympus Digicams</a> by TsuruZoh Tachibanaya<br> [2] <a
7
  href="http://www.sno.phy.queensu.ca/~phil/exiftool/">ExifTool</a> by Phil Harvey<br> [3] <a
8
  href="http://www.ozhiker.com/electronics/pjmt/jpeg_info/olympus_mn.html">Olympus Makernote Format Specification</a> by
9
  Evan Hunter<br> [4] email communication with <a href="mailto:wstokes@gmail.com">Will Stokes</a>
10
 */
11
#ifndef OLYMPUSMN_INT_HPP_
12
#define OLYMPUSMN_INT_HPP_
13
14
// *****************************************************************************
15
// standard includes
16
#include <iosfwd>
17
18
// *****************************************************************************
19
// namespace extensions
20
namespace Exiv2 {
21
class ExifData;
22
class Value;
23
struct TagInfo;
24
25
namespace Internal {
26
// *****************************************************************************
27
// class definitions
28
29
//! MakerNote for Olympus cameras
30
class OlympusMakerNote {
31
 public:
32
  //! Return read-only list of built-in Olympus tags
33
75.0k
  static constexpr auto tagList() {
34
75.0k
    return tagInfo_;
35
75.0k
  }
36
  //! Return read-only list of built-in Olympus Camera Settings tags
37
27.7k
  static constexpr auto tagListCs() {
38
27.7k
    return tagInfoCs_;
39
27.7k
  }
40
  //! Return read-only list of built-in Olympus Equipment tags
41
1.16k
  static constexpr auto tagListEq() {
42
1.16k
    return tagInfoEq_;
43
1.16k
  }
44
  //! Return read-only list of built-in Olympus Raw Development tags
45
324
  static constexpr auto tagListRd() {
46
324
    return tagInfoRd_;
47
324
  }
48
  //! Return read-only list of built-in Olympus Raw Development 2 tags
49
302
  static constexpr auto tagListRd2() {
50
302
    return tagInfoRd2_;
51
302
  }
52
  //! Return read-only list of built-in Olympus Image Processing tags
53
687
  static constexpr auto tagListIp() {
54
687
    return tagInfoIp_;
55
687
  }
56
  //! Return read-only list of built-in Olympus Focus Info tags
57
669
  static constexpr auto tagListFi() {
58
669
    return tagInfoFi_;
59
669
  }
60
  //! Return read-only list of built-in Olympus FE tags
61
709
  static constexpr auto tagListFe() {
62
709
    return tagInfoFe_;
63
709
  }
64
  //! Return read-only list of built-in Olympus Raw Info tags
65
420
  static constexpr auto tagListRi() {
66
420
    return tagInfoRi_;
67
420
  }
68
69
  //! @name Print functions for Olympus %MakerNote tags
70
  //@{
71
  //! Print 'Special Mode'
72
  static std::ostream& print0x0200(std::ostream& os, const Value& value, const ExifData*);
73
  //! Print Digital Zoom Factor
74
  static std::ostream& print0x0204(std::ostream& os, const Value& value, const ExifData*);
75
  //! Print White Balance Mode
76
  static std::ostream& print0x1015(std::ostream& os, const Value& value, const ExifData*);
77
  //! Print Olympus equipment Lens type
78
  static std::ostream& print0x0201(std::ostream& os, const Value& value, const ExifData*);
79
  //! Print Olympus CameraID
80
  static std::ostream& print0x0209(std::ostream& os, const Value& value, const ExifData*);
81
  //! Print Olympus equipment Extender
82
  static std::ostream& printEq0x0301(std::ostream& os, const Value& value, const ExifData*);
83
  //! Print Olympus camera settings Focus Mode
84
  static std::ostream& printCs0x0301(std::ostream& os, const Value& value, const ExifData*);
85
  //! Print Olympus camera settings Gradation
86
  static std::ostream& print0x050f(std::ostream& os, const Value& value, const ExifData*);
87
  //! Print Olympus camera settings Noise Filter
88
  static std::ostream& print0x0527(std::ostream& os, const Value& value, const ExifData*);
89
  //! Print Olympus ArtFilter
90
  static std::ostream& print0x0529(std::ostream& os, const Value& value, const ExifData*);
91
  //! Print Olympus focus info ManualFlash
92
  static std::ostream& print0x1209(std::ostream& os, const Value& value, const ExifData*);
93
  //! Print Olympus focus distance
94
  static std::ostream& print0x0305(std::ostream& os, const Value& value, const ExifData*);
95
  //! Print Olympus focus info AF Point
96
  static std::ostream& print0x0308(std::ostream& os, const Value& value, const ExifData*);
97
  //! Print Olympus generic
98
  static std::ostream& printGeneric(std::ostream& os, const Value& value, const ExifData*);
99
  //@}
100
101
 private:
102
  //! Tag information
103
  static const TagInfo tagInfo_[];
104
  static const TagInfo tagInfoCs_[];
105
  static const TagInfo tagInfoEq_[];
106
  static const TagInfo tagInfoRd_[];
107
  static const TagInfo tagInfoRd2_[];
108
  static const TagInfo tagInfoIp_[];
109
  static const TagInfo tagInfoFi_[];
110
  static const TagInfo tagInfoFe_[];
111
  static const TagInfo tagInfoRi_[];
112
113
};  // class OlympusMakerNote
114
115
}  // namespace Internal
116
}  // namespace Exiv2
117
118
#endif  // #ifndef OLYMPUSMN_INT_HPP_