Commit Graph

520 Commits

Author SHA1 Message Date
0HyperCube
94fcd295c5 Avoid unnecessary graph sends to the frontend (#1476) 2023-11-25 23:45:30 +00:00
Keavon Chambers
ab3410cffe Consolidate MenuListButton into TextButton (#1470) 2023-11-25 01:56:05 -08:00
Keavon Chambers
34c6c0431b Improve NumberInput with dragging to change value and escape/right-click to abort (#1469)
* Improve NumberInput with dragging to change value and escape to abort

Closes #1468

* Fix slowing with Shift and integer mode
2023-11-21 17:26:28 -08:00
0hypercube
da4d95fa7b Fix spline tool deleting layer 2023-11-19 23:09:42 -08:00
0HyperCube
8a1cf3ad5d Migrate demo artwork and fix all failing CI tests (#1459)
* Initial work on fixing tests

* Fix formatting

* Remove dead code to satisfy rustc warnings

* Insert into an artboard

* Load updated artwork in editor

* Remove popup when importing image

* Fix up demo art

* Change transform app[lication method

* Reduce number of enums called BlendMode

* Finalize the demo artwork upgrade

* Code review pass

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-11-19 23:06:21 -08:00
Keavon Chambers
719c96ecd8 Rename and reorganize several widgets (#1462)
* Rename SwatchPairInput -> WorkingColorsButton

* Remove unnecessary Svelte each-loop keys

* Rename (and migrate) MenuBarInput -> MenuListButton

* Rename PivotAssist -> PivotInput

* Rename PersistentScrollbar -> ScrollbarInput and CanvasRuler -> RulerInput

* Rename DIalogModal -> Dialog

* Rename WidgetRow -> WidgetSpan
2023-11-18 04:34:30 -08:00
Keavon Chambers
e3f5e7001f Redesign ColorInput widget and rename it to ColorButton 2023-11-16 18:38:39 -08:00
0HyperCube
8a816cd701 Fix crash on deleting all subpaths (#1460)
* Fix crash on deleting all subpaths

* Delete layer if no manipulators exist
2023-11-16 15:42:21 -08:00
Dennis Kobert
9784d31edb Fix test compilation and allow the ci to run (#1456)
* Fix test compilation

* Don't fail if .wasm-pack dir does not exist
2023-11-14 23:01:40 +01:00
Dennis Kobert
81519601ae Store Input for Monitor Nodes (#1454)
* Add input storage to monitor_node

* Return input via serialize function
2023-11-14 21:17:50 +01:00
0HyperCube
58660f5548 Allow groups to work with the node graph (#1452)
* Initial groups

* Improve graph arangement

* Fix selecting nested layers

* Code review pass

* Change log

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-11-14 17:17:14 +00:00
Keavon Chambers
605c0de392 Fix Rust code lints (#1448)
* Fix Rust lints to satisfy Clippy

* Remove some unused commented out code
2023-11-05 13:52:00 -08:00
Keavon Chambers
09743dcdc4 Rename DocumentNodeType to DocumentNodeBlueprint for clarity 2023-11-05 01:24:53 -08:00
Keavon Chambers
e54a2e2fc6 Remove the Frame tool 2023-11-04 03:04:26 -07:00
0HyperCube
e0ac073805 Improve previewing node data (#1446)
* Improve preview

* Improve contrast

* Restructure in order to duplicate code

* Code review nits

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-11-04 02:52:26 -07:00
0HyperCube
380bc19b09 Remove explicit empty stack nodes (#1445)
* Remove explicit empty stack nodes

* Code review stylistic simplifications

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-10-28 20:41:31 -07:00
0HyperCube
9b034a5194 Fix deleting layers (#1441)
* Fix deleting layers

* Code review comments
2023-10-25 15:20:55 -07:00
0HyperCube
2feef62f23 Fix the Eyedropper tool (#1440)
* Fix eyedropper

* Remove dead code

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-10-25 17:18:15 +01:00
0HyperCube
54745e210a Fix the Path tool's smooth/sharp buttons (#1439)
* Fix select tool smooth button

* Nit

* Fix behavior when zero points are selected but the shape is active

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-10-25 09:26:24 +01:00
Keavon Chambers
c4bea2b400 Clean up code for optional node inputs/outputs
This removes the unused Split Channels node's primary output
2023-10-24 22:26:34 -07:00
Keavon Chambers
bafde43145 Add comments to help explain Graphene concepts 2023-10-24 22:26:08 -07:00
Keavon Chambers
ee08938bb0 Rename 'Grayscale' node to 'Black & White' 2023-10-24 21:22:22 -07:00
Keavon Chambers
1bab2affdb Remove dead code from overlay graph view state tracking 2023-10-24 21:09:02 -07:00
0HyperCube
b8906f344e Migrate the Text tool to the document graph (#1435)
* Update text tool to document graph

* Fix selection issue

* Log graph reruns and text node evals

* Hash to set node

* Fix let node crash

* Fix loading document with fonts

* Allow pressing enter to edit

* Cleanup

* Code review nits

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-10-24 12:55:13 -07:00
Yuri Astrakhan
3d4e3a74e5 A few minor lints and docs (#1436)
* A few minor lints and docs

* Added required packages to compile on Debian-style linux
* Inlined some format args, and removed some `&` in args (they cause about 6% slowdown that compiler cannot inline)
* a few spelling mistakes

* fix fmt
2023-10-18 23:33:10 -07:00
Rob Bertram
67edac4aca Move DeleteLayer to come before SelectionChanged on DeletedSelectedLayers (#1417)
* ignore render subpaths overlays if layer no longer exists

* make selection change event added after delete layers

---------

Co-authored-by: 0HyperCube <78500760+0HyperCube@users.noreply.github.com>
2023-10-18 18:32:10 +01:00
0HyperCube
5827e989dc Migrate the Select tool to the document graph (#1433)
* function for accessing document metadata

* Better select tool

* Fix render

* Fix transforms

* Fix loading saved documents

* Populate graph UI when loading autosave

* Multiple transform nodes

* Fix deep select

* Graph tooltips

* Fix flip axis icon

* Show disabled widgets

* Stop select tool from selecting artboards

* Disable (not hide) the pivot widget; remove Deep/Shallow select for now

* Code review changes

* Fix pivot position with select tool

* Fix incorrectly selected layers when shift clicking

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-10-17 11:09:32 -07:00
Dennis Kobert
e1cdb2242d Lay Groundwork for Rust-based SVG rasterization (#1422)
* Add functions for constructing a usvg tree

* Actually encode the image in the usvg tree

* Implement path translation

* Render document using resvg
2023-10-17 11:02:07 -07:00
Dennis Kobert
34f2d61257 New node: Mandelbrot (#1421)
* Implement Mandelbrot node

* Make mandelbrot monochrome

* Remove log statements
2023-10-17 11:02:07 -07:00
Dennis Kobert
833f41bccb Insert pasted images as layers in document graph (#1418)
Changes:

Graph is evaluated on every viewport change
move all navigation logic into the viewport
reduce the number of js roundtrips
add canvas rendering
enable image pasting
various cleanups
Fix cache nodes being reset every evaluation
2023-10-17 11:02:07 -07:00
Dennis Kobert
d82f133514 Lay groundwork for adaptive resolution system (#1395)
* Make transform node accept footprint as input and pass it along to its input

use f32 instead of f64 and add default to document node definition

* Add cull node

* Fix types for Transform and Cull Nodes

* Add render config struct

* Add Render Node skeleton

* Add Render Node to node_registry

* Make types macro use macro hygiene

* Place Render Node as output

* Start making DownresNode footprint aware

* Correctly calculate footprint in Transform Node

* Add cropping and resizing to downres node

* Fix Output node declaration

* Fix image transform

* Fix Vector Data rendering

* Add concept of ImageRenderMode

* Take base image size into account when calculating the final image size

* Supply viewport transform to the node graph

* Start adapting document graph to resolution agnosticism

* Make document node short circuting not shift the input index

* Apply clippy lints
2023-10-17 11:02:07 -07:00
0hypercube
239ca698e5 Fix navigate and rulers 2023-10-17 11:02:06 -07:00
0hypercube
b52f831b21 Fix artboard tool and remove old artboard code 2023-10-17 11:02:06 -07:00
0hypercube
9a39c4a0cc Fix gradient tool 2023-10-17 11:02:06 -07:00
0hypercube
6173662a40 Fix freehand and spline tool 2023-10-17 11:02:06 -07:00
hypercube
76d7b6256d Fix positioning of new layer nodes after rebase 2023-10-17 11:02:06 -07:00
hypercube
0d6bec837b Fix path tool 2023-10-17 11:02:06 -07:00
0hypercube
4cd72edb64 Initial work migrating vector layers to document graph
* Fix pen tool (except overlays)
* Thumbnail of only the layer and not the composite
* Fix occasional transform breakages
* Constrain size of thumbnail
* Insert new layers at the top
* Broken layer tree
* Fix crash when drawing
* Reduce calls to send graph
* Reduce calls to updating properties
* Store cached transforms upon the document
* Fix missing node UI updates
* Fix fill tool and clean up imports and indentation
* Error on overide existing layer
* Fix pen tool (partially)
* Fix some lints
2023-10-17 11:02:06 -07:00
0hypercube
fc6cee372a Fix warnings introduced by artboard nodes 2023-10-17 11:01:10 -07:00
0hypercube
f50909b887 Use GraphIdentifier instead of option 2023-10-17 11:01:10 -07:00
0hypercube
5b61a30c2a Fix artboard thumbnails 2023-10-17 11:01:10 -07:00
Vlad Rakhmanin
b9027883a8 Make 'Close All Documents' not confirm if all open documents are already saved (#1423)
* Adding blank PortfolioMessage to close docs

* Connected new PortfolioMessage to Menu Bar

* Adding functionality to new PortfolioMessage

* Amending outdated tests in color.rs
2023-09-21 14:02:18 -07:00
mobile-bungalow
9667e5173b Allow toggling smooth/sharp angle from the path tool options bar (#1415)
* menu in option

* smoothing controls work

* fixed type error

* fix flipping behavior

* silence warning

* consolidate selection state

* update positions options

* blinking logic fixed, smoothing logic implemented

* fixed arbitrary looping when flipping from sharp to smooth

* remove warning

* Tidying up

* refactor manipulator smoothing code, remove bitflags, rename

* Make the point smooth/sharp support mixed better

* Code review tweaks

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-09-11 17:36:08 -07:00
Keavon Chambers
88bdf9580f Make RadioInput accept optional selected_index 2023-09-11 15:40:05 -07:00
mobile-bungalow
b29acbd784 Rework navigation tool hints and navigation shortcuts (#1419)
* Added Pan,Tilt,Zoom to View menu + Tilt shortcut changes

* formating

* fixed menus, added action for when dispatch happens from menu

* set key mappings to spec

* fix labels for navigation tool

* fix some spacing

* add action that locks spacebar for navigation when using it as a modifier so the node overlay does not toggle

* escape from the node-graph-overlay, set toggle to ctrl+space, fix demo art

* move all transform state into an enum

* rename confusing flag

* fix demo art and tests

---------

Co-authored-by: Ezbaze <rybitwamateusz3@gmail.com>
2023-09-10 23:42:27 +01:00
Prikshit Gautam
ad9ccaa800 Add 'select all points' method to ShapeState struct (#1386)
* Added select all points method to ShapeState struct

* Map select_all_points functions to shortcut

* Make SelectAllPoints action relevant in the current context only

* Refactor select_all_points to only select anchors

* Fix(editor): enable selected point update after selection change via clicking
2023-09-04 19:35:43 -07:00
Keavon Chambers
56f20f2e6d Remove history step creation from Select tool box selection 2023-09-02 15:26:04 -07:00
Keavon Chambers
839040c6a3 Rename the Value node to Number (#1412)
* Rename the Value node to Number

* Fix test

---------

Co-authored-by: 0hypercube <0hypercube@gmail.com>
2023-09-02 22:11:03 +00:00
0HyperCube
fe8e1da8ed Fix deleting the shape node (#1411) 2023-09-02 12:16:38 +01:00
Dhruv
a2db95d18b New node: Color Overlay (#1391)
* [wip]feat: implement Color Overlay node's base logic

* [wip]feat: attempt implementing node

* feat: implement naive node logic
- this needs to accommodate coloring the image

* [wip]feat: attempt implementing ColorFillNode

* fix: color fill node implementation path

* Simplify document node definition

* [wip]feat: implement ColorFillNode

- correct the node implementation logic
-[wip]use node in Color Overlay node network

* Remove secondary image input

* chore: perform cleanup and minor optimization

- rename ColorFillNode node to Color Fill
- remove unneeded clone method call

* refactor: optimize node logic and hide optional params

* fix: color fill implementation
- fix broken color fill implementation logic
- add alpha multiplication data to the image

* Fix colour overlay node

* Blend mode

* chore: remove unused import

* Debug logging for overlay

* Use premultiplied alpha

* Comment out logging

* Code review nits

* Remove color debug logging

---------

Co-authored-by: Dennis Kobert <dennis@kobert.dev>
Co-authored-by: 0hypercube <0hypercube@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
2023-09-02 02:28:05 -07:00