54#define ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(T) ZIVID_CORE_EXPORT T defaultValue(Tag<T> tag, const CameraInfo &cameraInfo)
56#define ZIVID_DETAIL_CAMERA_VALID_VALUES(T) \
57 ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(T); \
58 ZIVID_CORE_EXPORT std::set<T::ValueType> validValues(Tag<T> tag, const CameraInfo &cameraInfo)
60#define ZIVID_DETAIL_CAMERA_VALID_RANGE(T) \
61 ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(T); \
62 ZIVID_CORE_EXPORT Range<T::ValueType> validRange(Tag<T> tag, const CameraInfo &cameraInfo)
71 using Tag = TypeTraits::TypeIdentity<T>;
92 Settings::Processing::Filters::Experimental::ContrastDistortion::Correction::Strength);
96 Settings::Processing::Filters::Experimental::ContrastDistortion::Removal::Threshold);
123 Settings::Processing::Filters::Experimental::ContrastDistortion::Correction::Enabled);
126 Settings::Processing::Filters::Experimental::ContrastDistortion::Removal::Enabled);
138 class DefaultDataModelSetter
140 const CameraInfo &m_cameraInfo;
143 DefaultDataModelSetter(
const CameraInfo &cameraInfo)
144 : m_cameraInfo(cameraInfo)
147 DefaultDataModelSetter(
const DefaultDataModelSetter &) =
delete;
148 DefaultDataModelSetter(DefaultDataModelSetter &&) =
delete;
149 DefaultDataModelSetter &operator=(
const DefaultDataModelSetter &) =
delete;
150 DefaultDataModelSetter &operator=(DefaultDataModelSetter &&) =
delete;
153 void operator()(T &dataModelNode)
const;
156 template<
typename T,
typename std::enable_if_t<T::nodeType == DataModel::NodeType::group,
bool> = true>
157 T defaultValue(Tag<T> ,
const CameraInfo &cameraInfo)
160 group.forEach(DefaultDataModelSetter(cameraInfo));
165 void DefaultDataModelSetter::operator()(T &dataModelNode)
const
167 dataModelNode = defaultValue(Tag<T>{}, m_cameraInfo);
170 ZIVID_CORE_EXPORT void validateSettings(
const Settings &settings,
const CameraInfo &cameraInfo);
171 ZIVID_CORE_EXPORT void validateSettings(
const Settings2D &settings,
const CameraInfo &cameraInfo);
173 template<
typename SettingNode>
174 constexpr bool settingIsReprocessable()
176 static_assert(DataModel::Detail::IsDataModelType<SettingNode>::value);
177 return std::is_same_v<SettingNode, Settings::Processing>
178 || std::is_same_v<SettingNode, Settings2D::Processing>
179 || TypeTraits::IsInTuple<SettingNode, Settings::Processing::Descendants>::value
180 || TypeTraits::IsInTuple<SettingNode, Settings2D::Processing::Descendants>::value;
186 namespace Experimental
193 return Detail::defaultValue(Detail::Tag<T>{}, cameraInfo);
199 return Detail::validValues(Detail::Tag<T>{}, cameraInfo);
202 template<
typename T,
typename Ret = Range<
typename T::ValueType>>
205 return Detail::validRange(Detail::Tag<T>{}, cameraInfo);
#define ZIVID_CORE_EXPORT
Definition CoreExport.h:56
#define ZIVID_DETAIL_CAMERA_VALID_RANGE(T)
Definition SettingsInfo.h:60
#define ZIVID_DETAIL_CAMERA_DEFAULT_VALUE(T)
Definition SettingsInfo.h:54
#define ZIVID_DETAIL_CAMERA_VALID_VALUES(T)
Definition SettingsInfo.h:56
Information about camera model, serial number etc.
Definition CameraInfo.h:78
Class describing a resolution with a width and a height.
Definition Resolution.h:56
Settings used when capturing 2D images with a Zivid camera.
Definition Settings2D.h:79
Settings used when capturing a 3D capture or 2D+3D capture with a Zivid camera.
Definition Settings.h:81
Definition SettingsInfo.h:189
ZIVID_CORE_EXPORT Resolution resolution2D(const CameraInfo &cameraInfo, const Settings &settings)
Returns the resolution of a 2D frame according to the provided camera information and settings.
T defaultValue(const CameraInfo &cameraInfo)
Definition SettingsInfo.h:191
ZIVID_CORE_EXPORT Resolution resolution(const CameraInfo &cameraInfo, const Settings &settings)
Returns the resolution of captured frames according to the provided camera information and settings.
Ret validRange(const CameraInfo &cameraInfo)
Definition SettingsInfo.h:203
std::set< typename T::ValueType > validValues(const CameraInfo &cameraInfo)
Definition SettingsInfo.h:197
The main Zivid namespace. All Zivid code is found here.
Definition Application.h:84