* Create ValueMapperNode and use it for brightness/contrast
* move spline code into seperate module
* Add GenerateCurvesNode
* add a `LuminanceMut`-trait
* add `lerp` to `Channel`
* Add frontend code to handle the curves widget's inputs
* Rename spline module to curve
* Make messages in CurveInput pass
* Improve curves widget design and fix sizing issue
* Implement proper bezier handling
* Use bezier_rs's intersections function instead of own cubic root solver
* Debounce CurveInput events and change how debouncer works
the first event issued to the debouncer was unneccessarily delayed.
Instead now the debouncer fires it instantaneously but blocks events
that come in until a timeout was reached.
* Make curve editing more user friendly
* Change code to use project terminology
* sample -> manipulator group or manipulator
* marker -> handle
* Fix small documentation mistake in bezier-rs
* Add find_tvalues_for_x function to bezier-rs
also integrate the function into curves node
* Add tests for find_tvalues_for_x in bezier-rs
* Fix formatting
* Revert BrightnessContrastNode changes
* Frontend cleanup
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
* Create asynchronous rust imaginate node
* Make a first imaginate request via rust
* Implement parsing of imaginate API result image
* Stop refresh timer from affecting imaginate progress requests
* Add cargo-about clarification for rustls-webpki
* Delete imaginate.ts and all uses of its functions
* Add imaginate img2img feature
* Fix imaginate random seed button
* Fix imaginate ui inferring non-custom resolutions
* Fix the imaginate progress indicator
* Remove ImaginatePreferences from being compiled into node graph
* Regenerate imaginate only when hitting button
* Add ability to terminate imaginate requests
* Add imaginate server check feature
* Do not compile wasm_bindgen bindings in graphite_editor for tests
* Address some review suggestions
- move wasm futures dependency in editor to the future-executor crate
- guard wasm-bindgen in editor behind a `wasm` feature flag
- dont make seed number input a slider
- remove poll_server_check from process_message function beginning
- guard wasm related code behind `cfg(target_arch = "wasm32")` instead
of `cfg(test)`
- Call the imaginate idle states "Ready" and "Done" instead of "Nothing
to do"
- Call the imaginate uploading state "Uploading Image" instead of
"Uploading Input Image"
- Remove the EvalSyncNode
* Fix imaginate host name being restored between graphite instances
also change the progress status texts a bit.
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Generalize PenColorType -> ToolColorType
* impl default for ToolColorOptions
* Add stroke color option to the freehand tool
* Consolidate working color update messages
* Update tool working colours when switching tools
* Update working colors on tool activation
* Add stroke color option to line tool
* Add fill color option to freehand tool
* Add tool color options to spline tool
* Fix freehand tool
* Add color options to text
* Add tool color/weight options to rectangle
* Add tool color/weight options to ellipse
* Add tool color/weight options to shape
* Fix spline default fill/stroke
* Reorder widgets and code cleanup
* Add CustomColor icon
* Fix warnings
* Change color defaults to secondary fill, primary stroke
* Fix spacing between brush options number inputs
* Add toolbar color option to brush
* Implement allowNone on color input widget
* Rearrange widget and remove X from brush
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Implement download/copy ImageFrame layer output
* Add note about black transparency when copying
* Introspect node graph output type to conditionally disable the download button
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
* Add basic layout - WIP
* Add color input min-width -> 80px
* First pass implementation - WIP
* Allow fill to be None
* Fix null Fill color
* refactor fill and stroke options into struct
* toolbar progress - WIP
* Switch is_working_color bool to PenColorType enum
* Add todo
* Add WorkingColorChanged event
* remove unused import
* Add WorkingColor[Primary/Secondary] icons
* Allow new strokes to have no color
* Set to base color when X is pressed (as per req)
* Improve icons for new UI layout design
* Add radio buttons
* Fix menu bar Edit12px -> Edit
* Add tooltips to radio buttons
* Make the color selector only on custom
* Fix edit icon correctly this time (whoops)
* Fix working colors icons
* Changes to improve the UX
* Remove lines obviated by Default::default()
* Make Eyedropper tool use working_color_changed event
* Fix tests
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Migrate webpack to parcel
* Always colour shell output
* Fix typos
* Fix updateImage function having undefined editorInstance
* Readd webpack for deployment builds (licence checker)
* Only use webpack for license generation
* Re add typscript support
* Fix cloudlare deploy
* Bump wasm-pack version
* Update ci script
* Print versions in ci script
* Use optional-dependencies for wasm-pack
* Execute wget after rust install
* Finding wasm-opt version
* Print wasm-opt version
* Revert test?
* Try to revert
* Deploy cloudflare via github actions
* Fix indentation in ci script
* Change project to graphite-dev
* Trigger ci
* Parcel ci (#1152)
* CI Test
* Add write permissions for pr
* Manually add cloudflare ci comment to prs
* Unskip cargo about
* Make compile on new versions of npm
* Add deployment script to rebuild editor.graphite.rs on tag creation
* Remove deploy script
* Comment out unused Svelte props causing warnings
* Many small fixes, including fixing @ imports
---------
Co-authored-by: hypercube <0hypercube@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Migrated the import shortcut used in Svelte from @ to @graphite for better future package compatibility
Co-authored-by: Andre Roelofs <andreroelofsai@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Update GPU and quantization to new node system
Squashed commit of the following:
commit 3b69bdafed79f0bb1279609537a8eeead3f06830
Author: Dennis Kobert <dennis@kobert.dev>
Date: Sun Mar 5 11:37:17 2023 +0100
Disable dev tools by default
commit dbbbedd68e48d1162442574ad8877c9922d40e4a
Merge: b1018eb5 a8f6e11e
Author: Dennis Kobert <dennis@kobert.dev>
Date: Sun Mar 5 10:45:00 2023 +0100
Merge branch 'vite' into tauri-restructure-lite
commit b1018eb5ee56c2d23f9d5a4f034608ec684bd746
Merge: 3195833e 0512cb24
Author: Dennis Kobert <dennis@kobert.dev>
Date: Fri Mar 3 17:06:21 2023 +0100
Merge branch 'master' into tauri-restructure-lite
commit 3195833e4088a4ed7984955c72617b27b7e39bfc
Author: Dennis Kobert <dennis@kobert.dev>
Date: Fri Mar 3 17:06:02 2023 +0100
Bump number of samples
commit 3e57e1e3280759cf4f75726635e31d2b8e9387f9
Author: Dennis Kobert <dennis@kobert.dev>
Date: Fri Mar 3 16:55:52 2023 +0100
Move part of quantization code to gcore
commit 10c15b0bc6ffb51e2bf2d94cd4eb0e24d761fb6f
Merge: 2b3db45a 8fe8896c
Author: Dennis Kobert <dennis@kobert.dev>
Date: Fri Mar 3 14:28:56 2023 +0100
Merge remote-tracking branch 'origin/master' into tauri-restructure-lite
commit 2b3db45aee44a20660f0b1204666bb81e5a7e4b6
Author: Dennis Kobert <dennis@kobert.dev>
Date: Fri Mar 3 14:17:11 2023 +0100
Fix types in node registry
commit 9122f35c0ba9a86255709680d744a48d3c7dcac4
Merge: 26eefc43 2cf4ee0f
Author: Dennis Kobert <dennis@kobert.dev>
Date: Fri Mar 3 01:04:55 2023 +0100
Merge remote-tracking branch 'origin/master' into tauri-restructure-lite
commit 26eefc437eaad873f8d38fdb1fae0a1e3ec189e4
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Mar 2 23:05:53 2023 +0100
Add Quantize node to document_node_types
commit 3f7606a91329200b2c025010d4a0cffee840a11c
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Mar 2 17:47:51 2023 +0100
Add quantization nodes to node registry
commit 22d8e477ef79eef5b57b1dc9805e41bbf81cae43
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Mar 2 17:13:28 2023 +0100
Introduce scopes (#1053)
* Implement let binding
* Add lambda inputs
* Fix tests
* Fix proto network formatting
* Generate a template Scoped network by default
* Add comment to explain the lambda parameter
* Move binding wrapping out of the template
* Fix errors cause by image frames
commit 9e0c29d92a164d4a4063e93480e1e289ef5243fe
Author: Alexandru Ică <alexandru@seyhanlee.com>
Date: Thu Mar 2 15:55:10 2023 +0200
Make use of ImageFrame in the node system more extensively (#1055) (#1062)
Make the node system use ImageFrame more extensively (#1055)
commit 5912ef9a1a807917eeb90c1f4835bd8a5de9c821
Author: Dennis Kobert <dennis@kobert.dev>
Date: Wed Mar 1 16:15:21 2023 +0100
Split quantization into multiple nodes
commit 285d7b76c176b3e2679ea24eecb38ef867a79f3b
Author: Dennis Kobert <dennis@kobert.dev>
Date: Mon Feb 27 12:35:57 2023 +0100
Fix gpu support
commit e0b6327eebba8caf7545c4fedc6670abc4c3652e
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Feb 16 22:08:53 2023 +0100
Don't watch frontend files when using tauri
commit 58ae146f6da935cfd37afbd25e1c331b615252da
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Feb 16 21:48:54 2023 +0100
Migrate vue code base to vite
commit f996390cc312618a60f98ccb9cd515f1bae5006d
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Feb 16 19:34:33 2023 +0100
Start migrating vue to use vite
commit 29d752f47cfd1c74ee51fac6f3d75557a378471c
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Feb 16 19:00:53 2023 +0100
Kill cargo watch process automatically
commit 4d1c76b07acadbf609dbab7d57d9a7769b81d4b5
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Feb 16 17:37:27 2023 +0100
Start playing around with vite infrastructure
commit 8494f5e9227aa433fd5ca75b268a6a96b2706b36
Author: Locria Cyber <74560659+locriacyber@users.noreply.github.com>
Date: Thu Jan 19 18:40:46 2023 +0000
Fix import style and eslint rules
commit 92490f7774a7351bb40091bcec78f79c28704768
Author: Locria Cyber <74560659+locriacyber@users.noreply.github.com>
Date: Thu Jan 19 18:25:09 2023 +0000
Fix icons
commit dc67821abad87f8ff780b12ae96668af2f7bb355
Author: Locria Cyber <74560659+locriacyber@users.noreply.github.com>
Date: Thu Jan 19 18:20:48 2023 +0000
Add license generator with rollup
commit 441e339d31b76dac4f91321d39a39900b5a79bc1
Author: Locria Cyber <74560659+locriacyber@users.noreply.github.com>
Date: Thu Jan 19 18:14:22 2023 +0000
Use eslint --fix to fix TS-in-svelte type imports. Now it compiles.
commit 2e847d339e7dcd51ed4c4677ed337c1e20636724
Author: Locria Cyber <74560659+locriacyber@users.noreply.github.com>
Date: Thu Jan 19 17:31:49 2023 +0000
Remove webpack and plugins
commit 3adab1b7f40ff17b91163e7ca47a403ef3c02fbc
Author: Dennis Kobert <dennis@kobert.dev>
Date: Thu Mar 2 16:10:19 2023 +0100
Fix errors cause by image frames
commit 4e5f838995e213b4696225a473b9c56c0084e7a8
Author: Alexandru Ică <alexandru@seyhanlee.com>
Date: Thu Mar 2 15:55:10 2023 +0200
Make use of ImageFrame in the node system more extensively (#1055) (#1062)
Make the node system use ImageFrame more extensively (#1055)
commit 1d4b0e29c693a53c068f1a30f0e857a9c1a59587
Author: Dennis Kobert <dennis@kobert.dev>
Date: Wed Mar 1 15:13:51 2023 +0100
Update node graph guide readme with new syntax (#1061)
commit 6735d8c61f5709e22d2b22abd037bab417e868d6
Author: Rob Nadal <Robnadal44@gmail.com>
Date: Tue Feb 28 18:59:06 2023 -0500
Bezier-rs: Add function to smoothly join bezier curves (#1037)
* Added bezier join
* Stylistic changes per review
commit cd1d7aa7fbcce39fbbf7762d131ee16ad9cb46dd
Author: Dennis Kobert <dennis@kobert.dev>
Date: Wed Feb 22 23:42:32 2023 +0100
Implement let binding
Add lambda inputs
Fix tests
Fix proto network formatting
Generate a template Scoped network by default
Add comment to explain the lambda parameter
Move binding wrapping out of the template
* Update package-lock.json
* Regenerate package-lock.json and fix lint errors
* Readd git keep dir
* Revert change to panic.ts
* Fix clippy warnings
* Apply code review
* Clean up node_registry
* Fix test / spriv -> spirv typos
* Use builder pattern for widgets
* Arguments to new function
* Add node graph when dragging in image
* Fix duplicate import
* Skip processing under node graph frame if unused
* Reduce node graph rerenders
* DUPLICATE ALL frontend changes into other frontend
* DUPLICATE more changes to another frontend
* Code review
* Allow importing SVG files as bitmaps
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Do not select layer immediatly on drag
* Add LayerReferenceInput MVP widget
* Properties Panel
* Fix dragging marker flicker
* Change mask shape to outline
* Add mask rendering
* Simplify select code
* Remove colours
* Fix inpaint/outpaint and rearrage widget UX
* Add mask blur and mask starting fill parameters
* Guard for the case when the layer is missing
* Add icon to LayerReferenceInput to finalize its UI
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Add gradient stops
* Better step adding
* Steps can be dragged past each other
* Swapping and switching gradient/fill
* Fix convert to gradient
* Skip non finite transforms for overlays
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Update the Imaginate feature server API
* Change connection status strategy to prevent console errors
* Possible CORS fix? Maybe revert.
* Update to the final API and fix bugs
* Organize persistence.ts
* Switch to simpler promise handling
* Switch document list storage from localStorage to IndexedDB
* Track document auto-save status to avoid re-auto-saving unnecessarily
* Add button to clear storage on crash
* Bump document version and test file
* Switch to IDB-Keyval instead of raw IDB transactions
* 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
* Move FloatingMenu template component
* Rewrite the ColorPicker component so it's not horrifically bad code
* Move FloatingMenu into the ColorPicker component
* Little Imaginate fixes
* Add todo
* 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>
* IPP for Mac, flawed initial experiments
* Cleanup and progress, but not compiling yet
* Fix error and rename nonmac -> standard
* Extentd ipp macros to accomodate mac input
* Add Mac versions of shortcuts; refactor and document the input mapper macros
* Change frontend styling for user input labels in floating menus
* Additional macro documentation
* A little more documentation
* Improve entry macro syntax
* Move input mapper macros to a separate file
* Adapt the keyboard shortcuts to the user's OS
* Display keyboard shortcuts in the menu bar based on OS
* Change Input Mapper macro syntax from {} to ()
* Fix esc key bug in Vue
* Tweaks
* Interim solution for Mac-specific hints
* Feed tooltip input hotkeys from their actions
* Fix hotkeys for tools because of missing actions
* Make Vue respect Ctrl/Cmd differences per platform
* Remove commented lines
* Code review pass by me
* Code review suggestions with TrueDoctor
* Turn FutureKeyMapping struct into ActionKeys enum which is a bit cleaner
* Add serde derive attributes for message discriminants
* Re-add serde deserialize
* Fix not mutating ActionKeys conversion; remove custom serializer
* Add serde to dev dependencies
Co-authored-by: Dennis <dennis@kobert.dev>
* unfinished implementation
* Add frontend for the empty panel screen
* Add an icon for Folder based on NodeFolder
* fixed messages causing peicees of ui not to render on new document
* Standardize nextTick syntax
* WIP generisization of component subscriptions (not compiling yet)
* Fix crash when loading font and there is no active document
* Only advertise tool actions with a document
* Fix failure to create new document
* Initalise the properties panel
* Fix highlight tab, canvas jump, warns and layer tree
* Fix tests
* Possibly fix some things?
* Move WorkingColors layout definition to backend
* Standardize action macro formatting
* Provide typing for widgets in TS/Vue and associated cleanup
* Fix viewport positioning initialization
* Fix menu bar init at startup not document creation
* Fix no viewport bounds bug
* Change !=0 to >0
* Simplify the init system
Closes#656
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: 0hypercube <0hypercube@gmail.com>