Keavon Chambers
de84e39c4e
Improve backwards compatability robustness of serde-based document format
2024-05-08 17:45:31 -07:00
Dennis Kobert
1bfbe306be
Fix image loading and remove resolve_empty_stacks() function ( #1746 )
...
* Fix Image loading and remove `resolve_empty_stacks()`
* Revert noise pattern change
* Add todo comment
2024-05-08 01:31:41 -07:00
Keavon Chambers
244c8ad10a
Enable Merge nodes to take vector data inputs from the bottom, not just left
...
Known bug: click targets aren't calculated for bottom input vector data.
2024-05-07 16:41:44 -07:00
Dennis Kobert
ce96ae66f2
Loosen the Graphene type system to allow contravariant function arguments ( #1740 )
...
* Accept any input for nodes that expect () as input
* Add comments
* More comments
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2024-05-07 16:36:25 -07:00
adamgerhant
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
Keavon Chambers
72ba4ddfe4
Add rotation to Repeat node
2024-04-26 15:06:36 -07:00
Karthik Prakash
3019cc7253
Add alpha to Extract Channel node and remove Extract Alpha node ( #1731 )
...
* add `TaggedValue::RedGreenBlueAlpha`
* add alpha to `ExtractChannelNode`
* remove `ExtractAlphaNode` from `Split Channels`
* remove `ExtractAlphaNode`
2024-04-17 15:44:14 -07:00
Karthik Prakash
438c45eb80
Add corner rounding to the Rectangle node ( #1648 )
...
* add skeleton implementation
* add corner rounding
* fix crash when `border_radius` is zero
* rename `Border Radius` to `Corner Radius`
* add clamped property
* add `TaggedValue::F64Array4`
* add frontend support for individual corner rounding
* added individual corner rounding
* fix rebase
* change default values when switching rounding type
* fix crash caused by negative scale
* remove `Any` trait
* add `Message::Batched`
* fix stale property bug
* add smarter clamping for individual rounding
* Rearrange widgets in properties panel
* update individual clamping algorithm
* add better variable names
* make variable names clearer
* Final code cleanup
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2024-04-06 05:09:55 +00:00
Haikal
bf81a31ff9
Add layer locking feature ( #1702 )
...
* 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>
2024-04-03 16:08:26 -07:00
Keavon Chambers
27f9e3f00e
Move node visibility flag from NodeNetwork to DocumentNode ( #1708 )
...
* protonode -> proto node
* Move node visibility flag from NodeNetwork to DocumentNode
* Add serde default for new field
* Logic improvements
2024-03-27 05:17:08 -07:00
Keavon Chambers
0a9bd41be1
Code cleanup and refactoring to enhance consistency ( #1695 )
...
- 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
2024-03-20 21:28:51 -07:00
Keavon Chambers
5bca931813
Rename handle mirroring to colinear
2024-03-14 07:44:55 -07:00
Roshan P
2263b0ab89
New node: Solidify Stroke ( #1650 )
...
* 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.
2024-03-11 17:19:29 -07:00
Keavon Chambers
fd54cda445
Rename NodeNetwork inputs/outputs to imports/exports
2024-03-11 00:13:01 -07:00
Keavon Chambers
137853eb40
Simplify Rust deps that depended on a specific commit hash
2024-03-11 00:00:05 -07:00
0HyperCube
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
Keavon Chambers
a02b162e30
Consolidate and rename Graphene data types, and add many comments ( #1620 )
...
* Document ProtoNodeInput
* More comments
* Comment improvements
* Comment and split ProtoNodeInput::NodeLambda from ProtoNodeInput::Node
* Combine NodeImplementation into DocumentNodeImplementation
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2024-02-20 17:53:04 -08:00
0HyperCube
229b5dbb20
Use f64 not f32 throughout graph; add Vector2 value node ( #1618 )
...
* 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>
2024-02-18 22:16:37 +00:00
0HyperCube
6f6fb3bcd4
Upgrade several Rust dependencies ( #1613 )
...
`specta` from Hypercube's fork commit to latest upstream commit
`wasm-bindgen` 0.2.87 -> 0.2.91
`spirv-std` from 0.9 to not-yet-merged commit in https://github.com/EmbarkStudios/rust-gpu/pull/1115
`wgpu` 0.17 -> 0.19
`winit` 0.28.6 -> 0.29
`vello` and `vello_svg` from latest upstream commit to not-yet-merged commit in https://github.com/linebender/vello/pull/427
`resvg` 0.36.0 -> 0.39
`glam` 0.24 -> 0.25
`rustybuzz` 0.8.0 -> 0.10.0
`js-sys` and `web-sys` 0.3.55 -> 0.3.67
`usvg` 0.36.0 -> 0.39
`spirv` 0.2.0 -> 0.3
* Update a couple of dependencies
* More test fixing…
* Use upstream Specta instead of fork
* Update comments in Cargo.toml
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2024-02-17 15:02:41 -08:00
Keavon Chambers
7e5069f638
Copy to Points node: Add "Random Scale Bias" parameter
2024-02-05 05:31:28 -08:00
Dennis Kobert
349ec5da72
Add MemoizeImpure node and cache image base64 in graph ( #1595 )
...
* 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>
2024-02-03 23:16:03 +01:00
Keavon Chambers
8fa46ba63a
Copy to Points node: add scale/rotation randomization parameters ( #1592 )
...
* WIP, transforms broken with rot/scale
* Transform around bounding box centre
* Add units and tooltips
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com>
2024-02-01 12:20:35 -08:00
Keavon Chambers
6b6accfb91
Add Poisson-disk sampling node and Bezier-rs 0.4 release ( #1586 )
...
* Add Poisson-disk sampling node and Bezier-rs 0.4 release
* Additional optimizations
* More performance optimizations with help from 0Hypercube
* Add comments
2024-01-28 02:25:46 -08:00
0HyperCube
2df329fc0e
Remove old subpath code ( #1582 )
2024-01-17 20:42:38 -08:00
0HyperCube
484acbcde3
New node: Morph ( #1576 )
...
* Add morph node
* Range slider time parameter, better lerping
* Lerp more fill and stroke parameters
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2024-01-13 23:35:40 -08:00
0HyperCube
768bbe820d
Preserve group IDs in the Spline from Points node ( #1574 )
2024-01-14 00:49:52 +00:00
0HyperCube
e242ce26a0
Fix circular repeat node without bounding box ( #1571 )
2024-01-14 00:23:13 +00:00
0HyperCube
47b3355950
Remove FillType::None for the fill node ( #1572 )
...
* Remove FillType::None for the fill node
* Fix demo art
2024-01-13 15:52:10 -08:00
0HyperCube
1ac7b92b45
Fix inferred types memory leak ( #1566 )
2024-01-13 16:22:35 +00:00
0HyperCube
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
Keavon Chambers
aab0fcf84c
Update graph UI and improve simplicity and robustness of sending graph and layer panel updates ( #1564 )
...
* WIP
* Fix loading the structure of layers
* Fix broken indents
* Remove debugging stuff
* Fix displaying errors and node graph UI fixes/improvements
* Fix compilation failure
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com>
2024-01-13 04:15:36 -08:00
0HyperCube
83116aa744
Fix selecting upsidedown layers ( #1560 )
2024-01-12 02:27:08 -08:00
Keavon Chambers
121c1d2b9d
Sample Points node: employ caching and deduplication ( #1546 )
...
Sample Points node: split out expensive computation so it can be deduped
2024-01-06 16:07:45 -08:00
Keavon Chambers
93aa10a76f
Sample Points node: fix major inefficiencies
2024-01-06 07:55:19 -08:00
Keavon Chambers
b3e4caec1a
Rename 'Resample Points' to 'Sample Points'
2024-01-05 05:24:16 -08:00
Dennis Kobert
6bfb2bf344
Change number inputs to be f32 instead of f64 for most nodes ( #1543 )
2024-01-05 13:13:26 +00:00
Keavon Chambers
ed82c5f20f
Copy to Points node: add Start/Stop Offset and Adaptive Spacing parameters
2024-01-03 06:11:42 -08:00
0HyperCube
4c64df038f
Copy to Points node: add support for groups ( #1541 )
...
Copy to points by group
2024-01-03 04:21:10 -08:00
0HyperCube
202390e422
Apply transform before copy to points node ( #1540 )
2024-01-03 09:55:40 +00:00
Keavon Chambers
1cc23320a5
Hide the Cull node by integrating it into all generator nodes ( #1538 )
...
* Hide the Cull node by integrating it into all generator nodes
* Remove internal Cull node from Mandelbrot
2023-12-30 12:28:06 -08:00
Dennis Kobert
0e49388312
Make CopyToPoints node resolution aware ( #1536 )
...
* Make CopyToPoints node resolution aware
* Add unfinished code review as todo comment
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-12-30 11:56:50 +00:00
0HyperCube
947a131a4b
Add graph type error diagnostics to the UI ( #1535 )
...
* Fontend input types
* Fix index of errors / types
* Bug fixes, styling improvements, and code review
* Improvements to the error box
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-12-29 08:38:45 +00:00
Keavon Chambers
34f952bad1
Convert u64 IDs to newtypes ( #1532 )
2023-12-22 03:24:13 -08:00
Keavon Chambers
7bfe0ce55b
Retire layer paths used throughout the code ( #1531 )
...
* Part 1
* Part 2
* Part 3
* Part 4
* Part 5
* Part 6
* Part 7
* Part 8
2023-12-21 19:32:46 -08:00
Keavon Chambers
5c7e04a725
Additional clean up and bug fixes after migrating document-legacy
2023-12-20 18:43:32 -08:00
Keavon Chambers
92203f3576
Remove the whole document-legacy crate ( #1524 )
...
Remove the whole document-legacy crate
Closes #1520
2023-12-20 05:45:54 -08:00
Keavon Chambers
dcd38f2e4c
Remove all references to legacy layers ( #1523 )
...
* Remove visible field from LegacyLayer
* Remove LegacyLayer wrapper around LegacyLayerType
* Remove FolderLegacyLayer and LayerLegacyLayer wrappers around their data
* Remove legacy layers
2023-12-19 20:50:45 -08:00
Keavon Chambers
9a7d7de8fa
Remove most of document-legacy ( #1519 )
...
* Remove boolean ops and unused doc-legacy Operations
* Remove Shape legacy layers
* Remove legacy layer Properties panel code
* Remove additional unused doc-legacy Operations
* Removed unused rendering-related legacy-layer code
* Upgrade dep so CI builds
* Remove various additional unused functions and messages
* Remove the LayerData trait
* Remove RenderData struct and usages
* Banish the Operations system
* Further removals
2023-12-19 04:36:19 -08:00
0HyperCube
c42d030f18
New overlay system ( #1516 )
...
* Port gradient tool overlays
* Fix tests
* Text tool
* Artboard tool and some of select tool
* Port select tool drawing box
* Pen and path tool
* Remove overlays document
* Show the overlay refactor as done on the website roadmap
* Select tool bounds in layer space (first layer)
* Code review and fixes
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-12-18 11:17:43 +00:00