IDS peak AFL v1.8.0
Loading...
Searching...
No Matches
peak_afl_brightness_limit.hpp
Go to the documentation of this file.
1
10
11#pragma once
12
13#include <peak_afl/peak_afl.hpp>
15
18
19#include <memory>
20
21namespace peak
22{
23namespace pipeline
24{
25namespace modules
26{
27namespace autofeature
28{
29namespace features
30{
31
59class BrightnessLimit : public IFeature<IntervalD>
60{
61public:
77 {
78 const auto interval = Get();
79 archive.SetDouble("Min", interval.GetMinimum());
80 archive.SetDouble("Max", interval.GetMaximum());
81 }
82
99 {
100 IntervalD interval{ archive.GetDouble("Min"), archive.GetDouble("Max") };
101 Set(interval);
102 }
103};
104
130{
131public:
144 explicit BrightnessExposureLimit(std::shared_ptr<peak::afl::Controller> controller)
145 : m_controller{ std::move(controller) }
146 {}
147
166 void Set(const IntervalD& value) override
167 {
168 m_controller->SetExposureLimit({ value.GetMinimum(), value.GetMaximum() });
169 }
170
187 {
188 const auto result = m_controller->GetExposureLimit();
189 return { result.min, result.max };
190 }
191
192private:
200 std::shared_ptr<peak::afl::Controller> m_controller;
201};
202
225{
226public:
238 explicit BrightnessGainLimit(std::shared_ptr<peak::afl::Controller> controller)
239 : m_controller{ std::move(controller) }
240 {}
241
249 void Set(const IntervalD& value) override
250 {
251 m_controller->SetGainLimit({ value.GetMinimum(), value.GetMaximum() });
252 }
253
262 {
263 const auto result = m_controller->GetGainLimit();
264 return { result.min, result.max };
265 }
266
267private:
268 std::shared_ptr<peak::afl::Controller> m_controller;
269};
270
292{
293public:
306 explicit BrightnessGainAnalogLimit(std::shared_ptr<peak::afl::Controller> controller)
307 : m_controller{ std::move(controller) }
308 {}
309
322 void Set(const IntervalD& value) override
323 {
324 m_controller->SetGainAnalogLimit({ value.GetMinimum(), value.GetMaximum() });
325 }
326
340 {
341 const auto result = m_controller->GetGainAnalogLimit();
342 return { result.min, result.max };
343 }
344
345private:
346 std::shared_ptr<peak::afl::Controller> m_controller;
347};
348
370{
371public:
384 explicit BrightnessGainDigitalLimit(std::shared_ptr<peak::afl::Controller> controller)
385 : m_controller{ std::move(controller) }
386 {}
387
400 void Set(const IntervalD& value) override
401 {
402 m_controller->SetGainDigitalLimit({ value.GetMinimum(), value.GetMaximum() });
403 }
404
418 {
419 const auto result = m_controller->GetGainDigitalLimit();
420 return { result.min, result.max };
421 }
422
423private:
424 std::shared_ptr<peak::afl::Controller> m_controller;
425};
426
449{
450public:
463 explicit BrightnessGainCombinedLimit(std::shared_ptr<peak::afl::Controller> controller)
464 : m_controller{ std::move(controller) }
465 {}
466
479 void Set(const IntervalD& value) override
480 {
481 m_controller->SetGainCombinedLimit({ value.GetMinimum(), value.GetMaximum() });
482 }
483
497 {
498 const auto result = m_controller->GetGainCombinedLimit();
499 return { result.min, result.max };
500 }
501
502private:
503 std::shared_ptr<peak::afl::Controller> m_controller;
504};
505
531{
532public:
545 explicit BrightnessGainHostLimit(std::shared_ptr<peak::afl::Controller> controller)
546 : m_controller{ std::move(controller) }
547 {}
548
561 void Set(const IntervalD& value) override
562 {
563 m_controller->SetGainHostLimit({ value.GetMinimum(), value.GetMaximum() });
564 }
565
579 {
580 const auto result = m_controller->GetGainHostLimit();
581 return { result.min, result.max };
582 }
583
584private:
585 std::shared_ptr<peak::afl::Controller> m_controller;
586};
587
588} // namespace features
589} // namespace autofeature
590} // namespace modules
591} // namespace pipeline
592} // namespace peak
Interface for a hierarchical key-value archive system.
Definition peak_common_iarchive.hpp:59
virtual PEAK_COMMON_NO_DISCARD double GetDouble(const std::string &key) const =0
Retrieves a double-precision number by key.
virtual void SetDouble(const std::string &key, double value)=0
Stores a double-precision floating point number.
PEAK_COMMON_NO_DISCARD IntervalD Get() const override
Gets the current exposure time limits.
Definition peak_afl_brightness_limit.hpp:186
BrightnessExposureLimit(std::shared_ptr< peak::afl::Controller > controller)
Constructs a BrightnessExposureLimit feature with the specified controller.
Definition peak_afl_brightness_limit.hpp:144
void Set(const IntervalD &value) override
Sets the exposure time limits.
Definition peak_afl_brightness_limit.hpp:166
PEAK_COMMON_NO_DISCARD IntervalD Get() const override
Gets the current analog gain limits.
Definition peak_afl_brightness_limit.hpp:339
void Set(const IntervalD &value) override
Sets the analog gain limits.
Definition peak_afl_brightness_limit.hpp:322
BrightnessGainAnalogLimit(std::shared_ptr< peak::afl::Controller > controller)
Constructs an analog gain limit feature with the specified controller.
Definition peak_afl_brightness_limit.hpp:306
PEAK_COMMON_NO_DISCARD IntervalD Get() const override
Gets the current combined gain limits.
Definition peak_afl_brightness_limit.hpp:496
BrightnessGainCombinedLimit(std::shared_ptr< peak::afl::Controller > controller)
Constructs a combined gain limit feature with the specified controller.
Definition peak_afl_brightness_limit.hpp:463
void Set(const IntervalD &value) override
Sets the combined gain limits.
Definition peak_afl_brightness_limit.hpp:479
PEAK_COMMON_NO_DISCARD IntervalD Get() const override
Gets the current digital gain limits.
Definition peak_afl_brightness_limit.hpp:417
BrightnessGainDigitalLimit(std::shared_ptr< peak::afl::Controller > controller)
Constructs a digital gain limit feature with the specified controller.
Definition peak_afl_brightness_limit.hpp:384
void Set(const IntervalD &value) override
Sets the digital gain limits.
Definition peak_afl_brightness_limit.hpp:400
PEAK_COMMON_NO_DISCARD IntervalD Get() const override
Gets the current host gain limits.
Definition peak_afl_brightness_limit.hpp:578
void Set(const IntervalD &value) override
Sets the host gain limits.
Definition peak_afl_brightness_limit.hpp:561
BrightnessGainHostLimit(std::shared_ptr< peak::afl::Controller > controller)
Constructs a host gain limit feature with the specified controller.
Definition peak_afl_brightness_limit.hpp:545
PEAK_COMMON_NO_DISCARD IntervalD Get() const override
Gets the current overall gain limits.
Definition peak_afl_brightness_limit.hpp:261
BrightnessGainLimit(std::shared_ptr< peak::afl::Controller > controller)
Constructs a BrightnessGainLimit feature with the specified controller.
Definition peak_afl_brightness_limit.hpp:238
void Set(const IntervalD &value) override
Sets the overall gain limits.
Definition peak_afl_brightness_limit.hpp:249
Base class for brightness limit features.
Definition peak_afl_brightness_limit.hpp:60
void Serialize(peak::common::serialization::IArchive &archive) const override
Serializes the current brightness limit to an archive.
Definition peak_afl_brightness_limit.hpp:76
void Deserialize(const peak::common::serialization::IArchive &archive) override
Deserializes the brightness limit from an archive.
Definition peak_afl_brightness_limit.hpp:98
Base interface for auto feature implementations.
Definition peak_afl_ifeature.hpp:61
virtual PEAK_COMMON_NO_DISCARD IntervalD Get() const=0
#define PEAK_COMMON_NO_DISCARD
Compatability macro for the nodiscard attribute.
Definition peak_common_defines.hpp:91
Interface definitions and implementations for individual module types used within a pipeline.
Definition peak_afl_generic_auto_brightness.hpp:39
Interfaces and implementations for defining and controlling data processing pipelines.
Definition peak_afl_generic_auto_brightness.hpp:37
peak::common::detail::IntervalT< double > IntervalD
Type alias for double-precision interval values.
Definition peak_afl_ifeature.hpp:29