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