CaptureMoment 0.1.0
Free and open-source non-destructive photo editor
Loading...
Searching...
No Matches
raw_settings.h
Go to the documentation of this file.
1
12#pragma once
13#include <string>
14#include <array>
15#include <magic_enum/magic_enum.hpp>
17
21namespace Raw {
22// ═══════════════════════════════════════════════════════════════════════════════
23// ENUMERATIONS FOR RAW SETTINGS
24// ═══════════════════════════════════════════════════════════════════════════════
32enum class HighlightMode : std::uint8_t {
33 clip = 0,
34 unclip = 1,
35 blend = 2,
36 rebuild = 3
37};
38
45enum class DemosaicAlgorithm : std::uint8_t {
46 linear,
47 vng,
48 ppg,
49 ahd,
50 dcb,
51 ahd_mod,
52 afd,
53 vcd,
54 mixed,
55 lmmse,
56 amaze,
57 dht,
58 aahd,
59 none
60};
61
68enum class RawColorSpace : std::uint8_t {
69 raw,
70 srgb,
72 adobe,
73 wide,
74 prophoto,
76 xyz,
77 aces,
78 dci_p3,
79 rec2020
80};
81
88enum class CameraMatrixMode : std::uint8_t {
89 never = 0,
90 dng_only = 1,
91 always = 3
92};
93
100enum class FbddNoiseRd : std::uint8_t {
101 off = 0,
102 light = 1,
103 full = 2
104};
105
112enum class Orientation : std::int8_t {
113 ignored = -1,
114 normal = 0,
115 flip_horizontal = 1,
116 rotate_180 = 2,
117 flip_vertical = 3,
118 flip_h_rotate_90 = 4,
119 rotate_90_cw = 5,
121 rotate_270_cw = 7,
123};
124
133enum class WhiteBalanceMode : std::uint8_t {
134 none = 0,
135 camera = 1,
136 auto_wb = 2,
137 grey_box = 3,
138 user_mul = 4
139};
140
141// ═══════════════════════════════════════════════════════════════════════════════
142// RAW SETTINGS STRUCTURE
143// ═══════════════════════════════════════════════════════════════════════════════
165 // ═════════════════════════════════════════════════════════════════════════
166 // DEMOSAIC SETTINGS
167 // ═════════════════════════════════════════════════════════════════════════
168private:
176
181 bool m_half_size{false};
182
183public:
188 [[nodiscard]] constexpr DemosaicAlgorithm get_demosaic() const noexcept { return m_demosaic; }
189
194 constexpr void set_demosaic(DemosaicAlgorithm algorithm) noexcept { m_demosaic = algorithm; }
195
201 [[nodiscard]] std::string get_demosaic_string() const noexcept {
202 switch (m_demosaic) {
203 case DemosaicAlgorithm::linear: return "linear";
204 case DemosaicAlgorithm::vng: return "VNG";
205 case DemosaicAlgorithm::ppg: return "PPG";
206 case DemosaicAlgorithm::ahd: return "AHD";
207 case DemosaicAlgorithm::dcb: return "DCB";
208 case DemosaicAlgorithm::ahd_mod: return "AHD-Mod";
209 case DemosaicAlgorithm::afd: return "AFD";
210 case DemosaicAlgorithm::vcd: return "VCD";
211 case DemosaicAlgorithm::mixed: return "Mixed";
212 case DemosaicAlgorithm::lmmse: return "LMMSE";
213 case DemosaicAlgorithm::amaze: return "AMaZE";
214 case DemosaicAlgorithm::dht: return "DHT";
215 case DemosaicAlgorithm::aahd: return "AAHD";
216 case DemosaicAlgorithm::none: return "none";
217 default: return "AHD";
218 }
219 }
220
225 [[nodiscard]] constexpr bool get_half_size() const noexcept { return m_half_size; }
226
231 constexpr void set_half_size(bool half_size) noexcept { m_half_size = half_size; }
232 // ═════════════════════════════════════════════════════════════════════════
233 // COLOR SPACE SETTINGS
234 // ═════════════════════════════════════════════════════════════════════════
235
236private:
240
241public:
246 [[nodiscard]] constexpr RawColorSpace get_color_space() const noexcept { return m_color_space; }
247
252 constexpr void set_color_space(RawColorSpace color_space) noexcept { m_color_space = color_space; }
253
258 [[nodiscard]] std::string get_color_space_string() const noexcept {
259 switch (m_color_space) {
260 case RawColorSpace::raw: return "raw";
261 case RawColorSpace::srgb: return "sRGB";
262 case RawColorSpace::srgb_linear: return "sRGB-linear";
263 case RawColorSpace::adobe: return "Adobe";
264 case RawColorSpace::wide: return "Wide";
265 case RawColorSpace::prophoto: return "ProPhoto";
266 case RawColorSpace::prophoto_linear: return "ProPhoto-linear";
267 case RawColorSpace::xyz: return "XYZ";
268 case RawColorSpace::aces: return "ACES";
269 case RawColorSpace::dci_p3: return "DCI-P3";
270 case RawColorSpace::rec2020: return "Rec2020";
271 default: return "ProPhoto-linear";
272 }
273 }
274 // ═════════════════════════════════════════════════════════════════════════
275 // HIGHLIGHT RECOVERY SETTINGS
276 // ═════════════════════════════════════════════════════════════════════════
277
278private:
281 HighlightMode m_highlight_mode{HighlightMode::blend};
282
287 bool m_balance_clamped{true};
288
289public:
294 [[nodiscard]] constexpr HighlightMode get_highlight_mode() const noexcept { return m_highlight_mode; }
295
300 constexpr void set_highlight_mode(HighlightMode mode) noexcept { m_highlight_mode = mode; }
301
306 [[nodiscard]] constexpr int get_highlight_mode_value() const noexcept {
307 return static_cast<int>(m_highlight_mode);
308 }
309
316 [[nodiscard]] constexpr bool get_balance_clamped() const noexcept { return m_balance_clamped; }
317
322 constexpr void set_balance_clamped(bool balance) noexcept { m_balance_clamped = balance; }
323 // ═════════════════════════════════════════════════════════════════════════
324 // WHITE BALANCE SETTINGS
325 // ═════════════════════════════════════════════════════════════════════════
326
327private:
336 bool m_use_camera_wb{true};
340 bool m_use_auto_wb{false};
341 std::array<int, 4> m_grey_box{0, 0, 0, 0};
342 std::array<float, 4> m_user_mul{1.0f, 1.0f, 1.0f, 1.0f};
343
344public:
345
350 [[nodiscard]] constexpr bool get_use_camera_wb() const noexcept { return m_use_camera_wb; }
351
356 constexpr void set_use_camera_wb(bool use_camera) noexcept { m_use_camera_wb = use_camera; }
357
362 [[nodiscard]] constexpr bool get_use_auto_wb() const noexcept { return m_use_auto_wb; }
363
369 constexpr void set_use_auto_wb(bool use_auto) noexcept { m_use_auto_wb = use_auto; }
370
375 [[nodiscard]] constexpr WhiteBalanceMode get_white_balance_mode() const noexcept {
376 if (m_use_camera_wb) {
378 }
379 if (m_use_auto_wb) {
381 }
382 // Check if grey_box is valid (non-zero size)
383 if (m_grey_box[2] > 0 && m_grey_box[3] > 0) {
385 }
387 }
388
393 constexpr void set_white_balance_mode(WhiteBalanceMode mode) noexcept {
394 switch (mode) {
396 m_use_camera_wb = false;
397 m_use_auto_wb = false;
398 break;
400 m_use_camera_wb = true;
401 m_use_auto_wb = false;
402 break;
404 m_use_camera_wb = false;
405 m_use_auto_wb = true;
406 break;
408 m_use_camera_wb = false;
409 m_use_auto_wb = false;
410 break;
412 m_use_camera_wb = false;
413 m_use_auto_wb = false;
414 m_grey_box = {0, 0, 0, 0}; // Disable grey_box to use user_mul
415 break;
416 }
417 }
422 [[nodiscard]] constexpr const std::array<int, 4>& get_grey_box() const noexcept { return m_grey_box; }
423
432 constexpr void set_grey_box(int x, int y, int width, int height) noexcept {
433 m_grey_box = {x, y, width, height};
434 // Disable other WB modes to use grey_box
435 m_use_camera_wb = false;
436 m_use_auto_wb = false;
437 }
438
443 [[nodiscard]] constexpr const std::array<float, 4>& get_user_mul() const noexcept { return m_user_mul; }
444
453 constexpr void set_user_mul(float r, float g, float b, float g2) noexcept {
454 m_user_mul = {r, g, b, g2};
455 // Disable other WB modes to use user_mul
456 m_use_camera_wb = false;
457 m_use_auto_wb = false;
458 m_grey_box = {0, 0, 0, 0};
459 }
460 // ═════════════════════════════════════════════════════════════════════════
461 // COLOR MATRIX SETTINGS
462 // ═════════════════════════════════════════════════════════════════════════
463
464private:
467
468public:
473 [[nodiscard]] constexpr CameraMatrixMode get_camera_matrix() const noexcept { return m_camera_matrix; }
474
479 constexpr void set_camera_matrix(CameraMatrixMode mode) noexcept { m_camera_matrix = mode; }
480
485 [[nodiscard]] constexpr int get_camera_matrix_value() const noexcept {
486 return static_cast<int>(m_camera_matrix);
487 }
488 // ═════════════════════════════════════════════════════════════════════════
489 // EXPOSURE SETTINGS
490 // ═════════════════════════════════════════════════════════════════════════
491private:
492 float m_exposure{1.0f};
493 bool m_auto_bright{false};
494 bool m_apply_scene_linear_scale{false};
495 float m_camera_to_scene_linear_scale{2.2222222222222223f};
496
497public:
503 [[nodiscard]] constexpr float get_exposure() const noexcept { return m_exposure; }
504
509 constexpr void set_exposure(float exposure) noexcept { m_exposure = exposure; }
510
515 [[nodiscard]] constexpr bool get_auto_bright() const noexcept { return m_auto_bright; }
516
521 constexpr void set_auto_bright(bool auto_bright) noexcept { m_auto_bright = auto_bright; }
522
528 [[nodiscard]] constexpr bool get_apply_scene_linear_scale() const noexcept { return m_apply_scene_linear_scale; }
529
534 constexpr void set_apply_scene_linear_scale(bool apply) noexcept { m_apply_scene_linear_scale = apply; }
535
540 [[nodiscard]] constexpr float get_camera_to_scene_linear_scale() const noexcept {
541 return m_camera_to_scene_linear_scale;
542 }
543
548 constexpr void set_camera_to_scene_linear_scale(float scale) noexcept {
549 m_camera_to_scene_linear_scale = scale;
550 }
551 // ═════════════════════════════════════════════════════════════════════════
552 // BLACK/WHITE POINT SETTINGS
553 // ═════════════════════════════════════════════════════════════════════════
554
555private:
556 int m_user_black{-1};
557 int m_user_sat{0};
558 float m_adjust_maximum_thr{0.0f};
559
560public:
565 [[nodiscard]] constexpr int get_user_black() const noexcept { return m_user_black; }
566
571 constexpr void set_user_black(int black) noexcept { m_user_black = black; }
572
577 [[nodiscard]] constexpr int get_user_sat() const noexcept { return m_user_sat; }
578
583 constexpr void set_user_sat(int sat) noexcept { m_user_sat = sat; }
584
589 [[nodiscard]] constexpr float get_adjust_maximum_thr() const noexcept { return m_adjust_maximum_thr; }
590
595 constexpr void set_adjust_maximum_thr(float thr) noexcept { m_adjust_maximum_thr = thr; }
596 // ═════════════════════════════════════════════════════════════════════════
597 // NOISE REDUCTION SETTINGS
598 // ═════════════════════════════════════════════════════════════════════════
599
600private:
602 FbddNoiseRd m_fbdd_noiserd{FbddNoiseRd::light};
604 float m_threshold{0.0f};
605
606public:
611 [[nodiscard]] constexpr FbddNoiseRd get_fbdd_noiserd() const noexcept { return m_fbdd_noiserd; }
612
617 constexpr void set_fbdd_noiserd(FbddNoiseRd noiserd) noexcept { m_fbdd_noiserd = noiserd; }
618
623 [[nodiscard]] constexpr int get_fbdd_noiserd_value() const noexcept {
624 return static_cast<int>(m_fbdd_noiserd);
625 }
626
632 [[nodiscard]] constexpr float get_threshold() const noexcept { return m_threshold; }
633
638 constexpr void set_threshold(float threshold) noexcept { m_threshold = threshold; }
639 // ═════════════════════════════════════════════════════════════════════════
640 // CHROMATIC ABERRATION CORRECTION
641 // ═════════════════════════════════════════════════════════════════════════
642private:
643 std::array<float, 2> m_aber{1.0f, 1.0f};
644
645public:
646
653 [[nodiscard]] constexpr const std::array<float, 2>& get_aber() const noexcept { return m_aber; }
654
660 constexpr void set_aber(float red, float blue) noexcept { m_aber = {red, blue}; }
661 // ═════════════════════════════════════════════════════════════════════════
662 // ORIENTATION SETTINGS
663 // ═════════════════════════════════════════════════════════════════════════
664
665private:
668
669public:
674 [[nodiscard]] constexpr Orientation get_user_flip() const noexcept { return m_user_flip; }
675
680 constexpr void set_user_flip(Orientation flip) noexcept { m_user_flip = flip; }
681
686 [[nodiscard]] constexpr int get_user_flip_value() const noexcept {
687 return static_cast<int>(m_user_flip);
688 }
689 // ═════════════════════════════════════════════════════════════════════════
690 // CROP SETTINGS
691 // ═════════════════════════════════════════════════════════════════════════
692
693private:
694 std::array<int, 4> m_crop_box{0, 0, 0, 0};
695
696public:
701 [[nodiscard]] constexpr const std::array<int, 4>& get_crop_box() const noexcept { return m_crop_box; }
702
710 constexpr void set_crop_box(int x, int y, int width, int height) noexcept {
711 m_crop_box = {x, y, width, height};
712 }
713 // ═════════════════════════════════════════════════════════════════════════
714 // MEMORY AND LOADING SETTINGS
715 // ═════════════════════════════════════════════════════════════════════════
716
717private:
718 int m_max_raw_memory_mb{4096};
719 bool m_force_load{true};
720
721public:
722
727 [[nodiscard]] constexpr int get_max_raw_memory_mb() const noexcept { return m_max_raw_memory_mb; }
728
733 constexpr void set_max_raw_memory_mb(int max_mb) noexcept { m_max_raw_memory_mb = max_mb; }
734
739 [[nodiscard]] constexpr bool get_force_load() const noexcept { return m_force_load; }
740
745 constexpr void set_force_load(bool force) noexcept { m_force_load = force; }
746 // ═════════════════════════════════════════════════════════════════════════
747 // PRESET FACTORY METHODS
748 // ═════════════════════════════════════════════════════════════════════════
749
766 [[nodiscard]] static constexpr RawSettings fast_settings() noexcept {
767 RawSettings settings;
768 settings.m_demosaic = DemosaicAlgorithm::linear;
769 settings.m_color_space = RawColorSpace::srgb_linear;
770 settings.m_highlight_mode = HighlightMode::clip;
771 settings.m_balance_clamped = false;
772 settings.m_half_size = true;
773 settings.m_fbdd_noiserd = FbddNoiseRd::off;
774 settings.m_force_load = false;
775 settings.m_camera_matrix = CameraMatrixMode::dng_only;
776 settings.m_use_camera_wb = true;
777 settings.m_use_auto_wb = false;
778 return settings;
779 }
780
798 [[nodiscard]] static constexpr RawSettings quality_settings() noexcept {
799 RawSettings settings;
800 settings.m_demosaic = DemosaicAlgorithm::amaze;
801 settings.m_color_space = RawColorSpace::prophoto_linear;
802 settings.m_highlight_mode = HighlightMode::rebuild;
803 settings.m_balance_clamped = true;
804 settings.m_half_size = false;
805 settings.m_fbdd_noiserd = FbddNoiseRd::light;
806 settings.m_force_load = true;
807 settings.m_camera_matrix = CameraMatrixMode::always;
808 settings.m_use_camera_wb = true;
809 settings.m_use_auto_wb = false;
810 return settings;
811 }
812
830 [[nodiscard]] static constexpr RawSettings performance_settings() noexcept {
831 RawSettings settings;
832 settings.m_demosaic = DemosaicAlgorithm::ahd;
833 settings.m_color_space = RawColorSpace::prophoto_linear;
834 settings.m_highlight_mode = HighlightMode::blend;
835 settings.m_balance_clamped = true;
836 settings.m_half_size = false;
837 settings.m_fbdd_noiserd = FbddNoiseRd::light;
838 settings.m_force_load = true;
839 settings.m_camera_matrix = CameraMatrixMode::always;
840 settings.m_use_camera_wb = true;
841 settings.m_use_auto_wb = false;
842 return settings;
843 }
844 // ═════════════════════════════════════════════════════════════════════════
845 // UTILITY METHODS
846 // ═════════════════════════════════════════════════════════════════════════
847
852 void reset_to_defaults() noexcept {
853 *this = RawSettings{};
854 }
855
860 [[nodiscard]] constexpr bool is_quality_configuration() const noexcept {
861 return m_demosaic == DemosaicAlgorithm::amaze &&
862 m_color_space == RawColorSpace::prophoto_linear &&
863 m_highlight_mode >= HighlightMode::blend &&
864 m_balance_clamped &&
865 m_camera_matrix == CameraMatrixMode::always;
866 }
867
872 [[nodiscard]] constexpr bool is_fast_configuration() const noexcept {
873 return m_half_size &&
874 m_demosaic == DemosaicAlgorithm::linear;
875 }
876
881 [[nodiscard]] constexpr bool is_performance_configuration() const noexcept {
882 return m_demosaic == DemosaicAlgorithm::ahd &&
883 m_color_space == RawColorSpace::prophoto_linear &&
884 m_highlight_mode == HighlightMode::blend &&
885 m_balance_clamped &&
886 !m_half_size;
887 }
888};
889} // namespace Raw
890} // namespace CaptureMoment::Core::ImageConfig
CameraMatrixMode
Controls when to use the embedded camera color profile matrix. Camera color matrices provide accurate...
@ dng_only
Use only for DNG files (LibRaw default).
@ always
Always use embedded color matrix when available (recommended).
RawColorSpace
Color primaries and transfer function for RAW development output. The working color space determines ...
@ prophoto_linear
ProPhoto primaries with linear transfer. Best for editing (recommended).
@ srgb_linear
sRGB primaries with linear transfer. Good for editing.
@ srgb
sRGB with gamma curve. Not recommended for editing.
@ adobe
Adobe RGB (1998). Wider gamut than sRGB.
@ rec2020
ITU-R BT.2020 color space (LibRaw >= 0.20).
@ raw
Raw sensor data, no color space conversion.
@ dci_p3
DCI-P3 color space (LibRaw >= 0.21).
@ aces
Academy Color Encoding System. Film industry standard.
@ prophoto
ProPhoto RGB with gamma. Very wide gamut.
Orientation
Image orientation values matching EXIF orientation codes. Used to rotate/flip the image during RAW de...
@ flip_v_rotate_90
Mirror vertical and rotate 90° CW.
@ rotate_270_cw
Rotate 270° clockwise (or 90° CCW).
@ flip_h_rotate_90
Mirror horizontal and rotate 90° CW.
@ flip_h_rotate_270
Mirror horizontal and rotate 270° CW.
HighlightMode
Controls how overexposed/clipped highlights are handled during RAW development. When sensor channels ...
@ rebuild
Reconstruct highlights using advanced algorithms. Best quality for heavily clipped areas.
@ blend
Blend clipped areas with surrounding unclipped data. Natural-looking highlights.
@ unclip
Unclip: attempt to reconstruct clipped values. Better for slight overexposure.
@ clip
Clip all channels to maximum (default LibRaw behavior). Fast but may cause color shifts.
DemosaicAlgorithm
Demosaicing algorithms for converting Bayer pattern RAW data to RGB. Demosaicing is the process of in...
@ vng
Variable Number of Gradients. Good balance of speed/quality.
@ amaze
Adaptive Malvar-He-Cutler algorithm. Best quality, slower.
@ none
No demosaicing (return raw Bayer pattern).
@ ahd
Adaptive Homogeneity-Directed. Good quality, standard default.
@ linear
Simple bilinear interpolation. Fast, lower quality.
@ afd
Adaptive Frequency Domain demosaicing.
@ aahd
Advanced Adaptive Homogeneity-Directed.
@ ppg
Patterned Pixel Grouping. Moderate quality.
@ dcb
Directional Color Filter Array interpolation with Bilateral filter.
FbddNoiseRd
FBDD (Fuzzy Block Denoising and Demosaicing) noise reduction level. Controls noise reduction applied ...
@ light
Light FBDD reduction (recommended for most images).
@ full
Full FBDD reduction (for very noisy images).
WhiteBalanceMode
White balance calculation mode for RAW development. Determines how the initial white balance multipli...
@ auto_wb
Calculate white balance automatically from image data.
@ user_mul
Use user-specified custom white balance multipliers.
@ grey_box
Calculate from a user-specified grey card region.
@ camera
Use camera-recorded white balance (recommended default).
Complete configuration for RAW image development via OIIO/LibRaw. This struct encapsulates all RAW pr...
constexpr bool get_balance_clamped() const noexcept
Checks if highlight clamping balance is enabled.
constexpr void set_white_balance_mode(WhiteBalanceMode mode) noexcept
Sets the white balance mode from high-level enum.
constexpr int get_highlight_mode_value() const noexcept
Gets the highlight mode value as integer (for OIIO attribute).
constexpr WhiteBalanceMode get_white_balance_mode() const noexcept
Gets the white balance mode as high-level enum.
constexpr void set_use_camera_wb(bool use_camera) noexcept
Enables or disables camera white balance.
constexpr bool is_performance_configuration() const noexcept
Checks if the current configuration matches performance preset.
constexpr DemosaicAlgorithm get_demosaic() const noexcept
Gets the demosaicing algorithm.
constexpr void set_apply_scene_linear_scale(bool apply) noexcept
Enables or disables scene-linear scaling.
static constexpr RawSettings fast_settings() noexcept
Creates a RawSettings configured for maximum processing speed.
constexpr RawColorSpace get_color_space() const noexcept
Gets the output color space.
constexpr void set_fbdd_noiserd(FbddNoiseRd noiserd) noexcept
Sets the FBDD noise reduction level.
constexpr float get_camera_to_scene_linear_scale() const noexcept
Gets the camera-to-scene linear scale factor.
constexpr void set_color_space(RawColorSpace color_space) noexcept
Sets the output color space.
constexpr bool get_use_camera_wb() const noexcept
Checks if camera white balance is enabled.
constexpr void set_max_raw_memory_mb(int max_mb) noexcept
Sets the maximum memory allocation for RAW processing.
static constexpr RawSettings quality_settings() noexcept
Creates a RawSettings configured for maximum image quality.
constexpr void set_aber(float red, float blue) noexcept
Sets the chromatic aberration correction factors.
constexpr void set_user_flip(Orientation flip) noexcept
Sets the user-specified orientation.
constexpr void set_user_sat(int sat) noexcept
Sets the user-specified saturation point.
constexpr int get_user_sat() const noexcept
Gets the user-specified saturation point.
constexpr const std::array< float, 2 > & get_aber() const noexcept
Gets the chromatic aberration correction factors.
constexpr int get_camera_matrix_value() const noexcept
Gets the camera matrix mode value as integer (for OIIO attribute).
constexpr void set_half_size(bool half_size) noexcept
Enables or disables half-size output mode.
constexpr void set_highlight_mode(HighlightMode mode) noexcept
Sets the highlight recovery mode.
constexpr const std::array< int, 4 > & get_crop_box() const noexcept
Gets the crop box region.
constexpr void set_camera_to_scene_linear_scale(float scale) noexcept
Sets the camera-to-scene linear scale factor.
constexpr float get_exposure() const noexcept
Gets the exposure multiplier.
constexpr void set_grey_box(int x, int y, int width, int height) noexcept
Sets the grey box region for white balance calculation.
constexpr void set_adjust_maximum_thr(float thr) noexcept
Sets the auto-adjust maximum threshold.
constexpr int get_max_raw_memory_mb() const noexcept
Gets the maximum memory allocation for RAW processing.
constexpr void set_demosaic(DemosaicAlgorithm algorithm) noexcept
Sets the demosaicing algorithm.
constexpr void set_threshold(float threshold) noexcept
Sets the wavelet denoising threshold.
std::string get_demosaic_string() const noexcept
Gets the demosaic algorithm name as string (for OIIO attribute).
constexpr void set_use_auto_wb(bool use_auto) noexcept
Enables or disables auto white balance.
constexpr void set_balance_clamped(bool balance) noexcept
Enables or disables highlight clamping balance.
static constexpr RawSettings performance_settings() noexcept
Creates a RawSettings configured for balanced performance and quality.
constexpr void set_exposure(float exposure) noexcept
Sets the exposure multiplier.
constexpr Orientation get_user_flip() const noexcept
Gets the user-specified orientation.
constexpr void set_user_mul(float r, float g, float b, float g2) noexcept
Sets the user-defined white balance multipliers.
constexpr void set_force_load(bool force) noexcept
Enables or disables force load.
constexpr CameraMatrixMode get_camera_matrix() const noexcept
Gets the camera color matrix usage mode.
void reset_to_defaults() noexcept
Resets all settings to their default values. Default values are optimized for quality (same as qualit...
constexpr FbddNoiseRd get_fbdd_noiserd() const noexcept
Gets the FBDD noise reduction level.
constexpr void set_camera_matrix(CameraMatrixMode mode) noexcept
Sets the camera color matrix usage mode.
constexpr void set_user_black(int black) noexcept
Sets the user-specified black point.
constexpr bool is_quality_configuration() const noexcept
Checks if the current configuration matches quality preset.
constexpr int get_user_black() const noexcept
Gets the user-specified black point.
constexpr HighlightMode get_highlight_mode() const noexcept
Gets the highlight recovery mode.
std::string get_color_space_string() const noexcept
Gets the color space name as string (for OIIO attribute).
constexpr int get_user_flip_value() const noexcept
Gets the orientation value as integer (for OIIO attribute).
constexpr const std::array< float, 4 > & get_user_mul() const noexcept
Gets the user-defined white balance multipliers.
constexpr const std::array< int, 4 > & get_grey_box() const noexcept
Gets the grey box region for white balance calculation.
constexpr bool get_half_size() const noexcept
Checks if half-size output is enabled.
constexpr float get_threshold() const noexcept
Gets the wavelet denoising threshold.
constexpr bool get_force_load() const noexcept
Checks if force load is enabled.
constexpr void set_crop_box(int x, int y, int width, int height) noexcept
Sets the crop box region.
constexpr bool get_use_auto_wb() const noexcept
Checks if auto white balance is enabled.
constexpr int get_fbdd_noiserd_value() const noexcept
Gets the FBDD noise reduction value as integer (for OIIO attribute).
constexpr bool get_apply_scene_linear_scale() const noexcept
Checks if scene-linear scaling is applied.
constexpr float get_adjust_maximum_thr() const noexcept
Gets the auto-adjust maximum threshold.
constexpr bool get_auto_bright() const noexcept
Checks if auto brightness is enabled.
constexpr void set_auto_bright(bool auto_bright) noexcept
Enables or disables auto brightness.
constexpr bool is_fast_configuration() const noexcept
Checks if the current configuration matches fast preset.
CaptureMoment — footer