* Add spread method support for gradients
* Add GradientSpreadMethod enum (Pad, Repeat, Reflect) to vector-types
* Add radio buttons to gradient tool and fill properties panel
* Convert spread method when importing SVGs via usvg
* Sync backup gradient input when changing spread method
* Table<GradientStops> rendering is not yet updated for spread method
* Sync gradient tool options with layer's gradient
* Sync gradient_type and spread_method from the selected
layer's existing gradient to the tool options bar when
switching to the gradient tool
* Refactor has_gradient_on_selected_layers
to reuse a new get_gradient_on_selected_layer helper
* Swap Reflect and Repeat order in UI radio buttons
* Fix alignment of the radio buttons in right panel
* Fix the position of the radio buttons in the tool
* Rename SpreadMethod to SetSpreadMethod
* Move default spread method omission logic
* Add checkered transparency rendering to infinite canvas and artboards
* Enable artboard clipping by default
* Make new infinite canvas documents begin with a white background layer
* Remove the export dialog's transparency option now that it's redundant
* Make exporting transparent JPGs use white not black
* Code review
* Fix an assertion failure bug when scaling a line in the transform cage
* Fix missing defaults on node gradient inputs
* Fix Blend Shapes path input wire not updating to show in the UI after Layer > Blend
* Fix assertion failure due to browser non-monotonic timestamp
* Fix SVG renderer drawing 1px strokes as half-width when using stroke alignment
* Fix incorrect appearance of the ColorInput widget when set to "none" and "disabled"
* Fix lerp function in Fill enum to handle None cases correctly
* Fix stroke alignment bug
* Fix hide artboard for raster render mode
* Desktop: Fix transparent viewport blending
* Fix vello render using wrong color space conversion for background
* Review
* Render raster images as outlines in Outline mode
* Draw a transformed unit-rectangle stroke instead of raster pixels
* Skip creating blend layers for a raster image in Outline mode
when only blend mode would trigger them
* Rename variable names
* Minor refactor to reduce nesting
* Extract shared outline drawing helper
* Update node-graph/libraries/rendering/src/renderer.rs
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
* Refactor GradientStops to use struct-of-arrays and include midpoint
* Implement interaction and rendering
* Make color picker saturation-value color picking snap to original position and show both axis lines
Make color picker saturation-value color picking snap to original position and show both axis lines
* Add graphite:midpoint attribute to SVG exports
* Add graphite:midpoint parsing to SVG importer
* Remove Vello from preferences
* Add the Render Mode: SVG Preview radio button
* Remove SVG outline renderer
* Add a tooltip explaination when disabled in unsupported browsers
* Fix Eyedropper tool to support Outline render mode
* Use #[allow(clippy::too_many_arguments)] instead of tuple
* Rerun nodegraph when max render area is changed
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
* WIP render caching
* Hook up render cache to render pipeline
* Fixed offsets
* Initial cleanup
* Integrate cache with context invalidation
* Cleanup
* Improve rounding and reduce tile size to fix vello not rendering
* Include pointer position in cache key
* Avoid unwraps and zero sized textures
* Destroy textures after blitting to surface
* Fix context dependencies
* Exclude footprint from render params
* Batch animation frame messages
* Add vello max render size to preference dialogue
* Remove unused import
* Reorder vello preference
* Clean up preferences dialog
* Apply review suggestions
* Cap max render region size
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>
* fix: rasterize node document leakage with hashmap and eq check
* Use single Hashmap and ignore source id
* use or_insert_with instead of Entry match
---------
Co-authored-by: Dennis Kobert <dennis@kobert.dev>
* Implement branching mesh rendering for SVG
* Patch mesh fill for Vello renderer
* Patch tangent_at_start and tangent_at_end
---------
Co-authored-by: Keavon Chambers <keavon@keavon.com>