* Changes rotation handles to be around overlay squares
Fixes https://discord.com/channels/731730685944922173/931942323644928040/1330785941786329209
* Fix zero width objects not being selected by slightly nudging the transform
* Follow the categorical limits to render overlay quads
As discussed here: https://discord.com/channels/731730685944922173/931942323644928040/1331166336923074600
* Replace area based calculations with edge based calculations
* Fix 3rd category vis
* Code review
* Add missing powi(2)
* Fixes to handle logic
* Remove single axis prioritisation
* Explicitly check for distance to find nearest handle
* Replace threshold check based on corner vis bounds
* Fix discrepancy at h=12px
* Allow grab when box is too small by disabling resizing within bounds
* Replace inside resize pixel limit
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Use the identity matrix as the default for an image frame
* Fix all usages to be equivalent to their pre-refactor versions, opting to keep ZERO not IDENTITY as the default image size
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Fix a minor regression in monitor nodes with VectorData
* Use type alias instead of full type
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Port VectorData to Instances<VectorData>
* Port ImageFrame<P> and TextureFrame to Instances<ImageFrame<P>> and Instances<TextureFrame>
* Avoid mutation with the TransformMut trait
* Port GraphicGroup to Instances<GraphicGroup>
* It compiles!
* Organize debugging
* Document upgrading
* Fix Brush node
* Restore TransformMut in lieu of TransformSet trait
* Fix tests
* Final code review
* implemented left selection logic
* added logic for right ward selection
* removed the logs code
* corrected capitalization error
* corrected capitalization error
* added radio buttons for selection_mode
* fixed multiple selection of checkboxes
* adapted to the RadioEntryData
* State management bug
* integrated message system to selection_mode
* updated
* updated
* added selection mode to transition arms
* removed from portfolio message and added preference in ToolMessageData
* removed dead code of selection_mode from frontend logic
* removed dead code for zoomWithScroll
* Cleanup
* Rename, simplify, use dashed box, and highlight only outlines of layers that'll get selected
* More code review
---------
Co-authored-by: Pratik Agrawal <patrik@Pratiks-MacBook-Air.local>
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>
* Fixes last tab being opened instead of last active tab
Fixes https://discord.com/channels/731730685944922173/881073965047636018/937518022548131891
* Defers node initialisation to SelectDocument message instead of load_document
* Fix warning regarding attempt to load closed document
* Defer loading resources and running nodes to selection time
* Make last active tab load before others
* Load last active saved document instead of last autosaved doc
* Fix failing tests
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Make HintInfo label use Cow<'static, str> instead of String
Fixes https://discord.com/channels/731730685944922173/881073965047636018/931942323644928040
tmp, will amend later
* Replaces dynamic hint used by transform layer with overlays
* Adds a scaling factor accounting for document and viewport scales
Also moves whole code to single unit
* Make overlays relative to viewport rather than document
* Add visualization overlays to G/R/S in the Select tool
* Prevents quick measurements from showing up when resizing bounds
Fixes https://discord.com/channels/731730685944922173/881073965047636018/1328282633456713762
* Add local axes which activates on double constraints.
* Handle the bounding box of a collection of layers as select tool does
* Replaced hard coded transparent color and removed debug! which slipped in
* Make rotation axes start along local axis
* Fix typed distance being in doc space and negatives
* Fix missing undo transactions for some actions
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* added_handle_overlays
* changed color to yellow
* Rename color parameter
* Change the color to blue
---------
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>
* 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>
* 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>
* properties panel remains active when user edits text layer
* Keep text layers selected after editing
* Update editor/src/messages/portfolio/document/document_message_handler.rs
* Delete Empty Text Layer on Escape or Right Click
* Fix: delete empty text layer on right click
---------
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>
* Fix text selection
* Remove old implementation
* minor change
* Use inbuilt function instead of helper
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Tidy up number text alignment and decimal precision for quick measurement overlays
* Tidy up number text alignment and decimal precision for quick measurement overlays
* Tidy up number text alignment and decimal precision for quick measurement overlays
* Tidy up number text alignment and decimal precision for quick measurement overlays
* Tidy up number text alignment and decimal precision for quick measurement overlays
* Tidy up number text alignment and decimal precision for quick measurement overlays
* Tidy up number text alignment and decimal precision for quick measurement overlays
* Tidy up number text alignment and decimal precision for quick measurement overlays
* Formatting changes
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Implement deselect on single-click and select all anchors on double-click
* fixed the single_click_behaviour
* fix flipSmoothSharp when doubleclick and drag
* Cleanup and Clippy fixes
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* setup single edge crossing handling for quick measure tool
* Setup quick measure functionality for intersecting objects and handle centerline cases for non intersecting objects.
* setup single edge crossing handling for quick measure tool
* Setup quick measure functionality for intersecting objects and handle centerline cases for non intersecting objects.
* Setup quick measure functionality for intersecting objects and handle centerline cases for non intersecting objects.
* Setup quick measure functionality for intersecting objects and handle centerline cases for non intersecting objects.
* Setup quick measure functionality for intersecting objects and handle centerline cases for non intersecting objects. Add a dashed_line_with_pattern function that gives more granular control over dash_width and gap_width.
* Setup quick measure functionality for intersecting objects and handle centerline cases for non intersecting objects. Add a dashed_line_with_pattern function that gives more granular control over dash_width and gap_width.
* Setup quick measure functionality for intersecting objects and handle centerline cases for non intersecting objects. Add a dashed_line_with_pattern function that gives more granular control over dash_width and gap_width.
* Setup quick measure functionality for intersecting objects and handle centerline cases for non intersecting objects. Add a dashed_line_with_pattern function that gives more granular control over dash_width and gap_width.
* Nit picks
* Define wrapper for Overlay_context line method
* Comments and consolidating lines of code
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* place new layer from basic tools within an artboard bounds
Signed-off-by: James Ryans <james.ryans2012@gmail.com>
* add for Text Tool
Signed-off-by: James Ryans <james.ryans2012@gmail.com>
* use click_xray function
Signed-off-by: James Ryans <james.ryans2012@gmail.com>
* support for freehand tool
Signed-off-by: James Ryans <james.ryans2012@gmail.com>
* support spline tool
Signed-off-by: James Ryans <james.ryans2012@gmail.com>
---------
Signed-off-by: James Ryans <james.ryans2012@gmail.com>
* Selection history when creating a new layer
* fixed selection history
* cleaned up the code, removed duplicate network_metadata calls
* re: fixed selection history
Added a default value for selection_undo_history to make sure its never actually empty.
* 2115 IP
* Initial implementation of Expression node
* Register Expression Node
* Add Expression DocumentNode Definition
* DocumentNodeImplementation::Expresssion in guess_type_from_node
* Move expression.rs to graphene-core
* WIP: Investigating 'exposed' & 'value_source' params for Expression property
* Node graph render debug IP
* Single input can change node properties; complex debug IP
* Fix epsilon in test
* Handle invalid expressions in expression_node by returning 0.0
* Run cargo fmt
* Set the default expression to "1 + 1"
* Hardcode the A and B inputs at Keavon's request
* Rename and clean up UX
* Move into ops.rs
---------
Co-authored-by: hypercube <0hypercube@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* 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>
* 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>
* 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>
* 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
* Add node button
* Improve css a bit
* Add layer renaming to the Properties panel and move New Layer to that, plus add unpinning to properties sections
* Add tooltip
* Re-add layer itself in listing
* Final code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Fix me crashing the editor due to not paying attention
* Swap two lines for consistency
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>