Skip to content

Commit 252de1b

Browse files
committed
Merge branch 'master' into temp
2 parents 0212f5a + 6802365 commit 252de1b

33 files changed

+1359
-512
lines changed

editor/src/consts.rs

Lines changed: 36 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
// Graph
1+
// GRAPH
22
pub const GRID_SIZE: u32 = 24;
33
pub const EXPORTS_TO_TOP_EDGE_PIXEL_GAP: u32 = 72;
44
pub const EXPORTS_TO_RIGHT_EDGE_PIXEL_GAP: u32 = 120;
55
pub const IMPORTS_TO_TOP_EDGE_PIXEL_GAP: u32 = 72;
66
pub const IMPORTS_TO_LEFT_EDGE_PIXEL_GAP: u32 = 120;
77

8-
// Viewport
8+
// VIEWPORT
99
pub const VIEWPORT_ZOOM_WHEEL_RATE: f64 = (1. / 600.) * 3.;
1010
pub const VIEWPORT_ZOOM_MOUSE_RATE: f64 = 1. / 400.;
1111
pub const VIEWPORT_ZOOM_SCALE_MIN: f64 = 0.000_000_1;
@@ -17,7 +17,8 @@ pub const VIEWPORT_ZOOM_LEVELS: [f64; 74] = [
1717
128., 160., 200., 256., 320., 400., 512., 640., 800., 1024., 1280., 1600., 2048., 2560.,
1818
];
1919

20-
pub const VIEWPORT_GRID_ROUNDING_BIAS: f64 = 0.002; // Helps push values that end in approximately half, plus or minus some floating point imprecision, towards the same side of the round() function
20+
/// Helps push values that end in approximately half, plus or minus some floating point imprecision, towards the same side of the round() function.
21+
pub const VIEWPORT_GRID_ROUNDING_BIAS: f64 = 0.002;
2122

2223
pub const VIEWPORT_SCROLL_RATE: f64 = 0.6;
2324

@@ -28,76 +29,88 @@ pub const VIEWPORT_ZOOM_TO_FIT_PADDING_SCALE_FACTOR: f64 = 0.95;
2829
pub const DRAG_BEYOND_VIEWPORT_MAX_OVEREXTENSION_PIXELS: f64 = 50.;
2930
pub const DRAG_BEYOND_VIEWPORT_SPEED_FACTOR: f64 = 20.;
3031

31-
// Snapping point
32+
// SNAPPING POINT
3233
pub const SNAP_POINT_TOLERANCE: f64 = 5.;
33-
pub const MAX_ALIGNMENT_CANDIDATES: usize = 100; // These are layers whose bounding boxes are used for alignment.
34-
pub const MAX_SNAP_CANDIDATES: usize = 10; // These are layers that are used for the layer snapper
35-
pub const MAX_LAYER_SNAP_POINTS: usize = 100; // These are points (anchors and bounding box corners etc.) in the layer snapper
34+
/// These are layers whose bounding boxes are used for alignment.
35+
pub const MAX_ALIGNMENT_CANDIDATES: usize = 100;
36+
/// These are layers that are used for the layer snapper.
37+
pub const MAX_SNAP_CANDIDATES: usize = 10;
38+
/// These are points (anchors and bounding box corners etc.) in the layer snapper.
39+
pub const MAX_LAYER_SNAP_POINTS: usize = 100;
3640

3741
pub const DRAG_THRESHOLD: f64 = 1.;
3842

39-
// Transforming layer
43+
// TRANSFORMING LAYER
4044
pub const ROTATE_SNAP_ANGLE: f64 = 15.;
4145
pub const SCALE_SNAP_INTERVAL: f64 = 0.1;
4246
pub const SLOWING_DIVISOR: f64 = 10.;
4347
pub const NUDGE_AMOUNT: f64 = 1.;
4448
pub const BIG_NUDGE_AMOUNT: f64 = 10.;
4549

