# ImmutableAffineTransform.Companion

Artifact: [androidx.ink:ink-geometry](https://developer.android.com/jetpack/androidx/releases/ink) [View Source](https://cs.android.com/search?q=file:androidx/ink/geometry/ImmutableAffineTransform.kt+class:androidx.ink.geometry.ImmutableAffineTransform.Companion) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/ink#1.0.0)

*** ** * ** ***

Common/AllAndroid/JVMNative/C/iOS
- Cmn

  ```
  object ImmutableAffineTransform.Companion
  ```

*** ** * ** ***

## Summary

| ### Public functions |
|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` | `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform#rotateDegrees(kotlin.Float)(degrees: @https://developer.android.com/reference/kotlin/androidx/ink/geometry/AngleDegreesFloat https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Returns a transformation that rotates `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#rotateDegrees(kotlin.Float)` in the direction from the positive x-axis towards the positive y-axis. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` | `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform#scale(kotlin.Float)(scaleFactor: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Returns a transformation that scales in both the x- and y-direction by the given `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#scale(kotlin.Float)`, centered about the origin. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` | `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform#scale(kotlin.Float,kotlin.Float)(xScaleFactor: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, yScaleFactor: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Returns a transformation that scales in both the x- and y-direction by the given pair of factors; `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#scale(kotlin.Float,kotlin.Float)` and `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#scale(kotlin.Float,kotlin.Float)` respectively, centered about the origin. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` | `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform#scaleX(kotlin.Float)(scaleFactor: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Returns a transformation that scales in the x-direction by the given factor, centered about the origin. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` | `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform#scaleY(kotlin.Float)(scaleFactor: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Returns a transformation that scales in the y-direction by the given factor, centered about the origin. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` | `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform#skewX(kotlin.Float)(sx: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Returns a transformation that skews in the x-direction by the given factor. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` | `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform#skewY(kotlin.Float)(sy: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Returns a transformation that skews in the y-direction by the given factor. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` | `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform#translate(androidx.ink.geometry.Vec)(offset: https://developer.android.com/reference/kotlin/androidx/ink/geometry/Vec)` Returns a transformation that translates by the given `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#translate(androidx.ink.geometry.Vec)` vector. | Cmn |
| `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` | `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform#translate(kotlin.Float,kotlin.Float)(x: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html, y: https://kotlinlang.org/api/core/kotlin-stdlib/kotlin/-float/index.html)` Returns a transformation that translates by the given `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#translate(kotlin.Float,kotlin.Float)` and `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#translate(kotlin.Float,kotlin.Float)` components. | Cmn |

| ### Extension functions |
|---|---|---|
| `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` | `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion.https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(kotlinx.cinterop.CValue)( transform: https://kotlinlang.org/api/core/kotlin-stdlib/kotlinx.cinterop/-c-value/index.html<platform.CoreGraphics.CGAffineTransform> )` Constructs an `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` with the values from `https://developer.android.com/reference/kotlin/androidx/ink/geometry/package-summary#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(kotlinx.cinterop.CValue)`. | N |
| `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform?` | `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion.https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(android.graphics.Matrix)(matrix: https://developer.android.com/reference/android/graphics/Matrix.html)` Constructs an `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` with the values from `https://developer.android.com/reference/kotlin/androidx/ink/geometry/package-summary#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(android.graphics.Matrix)`. | android |
| `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform?` | `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion.https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(androidx.compose.ui.graphics.Matrix)(matrix: https://developer.android.com/reference/kotlin/androidx/compose/ui/graphics/Matrix)` Constructs an ImmutableAffineTransform with the values from `https://developer.android.com/reference/kotlin/androidx/ink/geometry/compose/package-summary#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(androidx.compose.ui.graphics.Matrix)`, if and only if `https://developer.android.com/reference/kotlin/androidx/ink/geometry/compose/package-summary#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(androidx.compose.ui.graphics.Matrix)` is a 2D affine transform; that is, that the Z row and column in `https://developer.android.com/reference/kotlin/androidx/ink/geometry/compose/package-summary#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(androidx.compose.ui.graphics.Matrix)` must both be `0, 0, 1, 0`. | android |

## Public functions

### rotateDegrees

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

```
fun rotateDegrees(degrees: @AngleDegreesFloat Float): ImmutableAffineTransform
```

Returns a transformation that rotates `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#rotateDegrees(kotlin.Float)` in the direction from the positive x-axis towards the positive y-axis.

### scale

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

```
fun scale(scaleFactor: Float): ImmutableAffineTransform
```

Returns a transformation that scales in both the x- and y-direction by the given `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#scale(kotlin.Float)`, centered about the origin.

### scale

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

```
fun scale(xScaleFactor: Float, yScaleFactor: Float): ImmutableAffineTransform
```

Returns a transformation that scales in both the x- and y-direction by the given pair of factors; `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#scale(kotlin.Float,kotlin.Float)` and `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#scale(kotlin.Float,kotlin.Float)` respectively, centered about the origin.

### scaleX

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

```
fun scaleX(scaleFactor: Float): ImmutableAffineTransform
```

Returns a transformation that scales in the x-direction by the given factor, centered about the origin.

### scaleY

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

```
fun scaleY(scaleFactor: Float): ImmutableAffineTransform
```

Returns a transformation that scales in the y-direction by the given factor, centered about the origin.

### skewX

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

```
fun skewX(sx: Float): ImmutableAffineTransform
```

Returns a transformation that skews in the x-direction by the given factor.

### skewY

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

```
fun skewY(sy: Float): ImmutableAffineTransform
```

Returns a transformation that skews in the y-direction by the given factor.

### translate

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

```
fun translate(offset: Vec): ImmutableAffineTransform
```

Returns a transformation that translates by the given `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#translate(androidx.ink.geometry.Vec)` vector.

### translate

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

```
fun translate(x: Float, y: Float): ImmutableAffineTransform
```

Returns a transformation that translates by the given `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#translate(kotlin.Float,kotlin.Float)` and `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform.Companion#translate(kotlin.Float,kotlin.Float)` components.

## Extension functions

### ImmutableAffineTransform.Companion.from

N Artifact: [androidx.ink:ink-geometry](https://developer.android.com/jetpack/androidx/releases/ink) [View Source](https://cs.android.com/search?q=file:androidx/ink/geometry/AffineTransformExtensions.ios.kt+function:from)

```
fun ImmutableAffineTransform.Companion.from(
    transform: CValue<platform.CoreGraphics.CGAffineTransform>
): ImmutableAffineTransform
```

Constructs an `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` with the values from `https://developer.android.com/reference/kotlin/androidx/ink/geometry/package-summary#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(kotlinx.cinterop.CValue)`.

Performance-sensitive code should use the `https://developer.android.com/reference/kotlin/androidx/ink/geometry/package-summary#(androidx.ink.geometry.MutableAffineTransform).populateFrom(kotlinx.cinterop.CValue)` overload that takes a pre-allocated `https://developer.android.com/reference/kotlin/androidx/ink/geometry/MutableAffineTransform`, so that the instance can be reused across multiple calls.

### ImmutableAffineTransform.Companion.from

android Artifact: [androidx.ink:ink-geometry](https://developer.android.com/jetpack/androidx/releases/ink) [View Source](https://cs.android.com/search?q=file:androidx/ink/geometry/AndroidGraphicsConversionExtensions.android.kt+function:from)

```
fun ImmutableAffineTransform.Companion.from(matrix: Matrix): ImmutableAffineTransform?
```

Constructs an `https://developer.android.com/reference/kotlin/androidx/ink/geometry/ImmutableAffineTransform` with the values from `https://developer.android.com/reference/kotlin/androidx/ink/geometry/package-summary#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(android.graphics.Matrix)`.

If `https://developer.android.com/reference/kotlin/androidx/ink/geometry/package-summary#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(android.graphics.Matrix)` is not an affine transform, returns null instead.

Performance-sensitive code should use the `https://developer.android.com/reference/kotlin/androidx/ink/geometry/package-summary#(androidx.ink.geometry.MutableAffineTransform).populateFrom(android.graphics.Matrix)` overload that takes a pre-allocated `https://developer.android.com/reference/kotlin/androidx/ink/geometry/MutableAffineTransform`, so that the instance can be reused across multiple calls.

Java callers should prefer `AndroidGraphicsConverter.createAffineTransform(Matrix)` (`https://developer.android.com/reference/kotlin/androidx/ink/geometry/package-summary#createAffineTransform(android.graphics.Matrix)`).

### ImmutableAffineTransform.Companion.from

android Artifact: [androidx.ink:ink-geometry-compose](https://developer.android.com/jetpack/androidx/releases/ink) [View Source](https://cs.android.com/search?q=file:androidx/ink/geometry/compose/ComposeConversionExtensions.kt+function:from)

```
fun ImmutableAffineTransform.Companion.from(matrix: Matrix): ImmutableAffineTransform?
```

Constructs an ImmutableAffineTransform with the values from `https://developer.android.com/reference/kotlin/androidx/ink/geometry/compose/package-summary#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(androidx.compose.ui.graphics.Matrix)`, if and only if `https://developer.android.com/reference/kotlin/androidx/ink/geometry/compose/package-summary#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(androidx.compose.ui.graphics.Matrix)` is a 2D affine transform; that is, that the Z row and column in `https://developer.android.com/reference/kotlin/androidx/ink/geometry/compose/package-summary#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(androidx.compose.ui.graphics.Matrix)` must both be `0, 0, 1, 0`. Returns null if `https://developer.android.com/reference/kotlin/androidx/ink/geometry/compose/package-summary#(androidx.ink.geometry.ImmutableAffineTransform.Companion).from(androidx.compose.ui.graphics.Matrix)` is not a 2D affine transform.

Performance-sensitive code should use the `https://developer.android.com/reference/kotlin/androidx/ink/geometry/compose/package-summary#(androidx.ink.geometry.MutableVec).populateFrom(androidx.compose.ui.geometry.Offset)` overload that takes a pre-allocated `https://developer.android.com/reference/kotlin/androidx/ink/geometry/AffineTransform`, so that the instance can be reused across multiple calls.