Skip to content

Commit 5696f47

Browse files
committed
Code review
1 parent 10ae864 commit 5696f47

6 files changed

Lines changed: 27 additions & 30 deletions

File tree

editor/src/messages/tool/common_functionality/gizmos/gizmo_manager.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,7 @@ impl GizmoManager {
180180
if graph_modification_utils::get_arc_id(layer, &document.network_interface).is_some() {
181181
return Some(ShapeGizmoHandlers::Arc(ArcGizmoHandler::new()));
182182
}
183-
184-
// Polygon
183+
// Circle
185184
if graph_modification_utils::get_circle_id(layer, &document.network_interface).is_some() {
186185
return Some(ShapeGizmoHandlers::Circle(CircleGizmoHandler::default()));
187186
}

editor/src/messages/tool/common_functionality/gizmos/shape_gizmos/circle_arc_radius_handle.rs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
use crate::consts::GIZMO_HIDE_THRESHOLD;
22
use crate::messages::frontend::utility_types::MouseCursorIcon;
33
use crate::messages::message::Message;
4+
use crate::messages::portfolio::document::overlays::utility_types::OverlayContext;
45
use crate::messages::portfolio::document::utility_types::document_metadata::LayerNodeIdentifier;
5-
use crate::messages::portfolio::document::{overlays::utility_types::OverlayContext, utility_types::network_interface::InputConnector};
6+
use crate::messages::portfolio::document::utility_types::network_interface::InputConnector;
67
use crate::messages::prelude::{DocumentMessageHandler, InputPreprocessorMessageHandler, NodeGraphMessage};
78
use crate::messages::prelude::{FrontendMessage, Responses};
89
use crate::messages::tool::common_functionality::graph_modification_utils::{self, get_arc_id, get_stroke_width};
@@ -80,19 +81,19 @@ impl RadiusHandle {
8081
self.initial_radius = radius;
8182
self.previous_mouse_position = mouse_position;
8283
self.angle = angle;
84+
8385
self.update_state(RadiusHandleState::Hover);
86+
8487
responses.add(FrontendMessage::UpdateMouseCursor { cursor: MouseCursorIcon::EWResize });
8588
}
8689
}
87-
8890
RadiusHandleState::Dragging | RadiusHandleState::Hover => {}
8991
}
9092
}
9193

