Fix tool drawing start point offset when an artboard has a transform (#1763)

* Fix offset artboard

* Multiply in transform sometimes
This commit is contained in:
0HyperCube
2024-05-28 01:09:48 -07:00
committed by GitHub
parent d40fb6caad
commit 61292500e6
5 changed files with 13 additions and 4 deletions
@@ -157,7 +157,11 @@ impl ArtboardToolData {
};
let center = from_center.then_some(bounds.center_of_transformation);
let (position, size) = movement.new_size(mouse_position, bounds.transform, center, constrain_square, None);
let (min, size) = movement.new_size(mouse_position, bounds.transform, center, constrain_square, None);
let max = min + size;
let position = min.min(max);
let size = (max - min).abs();
responses.add(GraphOperationMessage::ResizeArtboard {
id: self.selected_artboard.unwrap().to_node(),
location: position.round().as_ivec2(),
@@ -271,6 +275,9 @@ impl Fsm for ArtboardToolFsmState {
let start = root_transform.transform_point2(start);
let size = root_transform.transform_vector2(size);
let end = start + size;
let size = (start - end).abs();
let start = start.min(end);
if let Some(artboard) = tool_data.selected_artboard {
responses.add(GraphOperationMessage::ResizeArtboard {
@@ -318,7 +318,7 @@ impl Fsm for BrushToolFsmState {
let layer = loaded_layer.unwrap_or_else(|| new_brush_layer(document, responses));
tool_data.layer = Some(layer);
let parent = layer.parent(document.metadata()).unwrap_or_default();
let parent = layer.parent(document.metadata()).unwrap_or_else(|| document.new_layer_parent(true));
let parent_transform = document.metadata().transform_to_viewport(parent).inverse().transform_point2(input.mouse.position);
let layer_position = tool_data.transform.inverse().transform_point2(parent_transform);
+1
View File
@@ -339,6 +339,7 @@ impl NodeRuntime {
None.or_else(|| try_downcast::<VectorData>(introspected_data.as_ref()))
.or_else(|| try_downcast::<ImageFrame<Color>>(introspected_data.as_ref()))
.or_else(|| try_downcast::<GraphicElement>(introspected_data.as_ref()))
.or_else(|| try_downcast::<graphene_core::Artboard>(introspected_data.as_ref()))
} {
self.upstream_transforms.insert(parent_network_node_id, transform);
}