Mohamed Osama and Keavon Chambers
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
Mohamed Osama and Keavon Chambers
af4f57ef38
Add "Perpendicular to Endpoint" snapping target ( #2581 )
...
* Perpendicular snap for line's endpoints
* move comment
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-04-16 12:23:45 +00:00
James Lindsay and Keavon Chambers
435a6daf25
Add the first field-based nodes: 'Instance on Points', 'Instance Position', 'Instance Index', as well as 'Grid' ( #2574 )
...
* Basic fields
* Add 'Extract XY' and 'Split Vector2' nodes
* Add 'Instance Index' node
* Fix test again
* Improve grid generator to support rectangular as well
* Avoid crashing
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-04-16 11:58:59 +00:00
Dennis Kobert and Keavon Chambers
beb1c6ae64
Upgrade to the Rust 2024 edition ( #2367 )
...
* Update to rust 2024 edition
* Fixes
* Clean up imports
* Cargo fmt again
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-03-12 17:29:12 -07:00
Ellen Gu and hypercube
74b6abbb97
Fix fill tool on raster image temporarily breaking the graph ( #2398 )
...
* Fix fill tool on raster image temporarily breaks the graph
* Avoid vector filling raster layer via checking node category
* check raster image using input type instead
* Add additional check for TextureFrameTable
* Enable the ignore raster test
---------
Co-authored-by: hypercube <0hypercube@gmail.com >
2025-03-09 19:18:42 +00:00
James Lindsay
26d66298cf
Give the current snapping target layer(s) an outline ( #2224 )
...
* Outline layer when snapping
* Outline layers when snapping to anchors
2025-01-25 13:00:01 -08:00
Sidharth-Singh10 and Keavon Chambers
3048466e86
Remove errant line following cursor in snap overlays during constrained line drawing ( #2206 )
...
* fix(line-tool): disable snap overlays during constrained drawing
* Update editor/src/messages/tool/tool_messages/line_tool.rs
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-01-24 14:10:01 -08:00
mTvare and Keavon Chambers
8dfdc2b98f
Update the bounding box snapping modes to use Align with Edges for edges and alignment ( #2185 )
...
* Fix snapping to respect rotation of bounding box
Fixes snapping behaviour which defaulted to X and Y axes.
* Remove redundant align along edges
* Code review
* Update manual
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2025-01-13 10:53:32 +00:00
Keavon Chambers
07601a5c6c
Improve snapping with better snap target names, tooltips, cleaner overlay labels, code cleanup
2025-01-09 19:03:14 -08:00
James Lindsay and Keavon Chambers
51ce51ea8c
Refactor collection of snap targets ( #2114 )
...
* Collect snap targets cleanup
* Make Clippy happy
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-11-20 22:27:49 -08:00
James Lindsay
79408fc0cc
Fix alignment snapping not preserving aspect ratio when Shift is held ( #2062 )
...
Fix align with a diagonal constraint
2024-10-25 17:34:23 -07:00
Dennis Kobert and Keavon Chambers
0dfddd529b
Refactor document node type lookup function to fix performance degradation over time ( #1878 )
...
* Refactor document_node_types function
* Fix node introspection
* Implement diff based type updates
* Fix missing monitor nodes
* Improve docs and fix warings
* Fix wrongful removal of node paths
* Remove code examples for non pub methodsü
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-08-08 17:37:28 -07:00
James Lindsay and Keavon Chambers
cdd179cf10
Add snapping targets for b-box edges and multi-layer spacing distribution ( #1793 )
...
* Initial work on aligning bounding boxes
* Work in progress distribution
* Distribution snapping
* Distribution overlays
* Align points and clean up
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-08-04 22:12:20 -07:00
0dbbabe73e
Add layer node chains, import/export edge connectors, and refactor graph editing to go thru a NodeNetworkInterface ( #1794 )
...
* WIP: NodeNetworkInterface
* Organize ModifyInputsContext to use network interface
* Improve ClickTarget and Position state
* Rework ClickTarget state
* Continue fixing NodeGraphMessageHandler
* Restructure network_metadata
* Final(?) NodeNetworkInterface struct
* Final(??) NodeNetworkInterface
* Final(???) NodeNetworkInterface. Separated persistent and transient data
* Final NodeNetworkInterface data structure. Implemented all basic getters
* Continue migrating functionality to network interface
* Migrate all NodeGraphMessage's to use network interface
* Fix all helper functions in NodeGraphMessageHandler
* Move document metadata to network interface, remove various cached fields
* Move all editor only NodeNetwork implementations to NodeNetworkInterface
* Fix all DocumentNodeDefinitions
* Rework and migrate GraphOperationMessages to network interface
* Continue migration to NodeNetworkInterface
* Save point before merging master
* Fix all errors in network_interface
* 850 -> 160 errors
* Fix all errors :D
* Render default document
* Visualize click targets
* merge conflicts
* Cache transient metadata separately, store entire interface in document history
* Start migration to storing selected nodes for each network
* Remove selected nodes from document message handler
* Move outward wires and all nodes bounding box to transient metadata
* Fix connecting/disconnecting nodes
* Layer stack organization for disconnecting/connecting nodes
* Basic chain locking
* Improve chain positioning
* Add copy/pasting
* Move upstream nodes on shift+drag
* merge conflict fixes
* Improve Graph.svelte code quality
* Final improvements to Graph.svelte
* Fix layer panel
* Performance optimizations
* Bug fixes and derived PTZ
* Chain organization improvement and bug fixes
* Bug fixes, remove all warnings
* Automatic file upgrade
* Final code review
* Fix editor tests
* Fix compile errors
* Remove select tool intersection check when panning
* WIP: Import/Exports
* Fix JS issues
* Finish simplified import/export UI
* Import/Export viewport edge UI
* Remove minimum y bound on import/export ports
* Improve performance while panning graph
* cargo fmt
* Fix CI code build
* Format the demo artwork graph with chains
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
Co-authored-by: dennis@kobert.dev <dennis@kobert.dev >
2024-08-04 06:47:13 -07:00
James Lindsay and Keavon Chambers
fa1535d0bb
Update dependencies and lock files ( #1841 )
...
* Bump lock files
* Fix glam mismatch version
* Add tokio feature
* Update all deps
* Fix gpu-compiler not able to reference the root workspace
* Bump a few more deps
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-07-22 02:56:29 -07:00
Raminder Singh and Keavon Chambers
62f73df048
Fix a lot of Clippy warnings ( #1808 )
...
* fix a lot of clippy warnings
* fix more clippy warnings
* fix yet more clippy warnings
* bump msrv to 1.70.0 to silence warnings
* fix a lot of clippy warnings
* fix more clippy warnings
* fix yet more clippy warnings
* fix a few more warnings
* fix a clippy warning
* remove a commented out line
* silense too many arguments error
* fix more clippy warnings
* prefix underscore to unused vars/functions to fix warnings
* use filter instead of map
* move raw-rs-tests feature flat to module level to fix unused imports warnings
* fix a couple of unused result warnings
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-07-09 05:02:52 -07:00
e66620dc5c
Add basic artboard snapping ( #1734 )
...
* Initial vector modify node
* Initial extraction of data from monitor nodes
* Migrate to point id
* Start converting to modify node
* Non destructive spline tool (tout le reste est cassé)
* Fix unconnected modify node
* Fix freehand tool
* Pen tool
* Migrate demo art
* Select points
* Fix the demo artwork
* Fix the X and Y inputs for path tool
* G1 continous toggle
* Delete points
* Fix test
* Insert point
* Improve robustness of handles
* Fix GRS shortcuts on path
* Dragging points
* Fix build
* Preserve opposing handle lengths
* Update demo art and snapping
* Fix polygon tool
* Double click end anchor
* Improve dragging
* Fix text shifting
* Select only connected verts
* Colinear alt
* Cleanup
* Fix imports
* first commit
* changes in SnapData::ignore()
* Bug fixes and cleanup
* Code review
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com >
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-07-05 16:14:47 -07:00
1652c713a6
Add nondestructive vector editing ( #1676 )
...
* Initial vector modify node
* Initial extraction of data from monitor nodes
* Migrate to point id
* Start converting to modify node
* Non destructive spline tool (tout le reste est cassé)
* Fix unconnected modify node
* Fix freehand tool
* Pen tool
* Migrate demo art
* Select points
* Fix the demo artwork
* Fix the X and Y inputs for path tool
* G1 continous toggle
* Delete points
* Fix test
* Insert point
* Improve robustness of handles
* Fix GRS shortcuts on path
* Dragging points
* Fix build
* Preserve opposing handle lengths
* Update demo art and snapping
* Fix polygon tool
* Double click end anchor
* Improve dragging
* Fix text shifting
* Select only connected verts
* Colinear alt
* Cleanup
* Fix imports
* Improve pen tool avoiding handle placement
* Improve disolve
* Remove pivot widget from Transform node properties
* Fix demo art
* Fix bugs
* Re-save demo artwork
* Code review
* Serialize hashmap as tuple vec to enable deserialize_inputs
* Fix migrate
* Add document upgrade function to editor_api.rs
* Finalize document upgrading
* Rename to the Path node
* Remove smoothing from Freehand tool
* Upgrade demo artwork
* Propertly disable raw-rs tests
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
Co-authored-by: Adam <adamgerhant@gmail.com >
Co-authored-by: Dennis Kobert <dennis@kobert.dev >
2024-07-05 13:42:40 -07:00
adamgerhant and Keavon Chambers
84ac2e274e
Code cleanup after migrating node graph interaction to the backend ( #1790 )
...
* Cleanup transforms and click targets
* Improve click target caching
* Fix click target bugs
* Add auto panning
* update_modified_click_targets
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-06-20 23:11:41 -07:00
adamgerhant and Keavon Chambers
6d74abb4de
Node network subgraph editing ( #1750 )
...
* Breadcrumb visualization, nested network consistency, create definitions for Merge internal nodes
* Add index to network inputs, remove imports usage from flatten network
* Replace NodeOutput with NodeInput::Node
* Fully remove imports field, remove unnecessary identity nodes, move Output node to encapsulating network
* Replace previous_outputs with root_node, fix adding artboard/layer to empty network
* Import/Export UI nodes
* Display input/output types dynamically from compiled network
* Add LayerNodeIdentifer::ROOT_PARENT
* Prevent .to_node() on ROOT_PARENT
* Separate NodeGraphMessage and GraphOperationMessage
* General bug fixes with nested networks
* Change layer color, various bug fixes and improvements
* Fix disconnect and set node input for proto nodes and UI export node
* Dashed line to export for previewed node
* Fix deleting proto nodes and nodes that feed into export
* Allow modifications to nodes outside of nested network
* Get network from Node Id parameter
* Change root_node to previous_root_node
* Get TaggedValue from proto node implementation type when disconnecting
* Improve preview functionality and state
* Artboard position and delete children fix
* Name inputs/outputs based on DocumentNodeDefinition or type, fix new artboard/layer insertion
* replace "Link" with "Wire", adjust previewing
* Various bug fixes and improvements
* Modify Sample and Poisson-Disk points, fix incorrect input index and deleting currently viewed node
* Open demo artwork
* Fix opening already upgraded documents and refactor FrontendGraphDataType usages
* Fix deleting within network and other bugs
* Get default node input from compiled network when copying, fix previews, tests, demo artwork
* Code cleanup
* Hide EditorApi and add a comment describing unresolved Import node input types
* Code review
* Replace placeholder ROOT_PARENT NodeId with std::u64::MAX
* Breadcrumb padding
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-06-02 08:01:56 +00:00
8d83fa7079
Generalize layers as merge nodes to enable adjustment layers ( #1712 )
...
* WIP, backward traversal issues
* Fix some tool issues
* Remove debugging
* Change some indices
* WIP: new artboard node
* WIP: add artboard node
* WIP: Artboard node and create_artboard
* WIP: Artboard node implementation complete
* WIP: Artboards input for output node
* Complete Artboard node
* Generalize LayerNodeIdentifier, monitor_nodes support for Artboard node, adjust ResizeArtboard/ClearArtboards, move alias validation to Rust
* Fix misaligned artboard click targets
* Generalize/clarify create_layer and insert_between
* non-negative dimensions for resize_artboard
* Show artboards in layer panel
* Generalize create_layer for layer output node
* Generalize delete_layer/delete_artboard to NodeGraphMessage::DeleteNodes. Fixed upstream flow Iter
* remove old primary_input function
* Vertical node visuals, remove is_layer function, rename Layer node to Merge node, toggle display as layer
exposed_value_count type fix
Vertical node visuals, remove is_layer function, rename Layer node to Merge node, toggle display as layer
* Fix demo artwork
* Layer display context menu
* Automatically select artboard, fix warnings
* Improvements to context menu and layer invariant enforcement
* Remove display_as_layer and update load_structure
* Improve load_structure to show more layers, improve FlowIter, improve layer naming, layer rearrangement validation.
* Clean up demo artwork using generalized layers
* Improve design of Layers panel and graph nodes
* MoveSelectedLayersTo rewrite to support generalized layer nodes
* Include artboards in deepest_common_ancestor, fix resize_artboard/delete_artboard, sync artboard tool to layer panel
* MoveSelectedLayersTo adjustments
* Sync non layer node visibility with metadata
* Include non layer nodes when moving/creating layer
* Fix group layers and get_post_node_with_index
* Include non layer nodes in UngroupSelectedLayers
* GroupSelected for all selected nodes, UnGroupSelected position adjustments
* Add grouping for layers in different folders
* Fix hidden layers
* Prevent node from connecting to itself, fix undo automatic node insertion,
* Fix undo CreateEmptyFolder, fix grouping nested layer nodes
* Formatting
* Remove test and check if node is layer from network
* Fix undo group layers
* Check off roadmap
* MoveUpstreamSiblingsToChild adjustments
* Replace tabs with spaces, remove mut from argument
* Final code review pass
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com >
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-04-30 23:03:42 -07:00
Shyam Jayakannan and Keavon Chambers
67ba5bcecf
Added fine-grained choices to Snapping options popover ( #1730 )
...
* Added Customised Snapping
* Fix snapping choice to Anchors; clean up popover menu code
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-04-18 04:24:15 +00:00
Muhammad Aqdas
e22db31738
Fix "contrain" typo ( #1717 )
...
Fix typo 'contrain' to true 'constrain
Fix typo 'contrain' to true 'constrain'
2024-03-31 06:15:57 +00:00
Keavon Chambers
1a2a0e8757
Minor code cleanup and spelling fix
2024-03-16 00:30:29 -07:00
Keavon Chambers
5bca931813
Rename handle mirroring to colinear
2024-03-14 07:44:55 -07:00
0HyperCube and Keavon Chambers
218e9675fd
Attribute-based vector format refactor ( #1624 )
...
* Initial vector format structure
* Click targets
* Code review pass
* Remove subpaths from vector data
* Morph node & vector node tests
* Insignificant change
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-03-09 10:27:30 -08:00
Keavon Chambers
70dce1c230
Resolve most Clippy lint issues
2024-02-29 00:48:28 -08:00
0HyperCube and Keavon Chambers
002151d9c0
SVG import ( #1579 )
...
* SVG import
* Fix error
* Transforms
* Code review nits
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-01-16 17:42:48 -08:00
Keavon Chambers
d602603d46
Remove unused DocumentIsDirty
2024-01-15 02:51:40 -08:00
0HyperCube
bf0ec2c9c8
Snapping improvements ( #1567 )
2024-01-13 08:10:24 -08:00
0HyperCube and Keavon Chambers
456ca170a4
Layer and grid snapping systems ( #1521 )
...
* Grid overlays
* Rectangle tool basic snapping
* Fix bezier demos
* Fix bézier crate tests
* Constrained snapping for circle & shape tool
* Line tool snapping
* Pen tool snapping
* Path tool snapping
* Snapping whilst dragging layers (not constrained)
* Constrained drag
* Resize snapping
* Normal and tangent
* Cleanup
* Grid snapping
* Grid snapping
* Fix imports
* Fix bug in artboard tool
* Fix hang on 0 size grid spacing
* Fix NaN when scaling
* Polishing
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-01-13 14:32:10 +00:00