9294
pub fn overlays(&self, document: &DocumentMessageHandler, overlay_context: &mut OverlayContext) {
9395
match &self.handle_state {
9496
RadiusHandleState::Inactive => {}
95-
9697
RadiusHandleState::Dragging | RadiusHandleState::Hover => {
9798
let Some(layer) = self.layer else { return };
9899
let Some(radius) = extract_circle_radius(layer, document).or(extract_arc_parameters(Some(layer), document).map(|(r, _, _, _)| r)) else {
@@ -105,14 +106,11 @@ impl RadiusHandle {
105106
let end_point = viewport.transform_point2(calculate_circle_point_position(FRAC_PI_2, radius)).distance(center);
106107

107108
if let Some(stroke_width) = get_stroke_width(layer, &document.network_interface) {
108-
let threshold = 15.0;
109+
let threshold = 15.;
109110
let min_radius = start_point.min(end_point);
110111

111-
let extra_spacing = if min_radius < threshold {
112-
10.0 * (min_radius / threshold) // smoothly scales from 0 → 10
113-
} else {
114-
10.0
115-
};
112+
// Smoothly scales from 0 → 10 as the radius approaches the threshold
113+
let extra_spacing = if min_radius < threshold { 10. * (min_radius / threshold) } else { 10. };
116114

117115
let spacing = stroke_width + extra_spacing;
118116
let smaller_radius_x = (start_point - spacing).abs();
@@ -134,14 +132,13 @@ impl RadiusHandle {
134132

135133
pub fn update_inner_radius(&mut self, document: &DocumentMessageHandler, input: &InputPreprocessorMessageHandler, responses: &mut VecDeque<Message>, drag_start: DVec2) {
136134
let Some(layer) = self.layer else { return };
137-
138135
let Some(node_id) = graph_modification_utils::get_circle_id(layer, &document.network_interface).or(get_arc_id(layer, &document.network_interface)) else {
139136
return;
140137
};
141-
142138
let Some(current_radius) = extract_circle_radius(layer, document).or(extract_arc_parameters(Some(layer), document).map(|(r, _, _, _)| r)) else {
143139
return;
144140
};
141+
145142
let viewport_transform = document.network_interface.document_metadata().transform_to_viewport(layer);
146143
let center = viewport_transform.transform_point2(DVec2::ZERO);
147144

editor/src/messages/tool/common_functionality/shapes/arc_shape.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ impl ShapeGizmoHandler for ArcGizmoHandler {
4343
self.arc_radius_handle.update_state(RadiusHandleState::Inactive);
4444
return;
4545
}
46+
4647
if self.sweep_angle_gizmo.hovered() {
4748
self.sweep_angle_gizmo.update_state(SweepAngleGizmoState::Dragging);
4849
}

editor/src/messages/tool/common_functionality/shapes/circle_shape.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@ use crate::messages::portfolio::document::node_graph::document_node_definitions:
33
use crate::messages::portfolio::document::overlays::utility_types::OverlayContext;
44
use crate::messages::portfolio::document::utility_types::document_metadata::LayerNodeIdentifier;
55
use crate::messages::portfolio::document::utility_types::network_interface::{InputConnector, NodeTemplate};
6-
76
use crate::messages::tool::common_functionality::gizmos::shape_gizmos::circle_arc_radius_handle::{RadiusHandle, RadiusHandleState};
87
use crate::messages::tool::common_functionality::graph_modification_utils;
9-
108
use crate::messages::tool::common_functionality::shape_editor::ShapeState;
119
use crate::messages::tool::common_functionality::shapes::shape_utility::ShapeGizmoHandler;
1210
use crate::messages::tool::tool_messages::tool_prelude::*;

editor/src/messages/tool/common_functionality/shapes/shape_utility.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,24 @@ use std::f64::consts::{PI, TAU};
2525
pub enum ShapeType {
2626
#[default]
2727
Polygon = 0,
28-
Star = 1,
29-
Circle = 2,
30-
Arc = 3,
31-
Rectangle = 4,
32-
Ellipse = 5,
33-
Line = 6,
28+
Star,
29+
Circle,
30+
Arc,
31+
Rectangle,
32+
Ellipse,
33+
Line,
3434
}
3535

3636
impl ShapeType {
3737
pub fn name(&self) -> String {
3838
(match self {
3939
Self::Polygon => "Polygon",
4040
Self::Star => "Star",
41+
Self::Circle => "Circle",
4142
Self::Arc => "Arc",
4243
Self::Rectangle => "Rectangle",
4344
Self::Ellipse => "Ellipse",
4445
Self::Line => "Line",
45-
Self::Circle => "Circle",
4646
})
4747
.into()
4848
}

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

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ impl Fsm for ShapeToolFsmState {
476476

477477
if matches!(self, ShapeToolFsmState::Drawing(_) | ShapeToolFsmState::DraggingLineEndpoints) {
478478
Line::overlays(document, tool_data, &mut overlay_context);
479-
if matches!(tool_options.shape_type, ShapeType::Circle) {
479+
if tool_options.shape_type == ShapeType::Circle {
480480
tool_data.gizmo_manager.overlays(document, input, shape_editor, mouse_position, &mut overlay_context);
481481
}
482482
}
@@ -657,7 +657,7 @@ impl Fsm for ShapeToolFsmState {
657657
};
658658

659659
match tool_data.current_shape {
660-
ShapeType::Polygon | ShapeType::Star | ShapeType::Ellipse | ShapeType::Arc | ShapeType::Rectangle | ShapeType::Circle => tool_data.data.start(document, input),
660+
ShapeType::Polygon | ShapeType::Star | ShapeType::Circle | ShapeType::Arc | ShapeType::Rectangle | ShapeType::Ellipse => tool_data.data.start(document, input),
661661
ShapeType::Line => {
662662
let point = SnapCandidatePoint::handle(document.metadata().document_to_viewport.inverse().transform_point2(input.mouse.position));
663663
let snapped = tool_data.data.snap_manager.free_snap(&SnapData::new(document, input), &point, SnapTypeConfiguration::default());
@@ -670,11 +670,11 @@ impl Fsm for ShapeToolFsmState {
670670
let node = match tool_data.current_shape {
671671
ShapeType::Polygon => Polygon::create_node(tool_options.vertices),
672672
ShapeType::Star => Star::create_node(tool_options.vertices),
673+
ShapeType::Circle => Circle::create_node(),
673674
ShapeType::Arc => Arc::create_node(tool_options.arc_type),
674675
ShapeType::Rectangle => Rectangle::create_node(),
675676
ShapeType::Ellipse => Ellipse::create_node(),
676677
ShapeType::Line => Line::create_node(document, tool_data.data.drag_start),
677-
ShapeType::Circle => Circle::create_node(),
678678
};
679679

680680
let nodes = vec![(NodeId(0), node)];
@@ -683,7 +683,7 @@ impl Fsm for ShapeToolFsmState {
683683
let defered_responses = &mut VecDeque::new();
684684

685685
match tool_data.current_shape {
686-
ShapeType::Ellipse | ShapeType::Rectangle | ShapeType::Arc | ShapeType::Polygon | ShapeType::Star | ShapeType::Circle => {
686+
ShapeType::Polygon | ShapeType::Star | ShapeType::Circle | ShapeType::Arc | ShapeType::Rectangle | ShapeType::Ellipse => {
687687
defered_responses.add(GraphOperationMessage::TransformSet {
688688
layer,
689689
transform: DAffine2::from_scale_angle_translation(DVec2::ONE, 0., input.mouse.position),
@@ -715,13 +715,13 @@ impl Fsm for ShapeToolFsmState {
715715
};
716716

717717
match tool_data.current_shape {
718-
ShapeType::Rectangle => Rectangle::update_shape(document, input, layer, tool_data, modifier, responses),
719-
ShapeType::Ellipse => Ellipse::update_shape(document, input, layer, tool_data, modifier, responses),
720-
ShapeType::Line => Line::update_shape(document, input, layer, tool_data, modifier, responses),
721718
ShapeType::Polygon => Polygon::update_shape(document, input, layer, tool_data, modifier, responses),
722719
ShapeType::Star => Star::update_shape(document, input, layer, tool_data, modifier, responses),
723720
ShapeType::Circle => Circle::update_shape(document, input, layer, responses),
724721
ShapeType::Arc => Arc::update_shape(document, input, layer, tool_data, modifier, responses),
722+
ShapeType::Rectangle => Rectangle::update_shape(document, input, layer, tool_data, modifier, responses),
723+
ShapeType::Ellipse => Ellipse::update_shape(document, input, layer, tool_data, modifier, responses),
724+
ShapeType::Line => Line::update_shape(document, input, layer, tool_data, modifier, responses),
725725
}
726726

727727
// Auto-panning
@@ -959,7 +959,9 @@ impl Fsm for ShapeToolFsmState {
959959
ShapeType::Circle => HintGroup(vec![]),
960960
};
961961

962-
common_hint_group.push(tool_hint_group);
962+
if !tool_hint_group.0.is_empty() {
963+
common_hint_group.push(tool_hint_group);
964+
}
963965

964966
if matches!(shape, ShapeType::Polygon | ShapeType::Star) {
965967
common_hint_group.push(HintGroup(vec![HintInfo::multi_keys([[Key::BracketLeft], [Key::BracketRight]], "Decrease/Increase Sides")]));

0 commit comments

Comments
 (0)