diff --git a/crates/engine/src/camera_preview.rs b/crates/engine/src/camera_preview.rs index 5cfb9847..741fc391 100644 --- a/crates/engine/src/camera_preview.rs +++ b/crates/engine/src/camera_preview.rs @@ -154,6 +154,7 @@ fn dng_colour(tags: &ColorData, t: &CameraTransform, look: Option<&CameraLook>) as_shot_white_xy: None, baseline_exposure: t.baseline_exposure + k.log2(), baseline_sharpness: tags.baseline_sharpness, + kelvin_presets: None, profile: ProfileLook { hue_sat_map: [look.and_then(|l| l.hue_sat.clone()), None], tone_curve: look.and_then(|l| dng_tone_curve(&l.tone)), diff --git a/crates/meta/src/datetime.rs b/crates/meta/src/datetime.rs index 4f5e03d7..ffd2edd7 100644 --- a/crates/meta/src/datetime.rs +++ b/crates/meta/src/datetime.rs @@ -28,7 +28,7 @@ impl DateTime { // A timestamp must represent a real Gregorian calendar day, not just // numbers in the range 1..=31. Invalid dates would otherwise be // accepted from EXIF/XMP and silently normalized during time arithmetic. - let leap = self.year % 4 == 0 && (self.year % 100 != 0 || self.year % 400 == 0); + let leap = self.year.is_multiple_of(4) && (!self.year.is_multiple_of(100) || self.year.is_multiple_of(400)); let max_day = match self.month { 1 | 3 | 5 | 7 | 8 | 10 | 12 => 31, 4 | 6 | 9 | 11 => 30, diff --git a/crates/ui-egui/src/panels/presets.rs b/crates/ui-egui/src/panels/presets.rs index 3e08ccf3..081757bc 100644 --- a/crates/ui-egui/src/panels/presets.rs +++ b/crates/ui-egui/src/panels/presets.rs @@ -86,7 +86,7 @@ pub fn show(app: &mut LightcraftApp, ui: &mut egui::Ui) { // amount slider (applies to the last applied preset) let amt_id = egui::Id::new("preset-amount"); let last: Option = ui.data(|d| d.get_temp(amt_id)); - if let Some(last) = last.filter(|last| last.is_current(&app.session)) { + if let Some(last) = last.clone().filter(|last| last.is_current(&app.session)) { let spec = ControlSpec { id: "presetAmount", label: "Amount", @@ -160,7 +160,7 @@ pub fn show(app: &mut LightcraftApp, ui: &mut egui::Ui) { let (pid, name, fav) = (pr.id.clone(), crate::i18n::builtin_label(&pr.name, pr.builtin).to_string(), pr.favorite); let (r, resp) = ui.allocate_exact_size(vec2(ui.available_width(), row_h), Sense::click()); register(ui.ctx(), format!("preset:{pid}"), r); - let is_last = last.as_ref().is_some_and(|(l, _)| *l == pid); + let is_last = last.as_ref().is_some_and(|l| l.id == pid); if is_last { ui.painter().rect_filled(r, 0.0, t.tool_active); } else if resp.hovered() { @@ -192,12 +192,10 @@ pub fn show(app: &mut LightcraftApp, ui: &mut egui::Ui) { ui.data_mut(|d| d.insert_temp(egui::Id::new("last-preset-hover"), (id, pr.clone(), label))); } } - if resp.clicked() { - if app.run("preset.apply", json!({"id": pid, "amount": 100})).is_ok() { - ui.data_mut(|d| d.insert_temp(amt_id, AppliedPreset::new(&app.session, pid.clone(), 100.0))); - ui.data_mut(|d| d.remove::<(lightcraft_catalog::PhotoId, Preset, String)>(egui::Id::new("last-preset-hover"))); - app.toast(ui.ctx(), crate::i18n::tr_format!("Preset: {name}", name = name)); - } + if resp.clicked() && app.run("preset.apply", json!({"id": pid, "amount": 100})).is_ok() { + ui.data_mut(|d| d.insert_temp(amt_id, AppliedPreset::new(&app.session, pid.clone(), 100.0))); + ui.data_mut(|d| d.remove::<(lightcraft_catalog::PhotoId, Preset, String)>(egui::Id::new("last-preset-hover"))); + app.toast(ui.ctx(), crate::i18n::tr_format!("Preset: {name}", name = name)); } let (builtin, group) = (pr.builtin, pr.group.clone()); resp.context_menu(|ui| {