James Lindsay
b21b1cbfc7
Simplify the implementation of the message buffering ( #2123 )
...
* Simplify the implementation of the message buffering
* Add assert to ensure list is empty
2024-12-02 20:48:33 +00:00
James Lindsay
e3bb11ec1b
Fix clippy lints ( #2119 )
2024-11-29 22:58:49 +00:00
0SlowPoke0 and hypercube
00629571f2
Disabling colinear state when both the handles are selected and moved ( #2120 )
...
* disable collinear state
* Add comment
---------
Co-authored-by: hypercube <0hypercube@gmail.com >
2024-11-29 22:58:28 +00:00
Pratik Agrawal and Pratik Agrawal
2cf33e45bd
Remove Double-Click Behavior for Switching to Path Tool on Non-Path Layers ( #2116 )
...
* Remove double-click behavior for switching to Path tool on non-Path layers
* removed the else-if block
* removed the path tool activation from shallowm mode
---------
Co-authored-by: Pratik Agrawal <patrik@Pratiks-MacBook-Air.local >
2024-11-26 16:33:14 +00: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 Ryans
ee2d4a03db
Make Pen tool always snap to endpoint anchors, even when snapping is off ( #2107 )
...
* pen should always snap on last anchor
Signed-off-by: James Ryans <james.ryans2012@gmail.com >
* snap anchor on every single connected points
Signed-off-by: James Ryans <james.ryans2012@gmail.com >
---------
Signed-off-by: James Ryans <james.ryans2012@gmail.com >
2024-11-12 13:53:55 -08:00
James Lindsay and Keavon Chambers
3ce1317053
Make the Pen tool only append new paths when Shift is held ( #2102 )
...
* Append to a path with shift
* Fixup transforms
* Revert unnecessary transform change
* Fix delete node button transaction
* Prevent artboard from being selected after making a new document
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-11-11 15:14:32 -08:00
Keavon Chambers
de366f9514
Add Brush tool warning; move font list loading to document creation time
2024-11-09 12:27:09 -08:00
Keavon Chambers
457619794b
Improve nudging when tilted and add Artboard tool nudge resizing; disable menu bar entries when no layer is selected ( #2098 )
...
* Make nudging follow a tilted viewport
* Add artboard nudge resizing
2024-11-08 16:16:20 -08:00
November-6 and Keavon Chambers
b3a196c0b6
Fix point nudging to work in document space ( #2095 )
...
* Modified Path tool Behaviour
* Make the code simpler and more self-descriptive
* Make it work for transformed layers
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-11-05 22:27:31 -08:00
Keavon Chambers
f1b0d8fa87
Improve the node graph with revamped top bar and disabling tools when graph is open ( #2093 )
...
* Add "Fade Artwork" slider and disable tools when graph is open
* Add navigation and layer/node management buttons to graph top bar
* Reduce code duplication
2024-11-04 20:41:53 +00:00
Keavon Chambers
8d3da83606
Avoid sometimes breaking the selected layer upon switching away from the Select tool
2024-11-02 18:55:57 -07:00
adamgerhant
c7b08246c2
Allow the Pen tool to connect layers by their endpoints, merging into a single layer ( #2076 )
...
* Merge vector data layers
* Fix early return
* Fix layer space multiplication error
* Recalculate positions when changing layer space
* Add transform node
* Remove pen tool layer state
2024-11-01 12:19:46 -07:00
Daragh and Keavon Chambers
018e9839f8
Add Path tool support for the Tab key swapping to dragging the opposite handle ( #2058 )
...
* feat: tab alternates between handles
* fix: handle hints, remove anchor to handle switch
Added specific handle hints,
Can no longer switch to handle if just anchor is selected
typo fix
* fix: no longer deselect on esc/rclick
* feat: hides cursor when switching
A pointerlock implementation would be ideal in the future to keep the screen from panning,
* fix: tidy up dynamic tool hints
switch colinear to V
* fix: can no longer hide cursor if anchor selected
remove debug statement
* fix: clippy
* Solve some issues and remap V to C to toggle colinear
* Cleanup + change equidistant key from Shift to Alt
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-10-30 02:48:20 -07:00
adamgerhant
ff8fec6eca
Allow the Path tool to edit an upstream path even if there's a type conversion midway ( #2055 )
...
Remove type check when iterating upstream
Convert to doc comment
2024-10-26 18:39:48 +00:00
Daragh
b1399af5cd
In the Path tool, make Space shift the anchor while dragging handles ( #2065 )
...
* in progress:
* cherry-pick
* works kinda, fails when holding down space
* seems to be working
* naming
* fix :clippy
* fix: put back in newline
* fix: add overlay draw message
will now visibly select points when pressing space instantly as opposed
to when its moved
* cleanup + rename
* refactor to use refresh keys
* fix: naming
* add back in todo
* :)
* fix: Small bugs relating to space handle selection
If release mouse before space, reselect previous points and unselects points
selected by space.
If only anchor is selected it will not select handles.
Removed comment as its now clear what its doing / where its coming from
2024-10-26 09:20:08 +00:00
Mohamed Osama
3c839ffd2b
Clean up old usages of NodeId(generate_uuid()) by replacing it with NodeId::new() ( #2009 )
...
Replace all `NodeId(generate_uuid())` with `NodeId::new()`
2024-10-25 19:43:46 -07:00
RyanRothweiler and Keavon Chambers
63d44f22e3
Fix Text tool clearing text when hitting Escape by changing it to commit the edit instead ( #2052 )
...
* Text tool escape sends commit message
* Improve hint text
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-10-25 18:12:54 -07: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
adamgerhant
fd20d51e85
Fix various crashes and bugs ( #2075 )
...
* Fix offset brush tool
* Fixes
2024-10-25 16:54:37 -07:00
James Lindsay
a761e7803e
Improve text overlay styling and fix artboard label positioning bug ( #2032 )
...
* Improve text overlays
* I can't test code
2024-10-13 21:35:50 +00:00
James Lindsay and Keavon Chambers
d6f46f73da
Factor in artboard clipping to the click target x-ray function ( #2028 )
...
* Add clipping to the click xray function
* Clip area rays as well
* Code review nits
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-10-12 23:38:17 +00:00
adamgerhant and Keavon Chambers
dc46959274
Fix double clicking anchor to convert between smooth and sharp ( #2023 )
...
* Buffer after undo
* Quick thumbnail fix while I'm thinking about it
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-10-07 13:13:52 -07:00
Keavon Chambers
2d86fb24ab
Add line height and character spacing to the Text node ( #2016 )
2024-10-01 12:28:27 -07:00
Keavon Chambers
904cf09c79
Add drag-and-drop and copy-paste file importing/opening throughout the UI ( #2012 )
...
* Add file importing by dragging and dropping throughout the UI
* Disable comment-profiling-changes.yaml
* Fix CI
2024-09-28 00:19:43 -07:00
adamgerhant and Keavon Chambers
20470b566b
Fix many regressions introduced mostly in #1946 ( #1986 )
...
* Fix text tool
* Implement buffering to fix freehand tool
* Fix tools
* Fix clippy lints
* Small fixes
* Move vector modify back to Monitor nodes
* Code review
* Fix abort
* Fix svg import
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-09-26 15:37:03 -07:00
Keavon Chambers
c738b4a1f9
Replace terminology "primary" with "call argument" and "parameter" with "secondary input"
2024-09-25 20:05:00 -07:00
James Lindsay and Keavon Chambers
0d33a1ae3f
Use overlays to draw artboard names ( #1981 )
...
* Artboard label overlay
* Finish artboard overlays
* cargo fmt
* Update font styling
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-09-20 22:04:31 +00:00
Dennis Kobert and Keavon Chambers
e352c7fa71
Refactor the node macro and simply most of the node implementations ( #1942 )
...
* Add support structure for new node macro to gcore
* Fix compile issues and code generation
* Implement new node_fn macro
* Implement property translation
* Fix NodeIO type generation
* Start translating math nodes
* Move node implementation to outer scope to allow usage of local imports
* Add expose attribute to allow controlling the parameter exposure
* Add rust analyzer support for #[implementations] attribute
* Migrate logic nodes
* Handle where clause properly
* Implement argument ident pattern preservation
* Implement adjustment layer mapping
* Fix node registry types
* Fix module paths
* Improve demo artwork comptibility
* Improve macro error reporting
* Fix handling of impl node implementations
* Fix nodeio type computation
* Fix opacity node and graph type resolution
* Fix loading of demo artworks
* Fix eslint
* Fix typo in macro test
* Remove node definitions for Adjustment Nodes
* Fix type alias property generation and make adjustments footprint aware
* Convert vector nodes
* Implement path overrides
* Fix stroke node
* Fix painted dreams
* Implement experimental type level specialization
* Fix poisson disk sampling -> all demo artworks should work again
* Port text node + make node macro more robust by implementing lifetime substitution
* Fix vector node tests
* Fix red dress demo + ci
* Fix clippy warnings
* Code review
* Fix primary input issues
* Improve math nodes and audit others
* Set no_properties when no automatic properties are derived
* Port vector generator nodes (could not derive all definitions yet)
* Various QA changes and add min/max/mode_range to number parameters
* Add min and max for f64 and u32
* Convert gpu nodes and clean up unused nodes
* Partially port transform node
* Allow implementations on call arg
* Port path modify node
* Start porting graphic element nodes
* Transform nodes in graphic_element.rs
* Port brush node
* Port nodes in wasm_executior
* Rename node macro
* Fix formatting
* Fix Mandelbrot node
* Formatting
* Fix Load Image and Load Resource nodes, add scope input to node macro
* Remove unnecessary underscores
* Begin attemping to make nodes resolution-aware
* Infer a generic manual compositon type on generic call arg
* Various fixes and work towards merging
* Final changes for merge!
* Fix tests, probably
* More free line removals!
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-09-20 03:50:30 -07:00
ca0d102296
Fix click targets (in, e.g., the boolean node) by resolving footprints from render output ( #1946 )
...
* add NodeId (u64) and Footprint to Graphic Group
* Render Output footprints
* Small bug fixes
* Commented out render output click targets/footprints
* Run graph when deleting
* Switch to node path
* Add upstream clicktargets for boolean operation
* Fix boolean operations
* Fix grouped layers
* Add click targets to vello render
* Add cache to artwork
* Fix demo artwork
* Improve recursion
* Code review
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev >
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-09-16 01:26:59 +00:00
James Lindsay and Keavon Chambers
dd4a97b09f
Correctly apply transforms to vector data and strokes ( #1977 )
...
* Fix adding a layer to a transformed group
* Fix assorted transform issues
* Default stroke transform
* Fix bench
* Transform gradient
* Gradient fix
* Add gradient reversal buttons to Fill node in the Properties panel
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-09-15 22:26:11 +00:00
James Lindsay
2fa8773092
Improve select tool click targets ( #1976 )
...
* Improve select tool click targets
* Improve spellings
2024-09-15 00:02:48 +00:00
0c5bccc2fd
Make the primitive shape tools avoid setting a negative transform scale ( #1973 )
...
* Fix transformation for primitive tools, make odd-sided polygons and stars flipped with radius instead of scale
* Extract to function and add comment
* Code review
---------
Co-authored-by: hypercube <0hypercube@gmail.com >
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-09-14 23:15:56 +00:00
adamgerhant and Keavon Chambers
70dacac474
Refactor navigation metadata ( #1956 )
...
* Fix path tool select
* Refactor rounded edge distance
* comment
* Fix demo artwork
* Fix comments
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-09-05 19:53:37 +00:00
James Lindsay
06e11b6f46
Fix invalid segment crash when disolving point loop ( #1959 )
...
* Fix invalid segment crash
* Further improve robustness
2024-09-05 11:45:14 -07:00
James Lindsay and Keavon Chambers
9524835a30
Switch attribute-based vector data from referencing PointIds to indexes in the points table ( #1949 )
...
* Index for points
* Code review
* Add todo comment about a possible perf optimization
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-09-04 08:59:55 +00:00
adamgerhant
19541c9684
Fix broken SVG importing and crash when exporting ( #1953 )
...
* Fix importing SVG and crash when exporting
* Code improvements, prevent entering network after drag
2024-09-03 06:54:51 +00:00
adamgerhant and Keavon Chambers
9adc640f19
Improve layer positioning in graph upon reordering; improve history system; add selection history ( #1945 )
...
* Improve layer positioning
* Collapse space when deleting
* Improve moving layers in layer panel
* Improved transactions
* Selection history
* Code review
* Select previous selection when aborting
* Fix crash and artboard select
* Add mouse forward/back button selection history bindings
Code review
* Menu buttons
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-09-01 02:34:18 -07:00
adamgerhant and Keavon Chambers
78337f9b8e
Add shifting of layers in stacks as blocks that collide and bump other layers/nodes ( #1940 )
...
* Shift nodes as blocks
* Implement rubber banding
* Improve upstream locking when shifting layers
* WIP: Reworked shifting
* WIP: Reworked node shifting
* Finish shifting
* Fix demo artwork
* Code review
* Right click to end shift
* Improve rubber banding
* Fix clippy issues
* Skip collision for intersecting nodes
* Rubber banding bug fix
* Fix ctrl+delete node in chain
* Grip drag
* Fix layer width
* Add icon to frontend for the solo drag grip
* Reconnect during ctrl+delete
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-08-22 01:56:32 -07:00
Keavon Chambers
6a2b0d74dc
Rename document_node_types.rs to document_node_definitions.rs
2024-08-15 17:48:57 -07:00
adamgerhant and Keavon Chambers
2bd213f1aa
Improve layer panel positioning for upstream nodes ( #1928 )
...
* Improve layer panel positioning for upstream nodes
* highlight parents
* Final improvements
* Fill for selection box, bug fixes
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-08-14 03:27:42 -07:00
James Lindsay and Keavon Chambers
1f278799d6
Add quick measure overlays with Alt pressed ( #1894 )
...
* Measure with alt
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-08-10 04:56:02 -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
Dennis Kobert and Keavon Chambers
a6af5d4831
Memoize hashing ( #1876 )
...
* Implement memoization wrapper for hashing
* Fix pattern matching errors
* Revert proper point modification hash calculiton
* Remove unused hashing code
* Code review and bug fixes
* Improve pattern matching
* Fix tests
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-08-01 04:42:15 -07:00
Keavon Chambers
44ffb635e9
Improve rendered SVG output syntax for better compatibility and terseness ( #1880 )
...
* Improve rendered SVG output syntax for better compatibility and terseness
* Fix CI failing on boolean operations without wasm32?
* Attempt 2
2024-07-30 08:28:49 -07:00
Keavon Chambers
06177597ae
Fix viewport bounds getting out of sync at times, like when toggling rulers
2024-07-28 05:42:27 -07:00
Dennis Kobert and Keavon Chambers
ab8748627d
Fix Layers panel UI not updating on selection change and expand/collapsing ( #1847 )
...
Also fixes a panic on empty layer.
* Fix layer properties updete on layer change + fix panic on empty layer
* Fix Layers panel expand/collapse
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com >
2024-07-23 23:44:57 +00:00
Umer Khan and PersonOOO
3a591dac6a
Fix breakage of shallow select mode in the Select tool ( #1843 )
...
* fixed bug with shallow selecting ROOT_PARENT
* fixed formatting
---------
Co-authored-by: PersonOOO <82835562+PersonOOO@users.noreply.github.com >
2024-07-22 03:39:39 -07:00