Retire layer paths used throughout the code (#1531)

* Part 1

* Part 2

* Part 3

* Part 4

* Part 5

* Part 6

* Part 7

* Part 8
This commit is contained in:
Keavon Chambers
2023-12-21 19:32:46 -08:00
committed by GitHub
parent 5c7e04a725
commit 7bfe0ce55b
73 changed files with 532 additions and 798 deletions
@@ -38,7 +38,7 @@ pub fn new_image_layer(image_frame: ImageFrame<Color>, id: NodeId, parent: Layer
pub fn set_manipulator_mirror_angle(manipulator_groups: &[ManipulatorGroup<ManipulatorGroupId>], layer: LayerNodeIdentifier, mirror_angle: bool, responses: &mut VecDeque<Message>) {
for manipulator_group in manipulator_groups {
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorHandleMirroring {
id: manipulator_group.id,
mirror_angle,
@@ -216,7 +216,7 @@ impl<'a> NodeGraphLayer<'a> {
}
/// Return an iterator up the primary flow of the layer
pub fn primary_layer_flow(&self) -> impl Iterator<Item = (&'a DocumentNode, u64)> {
pub fn primary_layer_flow(&self) -> impl Iterator<Item = (&'a DocumentNode, NodeId)> {
self.node_graph.upstream_flow_back_from_nodes(vec![self.layer_node], true)
}
@@ -105,7 +105,6 @@ impl Pivot {
let pivot = transform.inverse().transform_point2(position);
// Only update the pivot when computed position is finite. Infinite can happen when scale is 0.
if pivot.is_finite() {
let layer = layer.to_path();
responses.add(GraphOperationMessage::TransformSetPivot { layer, pivot });
}
}
@@ -17,7 +17,6 @@ impl Resize {
/// Starts a resize, assigning the snap targets and snapping the starting position.
pub fn start(&mut self, responses: &mut VecDeque<Message>, document: &DocumentMessageHandler, input: &InputPreprocessorMessageHandler) {
self.snap_manager.start_snap(document, input, document.bounding_boxes(), true, true);
self.snap_manager.add_all_document_handles(document, input, &[], &[], &[]);
let root_transform = document.metadata().document_to_viewport;
self.drag_start = root_transform.inverse().transform_point2(self.snap_manager.snap_position(responses, document, input.mouse.position));
}
@@ -25,7 +24,6 @@ impl Resize {
/// Recalculates snap targets without snapping the starting position.
pub fn recalculate_snaps(&mut self, document: &DocumentMessageHandler, input: &InputPreprocessorMessageHandler) {
self.snap_manager.start_snap(document, input, document.bounding_boxes(), true, true);
self.snap_manager.add_all_document_handles(document, input, &[], &[], &[]);
}
/// Calculate the drag start position in viewport space.
@@ -65,7 +63,7 @@ impl Resize {
Some(
GraphOperationMessage::TransformSet {
layer: layer.to_path(),
layer,
transform: DAffine2::from_scale_angle_translation(size, 0., start),
transform_in: TransformIn::Viewport,
skip_rerender,
@@ -192,7 +192,7 @@ impl ShapeState {
if point.manipulator_type.is_handle() {
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorHandleMirroring { id: group.id, mirror_angle: false },
});
}
@@ -202,7 +202,7 @@ impl ShapeState {
return;
};
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorPosition { point, position: (position + delta) },
});
};
@@ -270,7 +270,7 @@ impl ShapeState {
// Mirror the angle but not the distance
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorHandleMirroring {
id: manipulator.id,
mirror_angle: true,
@@ -291,7 +291,7 @@ impl ShapeState {
if let Some(in_handle) = length_previous.map(|length| anchor_position + handle_vector * length) {
let point = ManipulatorPointId::new(manipulator.id, SelectedType::InHandle);
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorPosition { point, position: in_handle },
});
}
@@ -299,7 +299,7 @@ impl ShapeState {
if let Some(out_handle) = length_next.map(|length| anchor_position - handle_vector * length) {
let point = ManipulatorPointId::new(manipulator.id, SelectedType::OutHandle);
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorPosition { point, position: out_handle },
});
}
@@ -338,7 +338,7 @@ impl ShapeState {
let out_handle = ManipulatorPointId::new(point.group, SelectedType::OutHandle);
if let Some(position) = group.out_handle {
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorPosition { point: out_handle, position },
});
}
@@ -347,7 +347,7 @@ impl ShapeState {
let in_handle = ManipulatorPointId::new(point.group, SelectedType::InHandle);
if let Some(position) = group.in_handle {
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorPosition { point: in_handle, position },
});
}
@@ -391,7 +391,7 @@ impl ShapeState {
let Some(previous_position) = point.manipulator_type.get_position(group) else { return };
let position = previous_position + delta;
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorPosition { point, position },
});
};
@@ -410,7 +410,7 @@ impl ShapeState {
// and set angle mirroring to true.
if !mirror && point.manipulator_type.opposite().get_position(group).is_none() {
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorHandleMirroring { id: group.id, mirror_angle: true },
});
mirror = true;
@@ -428,7 +428,7 @@ impl ShapeState {
}
let position = group.anchor - (original_handle_position - group.anchor);
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorPosition { point, position },
});
}
@@ -471,7 +471,7 @@ impl ShapeState {
if (anchor_position - point_position).length() < DRAG_THRESHOLD {
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::RemoveManipulatorPoint { point },
});
@@ -481,7 +481,7 @@ impl ShapeState {
if let Some(lengths) = opposing_handle_lengths {
if lengths.contains_key(&point.group) {
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::RemoveManipulatorPoint { point: opposite_point },
});
}
@@ -567,7 +567,7 @@ impl ShapeState {
let Some(opposing_handle_length) = opposing_handle_length else {
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::RemoveManipulatorPoint {
point: ManipulatorPointId::new(manipulator_group.id, single_selected_handle.opposite()),
},
@@ -586,7 +586,7 @@ impl ShapeState {
assert!(position.is_finite(), "Opposing handle not finite!");
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorPosition { point, position },
});
}
@@ -596,10 +596,10 @@ impl ShapeState {
/// Dissolve the selected points.
pub fn delete_selected_points(&self, responses: &mut VecDeque<Message>) {
for (layer, state) in &self.selected_shape_state {
for (&layer, state) in &self.selected_shape_state {
for &point in &state.selected_points {
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::RemoveManipulatorPoint { point },
})
}
@@ -608,10 +608,10 @@ impl ShapeState {
/// Toggle if the handles should mirror angle across the anchor position.
pub fn toggle_handle_mirroring_on_selected(&self, responses: &mut VecDeque<Message>) {
for (layer, state) in &self.selected_shape_state {
for (&layer, state) in &self.selected_shape_state {
for point in &state.selected_points {
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::ToggleManipulatorHandleMirroring { id: point.group },
})
}
@@ -620,10 +620,10 @@ impl ShapeState {
/// Toggle if the handles should mirror angle across the anchor position.
pub fn set_handle_mirroring_on_selected(&self, mirror_angle: bool, responses: &mut VecDeque<Message>) {
for (layer, state) in &self.selected_shape_state {
for (&layer, state) in &self.selected_shape_state {
for point in &state.selected_points {
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorHandleMirroring { id: point.group, mirror_angle },
});
}
@@ -732,7 +732,7 @@ impl ShapeState {
let point = ManipulatorPointId::new(start, SelectedType::OutHandle);
let position = first.handle_start().unwrap_or(first.start());
let out_handle = GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorPosition { point, position },
};
responses.add(out_handle);
@@ -740,7 +740,7 @@ impl ShapeState {
// Insert a new manipulator group between the existing ones
let manipulator_group = ManipulatorGroup::new(first.end(), first.handle_end(), second.handle_start());
let insert = GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::AddManipulatorGroup { manipulator_group, after_id: start },
};
responses.add(insert);
@@ -749,7 +749,7 @@ impl ShapeState {
let point = ManipulatorPointId::new(end, SelectedType::InHandle);
let position = second.handle_end().unwrap_or(second.end());
let in_handle = GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorPosition { point, position },
};
responses.add(in_handle);
@@ -797,16 +797,16 @@ impl ShapeState {
} else {
let point = ManipulatorPointId::new(manipulator.id, SelectedType::InHandle);
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorPosition { point, position: anchor_position },
});
let point = ManipulatorPointId::new(manipulator.id, SelectedType::OutHandle);
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorPosition { point, position: anchor_position },
});
responses.add(GraphOperationMessage::Vector {
layer: layer.to_path(),
layer,
modification: VectorDataModification::SetManipulatorHandleMirroring {
id: manipulator.id,
mirror_angle: false,
@@ -1,6 +1,4 @@
use super::shape_editor::ManipulatorPointInfo;
use crate::consts::{SNAP_AXIS_TOLERANCE, SNAP_POINT_TOLERANCE};
use crate::messages::portfolio::document::utility_types::LayerId;
use crate::messages::prelude::*;
use glam::DVec2;
@@ -100,23 +98,6 @@ impl SnapManager {
}
}
/// Adds all of the shape handles in the document, including bézier handles of the points specified
pub fn add_all_document_handles(
&mut self,
_document_message_handler: &DocumentMessageHandler,
_input: &InputPreprocessorMessageHandler,
_include_handles: &[&[LayerId]],
_exclude: &[&[LayerId]],
_ignore_points: &[ManipulatorPointInfo],
) {
// for path in document_message_handler.all_layers() {
// if !exclude.contains(&path) {
// let layer = document_message_handler.document_legacy.layer(path).expect("Could not get layer for snapping");
// self.add_snap_path(document_message_handler, input, layer, path, include_handles.contains(&path), ignore_points);
// }
// }
}
/// Finds the closest snap from an array of layers to the specified snap targets in viewport coords.
/// Returns 0 for each axis that there is no snap less than the snap tolerance.
pub fn snap_layers(&mut self, responses: &mut VecDeque<Message>, document_message_handler: &DocumentMessageHandler, snap_anchors: Vec<DVec2>, mouse_delta: DVec2) -> DVec2 {