46-
// Tools
50+
// TOOLS
4751
pub const DEFAULT_STROKE_WIDTH: f64 = 2.;
4852

49-
// Select tool
53+
// SELECT TOOL
5054
pub const SELECTION_TOLERANCE: f64 = 5.;
55+
pub const DRAG_DIRECTION_MODE_DETERMINATION_THRESHOLD: f64 = 15.;
5156
pub const SELECTION_DRAG_ANGLE: f64 = 90.;
5257
pub const PIVOT_CROSSHAIR_THICKNESS: f64 = 1.;
5358
pub const PIVOT_CROSSHAIR_LENGTH: f64 = 9.;
5459
pub const PIVOT_DIAMETER: f64 = 5.;
5560

56-
// Transform overlay
61+
// TRANSFORM OVERLAY
5762
pub const ANGLE_MEASURE_RADIUS_FACTOR: f64 = 0.04;
5863
pub const ARC_MEASURE_RADIUS_FACTOR_RANGE: (f64, f64) = (0.05, 0.15);
5964

60-
// Transformation cage
65+
// TRANSFORM CAGE
6166
pub const BOUNDS_SELECT_THRESHOLD: f64 = 10.;
6267
pub const BOUNDS_ROTATE_THRESHOLD: f64 = 20.;
63-
64-
// Path tool
68+
pub const MIN_LENGTH_FOR_MIDPOINT_VISIBILITY: f64 = 20.;
69+
pub const MIN_LENGTH_FOR_CORNERS_VISIBILITY: f64 = 12.;
70+
/// When the width or height of the transform cage is less than this value, only the exterior of the bounding box will act as a click target for resizing.
71+
pub const MIN_LENGTH_FOR_RESIZE_TO_INCLUDE_INTERIOR: f64 = 40.;
72+
/// When dragging the edge of a cage with Alt, it centers around the pivot.
73+
/// However if the pivot is on or near the same edge you are dragging, we should avoid scaling by a massive factor caused by the small denominator.
74+
///
75+
/// The motion of the user's cursor by an `x` pixel offset results in `x * scale_factor` pixels of offset on the other side.
76+
pub const MAXIMUM_ALT_SCALE_FACTOR: f64 = 25.;
77+
78+
// PATH TOOL
6579
pub const MANIPULATOR_GROUP_MARKER_SIZE: f64 = 6.;
6680
pub const SELECTION_THRESHOLD: f64 = 10.;
6781
pub const HIDE_HANDLE_DISTANCE: f64 = 3.;
6882
pub const INSERT_POINT_ON_SEGMENT_TOO_FAR_DISTANCE: f64 = 50.;
6983
pub const HANDLE_ROTATE_SNAP_ANGLE: f64 = 15.;
7084

71-
// Pen tool
85+
// PEN TOOL
7286
pub const CREATE_CURVE_THRESHOLD: f64 = 5.;
7387

74-
// Spline tool
88+
// SPLINE TOOL
7589
pub const PATH_JOIN_THRESHOLD: f64 = 5.;
7690

77-
// Line tool
91+
// LINE TOOL
7892
pub const LINE_ROTATE_SNAP_ANGLE: f64 = 15.;
7993

80-
// Brush tool
94+
// BRUSH TOOL
8195
pub const BRUSH_SIZE_CHANGE_KEYBOARD: f64 = 5.;
8296
pub const DEFAULT_BRUSH_SIZE: f64 = 20.;
8397

84-
// Scrollbars
98+
// SCROLLBARS
8599
pub const SCROLLBAR_SPACING: f64 = 0.1;
86100
pub const ASYMPTOTIC_EFFECT: f64 = 0.5;
87101
pub const SCALE_EFFECT: f64 = 0.5;
88102

