Keavon Chambers
eda858b6e2
Add support for the 'Boolean Operation' node to accept vector tables, not just groups
2025-06-19 18:58:19 -07:00
Keavon Chambers
96a0dada92
Replace 'Generate Handles' and 'Remove Handles' nodes with 'Auto-Tangents' node; rename vector2 data type to coordinate
2025-06-19 18:56:57 -07:00
Adesh Gupta
f72263f4f8
Add molding segments to the Path tool ( #2660 )
...
* Moulding of cubic bezier
* Implemented falloff with interpolation
* remove conflict
* Move falloff to consts
* Spelling
* Refine falloff param and bug fix
* Code review
* Add colinear disable modes to molding degment feat
* Clean comments and unused code
* Code refactor
* Fix error
* Change colinear toggle behaviour
* Code review
* Remove KeyC feat + Fix overlay
* Dynamic hints in path tool
* Revamp molding logic
* Code review
* Remove unused Bezier algorithms (maybe useful for future reference)
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-06-19 18:55:57 -07:00
Priyanshu
4696004dc9
Refactor the 'Spline' node to use Kurbo instead of Bezier-rs ( #2701 )
...
* copy and refactor spline algorithm from Bezier-rs
* add comments
* refactor spline node
* fix spline when path is closed
* use refactored version of spline algorithm
* revert changes to 'Spline' node funtion
* use manipulator groups instead of bezpath
* Fix comment
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-06-19 18:55:11 -07:00
mTvare
4dfeafd65e
Improve the click targets for the skew triangles of the transform cage ( #2703 )
...
Extend the bounding box over triangle to extend beyond the triangle
2025-06-19 18:54:13 -07:00
Adesh Gupta
33a31b4f17
Fix the Path tool's segment insertion line overlay having hysteresis with distance away from the cursor ( #2677 )
...
* Fix hysteresis in segment insertion
* Update editor/src/messages/tool/common_functionality/shape_editor.rs
* Update editor/src/messages/tool/common_functionality/shape_editor.rs
* Fix insert point overlay
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-06-19 18:53:14 -07:00
mTvare
04d7adb867
Fix grid overlay values getting wiped when switching between isometric/rectangular and back ( #2702 )
...
* Retain values present in previous git overlay state
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-06-19 18:51:56 -07:00
mTvare
a1d85779ba
Fix inability to deselect nodes, and nodes not being selected when pasted ( #2691 )
...
* Deselect on shift/alt click and paste selects multiple mode
* Grid values persistance
* reset
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-06-19 18:50:57 -07:00
seam0s
878f5d3bf7
Add overlays for free-floating anchors on hovered/selected vector layers ( #2630 )
...
* Add selection overlay for free-floating anchors
* Add hover overlay for free-floating anchors
* Refactor outline_free_floating anchor
* Add single-anchor click targets on VectorData
* Modify ClickTarget to adapt for Subpath and PointGroup
* Fix Rust formatting
* Remove debug statements
* Add point groups support in VectorDataTable::add_upstream_click_targets
* Improve overlay for free floating anchors
* Remove datatype for nodes_to_shift
* Fix formatting in select_tool.rs
* Lints
* Code review
* Remove references to point_group
* Refactor ManipulatorGroup for FreePoint in ClickTargetGroup
* Rename ClickTargetGroup to ClickTargetType
* Refactor outline_free_floating_anchors into outline
* Adapt TransformCage to disable dragging and rotating on a single anchor layer
* Fix hover on single points
* Fix comments
* Lints
* Code review pass
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-06-19 18:50:53 -07:00
Priyanshu
477a3f6670
Refactor the 'Morph' node to use Kurbo instead of Bezier-rs ( #2696 )
...
* fix morph node
* it worked!
* cleanup
* add comments
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-06-19 18:44:52 -07:00
Priyanshu
b0384adabc
Refactor the 'Bounding Box' node to use Kurbo instead of Bezier-rs ( #2662 )
...
* use kurbo's default accuracy constant
* fix append_bezpath() method
* refactor bounding box node
* fix append bezpath implementation.
* comments
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-06-19 18:43:38 -07:00
James Lindsay
bf7caef6fb
Instance tables refactor part 8: Output the type of the input data with the Mirror node as well ( #2699 )
...
* Flatten output of mirror node
* Enable reflection based on pivot, not just bounds
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-06-19 18:42:01 -07:00
James Lindsay
57bf2f873e
Temporarily fix the Pen/Freehand/Spline tools by making vector modify apply to row 1 only ( #2700 )
2025-06-19 18:38:14 -07:00
Keavon Chambers
cea1a1c6a8
Instance tables refactor part 8: Make repeater nodes use pivot not bbox and output instance type not group; rename 'Flatten Vector Elements' to 'Flatten Path' and add 'Flatten Vector' ( #2697 )
...
Make repeater nodes use pivot not bbox and output instance type not group; rename 'Flatten Vector Elements' to 'Flatten Path' and add 'Flatten Vector'
2025-06-19 18:37:40 -07:00
Keavon Chambers
523cc27523
Improve the spreadsheet visualization details for VectorData
2025-06-19 18:37:39 -07:00
Keavon Chambers
6111440afd
Instance tables refactor part 7: Remove RasterDataType and add Raster<CPU>/Raster<GPU>
2025-06-19 18:37:13 -07:00
Keavon Chambers
5cacab2e39
Instance tables refactor part 7: Rename "ImageFrame" -> "RasterData", "ImageFrameTable" -> "RasterDataType", and "RasterFrame" -> "RasterDataType"
2025-06-19 18:23:53 -07:00
Keavon Chambers
2696abc6b3
Replace Instances<T>::empty() with Instances<T>::default() and make it return an empty table for vector data instead of one empty row ( #2689 )
...
Make Instances<T>::default() return an empty table for everything, even vector, and replace ::empty() with ::default()
2025-06-04 21:00:21 -07:00
Keavon Chambers
cb4289169d
Instance tables refactor part 6: unwrap VectorData and ImageFrame from single-row to multi-row tables ( #2684 )
...
* Start refactoring the boolean operations code
* Switch to iterators in the boolean operations code
* Make boolean operations work on rows of a table, not Vecs of single-row tables
* Remove more .transform()
* Simplify brush code
* Attempt to remove .transform() by using Instance<Image<Color>> in brush code, but a regression is introduced
* Improve blend_image_closure
* Simplify
* Remove leading underscore from type arguments
* Remove .transform() from ImageFrameTable<P> and fix Mask node behavior on stencils not fully overlapping its target image
* Remove more .one_instance_ref()
* Fully remove .one_instance_ref() and improve the 'Combine Channels' node robustness
* Fully remove .once_instance_mut()
* Fix tests
* Remove .one_empty_image()
* Make Instances<T>::default() return an empty table for images, but still not yet vector
---------
Co-authored-by: hypercube <0hypercube@gmail.com>
2025-06-04 20:40:15 -07:00
Dennis Kobert
76ecdc8f1b
Fix the 'Upload Texture' node ( #2680 )
...
* Fix upload texture node
* Feature gate gpu node implemenations
2025-05-29 04:35:35 -07:00
mTvare
4d2e1d57fd
Instance table refactor part 6: remove usage of one_instance_*
functions ( #2672 )
...
* Refactor the spline node
* Refactor the jitter_points node
* Refactor the morph node
* Refactor the merge_by_distance node
* Refactor the area node
* Refactor the centroid node
* Refactor the bevel node
* Refactor the tests
* Code review
* Refactor the morph node
* Refactor the extend_image_to_bounds and sample_image node
* Refactor the dehaze node
* Refactor the blur node
* Refactor the vector_points node
* Refactor the blit node
* Refactor the blend_gpu_image node
* Refactor the path_modify node
* Refactor the image_color_palette
* Fix copy_to_points
* Code review
* Partially make progress toward fixing the Draw Canvas node
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-29 03:08:16 -07:00
Timon Schelling
fbefa5b827
Fix missing cargo-about in nix shell ( #2665 )
...
frontend/vite.config.ts formatThirdPartyLicenses needs cargo-about to be in path.
This adds cargo-about as a build dependency for both nix shells.
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-28 12:41:52 +02:00
Adesh Gupta
b564579362
Make the Path tool only allow selecting points that are visible ( #2668 )
...
* Fix only visible points selection in point selection
* Fix comments
* Remove bug from box selection and lasso
* Code review
* Fix comment
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-28 02:24:23 -07:00
0SlowPoke0
f6e592da5b
New nodes: 'Point Inside Shape' and 'Close Path' ( #2673 )
...
* add point inside shape,close path,and disabled node to layer conversion
* removed the usage one_instance
* code review
2025-05-26 02:15:31 -07:00
Adesh Gupta
3496e22f55
Fix box selection bug in the Path tool where document and viewport space got mixed up ( #2671 )
...
* Fix box selection bug
* Fix all layers selected on paste
2025-05-25 16:33:49 -07:00
Keavon Chambers
2cee9e24cd
Refactor some more vector nodes to use loops instead of one_instance, as a start to #1834 part 6
2025-05-24 21:33:58 -07:00
Keavon Chambers
63cce26755
Tweak the design of the RadioInput widget
2025-05-24 16:07:01 -07:00
0SlowPoke0
8a8e496058
Implement angle locking when Ctrl is pressed over an adjacent anchor ( #2663 )
...
* Implement angle lock from adjacent anchors
* Reset offset state and added comments
* Code review
* fix selecting correct handle to lock
* Update comment
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-24 12:09:43 +00:00
Keavon Chambers
c4678336e5
Add support for clicking checkboxes via their labels ( #2667 )
2025-05-24 04:46:15 -07:00
Keavon Chambers
80f38d91c0
Optimize Poisson-disk point sampling by halving the number of line intersection checks with caching ( #2661 )
2025-05-22 00:07:12 -07:00
Priyanshu
487b17a8d7
Fix 'Scatter Points' node artifacts ( #2657 )
...
* fix
* improve variable names
* fix point offsetting.
* Code review
* Update red dress artwork to preserve its look with new seeds
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-21 21:22:54 -07:00
Keavon Chambers
899ed5ad85
Tidy up the Layers panel with a new bottom bar
2025-05-21 04:14:01 -07:00
Mohamed Osama
66a297df2c
Improve the distribution part of the snapping system ( #2626 )
...
* fix distribution snapper visualization going far from layers
* fix bugs
* Remove traces
* remove comment
* Fix tests
* Rename distribution snapper variables from x, y to horizontal, vertical
* Fix tests
* Fix bug where center point and corner point have to be enabled for distribution_snapper to work
* Cleanup
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-20 00:15:56 -07:00
0SlowPoke0
ddb2d744d4
Make the Path tool support multi-point conversion between smooth/sharp on double-click ( #2498 )
...
* kinda works
* solved merge conflicts
* implement the multi flip
* nit-picks
* removed extra functions
* Fix inputs not being passed to backend for repeated double-clicks
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-19 22:11:38 -07:00
mTvare
9236bfcec0
Transfer pasted layers to the viewport center when outside the current view area ( #2306 )
...
* Transfer pasted layers to viewport center when not in viewport
Fixes #2301
* Move a layer as a whole and use change
* Make a bbox and move content according to that
* partial fix
* Only move if none within viewport
* Fix import error
* Fix artboard
* tmp, skip ones being added to ab
* fix stuff
* fix formatting
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-20 01:16:06 +00:00
mTvare
6c1ccfb5bb
Fix regression causing last selected layer to not be deselected ( #2656 )
...
Fix last selected layer not being deselected because .take() was placed inside if block
2025-05-19 16:58:03 -07:00
Keavon Chambers
f624edb801
Fix running on the native target without the Linux Wayland platform
2025-05-19 14:24:10 -07:00
Keavon Chambers
e57637aab1
Make builds of the editor and the website serve their own local fonts ( #2186 )
...
* WIP
* Done?
* Install fonts in CI
* Use absolute path so minified inlined CSS works
* Fix Bezier-rs demo fonts?
* Use opsz
* Revert removal of text balancer
* Pull in the text balancer from our static host
2025-05-19 02:38:29 -07:00
seam0s
ea59f10b50
Fix editor crash due to mismanaged selected points on layers ( #2640 )
...
* Add hash sets to hold ignored points in SelectedLayerState
* Fix non selected anchor dragging
* Update selected points when ignoring handles or anchors
* Refactor selected points status logic
* Refactor ignore_handles and ignore_anchors bools to ShapeState
* Add back in ignore_anchors and ignore_handles in SelectedLayerState
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-18 21:09:58 +00:00
Dennis Kobert
7a2144e31e
Fix and reenable profiling CI action ( #2632 )
...
* Reenable profiling ci action
* Remove deprecated iai feature flag
* Remove unused import
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-18 20:31:15 +00:00
Priyanshu
ebf351277d
Refactor and fix append_bezpath() method on vector data ( #2649 )
...
* refactor 'append_bezpath' method.
* fix a bug.
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-18 13:15:13 -07:00
Sidharth-Singh10
2615d86934
Add PTZ support for flipping the canvas ( #2394 )
...
* feat: flip canvas
* move canvas_flipped from NavigationMessageHandler to PTZ
* fix artboard overlay flip
* Code review
* Improvements
---------
Co-authored-by: hypercube <0hypercube@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-18 06:16:00 +00:00
Keavon Chambers
a8e209e44c
Remove the old node macro and fix/clean up several raster nodes ( #2650 )
...
* Fix several broken raster nodes and clean up leftover old node system code
* Migrate Brightness/Contrast to the new node macro, and fix it
* Remove last usages of old_node_fn
* Remove old_node_fn
2025-05-17 21:24:32 -07:00
Keavon Chambers
77f8bfd9ed
Improve clarify of type errors and tooltip diagnostics
2025-05-17 16:13:05 -07:00
0SlowPoke0
6e7f218068
Add Path tool support for Ctrl-dragging to pull out zero-length handles with angle locking ( #2620 )
...
* implement check-drag and angle-lock
* track bool
* flip-smooth-sharp
* fixed bugs
* fixed flip-smooth jump bug and random angle locking bug
* ctrl-alt 90 case
* aligned flip-smooth sharp and fixed arbitrary handle-length when flipped
* code-review change
* 0.5 instead of 0.8
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-17 13:23:11 -07:00
Priyanshu
54b4ef145c
Refactor the 'Scatter Points' node to use Kurbo instead of Bezier-rs ( #2634 )
...
* it works!
* clean up
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-05-13 06:26:43 +00:00
Keavon Chambers
5861e635fb
Copy Poisson-disk algorithms from Bezier-rs into gcore vector algorithms
2025-05-12 22:34:37 -07:00
Keavon Chambers
d3b5dc5712
Clean up 'Image' node by removing old 'Cull' node in sub-network ( #2643 )
...
* Clean up 'Image' node by removing old 'Cull' node in sub-network
* Fix gamma correction on Decode Image node
2025-05-12 18:40:48 -07:00
Priyanshu
0022680336
Avoid memory allocation when precomputed segments lengths is provided. ( #2637 )
...
* Avoid allocating a Vec when precomputed segments lengths is provided.
* improved using option type.
* we don't even need option type as Vec::new() doesn't allocate.
* clean up
2025-05-11 08:21:41 -07:00
mTvare
c9984a8f1a
Make Select tool hover overlay in 'shallow select' mode visualize the next deeper object ( #2639 )
...
* Fix overlay behaviour on hovering over a layer
* Add the deepen overlay code
* cleanup
2025-05-11 07:53:38 -07:00