From 35062d4449b96271c106ab859fce55b013d7f93f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Tue, 1 Sep 2026 20:31:01 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=BE=84=E5=90=91=E5=A1=AB?= =?UTF-8?q?=E5=85=85=E5=89=8D=E5=90=8E=E7=AB=AF=E4=B8=80=E8=87=B4=E6=80=A7?= =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 覆盖 Radial90 四个角点的顺时针与逆时针部分填充 锁定编辑器预览与 Rust 导出共享起始角约定 --- .../html_renderer/component/image.rs | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/apps/ai-game-creator-shell/src-tauri/src/ui_editor/html_renderer/component/image.rs b/apps/ai-game-creator-shell/src-tauri/src/ui_editor/html_renderer/component/image.rs index f01050f4f..7149afe45 100644 --- a/apps/ai-game-creator-shell/src-tauri/src/ui_editor/html_renderer/component/image.rs +++ b/apps/ai-game-creator-shell/src-tauri/src/ui_editor/html_renderer/component/image.rs @@ -124,7 +124,7 @@ fn fill_clip_path(method: &FillMethod, amount: f32) -> Option { #[cfg(test)] mod tests { - use super::{fill_clip_path, FillMethod, Radial180Origin, Radial360Origin}; + use super::{fill_clip_path, FillMethod, Radial180Origin, Radial360Origin, Radial90Origin}; #[test] fn clockwise_radial_180_and_360_start_ninety_degrees_before_origin() { @@ -160,6 +160,36 @@ mod tests { .unwrap(); assert!(radial_180.contains("from -90deg")); } + + #[test] + fn radial_90_matches_preview_for_all_origins_and_directions() { + let cases = [ + (Radial90Origin::TopLeft, 0.0), + (Radial90Origin::TopRight, 90.0), + (Radial90Origin::BottomRight, 180.0), + (Radial90Origin::BottomLeft, 270.0), + ]; + for (origin, angle) in cases { + let clockwise = fill_clip_path( + &FillMethod::Radial90 { + origin, + clockwise: true, + }, + 0.5, + ) + .unwrap(); + let counter_clockwise = fill_clip_path( + &FillMethod::Radial90 { + origin, + clockwise: false, + }, + 0.5, + ) + .unwrap(); + assert!(clockwise.contains(&format!("from {}deg", angle - 90.0))); + assert!(counter_clockwise.contains(&format!("from {}deg", angle - 45.0))); + } + } } fn conic_mask(origin: f32, clockwise: bool, amount: f32, max_sweep: f32) -> String {