Zivid C++ API  2.4.2+1a2e8cfb-1
Defining the Future of 3D Machine Vision
SettingsInfo.h
Go to the documentation of this file.
1 
2 
3 /*******************************************************************************
4 
5  * This file is part of the Zivid 3D Camera API
6 
7  *
8 
9  * Copyright 2015-2021 (C) Zivid AS
10 
11  * All rights reserved.
12 
13  *
14 
15  * Zivid Software License, v1.0
16 
17  *
18 
19  * Redistribution and use in source and binary forms, with or without
20 
21  * modification, are permitted provided that the following conditions are met:
22 
23  *
24 
25  * 1. Redistributions of source code must retain the above copyright notice,
26 
27  * this list of conditions and the following disclaimer.
28 
29  *
30 
31  * 2. Redistributions in binary form must reproduce the above copyright notice,
32 
33  * this list of conditions and the following disclaimer in the documentation
34 
35  * and/or other materials provided with the distribution.
36 
37  *
38 
39  * 3. Neither the name of Zivid AS nor the names of its contributors may be used
40 
41  * to endorse or promote products derived from this software without specific
42 
43  * prior written permission.
44 
45  *
46 
47  * 4. This software, with or without modification, must not be used with any
48 
49  * other 3D camera than from Zivid AS.
50 
51  *
52 
53  * 5. Any software provided in binary form under this license must not be
54 
55  * reverse engineered, decompiled, modified and/or disassembled.
56 
57  *
58 
59  * THIS SOFTWARE IS PROVIDED BY ZIVID AS "AS IS" AND ANY EXPRESS OR IMPLIED
60 
61  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
62 
63  * MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE
64 
65  * DISCLAIMED. IN NO EVENT SHALL ZIVID AS OR CONTRIBUTORS BE LIABLE FOR ANY
66 
67  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
68 
69  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
70 
71  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
72 
73  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
74 
75  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
76 
77  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
78 
79  *
80 
81  * Contact: Zivid Customer Success Team <customersuccess@zivid.com>
82 
83  * Info: http://www.zivid.com
84 
85  ******************************************************************************/
86 
87 
88 
89 #pragma once
90 
91 #include <Zivid/CameraInfo.h>
94 #include <Zivid/Range.h>
95 #include <Zivid/Settings.h>
96 #include <Zivid/Settings2D.h>
97 
98 #define ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(T) ZIVID_CORE_EXPORT T defaultValue(Tag<T> tag, const CameraInfo &cameraInfo);
99 
100 #define ZIVID_DETAIL_CAMERA_VALID_VALUES(T) \
101  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(T) \
102  ZIVID_CORE_EXPORT std::set<T::ValueType> validValues(Tag<T> tag, const CameraInfo &cameraInfo)
103 
104 #define ZIVID_DETAIL_CAMERA_VALID_RANGE(T) \
105  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(T) \
106  ZIVID_CORE_EXPORT Range<T::ValueType> validRange(Tag<T> tag, const CameraInfo &cameraInfo)
107 
108 namespace Zivid
109 {
110 #ifndef NO_DOC
112  namespace Detail
113  {
114  template<typename T>
115  using Tag = Detail::TypeTraits::TypeIdentity<T>;
116 
117  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Acquisition);
118  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Acquisitions);
119  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Experimental);
120  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Color::Balance);
121  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Color);
122  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Color::Experimental);
123  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Color::Experimental::ToneMapping);
124  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Filters::Experimental::ContrastDistortion::Correction);
125  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Filters::Experimental::ContrastDistortion::Removal);
126  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Filters::Experimental::ContrastDistortion);
127  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Filters::Experimental);
128  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Filters::Noise::Removal);
129  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Filters::Noise);
130  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Filters::Outlier::Removal);
131  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Filters::Outlier);
132  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Filters::Reflection::Removal);
133  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Filters::Reflection);
134  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Filters::Smoothing::Gaussian);
135  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Filters::Smoothing);
136  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing::Filters);
137  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings::Processing);
139  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings2D::Acquisition);
140  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings2D::Acquisitions);
141  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings2D::Processing::Color::Balance);
142  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings2D::Processing::Color);
143  ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(Settings2D::Processing);
145 
146  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings::Acquisition::Aperture);
147  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings::Acquisition::Brightness);
148  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings::Acquisition::ExposureTime);
149  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings::Acquisition::Gain);
150  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings::Processing::Color::Balance::Blue);
151  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings::Processing::Color::Balance::Green);
152  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings::Processing::Color::Balance::Red);
153  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings::Processing::Color::Gamma);
155  Settings::Processing::Filters::Experimental::ContrastDistortion::Correction::Strength);
157  Settings::Processing::Filters::Experimental::ContrastDistortion::Removal::Threshold);
158  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings::Processing::Filters::Noise::Removal::Threshold);
159  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings::Processing::Filters::Outlier::Removal::Threshold);
160  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings::Processing::Filters::Smoothing::Gaussian::Sigma);
161  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings2D::Acquisition::Aperture);
162  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings2D::Acquisition::Brightness);
163  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings2D::Acquisition::ExposureTime);
164  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings2D::Acquisition::Gain);
165  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings2D::Processing::Color::Balance::Blue);
166  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings2D::Processing::Color::Balance::Green);
167  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings2D::Processing::Color::Balance::Red);
168  ZIVID_DETAIL_CAMERA_VALID_RANGE(Settings2D::Processing::Color::Gamma);
169 
170  ZIVID_DETAIL_CAMERA_VALID_VALUES(Settings::Experimental::Engine);
171  ZIVID_DETAIL_CAMERA_VALID_VALUES(Settings::Processing::Color::Experimental::ToneMapping::Enabled);
173  Settings::Processing::Filters::Experimental::ContrastDistortion::Correction::Enabled);
175  Settings::Processing::Filters::Experimental::ContrastDistortion::Removal::Enabled);
176  ZIVID_DETAIL_CAMERA_VALID_VALUES(Settings::Processing::Filters::Noise::Removal::Enabled);
177  ZIVID_DETAIL_CAMERA_VALID_VALUES(Settings::Processing::Filters::Outlier::Removal::Enabled);
178  ZIVID_DETAIL_CAMERA_VALID_VALUES(Settings::Processing::Filters::Reflection::Removal::Enabled);
179  ZIVID_DETAIL_CAMERA_VALID_VALUES(Settings::Processing::Filters::Smoothing::Gaussian::Enabled);
180  } // namespace Detail
181 #endif
182 
183  namespace Experimental
184  {
185  namespace SettingsInfo
186  {
187  template<typename T>
188  T defaultValue(const CameraInfo &cameraInfo)
189  {
190  return Detail::defaultValue(Detail::Tag<T>{}, cameraInfo);
191  }
192 
193  template<typename T>
194  std::set<typename T::ValueType> validValues(const CameraInfo &cameraInfo)
195  {
196  return Detail::validValues(Detail::Tag<T>{}, cameraInfo);
197  }
198 
199  template<typename T, typename Ret = Range<typename T::ValueType>>
200  Ret validRange(const CameraInfo &cameraInfo)
201  {
202  return Detail::validRange(Detail::Tag<T>{}, cameraInfo);
203  }
204  } // namespace SettingsInfo
205  } // namespace Experimental
206 } // namespace Zivid
#define ZIVID_DETAIL_CAMERA_VALID_RANGE(T)
Definition: SettingsInfo.h:104
#define ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(T)
Definition: SettingsInfo.h:98
#define ZIVID_DETAIL_CAMERA_VALID_VALUES(T)
Definition: SettingsInfo.h:100
Information about camera model, serial number etc.
Definition: CameraInfo.h:120
T defaultValue(const CameraInfo &cameraInfo)
Definition: SettingsInfo.h:188
Ret validRange(const CameraInfo &cameraInfo)
Definition: SettingsInfo.h:200
std::set< typename T::ValueType > validValues(const CameraInfo &cameraInfo)
Definition: SettingsInfo.h:194
The main Zivid namespace. All Zivid code is found here
Definition: Application.h:99