# Node

Artifact: [androidx.ink:ink-brush](https://developer.android.com/jetpack/androidx/releases/ink) [View Source](https://cs.android.com/search?q=file:androidx/ink/brush/behavior/Node.kt+class:androidx.ink.brush.behavior.Node) Added in [1.1.0-alpha11](https://developer.android.com/jetpack/androidx/releases/ink#1.1.0-alpha11)

*** ** * ** ***


```
public abstract class Node
```

<br />

Known direct subclasses [TerminalNode](https://developer.android.com/reference/androidx/ink/brush/behavior/TerminalNode), [ValueNode](https://developer.android.com/reference/androidx/ink/brush/behavior/ValueNode)

|---|---|
| `https://developer.android.com/reference/androidx/ink/brush/behavior/TerminalNode` | A `https://developer.android.com/reference/androidx/ink/brush/behavior/TerminalNode` is a terminal node in the graph; it does not produce a value and cannot be used as an input to other `https://developer.android.com/reference/androidx/ink/brush/behavior/Node`s, but instead applies a modification to the brush tip state. |
| `https://developer.android.com/reference/androidx/ink/brush/behavior/ValueNode` | A `https://developer.android.com/reference/androidx/ink/brush/behavior/ValueNode` is a non-terminal node in the graph; it produces a value to be consumed as an input by other `https://developer.android.com/reference/androidx/ink/brush/behavior/Node`s, and may itself depend on zero or more inputs. |

Known indirect subclasses [BinaryOpNode](https://developer.android.com/reference/androidx/ink/brush/behavior/BinaryOpNode), [ConstantNode](https://developer.android.com/reference/androidx/ink/brush/behavior/ConstantNode), [DampingNode](https://developer.android.com/reference/androidx/ink/brush/behavior/DampingNode), [IntegralNode](https://developer.android.com/reference/androidx/ink/brush/behavior/IntegralNode), [InterpolationNode](https://developer.android.com/reference/androidx/ink/brush/behavior/InterpolationNode), [NoiseNode](https://developer.android.com/reference/androidx/ink/brush/behavior/NoiseNode), [PolarTargetNode](https://developer.android.com/reference/androidx/ink/brush/behavior/PolarTargetNode), [ResponseNode](https://developer.android.com/reference/androidx/ink/brush/behavior/ResponseNode), [SourceNode](https://developer.android.com/reference/androidx/ink/brush/behavior/SourceNode), [TargetNode](https://developer.android.com/reference/androidx/ink/brush/behavior/TargetNode), [ToolTypeFilterNode](https://developer.android.com/reference/androidx/ink/brush/behavior/ToolTypeFilterNode)

|---|---|
| `https://developer.android.com/reference/androidx/ink/brush/behavior/BinaryOpNode` | A `https://developer.android.com/reference/androidx/ink/brush/behavior/ValueNode` that combines two other values with a binary operation. |
| `https://developer.android.com/reference/androidx/ink/brush/behavior/ConstantNode` | A `https://developer.android.com/reference/androidx/ink/brush/behavior/ValueNode` that produces a constant output value. |
| `https://developer.android.com/reference/androidx/ink/brush/behavior/DampingNode` | A `https://developer.android.com/reference/androidx/ink/brush/behavior/ValueNode` that applies damping to an input value, smoothing out rapid changes by causing the output value to asymptotically decay towards the input value over a specified time or distance. |
| `https://developer.android.com/reference/androidx/ink/brush/behavior/IntegralNode` | A `https://developer.android.com/reference/androidx/ink/brush/behavior/ValueNode` that integrates an input value over time or distance. |
| `https://developer.android.com/reference/androidx/ink/brush/behavior/InterpolationNode` | A `https://developer.android.com/reference/androidx/ink/brush/behavior/ValueNode` that interpolates between two inputs based on a parameter input. |
| `https://developer.android.com/reference/androidx/ink/brush/behavior/NoiseNode` | A `https://developer.android.com/reference/androidx/ink/brush/behavior/ValueNode` that produces a smooth random function. |
| `https://developer.android.com/reference/androidx/ink/brush/behavior/PolarTargetNode` | A `https://developer.android.com/reference/androidx/ink/brush/behavior/TerminalNode` that consumes two inputs, an angle and a magnitude, to affect a vector brush tip property. |
| `https://developer.android.com/reference/androidx/ink/brush/behavior/ResponseNode` | A `https://developer.android.com/reference/androidx/ink/brush/behavior/ValueNode` that maps an input value through a response curve. |
| `https://developer.android.com/reference/androidx/ink/brush/behavior/SourceNode` | A `https://developer.android.com/reference/androidx/ink/brush/behavior/ValueNode` that gets data from the stroke input batch. |
| `https://developer.android.com/reference/androidx/ink/brush/behavior/TargetNode` | A `https://developer.android.com/reference/androidx/ink/brush/behavior/TerminalNode` that consumes a single input to affect a scalar brush tip property. |
| `https://developer.android.com/reference/androidx/ink/brush/behavior/ToolTypeFilterNode` | A `https://developer.android.com/reference/androidx/ink/brush/behavior/ValueNode` for filtering out a branch of a behavior graph unless this stroke's tool type is in the specified set. |

*** ** * ** ***

Represents one node in a `https://developer.android.com/reference/androidx/ink/brush/BrushBehavior`'s expression graph. `https://developer.android.com/reference/androidx/ink/brush/behavior/Node` objects are immutable and their inputs must be chosen at construction time; therefore, they can only ever be assembled into an acyclic graph.

## Summary

| ### Public methods |
|---|---|
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/brush/Version` | `https://developer.android.com/reference/androidx/ink/brush/behavior/Node#calculateMinimumRequiredVersion()()` Returns the minimum required `https://developer.android.com/reference/androidx/ink/brush/Version` for this `https://developer.android.com/reference/androidx/ink/brush/behavior/Node`. |
| `final @https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/java/util/List.html<@https://developer.android.com/reference/androidx/annotation/NonNull https://developer.android.com/reference/androidx/ink/brush/behavior/ValueNode>` | `https://developer.android.com/reference/androidx/ink/brush/behavior/Node#getInputs()()` The ordered list of inputs that this node directly depends on. |

## Public methods

### calculateMinimumRequiredVersion

Added in [1.1.0-alpha11](https://developer.android.com/jetpack/androidx/releases/ink#1.1.0-alpha11)

```
public final @NonNull Version calculateMinimumRequiredVersion()
```

Returns the minimum required `https://developer.android.com/reference/androidx/ink/brush/Version` for this `https://developer.android.com/reference/androidx/ink/brush/behavior/Node`.

By default, decoding a `https://developer.android.com/reference/androidx/ink/brush/BrushFamily` containing a `https://developer.android.com/reference/androidx/ink/brush/behavior/Node` with a minimum required version higher than `https://developer.android.com/reference/androidx/ink/brush/Version#MAX_SUPPORTED()` will fail.

### getInputs

Added in [1.1.0-alpha11](https://developer.android.com/jetpack/androidx/releases/ink#1.1.0-alpha11)

```
public final @NonNull List<@NonNull ValueNode> getInputs()
```

The ordered list of inputs that this node directly depends on.