diff --git a/src/cli/simulation/mod.rs b/src/cli/simulation/mod.rs index 92fa5dd..ebd7cfd 100644 --- a/src/cli/simulation/mod.rs +++ b/src/cli/simulation/mod.rs @@ -242,15 +242,17 @@ fn handle_set( } // White Balance - let white_balance = match &options.white_balance { - Some(white_balance) => { - camera.set_white_balance(*white_balance)?; - white_balance - } - None => &camera.get_white_balance()?, - }; + if let Some(white_balance) = &options.white_balance { + camera.set_white_balance(*white_balance)?; + } if let Some(temperature) = &options.white_balance_temperature { + let white_balance = if let Some(white_balance) = &options.white_balance { + white_balance + } else { + &camera.get_white_balance()? + }; + if *white_balance != FujiWhiteBalance::Temperature { warn!("White Balance mode is not set to 'Temperature', refusing to set temperature") } else { @@ -267,35 +269,40 @@ fn handle_set( } // Exposure - let dynamic_range_priority = match &options.dynamic_range_priority { - Some(dynamic_range_priority) => { - camera.set_dynamic_range_priority(*dynamic_range_priority)?; - dynamic_range_priority - } - None => &camera.get_dynamic_range_priority()?, - }; - - if let Some(dynamic_range) = &options.dynamic_range { - if *dynamic_range_priority != FujiDynamicRangePriority::Off { - warn!("Dynamic Range Priority is enabled, refusing to set dynamic range") - } else { - camera.set_dynamic_range(*dynamic_range)?; - } + if let Some(dynamic_range_priority) = &options.dynamic_range_priority { + camera.set_dynamic_range_priority(*dynamic_range_priority)?; } - if let Some(highlights) = &options.highlight { - if *dynamic_range_priority != FujiDynamicRangePriority::Off { - warn!("Dynamic Range Priority is enabled, refusing to set highlight tone") - } else { - camera.set_highlight_tone(*highlights)?; - } - } + if options.dynamic_range.is_some() || options.highlight.is_some() || options.shadow.is_some() { + let dynamic_range_priority = + if let Some(dynamic_range_priority) = &options.dynamic_range_priority { + dynamic_range_priority + } else { + &camera.get_dynamic_range_priority()? + }; - if let Some(shadows) = &options.shadow { - if *dynamic_range_priority != FujiDynamicRangePriority::Off { - warn!("Dynamic Range Priority is enabled, refusing to set shadow tone") - } else { - camera.set_shadow_tone(*shadows)?; + if let Some(dynamic_range) = &options.dynamic_range { + if *dynamic_range_priority != FujiDynamicRangePriority::Off { + warn!("Dynamic Range Priority is enabled, refusing to set dynamic range") + } else { + camera.set_dynamic_range(*dynamic_range)?; + } + } + + if let Some(highlights) = &options.highlight { + if *dynamic_range_priority != FujiDynamicRangePriority::Off { + warn!("Dynamic Range Priority is enabled, refusing to set highlight tone") + } else { + camera.set_highlight_tone(*highlights)?; + } + } + + if let Some(shadows) = &options.shadow { + if *dynamic_range_priority != FujiDynamicRangePriority::Off { + warn!("Dynamic Range Priority is enabled, refusing to set shadow tone") + } else { + camera.set_shadow_tone(*shadows)?; + } } }