* Added initial version of this feature for the path tool
* Removed debug statements
* Thickened the overlay width
* Added hover highlighting for path tool
* Experimental switch to path tool at leaf layer
* Ghost outline initial implementation
* Added tab swap for select tool -> path tool
* Minor fix for Select Tool dbl click -> Path Tool
* Added support for ghosts when using GRS in the path tool
* Fixed GRS undo bug, vastly improved hover behavior and now clearly visualize next double click target
* Fixed unused import warnings
* Updated behavior to handle mouse movement cases, reverted line width to 1px
* Fixed merge behavioral issues
* Disabled Select Tool to Path Tool double click toggle, fixed single click drill through for special case
* Clean up of unused consts and comment
* Properly cancel the drill through state when the mouse moves
* Fix some stuff
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* no trait ,not to fix line
* add hints
* line modification even when other shapes are selected
* added transform and anchor overlays
* removed old code
* fixed transform added hints need to fix modifier keys use
* refactored select-tool
* add point-handle-gizmo
* fix rotate bug
* implement angle snapping gizmo , fix overlay and refactor the code
* implement snapping for point-handle gizmo and implement no of point gizmo need to refactor
* implemented the gizmo for polygon, added tests , brackets to increase sides
* formatting-fix
* small nit-picks
* Make it compile
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* segment overlay change
* Segment split and delete
* Cleanup
* graceful handling of edge cases
* Moved constants to conts.rs and tuned the threshold
* Remove going into another state
* Insert point mode cleanup
* Linting fix
* Code review
* Added hints
* Added field for delete segment
* Change controls and fix too far logic
* Fixes
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Make the Pen tool show a path being closed by drawing a filled overlay when hovering the endpoint
* Add to_css to color.rs
* Check before unwrapping layer
* Close if in the right place
* Fix typo
* Format code
* Support discontinuous paths for closing preview
* Code review
* Denser fill lines
* Fill tool preview with strip lines only and revert pen shape-closing opacity
* Small adjustments to fill preview
* Fix line width of fill preview
* Use a pattern to preview the fill tool and fix canvas clearing
* Update pattern
* Simplify code
* Format code
* Use secondary color to preview fill if shift is pressed
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Added initial logic for dragging
* Alt drag stop makes opposite handle back to its position
* Implement new requested behaviour
* Fix sharp point bug
* Apply suggestions from code review
* Add hints
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* added handle_types and refactored the handle_adjustments
* anchor move refactor
* code-todo-fix
* removed-draw-mode
* kind of works need to figure out snapping
* some refactoring
* refactor+overlays..need to fix the snapping and dragging
* added docs
* got stuck in space move
* fixed all issues
* comments and small fixes
* completed last issue and refactor
* major fixes and improv
* fixed edge cases
* edge cases fixed
* fix edge cases and add docs
* Code review pass
* rename ,bug fixes
* Add terminology diagram
* Add Ctrl "Lock Angle" hint
* Rename other hint
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Implement experimental time routing to the node graph
* Allow toggling live preview with SHIFT + SPACE
* Add animation message handler
* Fix hotkeys
* Fix milisecond node
* Adevertize set frame index action
* Fix frame index
* Fix year calculation
* Add comment for why month and day are not exposed
* Combine animation nodes and fix animation time implementation
* Fix animation time interaction with playback
* Add set animation time mode message
* Captalize UTC
* Fix compiling
* Fix crash and add text nodes
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* implemented space drag need to handle unwrap + clean snap cache
* completed the space drag need to refactor
* refactor
* small comment changes
* formating_fix
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Fix abortion while dragging
* Create function for text bounding box
* Reorder arms of text tool FSM
* add transform cage to textbox pt.1
* add transform cage pt.2
* Fix minor issue after merge
* Get bounding box working in place without action keys
* Add max_height and disable pivot drag
* Cleanup code and write doco for new utility function
* Minor change due to merge
* Add bottom overlay
* Get modifier keys to work pt.1
* Code cleanup
* cleanup
* Fix transform
* Minor improvements
* Undo debug statement!
* Add comments and keep original layer transformation
* Alt from centre
* Fix merge conflict
* Minor code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: hypercube <0hypercube@gmail.com>
Co-authored-by: James Lindsay <78500760+0HyperCube@users.noreply.github.com>
* add document method to check intersection and insideness with polygon
* impl lasso selection
* impl lasso select to always add to selection
* add hint for lasso selection
* fix calculating selection mode based on direction on each pointer move
* fix lasso polygon lagging behing mouse position
* add overlay to draw lasso polygon with fill color same as quad
* fix comment
* change removing from selection key binding from Sift + Ctrl to just Alt
* impl Alt to shrink selection for quad in path tool
* refactor rename SelectionType to SelectionShape
* impl lasso overlay for path tool
* impl selecting anchors and handles intersection lasso in path tool
* add keys hint info
* fix converting lasso polygon to closed subpath which is has less than two points
* Code review
* impl preferences-based selection mode to the Path tool for only for overlays,
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Fix GRS overlays bugs
- [ ] Another change: when typing values, we shouldn't round the number to 2 decimal places, instead it should show the exact number the user types, including trailing zeros if the user types those.
- [ ] For Scale, the solid vs. dashed line that follows the cursor is following the projected location of the cursor onto that line. It should not be doing that, instead it should be displaying the actual scale ratio. 0 means at the center. 1 means at the starting point of the Sscale. 0.5 means half is solid, half is dashed. Notice in my video below, I'm able to make the solid line's end go all the way to the center, which should occur at a scale factor of 0, without ever having the scale factor even go below 0.5. Because currently the two values aren't related. Furthermore, this is necessary to visualize snapping when Ctrl is pressed and to properly handle slowing when Shift is pressed.
https://files.keavon.com/-/QuirkyYummyGrayfox/capture_38_.mp4
- [ ] Implement integer-value snapping for Grab when Ctrl is pressed? It should work whether we're freely moving or constrained to X or Y (but still mouse controlled; Ctrl doesn't affect typed numbers). So when Ctrl is held, we shouldn't see decimal values. You'll need to zoom in past 100% to see decimal values.
- [ ] We don't enter G, R, or S mode until after pressing one of those keys and then moving the mouse cursor. It should happen immediately upon pressing the key, before needing to move the cursor.
- [ ] The hints need to be updated to work dynamically with the state of global vs. local X and Y constraint, and include - negation, numbers, and Backspace if numbers are typed.
- [ ] In the Path tool, we actually do want the Rotation to start from the direction of the cursor rather than the local rotation of the layer. So if you can undo that change specifically for the Path tool, but keep it for the Select tool, that would be ideal.
- [ ] When G is constrained to Y in both Path and Select tools, the number label shouldn't swap sides based on moving the mouse left and right offset by the pivot-to-start-point X offset distance. Alternatively, you could keep this behavior but make it swap to the side that the mouse is currently on (removing the pivot-to-start-point X offset from the current mouse position). When solving this, just be sure you don't break the correct behavior for G when unconstrained to an axis, since we like how the Y component label swaps sides. Please also double-check that you're not drawing any extra (overlapping) overlay lines than the necessary 1 when in X or Y constraint mode, or when X or Y happen to be precisely 0. https://files.keavon.com/-/EachWeeArcticseal/capture_39_.mp4
- [ ] Remove the bottom-left viewport overlay labels for the G/R/S status
* Remove bottomleft GRS overlay
* Fix backspace minus
* Implement integer-value snapping for Grab when Ctrl
* Use built-in coordinates for translation
* Show the exact value in Typing including trailing zeros
* Make rotation overlay start along the cursor rather than the local rotation of the layer in path tool
* Properly handle slow down and other effects on scale
* Start the transformation overlay immediately rather than after first change
* Hints for typing and global/local axes
* Prevent drawing overlapping if X or Y is 0
* Fix number being replaced by - when in negated transformation
* Fix fixes
* Invert scale delta in inverted mode
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* visualize spline end points using overlays
* implement for spline tool to extend path by draging end points
* allow holding Shift to begin drawing a new spline subpath in the same layer
* implement spline tool to join two endpoints
* fix naming
* refactor spline tool
* impl spline tool snapping and overlays
* fix joining path and refactor
* improve join_path comment
* fix snapping overlays flickering by ignoring snapping in current layer
* fix inserting single point on aborting spline tool
* add snapping for endpoint even when regular snapping is disabled
* fix extending
* fix inserting new point instead of extending and Add hint for Shift to append
* fix grammatical errors and code style
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* grab_scale_path and backspace for pen
* minor improvements and fixes
* code-review changes
* Avoid more nesting, and other code cleanup
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Make progress in text tool
* Add line_width to gcore and gstd
* minor fix
* Dragging sets line_width correctly
* Get draw overlay to work
* Typo fix
* Make progress in text tool
* Add line_width to gcore and gstd
* minor fix
* Dragging sets line_width correctly
* Get draw overlay to work
* Typo fix
* Improve text bounding box
* Add toggle for editing line width
* Take absolute value of drag
* Fix optional properties
* Code review
* Attempt to add box height and abort with keys
* Attempt to add key modifiers and snap manager
* Use resize for improved dragging
* Refactor typesetting configuration into a struct
* Fix missing px unit in frontend
* Remove lines on rendered text
* Fix backwards compatibility
* Refactor lenient slection as an associate function in tool data
* Add dashed quad to text nodes
* Use correct names for max height and width
* Additional renames and reorder
* ReResolve conflict
* Code review and improvements
---------
Co-authored-by: hypercube <0hypercube@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* added snap and lock angle to path tool
* fixed breakage of `tab` and `space` functionality
- Previous implementation broke functionality of using Tab to swap the being-dragged handle to its opposing handle, Now fixed.
- Previous implementation broke functionality of using space to drag the manipulator group (anchor + handles) while dragging a handle, Now fixed.
* fixed the angle snapping and locking when used together
Now, if `shift` is used to snap to a 15° increment, then `ctrl` is used to preserve the angle, releasing the `shift` key will still preserve the angle.
* Fix snapping angle logic
* Improve transforms
* added functionality for `alt` key
Now, temporarily converts selected handles to colinear if they are not already colinear.
* Revert "added functionality for `alt` key"
This reverts commit f12ba6fdbf261291ced0e042a2dfe12cddd2f9e8.
* Code review
---------
Co-authored-by: hypercube <0hypercube@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* 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>
* 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
* 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>
* 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