From d0ea5f23cb5a0e1a2b21acf786a7c9341a181c6d Mon Sep 17 00:00:00 2001 From: rudrakshagarwal4200-ai Date: Sat, 17 Oct 2026 03:59:34 +0530 Subject: [PATCH 1/2] Change fit_image to use size_param for dimensions Updated fit_image function to use size_param for width and height. --- crates/engine/src/file_cmds.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/engine/src/file_cmds.rs b/crates/engine/src/file_cmds.rs index 43828b76b1..518d9afbfa 100644 --- a/crates/engine/src/file_cmds.rs +++ b/crates/engine/src/file_cmds.rs @@ -867,8 +867,8 @@ fn file_info(s: &mut Session, p: &Value) -> Result { fn fit_image(s: &mut Session, p: &Value) -> Result { let d = s.active().ok_or(EngineError::NoDocument)?; let (w, h) = (d.doc.size.width as f64, d.doc.size.height as f64); - let bw = f64_param(p, "width").unwrap_or(w).max(1.0); - let bh = f64_param(p, "height").unwrap_or(h).max(1.0); + let bw = size_param(p, "width").unwrap_or(w); + let bh = size_param(p, "height").unwrap_or(h); let k = (bw / w).min(bh / h); if (k > 1.0 && p.get("dontEnlarge").and_then(Value::as_bool).unwrap_or(false)) || ((w * k).round() == w && (h * k).round() == h) { return Ok(json!({"width": w, "height": h, "changed": false})); From d24d25f5e74e605eaca333c1fa3ac979798df4e1 Mon Sep 17 00:00:00 2001 From: rudrakshagarwal4200-ai Date: Sat, 17 Oct 2026 04:01:18 +0530 Subject: [PATCH 2/2] Enhance fitImage tests for dimension constraints Added tests for handling zero or negative dimensions in fitImage. --- crates/engine/src/file_cmds/tests.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/crates/engine/src/file_cmds/tests.rs b/crates/engine/src/file_cmds/tests.rs index 3cc72c30c4..60de40d912 100644 --- a/crates/engine/src/file_cmds/tests.rs +++ b/crates/engine/src/file_cmds/tests.rs @@ -532,6 +532,13 @@ fn fit_image_and_conditional_mode_change() { assert_eq!(r["changed"], false); s.execute("file.automate.fitImage", json!({"width": 1000, "height": 1000})).unwrap(); assert_eq!(doc(&s).size.width, 1000); + + // Zero or negative width or height leaves that side unconstrained. + let mut s2 = session(1000, 800, 8); + s2.execute("file.automate.fitImage", json!({"width": 0, "height": 400})).unwrap(); + assert_eq!((doc(&s2).size.width, doc(&s2).size.height), (500, 400)); + s2.execute("file.automate.fitImage", json!({"width": 250, "height": -10})).unwrap(); + assert_eq!((doc(&s2).size.width, doc(&s2).size.height), (250, 200)); let r = s.execute("file.automate.conditionalModeChange", json!({"from": ["cmyk"], "to": "grayscale"})).unwrap(); assert_eq!(r["changed"], false); s.execute("file.automate.conditionalModeChange", json!({"from": ["rgb", "lab"], "to": "grayscale"})).unwrap();