digiKam
lensfuniface.h
Go to the documentation of this file.
1 /* ============================================================
2  *
3  * Date : 2008-02-10
4  * Description : a tool to fix automatically camera lens aberrations
5  *
6  * Copyright (C) 2008 by Adrian Schroeter <adrian at suse dot de>
7  * Copyright (C) 2008-2022 by Gilles Caulier <caulier dot gilles at gmail dot com>
8  *
9  * This program is free software; you can redistribute it
10  * and/or modify it under the terms of the GNU General
11  * Public License as published by the Free Software Foundation;
12  * either version 2, or (at your option)
13  * any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * ============================================================ */
21 
22 #ifndef DIGIKAM_LENS_FUN_IFACE_H
23 #define DIGIKAM_LENS_FUN_IFACE_H
24 
25 // LensFun includes
26 
27 /*
28  * Pragma directives to reduce warnings from Lensfun header files.
29  *
30  * TODO: lensfun version > 0.3.2 introduce deprecated methods for the future.
31  * digiKam Code need to be ported to new API when Lensfun 0.4.0 will be releaed.
32  *
33  */
34 #if defined(Q_CC_GNU)
35 # pragma GCC diagnostic push
36 # pragma GCC diagnostic ignored "-Wzero-as-null-pointer-constant"
37 # pragma GCC diagnostic ignored "-Wdeprecated-declarations"
38 #endif
39 
40 #if defined(Q_CC_CLANG)
41 # pragma clang diagnostic push
42 # pragma clang diagnostic ignored "-Wmismatched-tags"
43 # pragma clang diagnostic ignored "-Wdeprecated-declarations"
44 #endif
45 
46 #include <lensfun.h>
47 
48 // Restore warnings
49 #if defined(Q_CC_GNU)
50 # pragma GCC diagnostic pop
51 #endif
52 
53 #if defined(Q_CC_CLANG)
54 # pragma clang diagnostic pop
55 #endif
56 
57 // Local includes
58 
59 #include "dmetadata.h"
60 #include "digikam_export.h"
61 #include "lensfunfilter.h"
62 
63 namespace Digikam
64 {
65 
66 class DIGIKAM_EXPORT LensFunIface
67 {
68 public:
69 
70  typedef const lfCamera* DevicePtr;
71  typedef const lfLens* LensPtr;
73 
75  {
76  MetadataUnavailable = -2,
77  MetadataNoMatch = -1,
78  MetadataPartialMatch = 0,
79  MetadataExactMatch = 1
80  };
81 
82 public:
83 
84  explicit LensFunIface();
85  ~LensFunIface();
86 
87  void setFilterSettings(const LensFunContainer& other);
88 
89  void setSettings(const LensFunContainer& other);
90  LensFunContainer settings() const;
91 
92  LensPtr usedLens() const;
93  void setUsedLens(LensPtr lens);
94 
95  DevicePtr usedCamera() const;
96  void setUsedCamera(DevicePtr cam);
97 
98  lfDatabase* lensFunDataBase() const;
99  const lfCamera* const* lensFunCameras() const;
100 
101  DevicePtr findCamera(const QString& make, const QString& model) const;
102  LensPtr findLens(const QString& model) const;
103 
104  MetadataMatch findFromMetadata(DMetadata* const meta);
105 
106  bool supportsDistortion() const;
107  bool supportsCCA() const;
108  bool supportsVig() const;
109  bool supportsGeometry() const;
110 
114  QString makeDescription() const;
115 
119  QString modelDescription() const;
120 
124  QString lensDescription() const;
125 
126  static QString lensFunVersion();
127 
128 private:
129 
130  QString metadataMatchDebugStr(MetadataMatch val) const;
131  LensList findLenses(const lfCamera* const camera,
132  const QString& lensDesc,
133  const QString& lensMaker=QString()) const;
134 
135  double checkSimilarity(const QString& a, const QString& b) const;
136 
137 private:
138 
139  // Disable
140  LensFunIface(const LensFunIface&) = delete;
141  LensFunIface& operator=(const LensFunIface&) = delete;
142 
143 private:
144 
145  class Private;
146  Private* const d;
147 };
148 
149 } // namespace Digikam
150 
151 Q_DECLARE_METATYPE(Digikam::LensFunIface::DevicePtr)
152 Q_DECLARE_METATYPE(Digikam::LensFunIface::LensPtr)
153 
154 #endif // DIGIKAM_LENS_FUN_IFACE_H
Definition: dmetadata.h:55
Definition: lensfunfilter.h:35
Definition: lensfuniface.h:67
const lfCamera * DevicePtr
Definition: lensfuniface.h:70
MetadataMatch
Definition: lensfuniface.h:75
const lfLens * LensPtr
Definition: lensfuniface.h:71
QList< LensPtr > LensList
Definition: lensfuniface.h:72
Definition: piwigotalker.h:48
Definition: datefolderview.cpp:43