* 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>
* initial attempt for area node
* allow node preview for more types
* make AreaNode sync and add CentroidNode
* cargo fmt
* preview of DVec2
* make the nodes async again
* use segment domain instead of region domain
* modify the check for linearity
* create a limit for area in centroid calculation
* cargo fmt
* reverse unnecessary changes
* add threshold to area calculation too.
* handle zero area edge case
* add todo comment
* implement 1D centroid and use it as fallback
* formatting floats to skip last zero
* add Centroid Type radio button to Centroid Node
* rename docs to use area and perimeter centroid
* add web demos for perimeter centroid
* add tests for perimeter centroid
* add fallback to use average of points
* Fix for broken area
* missing fixes
* Code review and rename Perimeter Centroid to Length Centroid
* Use dummy footprint in Area and Centroid nodes
* add doc and todo to clarify when `is_linear` fails
* use epsilon instead of zero
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
* Fix off by one in subpath code
* Fix crash with selected handles and anchor
* Sort the correct way I have no idea why the origional code was so overly verbose but it has caused significant confusion and wasted effort
* Add locking layer feature
* Update locked state data to adjust the refactor
* Make the locked layer cannot be selected using pointer and select all key
* Make locked layer cannot be moved and disable bounding box
* Add locked status selected node on CopyBuffer
* Make locked layer cannot be selected when selected all layers, and disabled GRS and nudging operation on locked layer
* Add refresh document metadata before update button on visible and locked
* Updated from master
* Fix icon logic on panel locked layer
* Make the child locked when the parent is locked, and the child cannot be unlocked if the parent is locked
* Revert "Make the child locked when the parent is locked, and the child cannot be unlocked if the parent is locked"
This reverts commit 7c93259bc2.
* Revert "Fix icon logic on panel locked layer"
This reverts commit 33939f2e84.
* Delete Make Lock button in the node graph top bar
* Add ToggleSelectedLocked to action_with_node_graph_open
* Fix parent and child locking behavior icon on panel
* Fix boolean operator on icon button locking layer
* Make bolean logic more readable in icon button locking layer
* Fix locking layer can be moved or resizing when selected with unlocking layer, disabled pivot widget on locking layer, disable all action on pivot point, alignment, flipping, and boolean operation for locking layer
* Fix axis align drag crash
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com>
- Move message handler payload data into structs
- Organize the file structure used by `editor/src/messages/portfolio/document` `/node_graph` and `/graph_operation`
- Make derive attributes use `serde::Serialize, serde::Deserialize` consistently instead of `use serde::{Deserialize, Serialize};` imports
- Various other code cleanup and refactoring
* added struct and registered fill from stroke node. not functional yet.
* properly registered new node
* finished fill-from-stroke feature. works on both closed and open shapes. supports line caps and line joins.
* fixed import issues and miter limit handling
* fix outline function. use both subpaths for solid shapes now
* code quality improvements
* use radius instead of diameter, functionality not yet working for shapes as transform is not properly applied before calculating new shapes.
* Updated to follow new VectorData structure. Fully functional.
* fix repeat node
* remove comment
* add a test, remove unused code.
* Use doubles in graph
* Format .graphite files onto one line
* Rename new node to Vector2
* No primary input
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Cache base64 representation of images when converting to graphic group
* Fix build
* Fix build again
* Actually fix it this time
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* WIP, transforms broken with rot/scale
* Transform around bounding box centre
* Add units and tooltips
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com>
* Add Poisson-disk sampling node and Bezier-rs 0.4 release
* Additional optimizations
* More performance optimizations with help from 0Hypercube
* Add comments
* Add morph node
* Range slider time parameter, better lerping
* Lerp more fill and stroke parameters
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>