* move `trait AsU32` from `gcore::vector::misc` to `gcore`
* move blending and gradient to their own modules
* fix unused warnings
* move `Quad`, `Rect` and `BBox` to `gcore::math`
* extract `ReferencePoint` and transform nodes from `transform`
* move color-related code to `mod color`
* fix unused warning in test code
* move blending-related nodes and code to `mod blending_nodes`
* move ClickTarget code to `mod vector::click_target`
* Prototype document network level into node insertion
* Implement Convert trait / node for places we can't use Into
* Add isize/usize and i128/u128 implementations for Convert trait
* Factor out substitutions into preprocessor crate
* Simplify layer node further
* Code review
* Mark preprocessed networks as generated
* Revert changes to layer node definition
* Skip generated flag for serialization
* Don't expand for tests
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Added Count point Radio button to property pannel
* Implemented on Count radio button functionality
* Fixed linting and Title case problem
* Fixing more linting problem
* Instance tables refactor part 8: Make repeater nodes use pivot not bbox and output instance type not group; rename 'Flatten Vector Elements' to 'Flatten Path' and add 'Flatten Vector' (#2697)
Make repeater nodes use pivot not bbox and output instance type not group; rename 'Flatten Vector Elements' to 'Flatten Path' and add 'Flatten Vector'
* Refactor the 'Bounding Box' node to use Kurbo instead of Bezier-rs (#2662)
* use kurbo's default accuracy constant
* fix append_bezpath() method
* refactor bounding box node
* fix append bezpath implementation.
* comments
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Add overlays for free-floating anchors on hovered/selected vector layers (#2630)
* Add selection overlay for free-floating anchors
* Add hover overlay for free-floating anchors
* Refactor outline_free_floating anchor
* Add single-anchor click targets on VectorData
* Modify ClickTarget to adapt for Subpath and PointGroup
* Fix Rust formatting
* Remove debug statements
* Add point groups support in VectorDataTable::add_upstream_click_targets
* Improve overlay for free floating anchors
* Remove datatype for nodes_to_shift
* Fix formatting in select_tool.rs
* Lints
* Code review
* Remove references to point_group
* Refactor ManipulatorGroup for FreePoint in ClickTargetGroup
* Rename ClickTargetGroup to ClickTargetType
* Refactor outline_free_floating_anchors into outline
* Adapt TransformCage to disable dragging and rotating on a single anchor layer
* Fix hover on single points
* Fix comments
* Lints
* Code review pass
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Add anchor sliding along adjacent segments in the Path tool (#2682)
* Improved comments
* Add point sliding with approximate t value
* Add similarity calculation
* Numerical approach to fit the curve
* Reliable point sliding for cubic segments
* Fix formatting and clean comments
* Fix cubic with one handle logic
* Cancel on right click and escape
* Two parameter optimization
* Esc/ Right click cancellation
* Code review
* Fix dynamic hints
* Revert selected_points_counts and fix comments
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Fix Sample Points node to avoid duplicating endpoints instead of closing its sampled paths (#2714)
* Skip duplicate endpoint and close sampled paths in Sample Points node
Closes#2713
* Comment
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Implemented on Count radio button functionality
* Fixed linting and Title case problem
* The sample count can now work with adaptive spacing
* Readying for production
* Rename to 'Sample Polyline' and add migration
* Upgrade demo artwork
* Add monomorphization
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: Priyanshu <indierusty@gmail.com>
Co-authored-by: seam0s <153828136+seam0s-dev@users.noreply.github.com>
Co-authored-by: Adesh Gupta <148623820+4adex@users.noreply.github.com>
Co-authored-by: Ezbaze <68749104+Ezbaze@users.noreply.github.com>
* Change node categories
Signed-off-by: ezbaze <rybitwamateusz3@gmail.com>
* Restore Ezbaze's other work that was lost in the rebase
---------
Signed-off-by: ezbaze <rybitwamateusz3@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Ignore tauri gen
* Deny warnings on CI
* Fix all warnings in current nightly rustc
* Disable DWARF debug info for development builds
* Fix typo
---------
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>
* graph-craft: fix direct wasm build
* graph-craft: fix no serde feature failing to compile
* graph-craft: make wgpu-executor properly optional
* workspace: unify `image` formats in workspace
* workspace: turn most dependencies into workspace deps, no actual changes
* workspace: unify dependency features in workspace dep
* refactor: opacity + blend_mode -> blend_style
* Add code for clipping
* Add alt-click masking
* Clip to all colors. Fill option
* Fix undo not working. Fix strokes not being white
* Allow clipped to be grouped or raster
* Switch to alpha mode in mask-type
* add plumbing to know if clipped in frontend and add fill slider
* Attempt at document upgrade code
* Fix fill slider
* Add clipped styling and Alt-click layer border
* Use mask attr judiciously by using clip when possible
* Fix breaking documents and upgrade code
* Fix fixes
* No-op toggle if last child of parent and don't show clip UI if last element
* Fix mouse styles by plumbing clippable to frontend
* Fix Clip detection by disallowed groups as clipPath according to SVG spec doesn't allow <g>
* Add opacity to clippers can_use_clip check
* Fix issue with clipping not working nicely with strokes by using masks
* Add vello code
* cleanup
* Add stroke alignment hacks to SVG renderer
* svg: Fix mask bounds in vector data
* vello: Implement mask hacks to support stroke alignment
* Move around alignment and doc upgrade code
* rename Line X -> X
* An attempt at fixing names not updating
* svg: add stroke order with svg
* vello: add stroke order with by calling one before the other explicitly
* fix merge
* fix svg renderer messing up transform det
* Code review; reorder and rename parameters (TODO: fix tools)
* Fixes to previous
* Formatting
* fix bug 3
* some moving around (not fixed)
* fix issue 1
* fix vello
* Final code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* UI working for spacing enum.
* Implementations.
* UI working for spacing enum.
* Undo all changes.
* unit, display_decimal_places, and step macro implementation.
* Fixing tests.
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Improved comments
* Add point sliding with approximate t value
* Add similarity calculation
* Numerical approach to fit the curve
* Reliable point sliding for cubic segments
* Fix formatting and clean comments
* Fix cubic with one handle logic
* Cancel on right click and escape
* Two parameter optimization
* Esc/ Right click cancellation
* Code review
* Fix dynamic hints
* Revert selected_points_counts and fix comments
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Start refactoring the boolean operations code
* Switch to iterators in the boolean operations code
* Make boolean operations work on rows of a table, not Vecs of single-row tables
* Remove more .transform()
* Simplify brush code
* Attempt to remove .transform() by using Instance<Image<Color>> in brush code, but a regression is introduced
* Improve blend_image_closure
* Simplify
* Remove leading underscore from type arguments
* Remove .transform() from ImageFrameTable<P> and fix Mask node behavior on stencils not fully overlapping its target image
* Remove more .one_instance_ref()
* Fully remove .one_instance_ref() and improve the 'Combine Channels' node robustness
* Fully remove .once_instance_mut()
* Fix tests
* Remove .one_empty_image()
* Make Instances<T>::default() return an empty table for images, but still not yet vector
---------
Co-authored-by: hypercube <0hypercube@gmail.com>
* fix distribution snapper visualization going far from layers
* fix bugs
* Remove traces
* remove comment
* Fix tests
* Rename distribution snapper variables from x, y to horizontal, vertical
* Fix tests
* Fix bug where center point and corner point have to be enabled for distribution_snapper to work
* Cleanup
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* kinda works
* solved merge conflicts
* implement the multi flip
* nit-picks
* removed extra functions
* Fix inputs not being passed to backend for repeated double-clicks
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Transfer pasted layers to viewport center when not in viewport
Fixes#2301
* Move a layer as a whole and use change
* Make a bbox and move content according to that
* partial fix
* Only move if none within viewport
* Fix import error
* Fix artboard
* tmp, skip ones being added to ab
* fix stuff
* fix formatting
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* WIP
* Done?
* Install fonts in CI
* Use absolute path so minified inlined CSS works
* Fix Bezier-rs demo fonts?
* Use opsz
* Revert removal of text balancer
* Pull in the text balancer from our static host
* Add hash sets to hold ignored points in SelectedLayerState
* Fix non selected anchor dragging
* Update selected points when ignoring handles or anchors
* Refactor selected points status logic
* Refactor ignore_handles and ignore_anchors bools to ShapeState
* Add back in ignore_anchors and ignore_handles in SelectedLayerState
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Fix several broken raster nodes and clean up leftover old node system code
* Migrate Brightness/Contrast to the new node macro, and fix it
* Remove last usages of old_node_fn
* Remove old_node_fn
* First draft of factoring out the dropdown boilerplate
* Add proc macro for enum boilerplate
* Detect whether to say `crate` or the name
* Clean up the input and naming of the enum macro
* Rename a file
* Do the rename of code too
* Use the attribute-driven selection of radio vs dropdown
* Add a metadata struct and tooltips
* Move the new traits to a better place.
* Use ChoiceType, part 1
* Use ChoiceType, part 2
* Introduce a builder API for choice widgets
* Start using the new new API
* DomainWarpType should be a dropdown still
* Handle the case where a node property can never have a socket
* Rustfmt
* Code review
* Update stable node IDs in test
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Added granular overlays control based on features
* Added basic support for pivot, path, anchors and handles overlay settings
* Added more overlay checks on anchors and handles
* Add new settings over measurements, hover and selection overlays
* Fix errors introduced while rebasing
* Disable anchors and handles functionality with their overlays, extended selection outline check
* Add check to enable/disable outlines on selected layers
* Toggle handles checkbox in sync with anchors checkbox
* Refactor overlays checks
* Remove debug statements
* Update select_tool.rs to resolve conflict
* Minor fix to reflect anchor checkbox state on the handles
* Minor fix to make anchors checkbox work
* Rearrange menu items, and code review
* Fix pivot dragging
* Add handles overlay check when drawing with pen tool
* Fix constrained dragging when transform cage is disabled
* Fix deselecting user selection when anchors are disabled
* Minor fix for disabling anchors
* Remove All from OverlaysType
* Remove debug statements
* Fix editor crash when selecting other layers with path tool and anchors disabled
* Minor fix on overlays check for all overlays
* Add proper code formatting
* Nits
---------
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>
* Add Spline tool tests for drawing within a transformed artboard
* Refactor spline tool test to use click_tool and add draw_spline helper method
* refactor asserting point positions
* Fix decimal fomat
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Adding tests for spline PTZ
* Some refactoring
* Feedback applied from James
* Unnecessary changes
* refactor with current merged pr
* Code refactoring based on guidelines
* cli failing
* almost_fixed
* fix need to refactor
* fixed issed need to refactor
* refactor-done fixed issue
* move function to common_functionality
---------
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>
* init
* add closed and slice options
* Make it work beyond -360 to 360 degrees
* Switch "closed" and "slice" to ArcType enum
* Update default ranges
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Send path tool FSM to Dragging state on MouseDown if clicking selected point
* Cleanup
* Store selected point state before new selection is made and setup deselect logic
* update previously saved point data on every point selection
* Decide whether to deselect or select on extended_select if node not already selected, when DragStop state is reached instead of inside the mouse_down function.
* Fix broken merge and remove leftover debug statements
* 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>
* Add Gradient tool test for dragging an endpoint sets the correct point in the viewport
* add canvas_zoom and transformset to verify correct viewport-space behavior
* cli failing
* cli failing
* test_transform_with_different_selections and groups
* merge conflict
* Use abs_diff_eq in assertions
* Added test 4
* Added test 4
* removed unnecessary changes
* Include points in bounding box calculations
* Fix unrelated crash from debug assert when reordering root-level folders
* Fix another unrelated crash from debug assert when GRS scaling to size 0
* Fix several vector nodes to respect and propagate local transform space
* Add InputType based filtering capabilites to NodeCatalog.
Send InputTypes through SendUiMetadata under
odeTypes.
Update NodeCatalog.svelte component to support ype based filtering.
Update ContextMenuData to support compatibleType as an input to the searchTerm for the NodeCatalog.
Update Graph.svelte component to support new ContextMenuData enum types.
Send CompatibleType data from rust backend on wire drag and release to NodeCatalog to already show filtered data.
* Add InputType based filtering capabilites to NodeCatalog.
Send InputTypes through SendUiMetadata under
odeTypes.
Update NodeCatalog.svelte component to support ype based filtering.
Update ContextMenuData to support compatibleType as an input to the searchTerm for the NodeCatalog.
Update Graph.svelte component to support new ContextMenuData enum types.
Send CompatibleType data from rust backend on wire drag and release to NodeCatalog to already show filtered data.
* Open NodeCatalog on DoubleClick in empty node graph area
* Capture Node implementations and filter out uncatogrised nodes before sending metadata.
Update NodeCatalog Search filter to support single type search alongside name and category search
* Take union of DocumentNodeTypes and registered node implementations, Update missing categories and make sure to remove nodes with empty categories
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Fixes issues
* Revert changes
* Viewing angle using R
* Revert other fix so it can be its own PR
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* zoom rate preference
* Add generic range mapping functions for improved reusability
* cleanup
* Map zoom slider's default value of 50 to the original zoom rate (0.005)
* use . instead of .0 for whole-number floats
* Refactor zoom rate mapping to use a fixed reference point and adjustable curve steepness
* Code review
---------
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>
* Add test for scaling objects to zero
* added non zero scale after near zero scale to check if everything is working ifine
* unnecessary change
* cli failing
* chore: upgrade openssl to fix RUSTSEC-2025-0022
* cli failing
* new changes
* Fix line overlays not showing up for horizontal/vertical line
* Fix spline tool transform
* Fix line tool transform
* Fix pivot following mouse even after confirm
* cargo fmt
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* WIP debugging
* Only create parent ref if var args are used in context + Cleanup
* Eval nodes with None instead of relying on MemoImpure
* Remove unused imports
* Show parent in debug output
* Remove TODO comment
* added tests for chained tasks
* added tests for chained tasks, applied the feedback from 0hypercube
* some changes in grs chained test to make it more robust
* unnecessary changes
* 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>
* Have red be below quads
* Code review pt 1
* Skip rendering of pivot
* Code review pt 2
* Code review pt 3
* Cancel resize and its hints
* Remove the redundant placing message
* Dragging state for text tool fsm
* Cleanup
* Fix line tool undo and abort problems
* Code review
* 3px textbox overflow bottom
* Some more cleanup
* Fix reversed match arms that had been converted to if-else
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* fixed deep-select and overlays
* minor fix
* made minor fixes in filtering
* small fix
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Make sure that quick measure overlays are based on AABBs drawn in the viewport local space
* Draw overlays to visualise AABBs of selected and hovered shapes
* use pre-existing functions to render dashed lines
* Redraw selected bounds using existing BoundingBoxManager
* remove unused variables
* Render transform cage after overlay is drawn
* Bring overlay and transform cage render calls above(before) other gizmos
* Add line length tolerance and render single line for singal edge alignment with one axis overlap
* Comments
---------
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>
* Just group
* Partly working but without transforms
* Remove Transform/TransformMut from GraphicElement and GraphicGroupTable
* Fix layers and flattening
* Fix transform group handling on the remaining nodes
* Change collect metadata
* Add transform on vector data. TODO: Remove duplicate transform
* Small code tidying-up
* Add concatenate node?
* Remove ignore_modifications which is always false
* Improve transforms
* Mostly fix the nested transform cage angle (except leaf layers and skew)
* WIP attempt to integrate skew
* Fix nesting bounding box
* Avoid setting the transform
* Fix stroke transforms
* Renderer cleanup
* Fix tests for repeated elements not given unique point IDs
* Suppress cargo-deny warning
* Fix upgrade code for graphic group data
* Work around rendering issue in Isometric Fountain
---------
Co-authored-by: Adam <adamgerhant@gmail.com>
Co-authored-by: hypercube <0hypercube@gmail.com>
* Fix fill tool on raster image temporarily breaks the graph
* Avoid vector filling raster layer via checking node category
* check raster image using input type instead
* Add additional check for TextureFrameTable
* Enable the ignore raster test
---------
Co-authored-by: hypercube <0hypercube@gmail.com>
* disable "Colinear Handles" checkbox when only endpoint or its handle is selected
* small refactor
* ignore endpoints when calculating multiple selected points colinearity
---------
Co-authored-by: indierusty <priyaayadav@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Replace `.selected_nodes(&[])` with `.selected_nodes_in_nested_network()` and `.selected_nodes()`
* Replace `.network(&[])` with `.document_network()` and `.nested_network()`
* Replace `.network_metadata(&[])` with `.document_network_metadata()`
* Clean up dyn_any usages
* Migrate ArtboardGroup to ArtboardGroupTable (not yet flattened)
* Reorder graphical data imports
* Flatten and remove ArtboardGroup in favor of ArtboardGroupTable
* Fix test
* Fix domain data structure field plural naming
* Rename method one_item to one_instance
Rename method one_item to one_instance
* Move the Instance<T> methods over to providing an Instance<T>/InstanceMut<T>
Move the Instance<T> methods over to providing an Instance<T>/InstanceMut<T>
* Add transform and alpha_blending fields to Instances<T>
* Finish the refactor (Brush tool is broken though)
* Add test for brush node
* Fix brush node
* Fix default empty images being 1x1 instead of 0x0 as they should be
* Fix tests
* Fix path transform
* Add correct upgrading to move the transform/blending up a level
---------
Co-authored-by: hypercube <0hypercube@gmail.com>
* Implement experimental Context struct and traits
* Add Ctx super trait
* Checkpoint
* Return Any instead of DynAny
* Fix send implementation for inputs with lifetimes
* Port more nodes
* Uncomment nodes
* Port more nodes
* Port vector nodes
* Partial progress (the stuff I'm more sure about)
* Partial progress (the stuff that's not compiling and I'm not sure about)
* Fix more errors
* First pass of fixing errors introduced by rebase
* Port wasm application io
* Fix brush node types
* Add type annotation
* Fix warnings and wasm compilation
* Change types for Document Node definitions
* Improve debugging for footprint not found errors
* Forward context in append artboard node
* Fix thumbnails
* Fix loading most demo artwork
* Wrap output type of all nodes in future
* Encode futures as part of the type
* Fix document node definitions for future types
* Remove Clippy warnings
* Fix more things
* Fix opening demo art with manual composition upgrading
* Set correct type for manual composition
* Fix brush
* Fix tests
* Update docs for deps
* Fix up some node signature issues
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: hypercube <0hypercube@gmail.com>
* Initial attempt
* Allow editing and display overlays
* Fix modifier keys
* Handles show up correctly when layer is transformed
* Add multi-layer editing support and cleanup
* Fix transform breaking the handles
* line between handles
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Enable free movement of edge during skew when ctrl is held
Fixes#2299
Follow-up to #2300
* Simplify code
* Change test along the lines of new behaviour
* Make the hint Title Case
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* WIP, for TrueDoctor to continue
* Expose first implementation type as default type in field metadata
* Cleanup
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* fix nudging the transform of 0 scaled object to `Nan` value by avoid division by zero vec2
* Update editor/src/messages/portfolio/document/document_message_handler.rs
---------
Co-authored-by: indierusty <priyaayadav@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Add feature for toggling an existing boolean to another type in Select tool
* Code simplifications and comments
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>