Skip to content

Commit f7ef31a

Browse files
Merge branch 'master' into fix/vello-stroke-alignment-cropping
2 parents 3fa9e4c + c4bbb7e commit f7ef31a

File tree

11 files changed

+34
-28
lines changed

11 files changed

+34
-28
lines changed

editor/src/messages/portfolio/document/document_message_handler.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1542,7 +1542,7 @@ impl MessageHandler<DocumentMessage, DocumentMessageContext<'_>> for DocumentMes
15421542
.default_node_template();
15431543
responses.add(NodeGraphMessage::InsertNode {
15441544
node_id,
1545-
node_template: new_artboard_node,
1545+
node_template: Box::new(new_artboard_node),
15461546
});
15471547
responses.add(NodeGraphMessage::ShiftNodePosition { node_id, x: 15, y: -3 });
15481548
responses.add(GraphOperationMessage::ResizeArtboard {

editor/src/messages/portfolio/document/node_graph/node_graph_message.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ pub enum NodeGraphMessage {
7575
},
7676
InsertNode {
7777
node_id: NodeId,
78-
node_template: NodeTemplate,
78+
// Boxed to reduce size of enum (1120 bytes to 8 bytes)
79+
node_template: Box<NodeTemplate>,
7980
},
8081
InsertNodeBetween {
8182
node_id: NodeId,

editor/src/messages/portfolio/document/node_graph/node_graph_message_handler.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,7 @@ impl<'a> MessageHandler<NodeGraphMessage, NodeGraphMessageContext<'a>> for NodeG
264264

265265
responses.add(NodeGraphMessage::InsertNode {
266266
node_id,
267-
node_template: node_template.clone(),
267+
node_template: Box::new(node_template.clone()),
268268
});
269269
responses.add(NodeGraphMessage::ShiftNodePosition { node_id, x, y });
270270
// Only auto connect to the dragged wire if the node is being added to the currently opened network
@@ -507,7 +507,7 @@ impl<'a> MessageHandler<NodeGraphMessage, NodeGraphMessageContext<'a>> for NodeG
507507
responses.add(NodeGraphMessage::UpdateImportsExports);
508508
}
509509
NodeGraphMessage::InsertNode { node_id, node_template } => {
510-
network_interface.insert_node(node_id, node_template, selection_network_path);
510+
network_interface.insert_node(node_id, *node_template, selection_network_path);
511511
}
512512
NodeGraphMessage::InsertNodeBetween {
513513
node_id,
@@ -624,7 +624,7 @@ impl<'a> MessageHandler<NodeGraphMessage, NodeGraphMessageContext<'a>> for NodeG
624624
responses.add(DocumentMessage::AddTransaction);
625625
responses.add(NodeGraphMessage::InsertNode {
626626
node_id: encapsulating_node_id,
627-
node_template: default_node_template,
627+
node_template: Box::new(default_node_template),
628628
});
629629
responses.add(NodeGraphMessage::SetDisplayNameImpl {
630630
node_id: encapsulating_node_id,

editor/src/messages/tool/common_functionality/graph_modification_utils.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ pub fn merge_layers(document: &DocumentMessageHandler, first_layer: LayerNodeIde
7777
.default_node_template();
7878
responses.add(NodeGraphMessage::InsertNode {
7979
node_id: merge_node_id,
80-
node_template: merge_node,
80+
node_template: Box::new(merge_node),
8181
});
8282
responses.add(NodeGraphMessage::SetToNodeOrLayer {
8383
node_id: merge_node_id,
@@ -103,7 +103,7 @@ pub fn merge_layers(document: &DocumentMessageHandler, first_layer: LayerNodeIde
103103
.default_node_template();
104104
responses.add(NodeGraphMessage::InsertNode {
105105
node_id: flatten_node_id,
106-
node_template: flatten_node,
106+
node_template: Box::new(flatten_node),
107107
});
108108
responses.add(NodeGraphMessage::MoveNodeToChainStart {
109109
node_id: flatten_node_id,
@@ -117,7 +117,7 @@ pub fn merge_layers(document: &DocumentMessageHandler, first_layer: LayerNodeIde
117117
.default_node_template();
118118
responses.add(NodeGraphMessage::InsertNode {
119119
node_id: path_node_id,
120-
node_template: path_node,
120+
node_template: Box::new(path_node),
121121
});
122122
responses.add(NodeGraphMessage::MoveNodeToChainStart {
123123
node_id: path_node_id,
@@ -132,7 +132,7 @@ pub fn merge_layers(document: &DocumentMessageHandler, first_layer: LayerNodeIde
132132
.default_node_template();
133133
responses.add(NodeGraphMessage::InsertNode {
134134
node_id: spline_node_id,
135-
node_template: spline_node,
135+
node_template: Box::new(spline_node),
136136
});
137137
responses.add(NodeGraphMessage::MoveNodeToChainStart {
138138
node_id: spline_node_id,
@@ -147,7 +147,7 @@ pub fn merge_layers(document: &DocumentMessageHandler, first_layer: LayerNodeIde
147147
.default_node_template();
148148
responses.add(NodeGraphMessage::InsertNode {
149149
node_id: transform_node_id,
150-
node_template: transform_node,
150+
node_template: Box::new(transform_node),
151151
});
152152
responses.add(NodeGraphMessage::MoveNodeToChainStart {
153153
node_id: transform_node_id,

editor/src/messages/tool/tool_messages/artboard_tool.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,13 +178,18 @@ impl ArtboardToolData {
178178
let Some(movement) = &bounds.selected_edges else {
179179
return;
180180
};
181-
if self.selected_artboard == Some(LayerNodeIdentifier::ROOT_PARENT) {
181+
let Some(selected_artboard) = self.selected_artboard else {
182+
warn!("Attempted to resize artboard with no selected artboard");
183+
self.bounding_box_manager.take(); // Remove the bounding box manager if there is no artboard.
184+
return; // Just do nothing instead of crashing since the state likely isn't too broken.
185+
};
186+
if selected_artboard == LayerNodeIdentifier::ROOT_PARENT {
182187
log::error!("Selected artboard cannot be ROOT_PARENT");
183188
return;
184189
}
185190

186191
let center = from_center.then_some(bounds.center_of_transformation);
187-
let ignore = self.selected_artboard.map_or(Vec::new(), |layer| vec![layer]);
192+
let ignore = vec![selected_artboard];
188193
let snap = Some(SizeSnapData {
189194
manager: &mut self.draw.snap_manager,
190195
points: &mut self.snap_candidates,
@@ -196,14 +201,14 @@ impl ArtboardToolData {
196201
let size = (max - min).abs();
197202

198203
responses.add(GraphOperationMessage::ResizeArtboard {
199-
layer: self.selected_artboard.unwrap(),
204+
layer: selected_artboard,
200205
location: position.round().as_ivec2(),
201206
dimensions: size.round().as_ivec2(),
202207
});
203208

204209
let translation = position.round().as_ivec2() - self.dragging_current_artboard_location;
205210
self.dragging_current_artboard_location = position.round().as_ivec2();
206-
for child in self.selected_artboard.unwrap().children(document.metadata()) {
211+
for child in selected_artboard.children(document.metadata()) {
207212
let local_translation = document.metadata().downstream_transform_to_document(child).inverse().transform_vector2(-translation.as_dvec2());
208213
responses.add(GraphOperationMessage::TransformChange {
209214
layer: child,
@@ -235,6 +240,9 @@ impl Fsm for ArtboardToolFsmState {
235240
bounding_box_manager.transform = document.metadata().document_to_viewport;
236241

237242
bounding_box_manager.render_overlays(&mut overlay_context, true);
243+
} else {
244+
// If the bounding box is not resolved (e.g. if the artboard is deleted), then discard the bounding box.
245+
tool_data.bounding_box_manager.take();
238246
}
239247
} else {
240248
tool_data.bounding_box_manager.take();

editor/src/messages/tool/tool_messages/path_tool.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1214,7 +1214,7 @@ impl PathToolData {
12141214

12151215
// Check if that segment exists or it has been removed
12161216
if let Some(vector_data) = document.network_interface.compute_modified_vector(layer)
1217-
&& !(vector_data.segment_domain.ids().iter().any(|segment| *segment == segment_id))
1217+
&& !(vector_data.segment_domain.ids().contains(&segment_id))
12181218
{
12191219
self.segment = None;
12201220
}

node-graph/gcore/src/vector/vector_nodes.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -821,16 +821,17 @@ async fn vec2_to_point(_: impl Ctx, vec2: DVec2) -> Table<Vector> {
821821
async fn points_to_polyline(_: impl Ctx, mut points: Table<Vector>, #[default(true)] closed: bool) -> Table<Vector> {
822822
for row in points.iter_mut() {
823823
let mut segment_domain = SegmentDomain::new();
824+
let mut next_id = SegmentId::ZERO;
824825

825826
let points_count = row.element.point_domain.ids().len();
826827

827828
if points_count > 2 {
828829
(0..points_count - 1).for_each(|i| {
829-
segment_domain.push(SegmentId::generate(), i, i + 1, BezierHandles::Linear, StrokeId::generate());
830+
segment_domain.push(next_id.next_id(), i, i + 1, BezierHandles::Linear, StrokeId::generate());
830831
});
831832

832833
if closed {
833-
segment_domain.push(SegmentId::generate(), points_count - 1, 0, BezierHandles::Linear, StrokeId::generate());
834+
segment_domain.push(next_id.next_id(), points_count - 1, 0, BezierHandles::Linear, StrokeId::generate());
834835

835836
row.element
836837
.region_domain
@@ -1394,6 +1395,7 @@ async fn spline(_: impl Ctx, content: Table<Vector>) -> Table<Vector> {
13941395
}
13951396

13961397
let mut segment_domain = SegmentDomain::default();
1398+
let mut next_id = SegmentId::ZERO;
13971399
for (manipulator_groups, closed) in row.element.stroke_manipulator_groups() {
13981400
let positions = manipulator_groups.iter().map(|manipulators| manipulators.anchor).collect::<Vec<_>>();
13991401
let closed = closed && positions.len() > 2;
@@ -1418,7 +1420,7 @@ async fn spline(_: impl Ctx, content: Table<Vector>) -> Table<Vector> {
14181420
let handle_end = positions[next_index] * 2. - first_handles[next_index];
14191421
let handles = BezierHandles::Cubic { handle_start, handle_end };
14201422

1421-
segment_domain.push(SegmentId::generate(), start_index, end_index, handles, stroke_id);
1423+
segment_domain.push(next_id.next_id(), start_index, end_index, handles, stroke_id);
14221424
}
14231425
}
14241426

node-graph/node-macro/src/buffer_struct.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ impl VisitMut for GenericsVisitor<'_> {
205205
}
206206

207207
fn visit_path_segment_mut(&mut self, i: &mut PathSegment) {
208-
if i.ident.to_string() == "Self" {
208+
if i.ident == "Self" {
209209
i.ident = self.self_ident.clone();
210210
}
211211
visit_mut::visit_path_segment_mut(self, i);

node-graph/node-macro/src/codegen.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ pub(crate) fn generate_node_code(crate_ident: &CrateIdent, parsed: &ParsedNodeFn
287287
let properties = &attributes.properties_string.as_ref().map(|value| quote!(Some(#value))).unwrap_or(quote!(None));
288288

289289
let cfg = crate::shader_nodes::modify_cfg(attributes);
290-
let node_input_accessor = generate_node_input_references(parsed, fn_generics, &field_idents, &graphene_core, &identifier, &cfg);
290+
let node_input_accessor = generate_node_input_references(parsed, fn_generics, &field_idents, graphene_core, &identifier, &cfg);
291291
let ShaderTokens { shader_entry_point, gpu_node } = attributes.shader_node.as_ref().map(|n| n.codegen(crate_ident, parsed)).unwrap_or(Ok(ShaderTokens::default()))?;
292292

293293
Ok(quote! {

node-graph/node-macro/src/crate_ident.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,11 @@ impl Default for CrateIdent {
3030
let name = format_ident!("{}", name);
3131
Ok(quote!(::#name))
3232
}
33-
Err(e) => Err(syn::Error::new(Span::call_site(), &format!("Could not find dependency on `{orig_name}`:\n{e}"))),
33+
Err(e) => Err(syn::Error::new(Span::call_site(), format!("Could not find dependency on `{orig_name}`:\n{e}"))),
3434
};
3535

3636
let gcore = find_crate("graphene-core");
37-
let gcore_shaders = find_crate("graphene-core-shaders").or_else(|eshaders| {
38-
gcore
39-
.as_ref()
40-
.map(Clone::clone)
41-
.map_err(|ecore| syn::Error::new(Span::call_site(), &format!("{ecore}\n\nFallback: {eshaders}")))
42-
});
37+
let gcore_shaders = find_crate("graphene-core-shaders").or_else(|eshaders| gcore.clone().map_err(|ecore| syn::Error::new(Span::call_site(), format!("{ecore}\n\nFallback: {eshaders}"))));
4338
let wgpu_executor = find_crate("wgpu-executor");
4439
Self { gcore, gcore_shaders, wgpu_executor }
4540
}

0 commit comments

Comments
 (0)