Commit Graph
530 Commits
Author SHA1 Message Date
Keavon Chambers a0ce56d9b6 Rename Instances<T> to Table<T> and the "instance" terminology to "TableRow" and "element" (#2981)
* Instances -> Table

* instances.rs -> table.rs

* Rename occurrances of the word "instances"

* .instance -> .element

* Instance* -> TableRow*

* Rename Table and TableRow methods to not say "instance"

* Remove presumed unused serde defaults now that tables default to length 0 not 1

* Rename occurences of the word "instance"

* Un-alias the RasterDataTable<Storage>, VectorDataTable, GraphicGroupTable, ArtboardGroupTable typedefs

* Move artboard type and node code out of graphic_element.rs to a new artboard.rs

* Organize the TaggedValues

* Fix tests

* Fix prior regression with Image Value node not upgrading
2025-08-03 04:12:18 -07:00
James LindsayandKeavon Chambers 1e3c3da3fe Fix the Path tool erroneously showing editable geometry overlays belonging to hidden Path nodes (#2932)
* Ignore hidden path nodes

* Use correct path node vector modification

* Break test

* Better fix for test

* Fix rustfmt

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-02 22:53:05 +00:00
Adesh GuptaandKeavon Chambers c42011f8e2 Partly fix when the "Make Path Editable" button is shown as enabled (#2968)
* Fix add path node button enable

* Fix add path node button enable

* Refactor code

* Fix formatting

* Clean up logic

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-02 21:55:04 +00:00
Adesh GuptaandKeavon Chambers b9a1b2e951 Add copy/cut/paste/duplicate functionality for path geometry (#2812)
* Copy and Paste for paths

* Fix merge

* Implement Copy, Cut and Duplicate

* Fix selection of segments

* Fix formatting

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-02 21:15:01 +00:00
Adesh GuptaandKeavon Chambers 668acd3c30 Improve the Path tool's segment editing mode and make hovering manipulators react contextually (#2860)
* Improve path editing mode

* Code review

* Tidy up UI

* Update path selection behaviour

* Fix linting

* Remove frozen flag

* Code review

* Fix segment split

* Fix deleting segments

* Add requred methods in vello overlay context

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-01 23:58:35 -07:00
0SlowPoke0andKeavon Chambers 523132da17 Add 'Circle' to the Shape tool and its associated gizmos (#2914)
* merged with circle and impl inner radius gizmo for arc

* impl radius-gizmo for arc

* fix only one gizmo shown at a time

* Code review

* make hints update when changing shape,add default behaviour when dragging to make circle earlier fixed to from center

* fixed arc-radius hover threshold and show arc-endpoint when hover over arc-radius gizmo

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-01 22:23:21 -07:00
Dennis KobertandKeavon Chambers f15023ef58 Fix regression with double-click in the Path tool not working (#2963)
* Fix double click in path tool not working

* Remove debug line

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-31 21:53:28 +00:00
0SlowPoke0andKeavon Chambers 7e0a274bd1 Fix Shape tool arc gizmo snap visualization and pointer cursor icon when hovering or dragging (#2957)
* fixed cursor,arc bugs

* Update cursor icon

* send pointer-move only when required

* make it compile

* Code review

* remove repeated modifier key

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-31 00:04:08 -07:00
Keavon Chambers b348fabfd2 Remove the unsupported Brush tool warning dialog now that raster performance is improved 2025-07-28 17:03:48 -07:00
Dennis Kobert 35ab266bbb Add handler for deferred execution of messages (#2951)
* Add Handler for defered execution of messages

* Cleanup

* Track graph execution id to associate messages with their corresponding execution id

* Rename ViewportReady -> NavigationReady

* Defer layer deselection
2025-07-29 01:57:11 +02:00
Adesh GuptaandKeavon Chambers 75614eb9d4 Fix vector mesh editing behavior in various edge cases (#2943)
* Fix colinear switch behaviour

* Fix Tab to switch handles

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-27 00:20:39 +00:00
0SlowPoke0andKeavon Chambers 3a8c1b6f97 Add Arc drawing mode to the Shape tool and the associated angle gizmos (#2757)
* implement arc gizmo handler

* fixed wrapping need to fix snapping and overlays

* fixed all the issues

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-26 14:55:38 -07:00
Salman AbuhaimedandKeavon Chambers 85021fd9e0 Add text alignment to the Text node (#2920)
* Add text alignment to Text node

* Lots of renames and improvements

* Add text alignment to the Text tool

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-25 22:04:12 -07:00
Firestar99 4fec24893e Shaders: add gcore-shaders and make graster-nodes no-std (#2925)
* gcore-shaders: add crate, move `color` and `blending` from gcore

* gcore-shaders: move `AsU32`

* gcore-shaders: move `ChoiceType`, switch `Cow` for `&str`, adjust node macro

* gcore-shaders: move `registry::types`

* gcore-shaders: move `context::Ctx`

* raster-nodes: make it `no_std` with `std` feature

* gcore-shaders: fix doctest
2025-07-25 17:53:26 +00:00
Szilveszter ÁbrámandKeavon Chambers 0d43ad2ea0 Fix Path tool path drag ghost outline sticking to viewport, not moving with document while dragging (#2912)
* Added ghost outline clearing when moving outlines via Path Tool

* Fix ghost outline staying fixed during drag by storing it in document space

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-24 09:28:17 +00:00
Firestar99andKeavon Chambers 890da6a3c3 Clean up code by using Iterator::collect() when constructing instance tables (#2918)
* instances: `Iterator::collect()` instances

* instances: adjust nodes to use iterators

* fix warnings on master

* Bump MSRV

* Port the remaining usages

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-23 05:51:40 +00:00
Adam Gerhant e4ec67d852 Fix wires on document change and errors on hidden nodes (#2897)
* Fix wires on document change and errors on hidden nodes

* Code cleanup
2025-07-19 01:48:42 -07:00
Adesh GuptaandKeavon Chambers 4427e97f73 Add "Make Path Editable" buttons in the Path tool control bar and Layer menu (#2900)
* Add graph message for adding a path

* Disable options when adding path tool is not possible

* Move Layer menu entry location

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-18 12:22:40 +00:00
Keavon Chambers 99966d848d Fix text per-glyph instance overlays and click target issues 2025-07-14 14:47:01 -07:00
Oliver Davies 74e35f026f Fix regression with GRS cancellation being broken (#2877)
Fix for cancel regression in path tool
2025-07-13 22:03:51 -07:00
Oliver DaviesandKeavon Chambers e89cded4b8 Add selection cycle and gray pre-selection outlines to the Path tool, and Tab to swap Select/Path tools (#2818)
* 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>
2025-07-13 08:26:36 +00:00
Keavon Chambers 765092fbe9 Rename the message system's 'data' argument to 'context' (#2872) 2025-07-12 22:50:59 -07:00
Adesh Gupta 912e6f61a9 Fix regression with inability to drag segments using the Path tool's segment mode (#2850)
Fix segment dragging
2025-07-10 08:51:25 +00:00
KavinandKeavon Chambers e02510303e Add X and Y offset distance overlay while dragging with the Select tool (#2814)
* Add offset overlay to select tool

* Add overlay to Dragging

* Add axis align behavior

* Style changes

* Add trim to string

* reduce code duplication

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-09 10:49:39 +00:00
mTvareandKeavon Chambers a40de58c7c Fix brush bounding boxes by making BrushCacheImpl's hash not shared between different instances (#2845)
* fix: add cache to each layer

* fix: warning

* fix: tests

* Clean up code

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-09 06:45:41 +00:00
Mohd MohsinandKeavon Chambers 00236c8136 Generate a visualization of the editor's hierarchical message system tree (#2499)
* Feat: implement the hierarchical tree for visualization

* rename HierarchicalTree trait function

* feat: change the HierarchicalTree from String to DebugMessageTree struct

* Nits

* feat: impliment proc macro to extract field from messagedata structs

* update the hierarchical-tree for hanlder data

* feat: added message handler struct to hierarchical tree

* feat: add the line number to message handler struct

* feat: added handler path to tree and NITS

* clean the white spaces in type string

* fixes some white spaces

* feat: added path to message enum in hierarchical tree

* feat: add file creation of hierarchical message system tree

* cleanup

* Code review

* Add todo comment for deferred change

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-08 19:13:51 -07:00
HWienholdandKeavon Chambers d0e1d8982f Allow tooling to treat near-zero-length handles as zero-length when converting to colinear (#2747)
fix colinear handles on connected path

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-08 18:47:56 -07:00
mTvareandKeavon Chambers 8a68683a93 Add pivot type selection with Custom Pivot, Origin (Average Point), and Origin (Active Object) to the Select tool (#2730)
* add origin

* cleanup pivot

* a lot of stuff

* reset pivot

* fix transform with pivot issues

* fixes

* some more cleanup

* fixes

* finally works

* origin fixes

* fix spaces

* fix using dragged_layers

* simplify pivot logic

* fix bugs

* fix the final bug

* fix in select_tool

* fix updates

* some more refactors to fix misunderstanding and refactor

* add checkboxes

* fix labels

* fix stuff which broke at merge

* update

* cargo fmt

* fix serde crash

* fix pivot not updating on move

* fix pivot not becoming last active refernce

* fix redraw issues

* add: active pivot

* cargo fmt

* fix pivot showing up in default mode

* add: pivot pin

* fix: use pin icons

* cargo: cargo lock update?

* fix: use checkbox instead of Overlays

* refactor: add dot to path_tool

* add: active origins

* UI tweaks

* add: add all of the stuff for path tool

* remove: unused layer

* fix: pivot pinning and origin angle

* fix: pin only if moved in first place

* cargo: fmt

* fix: pivot use disabled method

* fix: remove redudant NoOp

* fix: 3 stuff

* fix: select from elsewhere

* fix: compass rose wobbling around

* add: move pivot on grab

* add: move pivot on nudge

* add: move pivot on Grab

* Code review and tooltips

* fixes

* fixes

* fixes

* fix: skipping artboard on bounds calculation

* fix: by default have origin

* Fix prior fix

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-08 09:24:54 +00:00
Firestar99 69ed80b79b Add ::IDENTITY to node macro to return a ProtoNodeIdentifier that is always a &'static str (#2842)
* fix warnings on master

* make the `ProtoNodeIdentifier` of a Node be accessible and always a borrowed `&'static str`

* always generate `node_name::identifier()`, even with `skip_impl`

* make `FrontendNodeType` use Cow

* remove broken `DocumentNodeDefinition`s for old GPU nodes

* don't reexport `graphic_element` in it's entirety, only data structures

* adjust everything to use the new `node_name::identifier()`

* fixup imports for wasm

* turn identifier fn into a constant
2025-07-07 16:29:59 -07:00
James Lindsay 4a83067081 Fix Path tool's Path node transform calculation by skipping local transform based on first instance source ID (#2843)
* First instance source id

* Set source node id and migrations
2025-07-07 22:09:21 +00:00
Adesh Gupta ce605acf3a Make the Path tool's segment drag molding work with linear segments (#2838)
Fix path tool molding
2025-07-06 04:20:06 -07:00
Adesh Gupta 8b0a27939e Clean up the Path tool's FSM to move segment molding state into the dragging state (#2835)
Cleanup molding segments state
2025-07-06 00:39:47 -07:00
Adesh GuptaandKeavon Chambers 49db963ce1 Improve Path tool layer selection behavior using double-click instead of single-click (#2794)
* Improve path tool layer selection behaviour

* Fix layer selection behaviour

* Fix layer double click selection behaviour

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-05 14:17:30 -07:00
Keavon Chambers 354a68911e Improve hotkeys with canonical flag, more industry-standard mappings, and fix GRS menu bar labels (#2827) 2025-07-04 04:58:52 -07:00
Firestar99 a182a7347e Extract gbrush (#2784) 2025-07-01 18:38:47 +00:00
Salman AbuhaimedandKeavon Chambers 83773baa00 Replace Rustybuzz with Parley for text layout, and add text tilt parameter (#2739)
* replace rustybuzz with parley for text layout handling

change text input direction based on text direction

* Code review

* change default character spacing to 0

* add shear to text node

this also adds migration code for documents that don't have shear

* shear migration for text node

- add shear property
- set character spacing to 0

* use old max_width and max_height in text migration if available

* Final code review pass

* Add units to the parameters

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-07-01 02:23:17 -07:00
0SlowPoke0andKeavon Chambers 71ddae9028 Fix Path tool multi-point handle scaling behavior and double-click smooth/sharp conversion on rectangles (#2765)
* fixed double-click on anchor connected to linear segments

* fix when scaling when anchor

* Nit

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-06-30 07:56:22 +00:00
Adesh GuptaandKeavon Chambers 391ed34a30 Add segment editing mode to the Path tool (#2712)
* Segment select mode upto dragging

* Lasso select for segment editing

* Formatting

* Compatibility with point selection mode

* Add delete segment support and drawing from inside of shape

* Add GRS support for selected segments

* Cleanup and add dynamic hints

* Fix double click behaviour and overlays

* Format code

* Fix merge

* Fix Lint

* Fix formatting

* Fix lasso bug

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-06-29 23:19:54 -07:00
Hemu a4fbea9193 Fix lasso select extending the previous selection area after it was aborted (#2792)
Fix lasso select extends previous path after abort
2025-06-28 22:19:50 -07:00
James Lindsay cf8496b5a0 Fix Shape tool custom color picker using gamma not linear space (#2773)
Fix colour space for options
2025-06-27 18:32:14 -07:00
Firestar99 ffc6c5532b Extract gpath_bool from mod gstd::ops path_bool-related nodes (#2762)
* cargo shear

* Extract `gpath_bool` from `mod gstd::ops` path_bool-related nodes
2025-06-27 13:12:08 +00:00
Firestar99 d581319ee8 Prep gcore splitup 2: Vector extension traits (#2759)
* extension trait for `MergeByDistance::merge_by_distance_*`

* extension trait for `VectorData::append_bezpath`

* extension trait for `HandleId::set_relative_position`

* remove unreferenced rust files
2025-06-27 12:30:12 +02:00
Firestar99 2ddae98bcf Prep gcore splitup: move various symbols into their own modules (#2746)
* 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`
2025-06-27 09:54:34 +00:00
0SlowPoke0andKeavon Chambers d8d2a51926 Refactor shape gizmo interactivity to support future shape tools (#2748)
* impl GizmoHandlerTrait,Gizmo-manager and add comments

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-06-26 22:34:36 -07:00
Keavon Chambers 1875779b0a Remove dead code for Imaginate 2025-06-26 18:46:46 -07:00
James LindsayandKeavon Chambers 4344f28909 Reduce development environment warnings and remove DWARF debug symbols (#2741)
* 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>
2025-06-22 03:10:25 -07:00
0SlowPoke0andKeavon Chambers 8e5abf65cb Add star/polygon gizmos and refactor the separate shape drawing tools into a unified Shape tool (#2683)
* 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>
2025-06-22 00:53:49 -07:00
Firestar99 6b69a75391 Bulk rename gcore -> gstd in editor (#2729)
* remove `gcore` dependency from `editor`

* editor: bulk rename `gcore` -> `gstd`, cargo fmt
2025-06-19 20:28:17 -07:00
Firestar99 006209c5d0 Put all #[test] in a mod tests (#2728)
workspace: put all `#[test]` in a `mod tests`
2025-06-19 20:25:58 -07:00
Adesh Gupta 579bedd9ff Fix editor crash when anchor sliding, followup to #2682 (#2726)
Fix editor crash due to unwrap
2025-06-19 19:11:13 -07:00