mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-15 22:28:10 +08:00
Add nondestructive vector editing (#1676)
* Initial vector modify node * Initial extraction of data from monitor nodes * Migrate to point id * Start converting to modify node * Non destructive spline tool (tout le reste est cassé) * Fix unconnected modify node * Fix freehand tool * Pen tool * Migrate demo art * Select points * Fix the demo artwork * Fix the X and Y inputs for path tool * G1 continous toggle * Delete points * Fix test * Insert point * Improve robustness of handles * Fix GRS shortcuts on path * Dragging points * Fix build * Preserve opposing handle lengths * Update demo art and snapping * Fix polygon tool * Double click end anchor * Improve dragging * Fix text shifting * Select only connected verts * Colinear alt * Cleanup * Fix imports * Improve pen tool avoiding handle placement * Improve disolve * Remove pivot widget from Transform node properties * Fix demo art * Fix bugs * Re-save demo artwork * Code review * Serialize hashmap as tuple vec to enable deserialize_inputs * Fix migrate * Add document upgrade function to editor_api.rs * Finalize document upgrading * Rename to the Path node * Remove smoothing from Freehand tool * Upgrade demo artwork * Propertly disable raw-rs tests --------- Co-authored-by: Keavon Chambers <keavon@keavon.com> Co-authored-by: Adam <adamgerhant@gmail.com> Co-authored-by: Dennis Kobert <dennis@kobert.dev>
This commit is contained in:
@@ -33,14 +33,14 @@ use syn::{
|
||||
///
|
||||
/// - Mapping the type of the function's first argument (the node's primary input) to the impl'd `Node`'s generic type, e.g.:
|
||||
///
|
||||
/// ```
|
||||
/// ```ignore
|
||||
/// Node<'input, Color>
|
||||
/// ```
|
||||
///
|
||||
/// for a `Color` primary input type.
|
||||
/// - Mapping the type of the function's remaining arguments (the node's secondary inputs) to the given struct fields' generic types, e.g.:
|
||||
///
|
||||
/// ```
|
||||
/// ```ignore
|
||||
/// TheGivenStruct<S0, S1>
|
||||
/// where S0: Node<'input, (), Output = f64>,
|
||||
/// where S1: Node<'input, (), Output = f64>,
|
||||
@@ -49,7 +49,7 @@ use syn::{
|
||||
/// for two `f64` parameter (secondary input) types. Since Graphene works by having each function evaluate its upstream node as a lambda that returns output data, these secondary inputs are not directly `f64` values but rather `Node`s that output `f64` values when evaluated (in this case, with an empty input of `()`).
|
||||
/// - Mapping the function's return type to the impl'd `Node` trait's associated type, e.g.:
|
||||
///
|
||||
/// ```
|
||||
/// ```ignore
|
||||
/// Output = Color
|
||||
/// ```
|
||||
///
|
||||
@@ -67,7 +67,7 @@ use syn::{
|
||||
///
|
||||
/// The function body runs with the actual primary input value from the `eval` method's argument and the secondary input values from the `eval` method's `let` declarations. The result looks like this:
|
||||
///
|
||||
/// ```
|
||||
/// ```ignore
|
||||
/// fn eval(&'input self, color: Color) -> Self::Output {
|
||||
/// let secondaryA = self.secondaryA.eval(());
|
||||
/// let secondaryB = self.secondaryB.eval(());
|
||||
|
||||
Reference in New Issue
Block a user