Commit Graph
763 Commits
Author SHA1 Message Date
Dennis Kobert 181c30bc0a Fix assorted Clippy lints (#3390) 2025-11-17 07:58:31 +00:00
Wade Cheng 94414adaf8 Add selection subtracting to the node graph view (#3290)
Add selection subtracting for node graph
2025-11-14 20:09:43 +00:00
Timon 3871b6c4cf Fix graph UI culling on-screen nodes (#3380)
* fix

* review fixup
2025-11-13 21:25:27 -08:00
Keavon Chambers ca5785bc8f Show a "Ctrl +" label instead of "Ctrl =" for View > Zoom In (#3377) 2025-11-13 17:24:04 -08:00
Keavon Chambers ac74bd9903 Allow the Stroke node to receive "Dash Lengths" values from the node graph 2025-11-12 01:14:17 -08:00
James Lindsay 4e65887b90 Fix the Artboard tool drawing the first artboard on an infinite canvas with layers present (#3356)
Improve creating the first artboard
2025-11-10 13:36:30 -08:00
James Lindsay 7f10a4258e Fix copying nodes sometimes failing when no OutputConnector exists (#3365)
* Fix copy nodes sometimes failing when no OutputConnector exists

* Add test for copying a node
2025-11-10 20:26:25 +00:00
TimonandDennis Kobert 881ec0b193 Split out viewport handling into its own message handler (#3331)
* extract viewport handeling

* fix web overlays

* some cleanup

* remove some physical conversions

* fix resize snapping

* fixup

* apply some review feedback

* make viewport api more ergonomic

* fix

* fix web overlay canvas clear size

* clear workaround for canvas

* rename trigger message

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2025-11-08 08:59:38 +00:00
Dennis Kobert 68e67055d8 Update Linebender-related dependencies (#3349)
* Updates crates from linebender ecosystem

* Remove usages of decprecated Clip mix mode
2025-11-08 08:59:00 +01:00
Keavon Chambers 0998abdaf3 Add support for visualizing Vec<String> in the Data panel 2025-11-03 13:13:54 -08:00
skearya c4bbb7e880 Reduce editor message size by 67% and fix simple clippy warnings (#3327)
Reduce message size and fix some clippy issues
2025-11-02 08:50:29 +01:00
James Lindsay 1b9a492a74 Fix crash when creating cyclic nodes (#3313)
* Fix crash when creating cyclic nodes

* Re-add the recursive set_input call
2025-10-30 13:01:45 +01:00
Dennis Kobert e8f18b0ac0 Cache calculation of bounding boxes with transforms (#3287)
* Cache calculation of bounding boxes with transforms

* Reuse bounding boxes across for the same rotation

* Cleanup code and add documentation

* Add tests
2025-10-17 10:20:55 +00:00
Timon 3509f0b035 Desktop: Persist document path (#3272)
* persist document path

* persist data cleanup
2025-10-15 10:30:47 +00:00
SambhramandTimon 591096a817 Exit sub-network via Escape key (#3285)
"Escape key in sub-network"

Co-authored-by: Timon <me@timon.zip>
2025-10-15 00:08:04 +00:00
Trevor Paley ca70fd8380 Add quick measurement between objects and artboards (#3274) 2025-10-12 18:14:02 +00:00
Dennis Kobert bc66148d2b Reset the overlay context for each draw request and use global font cache (#3231) 2025-09-28 15:36:08 +00:00
Dennis KobertandTimon Schelling ffc74273cc Implement Convert trait to convert between CPU and GPU images (#3194)
* Add upload texture trait

* Make convert trait use explicit converter

* Add gpu texture download implementation

* Add footprint to convert trait

* Cleanup texture upload / download

* Download wgpu textures aligned

* abstract texture download into converter helper

* rename module

not only doing uploads anymore
conversion looks like a ok name

* Remove into_iter call and intermediate vector allocation

---------

Co-authored-by: Timon Schelling <me@timon.zip>
2025-09-26 14:30:01 +02:00
Dennis Kobert 4e47b5db93 Restructure gcore/text module and fix memory leak (#3221)
* Restructure gcore/text module and fix memory leak

* Remove unused import

* Fix default font fallback causing wrong caching and rename to TextContext

* Upgrade demo art
2025-09-25 15:29:07 +02:00
Keavon Chambers 7e3ab78ea4 Fix more flaws with 'Transform' node rad-to-deg migration; make 'Tangent on Path' also use degrees by default 2025-09-18 14:09:10 -07:00
Dennis Kobert 390ce023ea Fix regression when rotating a group, resulting in an incorrect transform cage bounding box (#3184)
Revert "Reuse click target bounding boxes for document bounds"

This reverts commit d9e8a71cd0.
2025-09-16 13:41:44 -07:00
Timon 2483832227 Mark new documents as saved (#3165)
* clean up new document message handling

* Mark new documents as saved
2025-09-11 12:09:15 -07:00
Dennis Kobert 5836416632 Optimize editor performance for node selection, click target bounds, and batched messages (#3162)
* Don't clone messages during batch processing

* Improve selected nodes perf and memoize network hash computation

* Reuse click target bounding boxes for document bounds

* Early terminate computing the connected count

* Cleanup
2025-09-11 10:08:26 +00:00
Dennis Kobert ad5d8fcd37 Optimize rendering by caching intermediate render results when panning/zooming (#3147)
* Add svg render node

WIP

Fix error in context nullificaton node insertion

Correctly translate metadata

Fix warning

* Cleanup

* Remove color / gradient check and fix svg defs

* Implement viewport filling transform modification for vello

* Cleanup and comments

* Code review
2025-09-11 11:35:33 +02:00
Keavon Chambers 9a32e79853 Rename NodeInput::Network to NodeInput::Import (#3163) 2025-09-10 20:50:15 -07:00
Adam GerhantandKeavon Chambers 332088bce1 Make the Transform node use angles in degrees instead of radians for Rotation and Skew (#3160)
* Make the Transform node use degrees not radians

* Migration script

* Migrate skew value input to store degrees

* Add comments

* Fix migrations to account for the old deprecated "Pivot" parameter

* Fix tooling interactions with degrees-based transforms

* Upgrade demo art

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-11 00:19:10 +00:00
Keavon Chambers 22aa8c1264 Update UI widget designs to improve color consistency and add a narrow height mode 2025-09-08 21:48:22 -07:00
0SlowPoke0andKeavon Chambers 485152bf8d Add "Spiral" to the Shape tool and as a new node (#2803)
* made spiral node

* number of turns in decimal and arc-angle implementation

* logarithmic spiral

* unified log and arc spiral into spiral node

* add spiral shape in shape tool

* fix min value and degree unit

* make it compile

* updated the api

* changed the function_name

* [/] to update the turns widget in shape tool

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-08 14:37:43 -07:00
Adam GerhantandKeavon Chambers 7686edd47b Add a cancel transaction message to the history system (#3121)
Add cancel transaction

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-07 14:00:42 -07:00
Keavon Chambers a2c0693038 Fix most known issues with migrations failing to open documents from the past year (#3148) 2025-09-07 11:10:03 -07:00
Keavon Chambers 89c9cf1352 Fix infinite recursion introduced in #2795 that occurs in old document migrations 2025-09-05 14:04:10 -07:00
Dennis KobertandKeavon Chambers acd7ba38cc Graphene: Fine-grained context caching (#2500)
* RFC: Fine Grained Context Caching

* Fix typos

* Fix label

* Add description of inject traits

* Explicitly support context modification

* Start implementation of context invalidation

* Add inject trait variants
* Route Extract / Inject traits to the proto nodes

* Implement context dependency analysis

* Implement context modification node insertion

* Fix erronous force graph run message

* Fix Extract* Inject* annotations in the nodes

* Require Hash implementation for VarArgs

* Fix nullification node insertion

* Cross of done items unresolved questions section

* Update Cargo.lock

* Fix context features propagation

* Update demo artwork

* Remove BondlessFootprint and FreezeRealTime nodes

* Fix migration

* Add migrations for adding context features to old networks

* Always update real time regardless of animation state

* Cargo fmt

* Fix tests

* Readd sed command to hopefully fix profile result parsing

* Add debug output to profiling pr

* Use new totals instead of summaries for for iai results

* Even more debugging

* Use correct debug metrics (hopefully)

* Add more MemoNode implementations

* Add context features annotation to shader node macro

* Cleanup

* Time -> RealTime

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-09-05 11:44:26 +00:00
Timon 083dfa5f49 Clean up autosave persistence (#3115)
* Set auto save state to false on document rename

* Update open document list on transaction commit and aboard

* Use current network to compute hash

Was using the last element in undo
Before artworks where not auto saved when the had no undo history

* Refactor persistence
2025-09-02 13:27:38 +00:00
Adam GerhantandKeavon Chambers f1a1275601 Add support for adding/removing a graph's primary imports/exports separately from the secondary (#3089)
* Primary Import/Export

* Primary Import/Export

* Complete import exports

* Final changes

* Improve line width

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-29 20:57:15 +00:00
Firestar99andhypercube 95ef8a5343 Change Table<Color> node inputs to Color where only one value is used so GPU nodes work (#3096)
* graster-nodes: change `Table<Color>` params to `Color` where only one value is used

* Re-add support for Color and Option<Color>

* Add warning when a default value isn't parsed

---------

Co-authored-by: hypercube <0hypercube@gmail.com>
2025-08-28 15:16:56 +02:00
82784b46a0 Add node input type support for f32 to enable usage on GPU (#3095)
* update Cargo.lock

* f32: switch to f32 params

* f32: more f32 params, remove f32 casts

* f32: property support for f32

* f32: fix test `stable_node_id_generation`

* Fix f32 properties

* Fix f32 frontend data types

* Rename TaggedValue::Vec2 to ::FVec2 and ::Affine2 to ::FAffine2

---------

Co-authored-by: hypercube <0hypercube@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-27 20:08:45 -07:00
Adesh GuptaandKeavon Chambers 34b52bcc54 Clean up Path tool related code and fix bugs in several cases (#3070)
* Fix regressions related to path tool

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-27 23:42:04 +00:00
Dennis Kobert d9cbf975ff Deprecate automatic composition (#3088)
* Make manual_compositon non optional and rename to call_argument

* Fix clippy warnings

* Remove automatic composition compiler infrastructure

* Implement document migration

* Fix tests

* Fix compilation on web

* Fix doble number test

* Remove extra parens

* Cleanup

* Update demo artwork

* Remove last compose node mention

* Remove last mention of manual composition
2025-08-24 08:34:59 +00:00
Dennis Kobert 354bf93364 Store document node inputs in Arc to reduce memory consumption (#3086)
Store values in memo hash contanier in arc
2025-08-23 17:24:41 +02:00
Dennis Kobert 469f0a6c30 Remove lambda node inputs since they are no longer used (#3084)
* Remove lambda node inputs as they are now unused

* Fix warnings

* Fix tests

* Fix clippy warning
2025-08-23 12:16:49 +02:00
Dennis Kobert 7377871106 Fix clippy warnings (#3085)
* Run clippy fix

* Clippy v2

* Make const item static

* Cargo fmt
2025-08-23 11:45:47 +02:00
Keavon Chambers 0e467907e2 Improve font import; replace Inconsolata with Source Code Pro; show third-party licenses in editor dialog (#3079)
* Improve font import; replace Inconsolata with Source Code Pro; show third-party licenses in editor dialog

* Code review
2025-08-21 11:57:04 -07:00
TimonandDennis Kobert e70862b399 Desktop: Add File > Save As… (#3034)
* Make file name and document name identical

* Add save as action

* Fix test errors

* Add missing save as action

* Desktop fix drop file open document file message

* Address review comments

* Replace file save suffix with file extension

* Add comment specifying that the upload function takes a html input accept string

* Fix remove file extension in web

* Use let

* Don't show save as menu entry in web

* Don't add SaveDocumentAs in web

* Remove file extension on all open document file calls

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
2025-08-20 10:09:01 +00:00
Dennis KobertandKeavon Chambers 7c30f6168b Improve snapping performance (#3067)
* Use lyon_geom for intersection calculation of bezier segments

* Implement approximate nearest point calculation and loosen bounding boxes

* Add algorithm explanation

* Update editor/src/messages/tool/common_functionality/snapping/layer_snapper.rs

Co-authored-by: Keavon Chambers <keavon@keavon.com>

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-20 10:47:58 +02:00
Mohd MohsinandKeavon Chambers 17d70dc60e Add struct field visualization to the editor message hierarchy tree visualization on the website (#2917)
* Fix Message Tree: Enforce Structure and Visibility

* Code review

* fix the erroreous ouputs

* error handling for MessageHandler

* Fix website visualization HTML generation

* error handling for tuple-style message enum variant

* cleanup

* Update messages

* Normalize BroadcastEvent

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-18 21:04:29 -07:00
Firestar99 0a53eae4e0 Remove unused cargo dependencies (#3063)
* cargo shear

* fix warnings on master

* fix docs needing dev-dependency
2025-08-18 11:26:44 -07:00
Meet Zalavadiya 4da732dcc3 Fix artboard labels not reappearing once the node graph is closed to return to the viewport (#3061)
Closes #3045
2025-08-18 05:49:21 +00:00
PriyanshuandKeavon Chambers d22b2ca927 Refactor the Centroid node and Subpath struct and methods to use Kurbo, eliminating all remaining usages of Bezier-rs (#3036)
* define Subpath struct in gcore and refactor node-graph

* Refactor few methods

* refactoring worked!

* refactor centoid area and length

* remove unused

* cleanup

* fix pathseg_points function

* fix tranforming segments

* fix segment intersection

* refactor to_path_segments fn in gpath-bool crate

* refactor gcraft

* add bezier-rs dep

* Code review the editor directory

* use path-bool for solving roots

* Code review

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-16 13:39:25 -07:00
Keavon Chambers bdc029c692 Add Table<Gradient> as a graphical type (#3051) 2025-08-13 01:42:51 -07:00
Keavon Chambers 1b351aca76 Replace the Color type with Table<Color> everywhere (#3048) 2025-08-12 00:38:23 -07:00