89-
// Colors
90-
// Keep changes to these colors updated with `Editor.svelte`
103+
// COLORS
91104
pub const COLOR_OVERLAY_BLUE: &str = "#00a8ff";
92105
pub const COLOR_OVERLAY_YELLOW: &str = "#ffc848";
93106
pub const COLOR_OVERLAY_GREEN: &str = "#63ce63";
94107
pub const COLOR_OVERLAY_RED: &str = "#ef5454";
95108
pub const COLOR_OVERLAY_GRAY: &str = "#cccccc";
96109
pub const COLOR_OVERLAY_WHITE: &str = "#ffffff";
97-
pub const COLOR_OVERLAY_SNAP_BACKGROUND: &str = "#000000cc";
110+
pub const COLOR_OVERLAY_LABEL_BACKGROUND: &str = "#000000cc";
98111
pub const COLOR_OVERLAY_TRANSPARENT: &str = "#ffffff00";
99112

100-
// Document
113+
// DOCUMENT
101114
pub const DEFAULT_DOCUMENT_NAME: &str = "Untitled Document";
102115
pub const FILE_SAVE_SUFFIX: &str = ".graphite";
103116
pub const MAX_UNDO_HISTORY_LEN: usize = 100; // TODO: Add this to user preferences

editor/src/messages/input_mapper/input_mappings.rs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use crate::messages::input_mapper::utility_types::misc::MappingEntry;
77
use crate::messages::input_mapper::utility_types::misc::{KeyMappingEntries, Mapping};
88
use crate::messages::portfolio::document::node_graph::utility_types::Direction;
99
use crate::messages::portfolio::document::utility_types::clipboards::Clipboard;
10+
use crate::messages::portfolio::document::utility_types::misc::GroupFolderType;
1011
use crate::messages::prelude::*;
1112
use crate::messages::tool::tool_messages::brush_tool::BrushToolMessageOptionsUpdate;
1213
use crate::messages::tool::tool_messages::select_tool::SelectToolPointerKeys;
@@ -93,12 +94,12 @@ pub fn input_mappings() -> Mapping {
9394
entry!(KeyDown(Minus); action_dispatch=TransformLayerMessage::TypeNegate),
9495
entry!(KeyDown(Comma); action_dispatch=TransformLayerMessage::TypeDecimalPoint),
9596
entry!(KeyDown(Period); action_dispatch=TransformLayerMessage::TypeDecimalPoint),
96-
entry!(PointerMove; refresh_keys=[Control, Shift], action_dispatch=TransformLayerMessage::PointerMove { slow_key: Shift, snap_key: Control }),
97+
entry!(PointerMove; refresh_keys=[Control, Shift], action_dispatch=TransformLayerMessage::PointerMove { slow_key: Shift, increments_key: Control }),
9798
//
9899
// SelectToolMessage
99100
entry!(PointerMove; refresh_keys=[Control, Alt, Shift], action_dispatch=SelectToolMessage::PointerMove(SelectToolPointerKeys { axis_align: Shift, snap_angle: Control, center: Alt, duplicate: Alt })),
100-
entry!(KeyDown(MouseLeft); action_dispatch=SelectToolMessage::DragStart { extend_selection: Shift, select_deepest: Accel }),
101-
entry!(KeyUp(MouseLeft); action_dispatch=SelectToolMessage::DragStop { remove_from_selection: Shift, negative_box_selection: Control }),
101+
entry!(KeyDown(MouseLeft); action_dispatch=SelectToolMessage::DragStart { extend_selection: Shift, remove_from_selection: Alt, select_deepest: Accel, lasso_select: Control }),
102+
entry!(KeyUp(MouseLeft); action_dispatch=SelectToolMessage::DragStop { remove_from_selection: Alt }),
102103
entry!(KeyDown(Enter); action_dispatch=SelectToolMessage::Enter),
103104
entry!(DoubleClick(MouseButton::Left); action_dispatch=SelectToolMessage::EditLayer),
104105
entry!(KeyDown(MouseRight); action_dispatch=SelectToolMessage::Abort),
@@ -212,7 +213,7 @@ pub fn input_mappings() -> Mapping {
212213
entry!(KeyDown(Delete); modifiers=[Shift], action_dispatch=PathToolMessage::BreakPath),
213214
entry!(KeyDown(Backspace); modifiers=[Shift], action_dispatch=PathToolMessage::BreakPath),
214215
entry!(KeyDown(Tab); action_dispatch=PathToolMessage::SwapSelectedHandles),
215-
entry!(KeyDown(MouseLeft); action_dispatch=PathToolMessage::MouseDown { direct_insert_without_sliding: Control, extend_selection: Shift }),
216+
entry!(KeyDown(MouseLeft); action_dispatch=PathToolMessage::MouseDown { direct_insert_without_sliding: Control, extend_selection: Shift, lasso_select: Control }),
216217
entry!(KeyDown(MouseRight); action_dispatch=PathToolMessage::RightClick),
217218
entry!(KeyDown(Escape); action_dispatch=PathToolMessage::Escape),
218219
entry!(KeyDown(KeyG); action_dispatch=PathToolMessage::GRS { key: KeyG }),
@@ -223,8 +224,8 @@ pub fn input_mappings() -> Mapping {
223224
entry!(KeyDown(KeyA); modifiers=[Accel], action_dispatch=PathToolMessage::SelectAllAnchors),
224225
entry!(KeyDown(KeyA); modifiers=[Accel, Shift], action_dispatch=PathToolMessage::DeselectAllPoints),
225226
entry!(KeyDown(Backspace); action_dispatch=PathToolMessage::Delete),
226-
entry!(KeyUp(MouseLeft); action_dispatch=PathToolMessage::DragStop { extend_selection: Shift }),
227-
entry!(KeyDown(Enter); action_dispatch=PathToolMessage::Enter { extend_selection: Shift }),
227+
entry!(KeyUp(MouseLeft); action_dispatch=PathToolMessage::DragStop { extend_selection: Shift, shrink_selection: Alt }),
228+
entry!(KeyDown(Enter); action_dispatch=PathToolMessage::Enter { extend_selection: Shift, shrink_selection: Alt }),
228229
entry!(DoubleClick(MouseButton::Left); action_dispatch=PathToolMessage::FlipSmoothSharp),
229230
entry!(KeyDown(ArrowRight); action_dispatch=PathToolMessage::NudgeSelectedPoints { delta_x: NUDGE_AMOUNT, delta_y: 0. }),
230231
entry!(KeyDown(ArrowRight); modifiers=[Shift], action_dispatch=PathToolMessage::NudgeSelectedPoints { delta_x: BIG_NUDGE_AMOUNT, delta_y: 0. }),
@@ -250,6 +251,7 @@ pub fn input_mappings() -> Mapping {
250251
entry!(KeyDown(ArrowDown); modifiers=[ArrowRight], action_dispatch=PathToolMessage::NudgeSelectedPoints { delta_x: NUDGE_AMOUNT, delta_y: NUDGE_AMOUNT }),
251252
entry!(KeyDown(ArrowDown); modifiers=[Shift, ArrowLeft], action_dispatch=PathToolMessage::NudgeSelectedPoints { delta_x: -BIG_NUDGE_AMOUNT, delta_y: BIG_NUDGE_AMOUNT }),
252253
entry!(KeyDown(ArrowDown); modifiers=[Shift, ArrowRight], action_dispatch=PathToolMessage::NudgeSelectedPoints { delta_x: BIG_NUDGE_AMOUNT, delta_y: BIG_NUDGE_AMOUNT }),
254+
entry!(KeyDown(KeyJ); modifiers=[Accel], action_dispatch=ToolMessage::Path(PathToolMessage::ClosePath)),
253255
//
254256
// PenToolMessage
255257
entry!(PointerMove; refresh_keys=[Control, Alt, Shift], action_dispatch=PenToolMessage::PointerMove { snap_angle: Shift, break_handle: Alt, lock_angle: Control}),
@@ -333,7 +335,7 @@ pub fn input_mappings() -> Mapping {
333335
entry!(KeyDown(KeyS); modifiers=[Accel], action_dispatch=DocumentMessage::SaveDocument),
334336
entry!(KeyDown(KeyD); modifiers=[Accel], action_dispatch=DocumentMessage::DuplicateSelectedLayers),
335337
entry!(KeyDown(KeyJ); modifiers=[Accel], action_dispatch=DocumentMessage::DuplicateSelectedLayers),
336-
entry!(KeyDown(KeyG); modifiers=[Accel], action_dispatch=DocumentMessage::GroupSelectedLayers),
338+
entry!(KeyDown(KeyG); modifiers=[Accel], action_dispatch=DocumentMessage::GroupSelectedLayers { group_folder_type: GroupFolderType::Layer }),
337339
entry!(KeyDown(KeyG); modifiers=[Accel, Shift], action_dispatch=DocumentMessage::UngroupSelectedLayers),
338340
entry!(KeyDown(KeyN); modifiers=[Accel, Shift], action_dispatch=DocumentMessage::CreateEmptyFolder),
339341
entry!(KeyDown(BracketLeft); modifiers=[Alt], action_dispatch=DocumentMessage::SelectionStepBack),

editor/src/messages/input_mapper/utility_types/input_keyboard.rs

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,7 @@ impl fmt::Display for Key {
295295
Self::MouseMiddle => "MMB",
296296
Self::MouseBack => "Mouse Back",
297297
Self::MouseForward => "Mouse Fwd",
298+
Self::NumKeys => "0–9",
298299

299300
_ => key_name.as_str(),
300301
};
@@ -317,20 +318,6 @@ struct LayoutKey {
317318
key: String,
318319
label: String,
319320
}
320-
/*
321-
impl Serialize for Key {
322-
fn serialize<S: serde::Serializer>(&self, serializer: S) -> Result<S::Ok, S::Error> {
323-
let key = format!("{:?}", self.0);
324-
let label = self.0.to_string();
325-
326-
assert_eq!(serde_json::to_string(Key::KeyEscape), {"key": KeyEscape, "label": "Esc"});
327-
328-
let mut state = serializer.serialize_struct("KeyWithLabel", 2)?;
329-
state.serialize_field("key", &key)?;
330-
state.serialize_field("label", &label)?;
331-
state.end()
332-
}
333-
}*/
334321

335322
pub const NUMBER_OF_KEYS: usize = Key::NumKeys as usize;
336323

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use super::utility_types::misc::SnappingState;
1+
use super::utility_types::misc::{GroupFolderType, SnappingState};
22
use crate::messages::input_mapper::utility_types::input_keyboard::Key;
33
use crate::messages::portfolio::document::overlays::utility_types::OverlayContext;
44
use crate::messages::portfolio::document::utility_types::document_metadata::LayerNodeIdentifier;
@@ -39,9 +39,6 @@ pub enum DocumentMessage {
3939
},
4040
ClearArtboards,
4141
ClearLayersPanel,
42-
InsertBooleanOperation {
43-
operation: graphene_core::vector::misc::BooleanOperation,
44-
},
4542
CreateEmptyFolder,
4643
DebugPrintDocument,
4744
DeleteNode {
@@ -71,7 +68,9 @@ pub enum DocumentMessage {
7168
GridOptions(GridSnapping),
7269
GridOverlays(OverlayContext),
7370
GridVisibility(bool),
74-
GroupSelectedLayers,
71+
GroupSelectedLayers {
72+
group_folder_type: GroupFolderType,
73+
},
7574
ImaginateGenerate {
7675
imaginate_node: Vec<NodeId>,
7776
},

0 commit comments

Comments
 (0)