@@ -537,6 +537,7 @@ fn delete_preview(tool_data: &mut SplineToolData, responses: &mut VecDeque<Messa
537
537
538
538
#[ cfg( test) ]
539
539
mod test_spline_tool {
540
+ use crate :: messages:: portfolio:: document:: graph_operation:: utility_types:: TransformIn ;
540
541
use crate :: messages:: tool:: tool_messages:: spline_tool:: find_spline;
541
542
use crate :: test_utils:: test_prelude:: * ;
542
543
use glam:: DAffine2 ;
@@ -799,4 +800,48 @@ mod test_spline_tool {
799
800
// Assert all points are correctly positioned
800
801
assert_point_positions ( & vector_data, layer_to_viewport, & expected_points, 1e-10 ) ;
801
802
}
803
+
804
+ #[ tokio:: test]
805
+ async fn test_spline_tool_with_transformed_artboard ( ) {
806
+ let mut editor = EditorTestUtils :: create ( ) ;
807
+ editor. new_document ( ) . await ;
808
+
809
+ editor. drag_tool ( ToolType :: Artboard , 0. , 0. , 500. , 500. , ModifierKeys :: empty ( ) ) . await ;
810
+ let document = editor. active_document ( ) ;
811
+ let artboard_layer = document. network_interface . selected_nodes ( ) . selected_layers ( document. metadata ( ) ) . next ( ) . unwrap ( ) ;
812
+
813
+ editor
814
+ . handle_message ( GraphOperationMessage :: TransformSet {
815
+ layer : artboard_layer,
816
+ transform : DAffine2 :: from_scale_angle_translation ( DVec2 :: new ( 1.5 , 1.2 ) , 30_f64 . to_radians ( ) , DVec2 :: new ( 50. , 25. ) ) ,
817
+ transform_in : TransformIn :: Local ,
818
+ skip_rerender : false ,
819
+ } )
820
+ . await ;
821
+
822
+ let spline_points = [ DVec2 :: new ( 100. , 100. ) , DVec2 :: new ( 200. , 150. ) , DVec2 :: new ( 300. , 100. ) ] ;
823
+
824
+ editor. draw_spline ( & spline_points) . await ;
825
+
826
+ let document = editor. active_document ( ) ;
827
+
828
+ let mut layers = document. metadata ( ) . all_layers ( ) ;
829
+ layers. next ( ) ;
830
+
831
+ let spline_layer = layers. next ( ) . expect ( "Failed to find the spline layer" ) ;
832
+ assert ! ( find_spline( document, spline_layer) . is_some( ) , "Spline node not found in the layer" ) ;
833
+
834
+ let vector_data = document. network_interface . compute_modified_vector ( spline_layer) . expect ( "Vector data not found for the spline layer" ) ;
835
+
836
+ // Verify we have the correct number of points and segments
837
+ let point_count = vector_data. point_domain . ids ( ) . len ( ) ;
838
+ let segment_count = vector_data. segment_domain . ids ( ) . len ( ) ;
839
+
840
+ assert_eq ! ( point_count, 3 , "Expected 3 points in the spline, found {}" , point_count) ;
841
+ assert_eq ! ( segment_count, 2 , "Expected 2 segments in the spline, found {}" , segment_count) ;
842
+
843
+ let layer_to_viewport = document. metadata ( ) . transform_to_viewport ( spline_layer) ;
844
+
845
+ assert_point_positions ( & vector_data, layer_to_viewport, & spline_points, 1e-10 ) ;
846
+ }
802
847
}
0 commit comments