lensfun 0.3.4.0
lensfun.h
Go to the documentation of this file.
1/* -*- mode:c++ -*- */
2/*
3 Lensfun - a library for maintaining a database of photographical lenses,
4 and providing the means to correct some of the typical lens distortions.
5 Copyright (C) 2007 by Andrew Zabolotny
6
7 This library is free software; you can redistribute it and/or
8 modify it under the terms of the GNU Library General Public
9 License as published by the Free Software Foundation; either
10 version 2 of the License, or (at your option) any later version.
11
12 This library 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 GNU
15 Library General Public License for more details.
16
17 You should have received a copy of the GNU Library General Public
18 License along with this library; if not, write to the Free
19 Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20*/
21
22#ifndef __LENSFUN_H__
23#define __LENSFUN_H__
24
25#include <stddef.h>
26
27#ifdef __cplusplus
28extern "C" {
30# define C_TYPEDEF(t,c)
31#else
32# define C_TYPEDEF(t,c) typedef t c c;
33#endif
34
39
40/*----------------------------------------------------------------------------*/
41
47
49#define LF_VERSION_MAJOR 0
51#define LF_VERSION_MINOR 3
53#define LF_VERSION_MICRO 4
55#define LF_VERSION_BUGFIX 0
57#define LF_VERSION ((LF_VERSION_MAJOR << 24) | (LF_VERSION_MINOR << 16) | (LF_VERSION_MICRO << 8) | LF_VERSION_BUGFIX)
58
60#define LF_MIN_DATABASE_VERSION 0
62#define LF_MAX_DATABASE_VERSION 1
63
64#if defined CONF_LENSFUN_STATIC
66# define LF_EXPORT
67#else
68# ifdef CONF_SYMBOL_VISIBILITY
69# if defined PLATFORM_WINDOWS
70# define LF_EXPORT __declspec(dllexport)
71# elif defined CONF_COMPILER_GCC || __clang__
72# define LF_EXPORT __attribute__((visibility("default")))
73# else
74# error "I don't know how to change symbol visibility for your compiler"
75# endif
76# else
77# if defined PLATFORM_WINDOWS || defined _MSC_VER
78# define LF_EXPORT __declspec(dllimport)
79# else
80# define LF_EXPORT
81# endif
82# endif
83#endif
84
85#ifndef CONF_LENSFUN_INTERNAL
87# ifdef __GNUC__
88# define DEPRECATED __attribute__((deprecated))
89# elif defined(_MSC_VER)
90# define DEPRECATED __declspec(deprecated)
91# else
92# pragma message("WARNING: You need to implement DEPRECATED for this compiler")
93# define DEPRECATED
94# endif
95#else
96# define DEPRECATED
97#endif
98
100#define cbool int
101
110typedef char *lfMLstr;
111
122
123C_TYPEDEF (enum, lfError)
124
125
126typedef unsigned char lf_u8;
128typedef unsigned short lf_u16;
130typedef unsigned int lf_u32;
132typedef float lf_f32;
134typedef double lf_f64;
135
144LF_EXPORT void lf_free (void *data);
145
154LF_EXPORT const char *lf_mlstr_get (const lfMLstr str);
155
172LF_EXPORT lfMLstr lf_mlstr_add (lfMLstr str, const char *lang, const char *trstr);
173
183
185
186/*----------------------------------------------------------------------------*/
187
194
204{
212 char **Compat;
213
214#ifdef __cplusplus
219
223 lfMount (const lfMount &other);
224
228 lfMount &operator = (const lfMount &other);
229
234
245 void SetName (const char *val, const char *lang = NULL);
246
252 void AddCompat (const char *val);
253
259 bool Check ();
260#endif
261};
262
263C_TYPEDEF (struct, lfMount)
264
265
273
284
294LF_EXPORT void lf_mount_copy (lfMount *dest, const lfMount *source);
295
298
300
301/*----------------------------------------------------------------------------*/
302
309
321{
329 char *Mount;
333 int Score;
334
335#ifdef __cplusplus
340
344 lfCamera (const lfCamera &other);
345
350
354 lfCamera &operator = (const lfCamera &other);
355
366 void SetMaker (const char *val, const char *lang = NULL);
367
378 void SetModel (const char *val, const char *lang = NULL);
379
390 void SetVariant (const char *val, const char *lang = NULL);
391
397 void SetMount (const char *val);
398
404 bool Check ();
405#endif
406};
407
408C_TYPEDEF (struct, lfCamera)
409
410
418
429
439LF_EXPORT void lf_camera_copy (lfCamera *dest, const lfCamera *source);
440
443
445
446/*----------------------------------------------------------------------------*/
447
454
498
500
501
508{
512 float Focal;
514 float Terms [3];
515};
516
518
519
562
563C_TYPEDEF (enum, lfTCAModel)
564
565
573{
577 float Focal;
579 float Terms [6];
580};
581
583
584
615
617
618
626{
630 float Focal;
632 float Aperture;
634 float Distance;
636 float Terms [3];
637};
638
640
641
653
655
656
660{
662 float Focal;
673 float Crop [4];
674};
675
677
678
686{
688 float Focal;
699};
700
702
703
708{
710 float Focal;
723};
724
726
727
731{
733 const char *Name;
735 float Min;
737 float Max;
739 float Default;
740};
741
742C_TYPEDEF (struct, lfParameter)
743
744
789
790C_TYPEDEF (enum, lfLensType)
791
792
802{
808 float MinFocal;
810 float MaxFocal;
816 char **Mounts;
826 float CenterX;
828 float CenterY;
848 int Score;
849
850#ifdef __cplusplus
855
859 lfLens (const lfLens &other);
860
865
869 lfLens &operator = (const lfLens &other);
870
881 void SetMaker (const char *val, const char *lang = NULL);
882
893 void SetModel (const char *val, const char *lang = NULL);
894
902 void AddMount (const char *val);
903
913
919 bool RemoveCalibDistortion (int idx);
920
930 void AddCalibTCA (const lfLensCalibTCA *tcac);
931
937 bool RemoveCalibTCA (int idx);
938
948
954 bool RemoveCalibVignetting (int idx);
955
965
971 bool RemoveCalibCrop (int idx);
972
985
996
1006
1013 bool RemoveCalibRealFocal (int idx);
1014
1024
1030 bool Check ();
1031
1047 static const char *GetDistortionModelDesc (
1048 lfDistortionModel model, const char **details, const lfParameter ***params);
1064 static const char *GetTCAModelDesc (
1065 lfTCAModel model, const char **details, const lfParameter ***params);
1066
1082 static const char *GetVignettingModelDesc (
1083 lfVignettingModel model, const char **details, const lfParameter ***params);
1084
1100 static const char *GetCropDesc (
1101 lfCropMode mode, const char **details, const lfParameter ***params);
1102
1114 static const char *GetLensTypeDesc (lfLensType type, const char **details);
1115
1123 bool InterpolateDistortion (float focal, lfLensCalibDistortion &res) const;
1124
1132 bool InterpolateTCA (float focal, lfLensCalibTCA &res) const;
1133
1148 float focal, float aperture, float distance, lfLensCalibVignetting &res) const;
1149
1157 bool InterpolateCrop (float focal, lfLensCalibCrop &res) const;
1158
1170 DEPRECATED bool InterpolateFov (float focal, lfLensCalibFov &res) const;
1171
1183 bool InterpolateRealFocal (float focal, lfLensCalibRealFocal &res) const;
1184#endif
1185};
1186
1187C_TYPEDEF (struct, lfLens)
1188
1189
1197
1208
1218LF_EXPORT void lf_lens_copy (lfLens *dest, const lfLens *source);
1219
1222
1225
1228 enum lfDistortionModel model, const char **details, const lfParameter ***params);
1229
1232 enum lfTCAModel model, const char **details, const lfParameter ***params);
1233
1236 enum lfVignettingModel model, const char **details, const lfParameter ***params);
1237
1240 enum lfCropMode mode, const char **details, const lfParameter ***params);
1241
1244 enum lfLensType type, const char **details);
1245
1249
1252
1254LF_EXPORT cbool lf_lens_interpolate_vignetting (const lfLens *lens, float focal, float aperture,
1255 float distance, lfLensCalibVignetting *res);
1256
1259 lfLensCalibCrop *res);
1260
1263 lfLensCalibFov *res);
1264
1268
1271
1274
1277
1280
1283
1286
1289
1292
1295
1298
1301
1304
1306
1307/*----------------------------------------------------------------------------*/
1308
1314
1318enum
1319{
1340};
1341
1361struct LF_EXPORT lfDatabase
1362{
1368
1369#ifdef __cplusplus
1370 lfDatabase ();
1371 ~lfDatabase ();
1372
1377 DEPRECATED static lfDatabase *Create ();
1378
1386
1397 bool LoadDirectory (const char *dirname);
1398
1408
1421 lfError Load (const char *filename);
1422
1437 lfError Load (const char *errcontext, const char *data, size_t data_size);
1438
1446 lfError Save (const char *filename) const;
1447
1461 lfError Save (const char *filename,
1462 const lfMount *const *mounts,
1463 const lfCamera *const *cameras,
1464 const lfLens *const *lenses) const;
1465
1478 static char *Save (const lfMount *const *mounts,
1479 const lfCamera *const *cameras,
1480 const lfLens *const *lenses);
1481
1506 const lfCamera **FindCameras (const char *maker, const char *model) const;
1507
1528 const lfCamera **FindCamerasExt (const char *maker, const char *model,
1529 int sflags = 0) const;
1530
1538 const lfCamera *const *GetCameras () const;
1539
1577 const lfLens **FindLenses (const lfCamera *camera, const char *maker,
1578 const char *model, int sflags = 0) const;
1579
1597 const lfLens **FindLenses (const lfLens *lens, int sflags = 0) const;
1598
1606 const lfLens *const *GetLenses () const;
1607
1615 const lfMount *FindMount (const char *mount) const;
1616
1624 const char *MountName (const char *mount) const;
1625
1633 const lfMount *const *GetMounts () const;
1634
1640 void AddMount (lfMount *mount);
1641
1647 void AddCamera (lfCamera *camera);
1648
1654 void AddLens (lfLens *lens);
1655
1656private:
1657#endif
1658 void *Mounts;
1659 void *Cameras;
1660 void *Lenses;
1661};
1662
1663C_TYPEDEF (struct, lfDatabase)
1664
1665
1676
1687
1690
1692LF_EXPORT lfError lf_db_load_file (lfDatabase *db, const char *filename);
1693
1696
1698LF_EXPORT lfError lf_db_load_data (lfDatabase *db, const char *errcontext,
1699 const char *data, size_t data_size);
1700
1702LF_EXPORT lfError lf_db_save_all (const lfDatabase *db, const char *filename);
1703
1705LF_EXPORT lfError lf_db_save_file (const lfDatabase *db, const char *filename,
1706 const lfMount *const *mounts,
1707 const lfCamera *const *cameras,
1708 const lfLens *const *lenses);
1709
1711LF_EXPORT char *lf_db_save (const lfMount *const *mounts,
1712 const lfCamera *const *cameras,
1713 const lfLens *const *lenses);
1714
1717 const lfDatabase *db, const char *maker, const char *model);
1718
1721 const lfDatabase *db, const char *maker, const char *model, int sflags);
1722
1725
1728 const lfDatabase *db, const lfCamera *camera, const char *maker,
1729 const char *lens, int sflags);
1730
1733 const lfDatabase *db, const lfLens *lens, int sflags);
1734
1737
1739LF_EXPORT const lfMount *lf_db_find_mount (const lfDatabase *db, const char *mount);
1740
1742LF_EXPORT const char *lf_db_mount_name (const lfDatabase *db, const char *mount);
1743
1746
1748
1749/*----------------------------------------------------------------------------*/
1750
1757
1759enum
1760{
1762 LF_MODIFY_TCA = 0x00000001,
1765 /* Value 0x00000004 is deprecated. */
1771 LF_MODIFY_SCALE = 0x00000020,
1774};
1775
1790
1792
1793
1821
1823
1824
1825#define LF_CR_1(a) (LF_CR_ ## a)
1827#define LF_CR_2(a,b) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4))
1829#define LF_CR_3(a,b,c) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1830 ((LF_CR_ ## c) << 8))
1831
1832#define LF_CR_4(a,b,c,d) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1833 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12))
1834
1835#define LF_CR_5(a,b,c,d,e) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1836 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
1837 ((LF_CR_ ## e) << 16))
1838
1839#define LF_CR_6(a,b,c,d,e,f) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1840 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
1841 ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20))
1842
1843#define LF_CR_7(a,b,c,d,e,f,g) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1844 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
1845 ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20) | \
1846 ((LF_CR_ ## g) << 24))
1847
1848#define LF_CR_8(a,b,c,d,e,f,g,h) ((LF_CR_ ## a) | ((LF_CR_ ## b) << 4) | \
1849 ((LF_CR_ ## c) << 8) | ((LF_CR_ ## d) << 12) | \
1850 ((LF_CR_ ## e) << 16) | ((LF_CR_ ## f) << 20) | \
1851 ((LF_CR_ ## g) << 24) | ((LF_CR_ ## h) << 28))
1852
1868typedef void (*lfSubpixelCoordFunc) (void *data, float *iocoord, int count);
1869
1894typedef void (*lfModifyColorFunc) (void *data, float x, float y,
1895 void *pixels, int comp_role, int count);
1896
1909typedef void (*lfModifyCoordFunc) (void *data, float *iocoord, int count);
1910
1911// @cond
1912#ifdef __cplusplus
1913
1915struct lfCallbackData
1916{
1917 int priority;
1918 void *data;
1919 size_t data_size;
1920
1921 virtual ~lfCallbackData() {};
1922};
1923
1924// A test point in the autoscale algorithm
1925typedef struct { float angle, dist; } lfPoint;
1926
1927#endif
1928// @endcond
1929
2011#ifdef __cplusplus
2012}
2013#endif
2014
2016{
2017#ifdef __cplusplus
2039 lfModifier (const lfLens *lens, float crop, int width, int height);
2040 ~lfModifier ();
2041
2068 DEPRECATED static lfModifier *Create (const lfLens *lens, float crop, int width, int height);
2069
2116 const lfLens *lens, lfPixelFormat format, float focal, float aperture,
2117 float distance, float scale, lfLensType targeom, int flags, bool reverse);
2118
2126
2143 void AddCoordCallback (lfModifyCoordFunc callback, int priority,
2144 void *data, size_t data_size);
2145
2163 void AddSubpixelCallback (lfSubpixelCoordFunc callback, int priority,
2164 void *data, size_t data_size);
2165
2182 void AddColorCallback (lfModifyColorFunc callback, int priority,
2183 void *data, size_t data_size);
2184
2199 bool AddSubpixelCallbackTCA (lfLensCalibTCA &model, bool reverse = false);
2200
2216 bool reverse = false);
2217
2231 bool AddCoordCallbackDistortion (lfLensCalibDistortion &model, bool reverse = false);
2232
2247 bool AddCoordCallbackGeometry (lfLensType from, lfLensType to, float focal);
2248
2265 bool AddCoordCallbackScale (float scale, bool reverse = false);
2266
2280 float GetAutoScale (bool reverse);
2281
2311 bool ApplyColorModification (void *pixels, float x, float y, int width, int height,
2312 int comp_role, int row_stride) const;
2313
2344 bool ApplyGeometryDistortion (float xu, float yu, int width, int height,
2345 float *res) const;
2346
2378 bool ApplySubpixelDistortion (float xu, float yu, int width, int height,
2379 float *res) const;
2380
2411 bool ApplySubpixelGeometryDistortion (float xu, float yu, int width, int height,
2412 float *res) const;
2413
2414private:
2445 float GetRealFocalLength (const lfLens *lens, float focal);
2446
2447 void AddCallback (void *arr, lfCallbackData *d,
2448 int priority, void *data, size_t data_size);
2449
2463 double AutoscaleResidualDistance (float *coord) const;
2478 float GetTransformedDistance (lfPoint point) const;
2479
2480 static void ModifyCoord_UnTCA_Linear (void *data, float *iocoord, int count);
2481 static void ModifyCoord_TCA_Linear (void *data, float *iocoord, int count);
2482 static void ModifyCoord_UnTCA_Poly3 (void *data, float *iocoord, int count);
2483 static void ModifyCoord_TCA_Poly3 (void *data, float *iocoord, int count);
2484
2485 static void ModifyCoord_UnDist_Poly3 (void *data, float *iocoord, int count);
2486 static void ModifyCoord_Dist_Poly3 (void *data, float *iocoord, int count);
2487#ifdef VECTORIZATION_SSE
2488 static void ModifyCoord_Dist_Poly3_SSE (void *data, float *iocoord, int count);
2489#endif
2490 static void ModifyCoord_UnDist_Poly5 (void *data, float *iocoord, int count);
2491 static void ModifyCoord_Dist_Poly5 (void *data, float *iocoord, int count);
2492 static void ModifyCoord_UnDist_PTLens (void *data, float *iocoord, int count);
2493 static void ModifyCoord_Dist_PTLens (void *data, float *iocoord, int count);
2494#ifdef VECTORIZATION_SSE
2495 static void ModifyCoord_UnDist_PTLens_SSE (void *data, float *iocoord, int count);
2496 static void ModifyCoord_Dist_PTLens_SSE (void *data, float *iocoord, int count);
2497#endif
2498 static void ModifyCoord_Geom_FishEye_Rect (void *data, float *iocoord, int count);
2499 static void ModifyCoord_Geom_Panoramic_Rect (void *data, float *iocoord, int count);
2500 static void ModifyCoord_Geom_ERect_Rect (void *data, float *iocoord, int count);
2501 static void ModifyCoord_Geom_Rect_FishEye (void *data, float *iocoord, int count);
2502 static void ModifyCoord_Geom_Panoramic_FishEye (void *data, float *iocoord, int count);
2503 static void ModifyCoord_Geom_ERect_FishEye (void *data, float *iocoord, int count);
2504 static void ModifyCoord_Geom_Rect_Panoramic (void *data, float *iocoord, int count);
2505 static void ModifyCoord_Geom_FishEye_Panoramic (void *data, float *iocoord, int count);
2506 static void ModifyCoord_Geom_ERect_Panoramic (void *data, float *iocoord, int count);
2507 static void ModifyCoord_Geom_Rect_ERect (void *data, float *iocoord, int count);
2508 static void ModifyCoord_Geom_FishEye_ERect (void *data, float *iocoord, int count);
2509 static void ModifyCoord_Geom_Panoramic_ERect (void *data, float *iocoord, int count);
2510 static void ModifyCoord_Geom_Orthographic_ERect (void *data, float *iocoord, int count);
2511 static void ModifyCoord_Geom_ERect_Orthographic (void *data, float *iocoord, int count);
2512 static void ModifyCoord_Geom_Stereographic_ERect (void *data, float *iocoord, int count);
2513 static void ModifyCoord_Geom_ERect_Stereographic (void *data, float *iocoord, int count);
2514 static void ModifyCoord_Geom_Equisolid_ERect (void *data, float *iocoord, int count);
2515 static void ModifyCoord_Geom_ERect_Equisolid (void *data, float *iocoord, int count);
2516 static void ModifyCoord_Geom_Thoby_ERect (void *data, float *iocoord, int count);
2517 static void ModifyCoord_Geom_ERect_Thoby (void *data, float *iocoord, int count);
2518#ifdef VECTORIZATION_SSE
2519 static void ModifyColor_DeVignetting_PA_SSE (
2520 void *data, float _x, float _y, lf_f32 *pixels, int comp_role, int count);
2521#endif
2522#ifdef VECTORIZATION_SSE2
2523 static void ModifyColor_DeVignetting_PA_SSE2 (
2524 void *data, float _x, float _y, lf_u16 *pixels, int comp_role, int count);
2525#endif
2526
2527 template<typename T> static void ModifyColor_Vignetting_PA (
2528 void *data, float x, float y, T *rgb, int comp_role, int count);
2529 template<typename T> static void ModifyColor_DeVignetting_PA (
2530 void *data, float x, float y, T *rgb, int comp_role, int count);
2531
2532 static void ModifyCoord_Scale (void *data, float *iocoord, int count);
2533#endif
2535 int Width, Height;
2537 double CenterX, CenterY;
2539 double NormScale, NormUnScale;
2542 double NormalizedInMillimeters;
2545 double AspectRatioCorrection;
2546
2548 void *SubpixelCallbacks;
2550 void *ColorCallbacks;
2552 void *CoordCallbacks;
2553
2555 double MaxX, MaxY;
2556};
2557
2558#ifdef __cplusplus
2559extern "C" {
2560#endif
2561
2562C_TYPEDEF (struct, lfModifier)
2563
2564
2566 const lfLens *lens, float crop, int width, int height);
2567
2570
2573 lfModifier *modifier, const lfLens *lens, lfPixelFormat format,
2574 float focal, float aperture, float distance, float scale,
2575 lfLensType targeom, int flags, cbool reverse);
2576
2579 lfModifier *modifier, lfModifyCoordFunc callback, int priority,
2580 void *data, size_t data_size);
2581
2584 lfModifier *modifier, lfSubpixelCoordFunc callback, int priority,
2585 void *data, size_t data_size);
2586
2589 lfModifier *modifier, lfModifyColorFunc callback, int priority,
2590 void *data, size_t data_size);
2591
2594 lfModifier *modifier, lfLensCalibTCA *model, cbool reverse);
2595
2598 lfModifier *modifier, lfLensCalibVignetting *model,
2599 lfPixelFormat format, cbool reverse);
2600
2603 lfModifier *modifier, lfLensCalibDistortion *model, cbool reverse);
2604
2607 lfModifier *modifier, lfLensType from, lfLensType to, float focal);
2608
2611 lfModifier *modifier, float scale, cbool reverse);
2612
2615 lfModifier *modifier, cbool reverse);
2616
2619 lfModifier *modifier, float xu, float yu, int width, int height, float *res);
2620
2623 lfModifier *modifier, void *pixels, float x, float y, int width, int height,
2624 int comp_role, int row_stride);
2625
2628 lfModifier *modifier, float xu, float yu, int width, int height, float *res);
2629
2632 lfModifier *modifier, float xu, float yu, int width, int height, float *res);
2633
2635
2636#undef cbool
2637
2638#ifdef __cplusplus
2639}
2640#endif
2641
2642#endif /* __LENSFUN_H__ */
lfMLstr lf_mlstr_dup(const lfMLstr str)
Create a complete copy of a multi-language string.
unsigned char lf_u8
Definition lensfun.h:126
char * lfMLstr
Definition lensfun.h:110
void lf_free(void *data)
const char * lf_mlstr_get(const lfMLstr str)
Get a string corresponding to current locale from a multi-language string.
unsigned short lf_u16
Definition lensfun.h:128
#define LF_EXPORT
This macro expands to an appropiate symbol visibility declaration.
Definition lensfun.h:66
double lf_f64
Definition lensfun.h:134
#define DEPRECATED
For marking deprecated functions, see http://stackoverflow.com/a/21265197.
Definition lensfun.h:93
unsigned int lf_u32
Definition lensfun.h:130
float lf_f32
Definition lensfun.h:132
#define cbool
C-compatible bool type; don't bother to define Yet Another Boolean Type.
Definition lensfun.h:100
lfMLstr lf_mlstr_add(lfMLstr str, const char *lang, const char *trstr)
Add a new translated string to a multi-language string.
lfError
Definition lensfun.h:114
@ LF_NO_ERROR
Definition lensfun.h:116
@ LF_NO_DATABASE
Definition lensfun.h:120
@ LF_WRONG_FORMAT
Definition lensfun.h:118
void lf_camera_copy(lfCamera *dest, const lfCamera *source)
Copy the data from one lfCamera structure into another.
cbool lf_camera_check(lfCamera *camera)
lfCamera * lf_camera_new()
Create a new camera object.
void lf_camera_destroy(lfCamera *camera)
Destroy a lfCamera object.
void(* lfSubpixelCoordFunc)(void *data, float *iocoord, int count)
A callback function which modifies the separate coordinates for all color components for every pixel ...
Definition lensfun.h:1868
cbool lf_modifier_apply_subpixel_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
void lf_modifier_add_coord_callback(lfModifier *modifier, lfModifyCoordFunc callback, int priority, void *data, size_t data_size)
void lf_modifier_destroy(lfModifier *modifier)
cbool lf_modifier_add_coord_callback_scale(lfModifier *modifier, float scale, cbool reverse)
cbool lf_modifier_apply_color_modification(lfModifier *modifier, void *pixels, float x, float y, int width, int height, int comp_role, int row_stride)
void lf_modifier_add_subpixel_callback(lfModifier *modifier, lfSubpixelCoordFunc callback, int priority, void *data, size_t data_size)
cbool lf_modifier_add_color_callback_vignetting(lfModifier *modifier, lfLensCalibVignetting *model, lfPixelFormat format, cbool reverse)
float lf_modifier_get_auto_scale(lfModifier *modifier, cbool reverse)
void(* lfModifyCoordFunc)(void *data, float *iocoord, int count)
A callback function which modifies the coordinates of a strip of pixels.
Definition lensfun.h:1909
cbool lf_modifier_apply_geometry_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
void lf_modifier_add_color_callback(lfModifier *modifier, lfModifyColorFunc callback, int priority, void *data, size_t data_size)
cbool lf_modifier_apply_subpixel_geometry_distortion(lfModifier *modifier, float xu, float yu, int width, int height, float *res)
cbool lf_modifier_add_coord_callback_distortion(lfModifier *modifier, lfLensCalibDistortion *model, cbool reverse)
lfModifier * lf_modifier_new(const lfLens *lens, float crop, int width, int height)
int lf_modifier_initialize(lfModifier *modifier, const lfLens *lens, lfPixelFormat format, float focal, float aperture, float distance, float scale, lfLensType targeom, int flags, cbool reverse)
cbool lf_modifier_add_subpixel_callback_TCA(lfModifier *modifier, lfLensCalibTCA *model, cbool reverse)
void(* lfModifyColorFunc)(void *data, float x, float y, void *pixels, int comp_role, int count)
A callback function which modifies the colors of a strip of pixels.
Definition lensfun.h:1894
cbool lf_modifier_add_coord_callback_geometry(lfModifier *modifier, lfLensType from, lfLensType to, float focal)
lfComponentRole
These constants define the role of every pixel component, four bits each. "pixel" refers here to a se...
Definition lensfun.h:1797
lfPixelFormat
A list of pixel formats supported by internal colour callbacks.
Definition lensfun.h:1778
@ LF_MODIFY_TCA
Definition lensfun.h:1762
@ LF_MODIFY_VIGNETTING
Definition lensfun.h:1764
@ LF_MODIFY_GEOMETRY
Definition lensfun.h:1769
@ LF_MODIFY_DISTORTION
Definition lensfun.h:1767
@ LF_MODIFY_SCALE
Definition lensfun.h:1771
@ LF_MODIFY_ALL
Definition lensfun.h:1773
@ LF_CR_NEXT
Definition lensfun.h:1809
@ LF_CR_END
Definition lensfun.h:1802
@ LF_CR_INTENSITY
Definition lensfun.h:1813
@ LF_CR_RED
Definition lensfun.h:1815
@ LF_CR_UNKNOWN
Definition lensfun.h:1811
@ LF_CR_GREEN
Definition lensfun.h:1817
@ LF_CR_BLUE
Definition lensfun.h:1819
@ LF_PF_U16
Definition lensfun.h:1782
@ LF_PF_F64
Definition lensfun.h:1788
@ LF_PF_U8
Definition lensfun.h:1780
@ LF_PF_U32
Definition lensfun.h:1784
@ LF_PF_F32
Definition lensfun.h:1786
const lfCamera ** lf_db_find_cameras_ext(const lfDatabase *db, const char *maker, const char *model, int sflags)
char * lf_db_save(const lfMount *const *mounts, const lfCamera *const *cameras, const lfLens *const *lenses)
const char * lf_db_mount_name(const lfDatabase *db, const char *mount)
const lfMount * lf_db_find_mount(const lfDatabase *db, const char *mount)
lfError lf_db_load_data(lfDatabase *db, const char *errcontext, const char *data, size_t data_size)
lfError lf_db_load(lfDatabase *db)
const lfLens ** lf_db_find_lenses(const lfDatabase *db, const lfLens *lens, int sflags)
const lfLens ** lf_db_find_lenses_hd(const lfDatabase *db, const lfCamera *camera, const char *maker, const char *lens, int sflags)
cbool lf_db_load_directory(lfDatabase *db, const char *dirname)
lfError lf_db_save_all(const lfDatabase *db, const char *filename)
const lfMount *const * lf_db_get_mounts(const lfDatabase *db)
const lfCamera *const * lf_db_get_cameras(const lfDatabase *db)
lfError lf_db_save_file(const lfDatabase *db, const char *filename, const lfMount *const *mounts, const lfCamera *const *cameras, const lfLens *const *lenses)
const lfCamera ** lf_db_find_cameras(const lfDatabase *db, const char *maker, const char *model)
lfDatabase * lf_db_new(void)
Create a new empty database object.
const lfLens *const * lf_db_get_lenses(const lfDatabase *db)
lfError lf_db_load_file(lfDatabase *db, const char *filename)
void lf_db_destroy(lfDatabase *db)
Destroy the database object.
@ LF_SEARCH_LOOSE
This flag selects a looser search algorithm resulting in more results (still sorted by score).
Definition lensfun.h:1327
@ LF_SEARCH_SORT_AND_UNIQUIFY
This flag makes Lensfun to sort the results by focal length, and remove all double lens names.
Definition lensfun.h:1339
cbool lf_lens_interpolate_vignetting(const lfLens *lens, float focal, float aperture, float distance, lfLensCalibVignetting *res)
void lf_lens_add_calib_crop(lfLens *lens, const lfLensCalibCrop *cc)
lfTCAModel
The Lensfun library supports several models for lens lateral chromatic aberrations (also called trans...
Definition lensfun.h:533
cbool lf_lens_remove_calib_real_focal(lfLens *lens, int idx)
void lf_lens_add_calib_vignetting(lfLens *lens, const lfLensCalibVignetting *vc)
cbool lf_lens_check(lfLens *lens)
DEPRECATED cbool lf_lens_remove_calib_fov(lfLens *lens, int idx)
cbool lf_lens_remove_calib_crop(lfLens *lens, int idx)
cbool lf_lens_interpolate_crop(const lfLens *lens, float focal, lfLensCalibCrop *res)
DEPRECATED void lf_lens_add_calib_fov(lfLens *lens, const lfLensCalibFov *cf)
void lf_lens_add_calib_distortion(lfLens *lens, const lfLensCalibDistortion *dc)
void lf_lens_destroy(lfLens *lens)
Destroy a lfLens object.
cbool lf_lens_remove_calib_vignetting(lfLens *lens, int idx)
const char * lf_get_distortion_model_desc(enum lfDistortionModel model, const char **details, const lfParameter ***params)
lfVignettingModel
The Lensfun library supports several models for lens vignetting correction.
Definition lensfun.h:601
cbool lf_lens_remove_calib_tca(lfLens *lens, int idx)
void lf_lens_guess_parameters(lfLens *lens)
cbool lf_lens_interpolate_distortion(const lfLens *lens, float focal, lfLensCalibDistortion *res)
cbool lf_lens_interpolate_tca(const lfLens *lens, float focal, lfLensCalibTCA *res)
lfCropMode
Different crop modes.
Definition lensfun.h:645
DEPRECATED cbool lf_lens_interpolate_fov(const lfLens *lens, float focal, lfLensCalibFov *res)
lfLens * lf_lens_new()
Create a new lens object.
lfDistortionModel
The Lensfun library implements several lens distortion models. This enum lists them.
Definition lensfun.h:469
const char * lf_get_crop_desc(enum lfCropMode mode, const char **details, const lfParameter ***params)
void lf_lens_copy(lfLens *dest, const lfLens *source)
Copy the data from one lfLens structure into another.
lfLensType
Lens type. See Change of projection for further information.
Definition lensfun.h:748
cbool lf_lens_interpolate_real_focal(const lfLens *lens, float focal, lfLensCalibRealFocal *res)
const char * lf_get_vignetting_model_desc(enum lfVignettingModel model, const char **details, const lfParameter ***params)
void lf_lens_add_calib_tca(lfLens *lens, const lfLensCalibTCA *tcac)
const char * lf_get_lens_type_desc(enum lfLensType type, const char **details)
const char * lf_get_tca_model_desc(enum lfTCAModel model, const char **details, const lfParameter ***params)
void lf_lens_add_calib_real_focal(lfLens *lens, const lfLensCalibRealFocal *cf)
cbool lf_lens_remove_calib_distortion(lfLens *lens, int idx)
@ LF_TCA_MODEL_NONE
No TCA correction data is known.
Definition lensfun.h:535
@ LF_TCA_MODEL_LINEAR
Linear lateral chromatic aberrations model.
Definition lensfun.h:547
@ LF_TCA_MODEL_POLY3
Third order polynomial.
Definition lensfun.h:560
@ LF_VIGNETTING_MODEL_PA
Pablo D'Angelo vignetting model (which is a more general variant of the law).
Definition lensfun.h:613
@ LF_VIGNETTING_MODEL_NONE
No vignetting correction data is known.
Definition lensfun.h:603
@ LF_CROP_RECTANGLE
use a rectangular crop
Definition lensfun.h:649
@ LF_CROP_CIRCLE
use a circular crop, e.g. for circular fisheye images
Definition lensfun.h:651
@ LF_NO_CROP
no crop at all
Definition lensfun.h:647
@ LF_DIST_MODEL_POLY5
5th order polynomial model.
Definition lensfun.h:488
@ LF_DIST_MODEL_NONE
Distortion parameters are unknown.
Definition lensfun.h:471
@ LF_DIST_MODEL_PTLENS
PTLens model, which is also used by Hugin.
Definition lensfun.h:496
@ LF_DIST_MODEL_POLY3
3rd order polynomial model, which is a subset of the PTLens model.
Definition lensfun.h:479
@ LF_FISHEYE
Equidistant fisheye.
Definition lensfun.h:761
@ LF_FISHEYE_EQUISOLID
Equisolid fisheye.
Definition lensfun.h:781
@ LF_FISHEYE_THOBY
Fisheye as measured by Thoby (for Nikkor 10.5).
Definition lensfun.h:787
@ LF_UNKNOWN
Unknown lens type.
Definition lensfun.h:750
@ LF_FISHEYE_ORTHOGRAPHIC
Orthographic fisheye.
Definition lensfun.h:777
@ LF_EQUIRECTANGULAR
Equirectangular.
Definition lensfun.h:775
@ LF_RECTILINEAR
Rectilinear lens.
Definition lensfun.h:755
@ LF_FISHEYE_STEREOGRAPHIC
Stereographic fisheye.
Definition lensfun.h:779
@ LF_PANORAMIC
Panoramic (cylindrical)
Definition lensfun.h:768
lfMount * lf_mount_new()
Create a new mount object.
void lf_mount_destroy(lfMount *mount)
Destroy a lfMount object.
void lf_mount_copy(lfMount *dest, const lfMount *source)
Copy the data from one lfMount structure into another.
cbool lf_mount_check(lfMount *mount)
#define C_TYPEDEF(t, c)
Definition lensfun.h:30
Camera data. Unknown fields are set to NULL.
Definition lensfun.h:321
lfMLstr Model
Model name (ex: "Rolleiflex SL35") – same as in EXIF.
Definition lensfun.h:325
lfMLstr Variant
Camera variant. Some cameras use same EXIF id for different models.
Definition lensfun.h:327
~lfCamera()
Destroy a camera object. All allocated fields are freed.
int Score
Camera matching score, used while searching: not actually a camera parameter.
Definition lensfun.h:333
bool Check()
Check if a camera object is valid.
lfMLstr Maker
Camera maker (ex: "Rollei") – same as in EXIF.
Definition lensfun.h:323
void SetVariant(const char *val, const char *lang=NULL)
Add a string to camera variant.
lfCamera(const lfCamera &other)
lfCamera()
Initialize a new camera object. All fields are set to 0.
void SetMaker(const char *val, const char *lang=NULL)
Add a string to camera maker.
char * Mount
Camera mount type (ex: "QBM")
Definition lensfun.h:329
void SetMount(const char *val)
Set the value for camera Mount.
void SetModel(const char *val, const char *lang=NULL)
Add a string to camera model.
float CropFactor
Camera crop factor (ex: 1.0). Must be defined.
Definition lensfun.h:331
A lens database object.
Definition lensfun.h:1362
const lfLens *const * GetLenses() const
Retrieve a full list of lenses.
lfError Save(const char *filename) const
Save the whole database to a file.
void AddMount(lfMount *mount)
Add a mount to the database.
bool LoadDirectory(const char *dirname)
Open and parse all XML files in a given directory.
const lfCamera ** FindCamerasExt(const char *maker, const char *model, int sflags=0) const
Searches all translations of camera maker and model.
const lfLens ** FindLenses(const lfCamera *camera, const char *maker, const char *model, int sflags=0) const
Parse a human-friendly lens description (ex: "smc PENTAX-F 35-105mm F4-5.6" or "SIGMA AF 28-300 F3....
char * HomeDataDir
Home lens database directory (something like "~/.local/share/lensfun")
Definition lensfun.h:1364
const lfLens ** FindLenses(const lfLens *lens, int sflags=0) const
Find a set of lenses that fit certain criteria.
const lfMount *const * GetMounts() const
Retrieve a full list of mounts.
static DEPRECATED lfDatabase * Create()
Create a new empty database object. This function is deprecated and will be removed in the future....
lfError Load(const char *filename)
Load just a specific XML file.
char * UserUpdatesDir
Home lens database directory for automatic updates (something like "~/.local/share/lensfun/updates")
Definition lensfun.h:1367
static char * Save(const lfMount *const *mounts, const lfCamera *const *cameras, const lfLens *const *lenses)
Save a set of camera and lens descriptions into a memory array.
void AddCamera(lfCamera *camera)
Add a camera to the database.
const lfMount * FindMount(const char *mount) const
Return the lfMount structure given the (basic) mount name.
lfError Save(const char *filename, const lfMount *const *mounts, const lfCamera *const *cameras, const lfLens *const *lenses) const
Save a set of camera and lens descriptions to a file.
DEPRECATED void Destroy()
Destroy the database object and free all loaded data.
lfError Load(const char *errcontext, const char *data, size_t data_size)
Load a set of camera/lenses from a memory array.
void AddLens(lfLens *lens)
Add a lens to the database.
lfError Load()
Find and load the lens database.
const char * MountName(const char *mount) const
Get the name of a mount in current locale.
const lfCamera ** FindCameras(const char *maker, const char *model) const
Find a set of cameras that fit given criteria.
const lfCamera *const * GetCameras() const
Retrieve a full list of cameras.
Struct to save image crop, which can depend on the focal length.
Definition lensfun.h:660
float Crop[4]
Crop coordinates, relative to image corresponding image dimension.
Definition lensfun.h:673
enum lfCropMode CropMode
crop mode which should be applied to image to get rid of black borders
Definition lensfun.h:664
float Focal
Focal length in mm at which this calibration data was taken.
Definition lensfun.h:662
Lens distortion calibration data.
Definition lensfun.h:508
float Terms[3]
Distortion coefficients, dependent on model (a,b,c or k1 or k1,k2)
Definition lensfun.h:514
enum lfDistortionModel Model
The type of distortion model used.
Definition lensfun.h:510
float Focal
Focal length in mm at which this calibration data was taken.
Definition lensfun.h:512
Struct to save calibrated field of view, which can depends on the focal length (DEPRECATED)
Definition lensfun.h:686
float FieldOfView
Field of view for given images.
Definition lensfun.h:698
float Focal
Definition lensfun.h:688
Struct to save real focal length, which can depends on the (nominal) focal length.
Definition lensfun.h:708
float RealFocal
Real focal length.
Definition lensfun.h:722
float Focal
Definition lensfun.h:710
Laterlal chromatic aberrations calibration data.
Definition lensfun.h:573
float Terms[6]
The coefficients for TCA, dependent on model; separate for R and B.
Definition lensfun.h:579
float Focal
Focal length in mm at which this calibration data was taken.
Definition lensfun.h:577
enum lfTCAModel Model
The lateral chromatic aberration model used.
Definition lensfun.h:575
Lens vignetting calibration data.
Definition lensfun.h:626
float Distance
Focus distance in meters.
Definition lensfun.h:634
float Aperture
Aperture (f-number) at which this calibration data was taken.
Definition lensfun.h:632
enum lfVignettingModel Model
The lens vignetting model used.
Definition lensfun.h:628
float Terms[3]
Lens vignetting model coefficients (depending on model)
Definition lensfun.h:636
float Focal
Focal length in mm at which this calibration data was taken.
Definition lensfun.h:630
Lens data. Unknown fields are set to NULL or 0.
Definition lensfun.h:802
char ** Mounts
Definition lensfun.h:816
bool RemoveCalibCrop(int idx)
Remove a lens crop entry from the lens crop structure.
lfLensCalibTCA ** CalibTCA
Definition lensfun.h:838
lfMLstr Model
Definition lensfun.h:806
static const char * GetLensTypeDesc(lfLensType type, const char **details)
Get the human-readable lens type name and a short description of this lens type.
DEPRECATED bool RemoveCalibFov(int idx)
Remove a field of view entry from the lens fov structure.
void GuessParameters()
This method fills some fields if they are missing but can be derived from other fields.
bool Check()
Check if a lens object is valid.
lfLensCalibFov ** CalibFov
Definition lensfun.h:844
bool InterpolateRealFocal(float focal, lfLensCalibRealFocal &res) const
Interpolate lens real focal length data for given focal length.
void AddMount(const char *val)
Add a new mount type to this lens.
int Score
Definition lensfun.h:848
lfMLstr Maker
Definition lensfun.h:804
bool InterpolateDistortion(float focal, lfLensCalibDistortion &res) const
Interpolate lens geometry distortion data for given focal length.
float CropFactor
Definition lensfun.h:830
static const char * GetDistortionModelDesc(lfDistortionModel model, const char **details, const lfParameter ***params)
Get the human-readable distortion model name and the descriptions of the parameters required by this ...
float CenterY
Definition lensfun.h:828
lfLens(const lfLens &other)
lfLensCalibRealFocal ** CalibRealFocal
Definition lensfun.h:846
bool InterpolateVignetting(float focal, float aperture, float distance, lfLensCalibVignetting &res) const
Interpolate lens vignetting model parameters for given focal length, aperture, and focus distance.
void AddCalibDistortion(const lfLensCalibDistortion *dc)
Add a new distortion calibration structure to the pool.
bool RemoveCalibVignetting(int idx)
Remove a calibration entry from the vignetting calibration data.
static const char * GetCropDesc(lfCropMode mode, const char **details, const lfParameter ***params)
Get the human-readable crop name and the descriptions of the parameters required by this model.
DEPRECATED void AddCalibFov(const lfLensCalibFov *cf)
Add a new lens fov structure to the pool.
void SetModel(const char *val, const char *lang=NULL)
Add a string to camera model.
void SetMaker(const char *val, const char *lang=NULL)
Add a string to camera maker.
void AddCalibVignetting(const lfLensCalibVignetting *vc)
Add a new vignetting calibration structure to the pool.
float MinFocal
Definition lensfun.h:808
bool InterpolateCrop(float focal, lfLensCalibCrop &res) const
Interpolate lens crop data for given focal length.
lfLens()
Create a new lens object, initializing all fields to default values.
float MaxFocal
Definition lensfun.h:810
lfLensCalibCrop ** CalibCrop
Definition lensfun.h:842
float MinAperture
Definition lensfun.h:812
void AddCalibCrop(const lfLensCalibCrop *cc)
Add a new lens crop structure to the pool.
lfLensCalibDistortion ** CalibDistortion
Definition lensfun.h:836
static const char * GetTCAModelDesc(lfTCAModel model, const char **details, const lfParameter ***params)
Get the human-readable transversal chromatic aberrations model name and the descriptions of the param...
float AspectRatio
Definition lensfun.h:832
void AddCalibTCA(const lfLensCalibTCA *tcac)
Add a new transversal chromatic aberration calibration structure to the pool.
bool InterpolateTCA(float focal, lfLensCalibTCA &res) const
Interpolate lens TCA calibration data for given focal length.
float MaxAperture
Definition lensfun.h:814
float CenterX
Definition lensfun.h:826
lfLensCalibVignetting ** CalibVignetting
Definition lensfun.h:840
bool RemoveCalibTCA(int idx)
Remove a calibration entry from the TCA calibration data.
~lfLens()
Destroy this and all associated objects.
DEPRECATED bool InterpolateFov(float focal, lfLensCalibFov &res) const
Interpolate lens fov data for given focal length.
static const char * GetVignettingModelDesc(lfVignettingModel model, const char **details, const lfParameter ***params)
Get the human-readable vignetting model name and the descriptions of the parameters required by this ...
lfLensType Type
Definition lensfun.h:834
bool RemoveCalibRealFocal(int idx)
Remove a real focal length entry from the lens real focal length structure.
void AddCalibRealFocal(const lfLensCalibRealFocal *cf)
Add a new lens real focal length structure to the pool.
bool RemoveCalibDistortion(int idx)
Remove a calibration entry from the distortion calibration data.
A modifier object contains optimized data required to rectify a image.
Definition lensfun.h:2016
int Initialize(const lfLens *lens, lfPixelFormat format, float focal, float aperture, float distance, float scale, lfLensType targeom, int flags, bool reverse)
Initialize the process of correcting aberrations in a image.
bool AddCoordCallbackScale(float scale, bool reverse=false)
Add the stock image scaling callback into the chain.
lfModifier(const lfLens *lens, float crop, int width, int height)
Create an empty image modifier object.
void AddColorCallback(lfModifyColorFunc callback, int priority, void *data, size_t data_size)
Add a user-defined callback to the color modification chain.
bool AddCoordCallbackGeometry(lfLensType from, lfLensType to, float focal)
Add the stock lens geometry rectification callback into the chain.
void AddSubpixelCallback(lfSubpixelCoordFunc callback, int priority, void *data, size_t data_size)
Add a user-defined callback to the subpixel coordinate rectification chain.
bool ApplySubpixelGeometryDistortion(float xu, float yu, int width, int height, float *res) const
Apply stage 2 & 3 in one step.
bool ApplyColorModification(void *pixels, float x, float y, int width, int height, int comp_role, int row_stride) const
Image correction step 1: fix image colors.
bool AddCoordCallbackDistortion(lfLensCalibDistortion &model, bool reverse=false)
Add the stock lens distortion correcting callback into the chain.
bool ApplyGeometryDistortion(float xu, float yu, int width, int height, float *res) const
Image correction step 2: apply the transforms on a block of pixel coordinates.
DEPRECATED void Destroy()
Destroy the modifier object.
bool ApplySubpixelDistortion(float xu, float yu, int width, int height, float *res) const
Image correction step 3: apply subpixel distortions.
bool AddSubpixelCallbackTCA(lfLensCalibTCA &model, bool reverse=false)
Add the stock TCA correcting callback into the chain.
bool AddColorCallbackVignetting(lfLensCalibVignetting &model, lfPixelFormat format, bool reverse=false)
Add the stock lens vignetting correcting callback into the chain. The vignetting correction callback ...
void AddCoordCallback(lfModifyCoordFunc callback, int priority, void *data, size_t data_size)
Add a user-defined callback to the coordinate correction chain.
float GetAutoScale(bool reverse)
Compute the automatic scale factor for the image.
static DEPRECATED lfModifier * Create(const lfLens *lens, float crop, int width, int height)
Create an empty image modifier object.
This structure contains everything specific to a camera mount.
Definition lensfun.h:204
void AddCompat(const char *val)
Add a mount name to the list of compatible mounts.
bool Check()
Check if a mount object is valid.
lfMount()
Initialize a new mount object. All fields are set to 0.
lfMount(const lfMount &other)
lfMLstr Name
Camera mount name.
Definition lensfun.h:210
void SetName(const char *val, const char *lang=NULL)
Add a string to mount name.
char ** Compat
Definition lensfun.h:212
~lfMount()
Destroy a mount object. All allocated fields are freed.
This structure describes a single parameter for some lens model.
Definition lensfun.h:731
const char * Name
Parameter name (something like 'k', 'k3', 'omega' etc.)
Definition lensfun.h:733
float Max
Maximal value that has sense.
Definition lensfun.h:737
float Min
Minimal value that has sense.
Definition lensfun.h:735
float Default
Default value for the parameter.
Definition lensfun.h:739