* Fix domain data structure field plural naming
* Rename method one_item to one_instance
Rename method one_item to one_instance
* Move the Instance<T> methods over to providing an Instance<T>/InstanceMut<T>
Move the Instance<T> methods over to providing an Instance<T>/InstanceMut<T>
* Add transform and alpha_blending fields to Instances<T>
* Finish the refactor (Brush tool is broken though)
* Add test for brush node
* Fix brush node
* Fix default empty images being 1x1 instead of 0x0 as they should be
* Fix tests
* Fix path transform
* Add correct upgrading to move the transform/blending up a level
---------
Co-authored-by: hypercube <0hypercube@gmail.com>
* Implement experimental Context struct and traits
* Add Ctx super trait
* Checkpoint
* Return Any instead of DynAny
* Fix send implementation for inputs with lifetimes
* Port more nodes
* Uncomment nodes
* Port more nodes
* Port vector nodes
* Partial progress (the stuff I'm more sure about)
* Partial progress (the stuff that's not compiling and I'm not sure about)
* Fix more errors
* First pass of fixing errors introduced by rebase
* Port wasm application io
* Fix brush node types
* Add type annotation
* Fix warnings and wasm compilation
* Change types for Document Node definitions
* Improve debugging for footprint not found errors
* Forward context in append artboard node
* Fix thumbnails
* Fix loading most demo artwork
* Wrap output type of all nodes in future
* Encode futures as part of the type
* Fix document node definitions for future types
* Remove Clippy warnings
* Fix more things
* Fix opening demo art with manual composition upgrading
* Set correct type for manual composition
* Fix brush
* Fix tests
* Update docs for deps
* Fix up some node signature issues
* Code review
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
Co-authored-by: hypercube <0hypercube@gmail.com>
* Use the identity matrix as the default for an image frame
* Fix all usages to be equivalent to their pre-refactor versions, opting to keep ZERO not IDENTITY as the default image size
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Port VectorData to Instances<VectorData>
* Port ImageFrame<P> and TextureFrame to Instances<ImageFrame<P>> and Instances<TextureFrame>
* Avoid mutation with the TransformMut trait
* Port GraphicGroup to Instances<GraphicGroup>
* It compiles!
* Organize debugging
* Document upgrading
* Fix Brush node
* Restore TransformMut in lieu of TransformSet trait
* Fix tests
* Final code review
* Add support structure for new node macro to gcore
* Fix compile issues and code generation
* Implement new node_fn macro
* Implement property translation
* Fix NodeIO type generation
* Start translating math nodes
* Move node implementation to outer scope to allow usage of local imports
* Add expose attribute to allow controlling the parameter exposure
* Add rust analyzer support for #[implementations] attribute
* Migrate logic nodes
* Handle where clause properly
* Implement argument ident pattern preservation
* Implement adjustment layer mapping
* Fix node registry types
* Fix module paths
* Improve demo artwork comptibility
* Improve macro error reporting
* Fix handling of impl node implementations
* Fix nodeio type computation
* Fix opacity node and graph type resolution
* Fix loading of demo artworks
* Fix eslint
* Fix typo in macro test
* Remove node definitions for Adjustment Nodes
* Fix type alias property generation and make adjustments footprint aware
* Convert vector nodes
* Implement path overrides
* Fix stroke node
* Fix painted dreams
* Implement experimental type level specialization
* Fix poisson disk sampling -> all demo artworks should work again
* Port text node + make node macro more robust by implementing lifetime substitution
* Fix vector node tests
* Fix red dress demo + ci
* Fix clippy warnings
* Code review
* Fix primary input issues
* Improve math nodes and audit others
* Set no_properties when no automatic properties are derived
* Port vector generator nodes (could not derive all definitions yet)
* Various QA changes and add min/max/mode_range to number parameters
* Add min and max for f64 and u32
* Convert gpu nodes and clean up unused nodes
* Partially port transform node
* Allow implementations on call arg
* Port path modify node
* Start porting graphic element nodes
* Transform nodes in graphic_element.rs
* Port brush node
* Port nodes in wasm_executior
* Rename node macro
* Fix formatting
* Fix Mandelbrot node
* Formatting
* Fix Load Image and Load Resource nodes, add scope input to node macro
* Remove unnecessary underscores
* Begin attemping to make nodes resolution-aware
* Infer a generic manual compositon type on generic call arg
* Various fixes and work towards merging
* Final changes for merge!
* Fix tests, probably
* More free line removals!
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* fix a lot of clippy warnings
* fix more clippy warnings
* fix yet more clippy warnings
* bump msrv to 1.70.0 to silence warnings
* fix a lot of clippy warnings
* fix more clippy warnings
* fix yet more clippy warnings
* fix a few more warnings
* fix a clippy warning
* remove a commented out line
* silense too many arguments error
* fix more clippy warnings
* prefix underscore to unused vars/functions to fix warnings
* use filter instead of map
* move raw-rs-tests feature flat to module level to fix unused imports warnings
* fix a couple of unused result warnings
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Reorganize file structure
* Remove all unsafe code
* Add testcase for debugging ub
* Convert into proper test with fail condition
* General cleanup
* Fix tests
* Add feature guard for deallocation
* Use raw pointer for storing values to avoid violating aliasing rules
* Add comment explaining the disabling of simd128
* Fix brush node
* Fix formatting
* Laid groundwork for per-stroke brush parameters.
* Added new spacing parameter.
* Added back interpolation, using spacing parameter.
* Move bounding box code into core.
* Initial working prototype of per-stroke styles.
* Removed now useless brush node properties.
* Made default spacing 50% for performance comparison.
* Quick and dirty prototype for BlitNode copied from blend.
* Fixed error after rebase.
* Optimized the blitting loop.
* Pretty big optimization for into_flat_u8.
* Insert brush node for images
* Fix starting position transform
* UX polish
* Code review nits
---------
Co-authored-by: 0hypercube <0hypercube@gmail.com>
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* Make node graph execution async
Make node macro generate async node implementations
Start propagating async through the node system
Async checkpoint
Make Any<'i> Send + Sync
Determine node io type using panic node
Fix types for raster_node macro
Finish porting node registry?
Fix lifetime errors
Remove Send + Sync requirements and start making node construction async
Async MVP
Fix tests
Clippy fix
* Fix nodes
* Simplify lifetims for node macro + make node macro more modular
* Reenable more nodes
* Fix pasting images
* Remove http test from brush node
* Fix output type for cache node
* Fix types for let scope
* Fix formatting
Implement Infrastructuro to reuse the previous evaluation of the
node graph to blend the new stroke with instead of drawing the
entire trace from scratch.
This does not transition to a blending based approach because that still
caused regressions but allows the brush node to work with input data
natively.
Test Plan:
- Use the brush tool in the editor and check for regressions
- Evaluate the performance
Reviewers: Keavon
Pull Request: https://github.com/GraphiteEditor/Graphite/pull/1190
* Migrate Nodes to use RasterMut + Samplable
* Add Pixel trait to include serialization
* Implement traits for Color and propagate new generics
* Always convert to linear color when loading images