Commit Graph

560 Commits

Author SHA1 Message Date
Adesh Gupta
09ece9424d Fix undo/redo history related issues with the Path tool (#3111)
* Fix transactions

* A little cleanup

* Fix bug in delete

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-11 05:02:45 +00:00
Adam Gerhant
332088bce1 Make the Transform node use angles in degrees instead of radians for Rotation and Skew (#3160)
* Make the Transform node use degrees not radians

* Migration script

* Migrate skew value input to store degrees

* Add comments

* Fix migrations to account for the old deprecated "Pivot" parameter

* Fix tooling interactions with degrees-based transforms

* Upgrade demo art

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-11 00:19:10 +00:00
0SlowPoke0
485152bf8d Add "Spiral" to the Shape tool and as a new node (#2803)
* made spiral node

* number of turns in decimal and arc-angle implementation

* logarithmic spiral

* unified log and arc spiral into spiral node

* add spiral shape in shape tool

* fix min value and degree unit

* make it compile

* updated the api

* changed the function_name

* [/] to update the turns widget in shape tool

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-08 14:37:43 -07:00
Priyanshu
84470b6b6d Fix a regression with duplicating or pasting vector geometry in the Path tool (#3142)
* fix path tool duplication

* fix copy and paste

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-08 05:11:15 +00:00
0SlowPoke0
3e50d177b7 Add "Grid" to the Shape tool along with row/column gizmos (#2921)
* integrated grid shape in shape-tool

* add overlays,detection,transform for gizmo

* fix compile issues

* handle negative correctly,fix undo redo and abort

* fix missed merge conflicts

* fixed mouse cursor,correctly translatiing

* cleanup

* fix click-target area inside rect and spacing

* add 10px closer to gizmo line

* resolved conflicts

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-07 17:53:37 -07:00
Priyanshu
65171a5b8e Fix Path tool box selection not selecting enclosed segments, only intersected (#3141)
fix path tool box selection not selecting the enclosed segment

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-07 22:08:56 +00:00
Adesh Gupta
57111cff92 Fix undo history getting stuck when the Select tool clicks the background to deselect (#3143)
Remove unnecessary start transaction messages

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-07 19:55:12 +00:00
Meet Zalavadiya
0a153150f5 Add quick measurement support to the Artboard tool for distances between artboard edges (#3102)
* logic added for artboard

* fixed measurement logic

* fix linting issues

* removed unused code

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-29 21:27:29 +00:00
Adam Gerhant
f1a1275601 Add support for adding/removing a graph's primary imports/exports separately from the secondary (#3089)
* Primary Import/Export

* Primary Import/Export

* Complete import exports

* Final changes

* Improve line width

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-29 20:57:15 +00:00
Adesh Gupta
34b52bcc54 Clean up Path tool related code and fix bugs in several cases (#3070)
* Fix regressions related to path tool

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-27 23:42:04 +00:00
Dennis Kobert
d9cbf975ff Deprecate automatic composition (#3088)
* Make manual_compositon non optional and rename to call_argument

* Fix clippy warnings

* Remove automatic composition compiler infrastructure

* Implement document migration

* Fix tests

* Fix compilation on web

* Fix doble number test

* Remove extra parens

* Cleanup

* Update demo artwork

* Remove last compose node mention

* Remove last mention of manual composition
2025-08-24 08:34:59 +00:00
Dennis Kobert
7377871106 Fix clippy warnings (#3085)
* Run clippy fix

* Clippy v2

* Make const item static

* Cargo fmt
2025-08-23 11:45:47 +02:00
Dennis Kobert
7c30f6168b Improve snapping performance (#3067)
* Use lyon_geom for intersection calculation of bezier segments

* Implement approximate nearest point calculation and loosen bounding boxes

* Add algorithm explanation

* Update editor/src/messages/tool/common_functionality/snapping/layer_snapper.rs

Co-authored-by: Keavon Chambers <keavon@keavon.com>

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-20 10:47:58 +02:00
Priyanshu
615c035683 Fix a Path tool regression where selection depends on box winding direction (#3062)
fix path tool selection

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-19 04:36:18 +00:00
Mohd Mohsin
17d70dc60e Add struct field visualization to the editor message hierarchy tree visualization on the website (#2917)
* Fix Message Tree: Enforce Structure and Visibility

* Code review

* fix the erroreous ouputs

* error handling for MessageHandler

* Fix website visualization HTML generation

* error handling for tuple-style message enum variant

* cleanup

* Update messages

* Normalize BroadcastEvent

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-18 21:04:29 -07:00
Vineet Puranik
0a4a822837 Fix Alt-based quick measurement to show document space coordinates instead of viewport space (#2995)
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-18 06:33:09 +00:00
Meet Zalavadiya
4da732dcc3 Fix artboard labels not reappearing once the node graph is closed to return to the viewport (#3061)
Closes #3045
2025-08-18 05:49:21 +00:00
Adesh Gupta
52174fa4c2 Remap Path tool point sliding to G G (#2913)
* Feat: Point sliding on G G

* Code cleanup

* Fix gg sliding behaviour

* Fix build after merge conflict resolution

* Fix slide point and add hints

* Fix history in segment insertion

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-17 03:39:38 +00:00
Priyanshu
d22b2ca927 Refactor the Centroid node and Subpath struct and methods to use Kurbo, eliminating all remaining usages of Bezier-rs (#3036)
* define Subpath struct in gcore and refactor node-graph

* Refactor few methods

* refactoring worked!

* refactor centoid area and length

* remove unused

* cleanup

* fix pathseg_points function

* fix tranforming segments

* fix segment intersection

* refactor to_path_segments fn in gpath-bool crate

* refactor gcraft

* add bezier-rs dep

* Code review the editor directory

* use path-bool for solving roots

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-16 13:39:25 -07:00
Adesh Gupta
99984fc2d6 Fix regression in shallow select (#3050)
* Add defer message for shallow select

* Fixed infinite loop
2025-08-15 12:55:05 +02:00
Keavon Chambers
bdc029c692 Add Table<Gradient> as a graphical type (#3051) 2025-08-13 01:42:51 -07:00
Keavon Chambers
1b351aca76 Replace the Color type with Table<Color> everywhere (#3048) 2025-08-12 00:38:23 -07:00
Dennis Kobert
ef2fab32a2 Track which document the deferred executions belong to (#3010)
* Track which document the deferred executions belong to

* Cleanup

* Fix tests

* Fix freehand tool

* Notify defer handler of graph execution updates asap
2025-08-06 21:16:02 +02:00
Keavon Chambers
0f638314dc Rename the Group type to Graphic everywhere (#3009) 2025-08-05 20:55:15 -07:00
James Lindsay
23eb5998db Fix pen tool (#3002) 2025-08-05 11:41:59 +00:00
Keavon Chambers
2e1396462c Eliminate bare Graphic and Artboard graph data by making Merge and Artboard nodes internally use tables (#2996)
* Eliminate bare Graphic and Artboard graph data by making Merge and Artboard nodes internally use tables

* Make the Extend node user-facing
2025-08-05 02:24:12 -07:00
Keavon Chambers
c98477d8ed Rename graphic subtypes to remove their "data" and "group" suffixes (#2990)
* Rename VectorData to Vector

* Rename other VectorData* types to Vector*

* Move assorted data types out of vector_data.rs into misc.rs

* Rename vector_data.rs to vector_types.rs and remove the vector_types module folder

* Rename other references to "vector data"

* Remove label widgets for raster/vector/group to use "-" instead

* Rename RasterData to Raster

* Rename GraphicGroup to Group

* Fix migrations and rename graphic_element.rs -> graphic.rs

* Rename TaggedValue::ArtboardGroup -> TaggedValue::Artboard
2025-08-04 04:53:25 -07:00
0SlowPoke0
fd66f29853 Fix Shape tools bugs with stars/polygons with negative radii and circle radius click detection when viewport is zoomed (#2986)
* fixed spacing,click detection in radius gizmo fix drag in start point radiius gizmo

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-04 01:14:28 +00:00
Timon
8fad295e36 Make checkboxes not use interior mutability (#2976)
* Make checkboxes not use interior mutability

* Use copy instead of cloning

* Fix

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-03 15:16:21 -07:00
Dennis Kobert
7fcdad1f88 Remove message deferral for text creation (#2978)
* Remove message deferral for text creation

* Restructure Trigger Navigation ready to not hijack the PTZ Update
2025-08-03 16:06:30 +02:00
Keavon Chambers
a0ce56d9b6 Rename Instances<T> to Table<T> and the "instance" terminology to "TableRow" and "element" (#2981)
* Instances -> Table

* instances.rs -> table.rs

* Rename occurrances of the word "instances"

* .instance -> .element

* Instance* -> TableRow*

* Rename Table and TableRow methods to not say "instance"

* Remove presumed unused serde defaults now that tables default to length 0 not 1

* Rename occurences of the word "instance"

* Un-alias the RasterDataTable<Storage>, VectorDataTable, GraphicGroupTable, ArtboardGroupTable typedefs

* Move artboard type and node code out of graphic_element.rs to a new artboard.rs

* Organize the TaggedValues

* Fix tests

* Fix prior regression with Image Value node not upgrading
2025-08-03 04:12:18 -07:00
James Lindsay
1e3c3da3fe Fix the Path tool erroneously showing editable geometry overlays belonging to hidden Path nodes (#2932)
* Ignore hidden path nodes

* Use correct path node vector modification

* Break test

* Better fix for test

* Fix rustfmt

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-02 22:53:05 +00:00
Adesh Gupta
c42011f8e2 Partly fix when the "Make Path Editable" button is shown as enabled (#2968)
* Fix add path node button enable

* Fix add path node button enable

* Refactor code

* Fix formatting

* Clean up logic

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-02 21:55:04 +00:00
Adesh Gupta
b9a1b2e951 Add copy/cut/paste/duplicate functionality for path geometry (#2812)
* Copy and Paste for paths

* Fix merge

* Implement Copy, Cut and Duplicate

* Fix selection of segments

* Fix formatting

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-02 21:15:01 +00:00
Adesh Gupta
668acd3c30 Improve the Path tool's segment editing mode and make hovering manipulators react contextually (#2860)
* Improve path editing mode

* Code review

* Tidy up UI

* Update path selection behaviour

* Fix linting

* Remove frozen flag

* Code review

* Fix segment split

* Fix deleting segments

* Add requred methods in vello overlay context

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-01 23:58:35 -07:00
0SlowPoke0
523132da17 Add 'Circle' to the Shape tool and its associated gizmos (#2914)
* merged with circle and impl inner radius gizmo for arc

* impl radius-gizmo for arc

* fix only one gizmo shown at a time

* Code review

* make hints update when changing shape,add default behaviour when dragging to make circle earlier fixed to from center

* fixed arc-radius hover threshold and show arc-endpoint when hover over arc-radius gizmo

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-01 22:23:21 -07:00
Dennis Kobert
f15023ef58 Fix regression with double-click in the Path tool not working (#2963)
* Fix double click in path tool not working

* Remove debug line

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-31 21:53:28 +00:00
0SlowPoke0
7e0a274bd1 Fix Shape tool arc gizmo snap visualization and pointer cursor icon when hovering or dragging (#2957)
* fixed cursor,arc bugs

* Update cursor icon

* send pointer-move only when required

* make it compile

* Code review

* remove repeated modifier key

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-31 00:04:08 -07:00
Keavon Chambers
b348fabfd2 Remove the unsupported Brush tool warning dialog now that raster performance is improved 2025-07-28 17:03:48 -07:00
Dennis Kobert
35ab266bbb Add handler for deferred execution of messages (#2951)
* Add Handler for defered execution of messages

* Cleanup

* Track graph execution id to associate messages with their corresponding execution id

* Rename ViewportReady -> NavigationReady

* Defer layer deselection
2025-07-29 01:57:11 +02:00
Adesh Gupta
75614eb9d4 Fix vector mesh editing behavior in various edge cases (#2943)
* Fix colinear switch behaviour

* Fix Tab to switch handles

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-27 00:20:39 +00:00
0SlowPoke0
3a8c1b6f97 Add Arc drawing mode to the Shape tool and the associated angle gizmos (#2757)
* implement arc gizmo handler

* fixed wrapping need to fix snapping and overlays

* fixed all the issues

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-26 14:55:38 -07:00
Salman Abuhaimed
85021fd9e0 Add text alignment to the Text node (#2920)
* Add text alignment to Text node

* Lots of renames and improvements

* Add text alignment to the Text tool

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-25 22:04:12 -07:00
Firestar99
4fec24893e Shaders: add gcore-shaders and make graster-nodes no-std (#2925)
* gcore-shaders: add crate, move `color` and `blending` from gcore

* gcore-shaders: move `AsU32`

* gcore-shaders: move `ChoiceType`, switch `Cow` for `&str`, adjust node macro

* gcore-shaders: move `registry::types`

* gcore-shaders: move `context::Ctx`

* raster-nodes: make it `no_std` with `std` feature

* gcore-shaders: fix doctest
2025-07-25 17:53:26 +00:00
Szilveszter Ábrám
0d43ad2ea0 Fix Path tool path drag ghost outline sticking to viewport, not moving with document while dragging (#2912)
* Added ghost outline clearing when moving outlines via Path Tool

* Fix ghost outline staying fixed during drag by storing it in document space

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-24 09:28:17 +00:00
Firestar99
890da6a3c3 Clean up code by using Iterator::collect() when constructing instance tables (#2918)
* instances: `Iterator::collect()` instances

* instances: adjust nodes to use iterators

* fix warnings on master

* Bump MSRV

* Port the remaining usages

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-23 05:51:40 +00:00
Adam Gerhant
e4ec67d852 Fix wires on document change and errors on hidden nodes (#2897)
* Fix wires on document change and errors on hidden nodes

* Code cleanup
2025-07-19 01:48:42 -07:00
Adesh Gupta
4427e97f73 Add "Make Path Editable" buttons in the Path tool control bar and Layer menu (#2900)
* Add graph message for adding a path

* Disable options when adding path tool is not possible

* Move Layer menu entry location

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-18 12:22:40 +00:00
Keavon Chambers
99966d848d Fix text per-glyph instance overlays and click target issues 2025-07-14 14:47:01 -07:00
Oliver Davies
74e35f026f Fix regression with GRS cancellation being broken (#2877)
Fix for cancel regression in path tool
2025-07-13 22:03:51 -07:00