* Hide and collapse layers
* Reorder imports
* Fix Ctrl+H shortcut advertized action and hotkey tooltip; improve graph top right of options bar
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* 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>
* 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>
* 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
* fix: avoid deleting inner network's input nodes
* [wip]feat: set primary input on node deletion
- set input's input value to deleted node's primary input
* fix: check deleting node's output is used by other node(s)
* feat: enable conditionally reconnecting input
- user can press a key to avoid reconnecting nodes during deletion
* refactor: improve and restructure code
- make code quality improvements
- add NodeGraphHandlerData struct to replace big tuple
* fix: avoid deleting inner network's input nodes
* [wip]feat: set primary input on node deletion
- set input's input value to deleted node's primary input
* fix: check deleting node's output is used by other node(s)
* feat: enable conditionally reconnecting input
- user can press a key to avoid reconnecting nodes during deletion
* refactor: improve and restructure code
- make code quality improvements
- add NodeGraphHandlerData struct to replace big tuple
* Remove unnecessary recursion
* Code review cleanup
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* [WIP]feat: add bounding box to path tool
* feat: draw bounding box for path tool
- register Enter key for finalizing bounding box position
- add (WIP)func to select all in bounding box area
- add hint data for new state
* fix: re-render shape overlays after selection
* fix: maintain existing point selection with Shift key
* feat: add Shift key support for Enter Key state
* fix: set apt name for Enter state's keybind
* refactor: remove unnecessary code
* refactor: correct hints and remove unneeded code
- correct DrawingBox state's footer hints
- remove PathToolData's quad and bbox methods
* refactor: remove duplicate mouse position vectors
* Nudging is now based on local pixel dimensions
* Brush tool live preview (#1116)
* Disable vector preview for brush tool
* Fix brush preview
* Fix warping
* Left and right square brackets to change size
* Add linear interpolation
* Modfiy existing selected brush layer
* Resolve warnings
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Duplicating a layer selects only new layer
* Add Ctrl+J duplicate alias hotkey
---------
Co-authored-by: 0HyperCube <78500760+0HyperCube@users.noreply.github.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Change tauri build directory back to `../dist` (#1033)
* Select Tool: Deselect selected layer when clicked while holding shift
* Fix formatting
* Change deselecting to happen on mouse up
* Clean up debug and rustfmt
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* adds lock angle to pen tool
The current [Shift] Break Handle behavior should become Alt instead of Shift
The current [Ctrl] Snap 15° behavior should become Shift instead of Ctrl
Implement the extend-in-this-direction feature called [Ctrl] Lock Angle that exists in the Line tool, but doesn't yet exist in the Pen tool
* avoid clone by passing exlusive ref to tool data field directly
* Rearrange hints
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* implements pan/zoom to the selected layer(s) on Period
Relates to #989
* adds layer menu support: Layer -> Center View on Selection
* relocate Center View on Selection to View -> Zoom to selected
* use the proper menu title
* Selecting an individual anchor point deselects each of the other points
* git gra
* Selecting intersecting shapes,selects top shape
* Merge commit
* cargo fmt
* fixed: can't drag multiple selected shapes.
* Merge commit
* Merge commit
* Code review tweaks
* Merge commit
* Fixed topmost layer and previous_mouse_position
* Fixed issues when clicking on anchors
* Works
* Function name change
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
* Allow text editing when pressing Enter on a single selected text layer
* Updated LayerDataType import
* Extract the logic to set the edit layer into a function
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Reuse existing gradient
* Double click to insert gradient stop
* Add history states to the gradient tool
* Do trig in viewport space so it is actually perpendicular
* Sync tool options with active gradient
* Deleting points with delete key
* More tolerance on inserting points
* Don't allow disabling input or output nodes
* Shortcuts to show and preview node
* Update preview tooltip and label
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Move the Subpath type to graphene-std
* Add the transform subpath node
* Delete selected nodes
* Inserting node list on right click
* Add several bitmap manipulator nodes
* Convert add node to use f64
* Add posterize node
* Rename names randomly
* Fix naming
* Exposure node
* Fix typo
* Adjust exposure node range
* Comment out vector nodes
* Adjust exposure range again
* Posterise as ints
* Rename input
* Use >= in the to hsl function
* Add cancel hint to Eyedropper tool
* Improve eyedropper overlay CSS
* Make CSS for transparent checkered background reusable
* Add color choice preview to color picker
* Draw text and markers as contrasting white or black
* Add reactive color updating and new/initial swapping
* Add Hex, RGB, HSV, and Opacity inputs
* Add none color and preset buttons
* Add eyedropper button and fix alignment (now visually done)
* Wire up none colors through the backend and style the ColorInput widget
* Add color info chip to ColorInput widget
* Fix all UX bugs
* Add more tooltips
* Fix FloatingMenu recursive loop
* Prevent mouse stray from closing color picker while dragging pickers
Closes#703
* Fix deselect all layers shortcut
* Add temporary eyedropper for Chromium browsers and a coming soon fallback
* Add AI Artist layer
* WIP add a button to download the rendered folder under an AI Artist layer
* Successfully download the correct image
* Break out image downloading JS into helper function
* Change file download from using data URLs to blob URLs
* WIP rasterize to blob
* Remove dimensions from AI Artist layer
* Successfully draw rasterized image on layer after calculation
* Working txt2img generation based on user prompt
* Add img2img and the main parameters
* Fix ability to rasterize multi-depth documents with blob URL images by switching them to base64
* Fix test
* Rasterize with artboard background color
* Allow aspect ratio stretch of AI Artist images
* Add automatic resolution choosing
* Add a terminate button, and make the lifecycle more robust
* Add negative prompt
* Add range bounds for parameter inputs
* Add seed
* Add tiling and restore faces
* Add server status check, server hostname customization, and resizing layer to fit AI Artist resolution
* Fix background color of infinite canvas rasterization
* Escape prompt text sent in the JSON
* Revoke blob URLs when cleared/replaced to reduce memory leak
* Fix welcome screen logo color
* Add PreferencesMessageHandler
* Add persistent storage of preferences
* Fix crash introduced in previous commit when moving mouse on page load
* Add tooltips to the AI Artist layer properties
* Integrate AI Artist tool into the raster section of the tool shelf
* Add a refresh button to the connection status
* Fix crash when generating and switching to a different document tab
* Add persistent image storage to AI Artist layers and fix duplication bugs
* Add a generate with random seed button
* Simplify and standardize message names
* Majorly improve robustness of networking code
* Fix race condition causing default server hostname to show disconnected when app loads with AI Artist layer selected (probably, not confirmed fixed)
* Clean up messages and function calls by changing arguments into structs
* Update API to more recent server commit
* Add support for picking the sampling method
* Add machinery for filtering selected layers with type
* Replace placeholder button icons
* Improve the random icon by tilting the dice
* Use selected_layers() instead of repeating that code
* Fix borrow error
* Change message flow in progress towards fixing #797
* Allow loading image on non-active document (fixes#797)
* Reduce code duplication with rasterization
* Add AI Artist tool and layer icons, and remove ugly node layer icon style
* Rename "AI Artist" codename to "Imaginate" feature name
Co-authored-by: otdavies <oliver@psyfer.io>
Co-authored-by: 0hypercube <0hypercube@gmail.com>