# 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)

*** ** * ** ***

Common/All
- Cmn

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

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/TerminalNode` | A `https://developer.android.com/reference/kotlin/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/kotlin/androidx/ink/brush/behavior/Node`s, but instead applies a modification to the brush tip state. |
| `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/ValueNode` | A `https://developer.android.com/reference/kotlin/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/kotlin/androidx/ink/brush/behavior/Node`s, and may itself depend on zero or more inputs. |

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

|---|---|
| `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/BinaryOpNode` | A `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/ValueNode` that combines two other values with a binary operation. |
| `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/ConstantNode` | A `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/ValueNode` that produces a constant output value. |
| `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/DampingNode` | A `https://developer.android.com/reference/kotlin/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/kotlin/androidx/ink/brush/behavior/IntegralNode` | A `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/ValueNode` that integrates an input value over time or distance. |
| `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/InterpolationNode` | A `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/ValueNode` that interpolates between two inputs based on a parameter input. |
| `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/NoiseNode` | A `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/ValueNode` that produces a smooth random function. |
| `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/PolarTargetNode` | A `https://developer.android.com/reference/kotlin/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/kotlin/androidx/ink/brush/behavior/ResponseNode` | A `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/ValueNode` that maps an input value through a response curve. |
| `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/SourceNode` | A `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/ValueNode` that gets data from the stroke input batch. |
| `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/TargetNode` | A `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/TerminalNode` that consumes a single input to affect a scalar brush tip property. |
| `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/ToolTypeFilterNode` | A `https://developer.android.com/reference/kotlin/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/kotlin/androidx/ink/brush/BrushBehavior`'s expression graph. `https://developer.android.com/reference/kotlin/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 functions |
|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/ink/brush/Version` | `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/Node#calculateMinimumRequiredVersion()()` Returns the minimum required `https://developer.android.com/reference/kotlin/androidx/ink/brush/Version` for this `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/Node`. | Cmn |

| ### Public properties |
|---|---|---|
| `https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.collections/-list/index.html<https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/ValueNode>` | `https://developer.android.com/reference/kotlin/androidx/ink/brush/behavior/Node#inputs()` The ordered list of inputs that this node directly depends on. | Cmn |

## Public functions

### calculateMinimumRequiredVersion

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

```
fun calculateMinimumRequiredVersion(): Version
```

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

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

## Public properties

### inputs

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

```
val inputs: List<ValueNode>
```

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