---
title: "Offset"
description: "An immutable 2D floating-point offset.

Generally speaking, Offsets can be interpreted in two ways:
1. As representing a point in Cartesian space a specified distance from a separately-maintained  origin. For example, the top-left position of children in the [RenderBox] protocol is  typically represented as an [Offset] from the top left of the parent box.
2. As a vector that can be applied to coordinates. For example, when painting a widget, the  parent is passed an [Offset] from the screen's origin which it can add to the offsets of its  children to find the [Offset] from the screen's origin to each of the children.

Because a particular [Offset] can be interpreted as one sense at one time then as the other sense
at a later time, the same class is used for both senses.

See also:
* [Size], which represents a vector describing the size of a rectangle.

To create an [Offset], call the top-level function that accepts an x/y pair of coordinates:
```
val offset = Offset(x, y)
```

The primary constructor of [Offset] is intended to be used with the [packedValue] property to
allow storing offsets in arrays or collections of primitives without boxing."
type: "class"
---

<div class='type'>Class</div>


<a id='references'></a>

<div class='sourceset sourceset-common'>Common</div>


```kotlin
value class Offset(val packedValue: Long)
```


An immutable 2D floating-point offset.

Generally speaking, Offsets can be interpreted in two ways:
1. As representing a point in Cartesian space a specified distance from a separately-maintained  origin. For example, the top-left position of children in the `RenderBox` protocol is  typically represented as an `Offset` from the top left of the parent box.
2. As a vector that can be applied to coordinates. For example, when painting a widget, the  parent is passed an `Offset` from the screen's origin which it can add to the offsets of its  children to find the `Offset` from the screen's origin to each of the children.

Because a particular `Offset` can be interpreted as one sense at one time then as the other sense
at a later time, the same class is used for both senses.

See also:
* `Size`, which represents a vector describing the size of a rectangle.

To create an `Offset`, call the top-level function that accepts an x/y pair of coordinates:
```
val offset = Offset(x, y)
```

The primary constructor of `Offset` is intended to be used with the `packedValue` property to
allow storing offsets in arrays or collections of primitives without boxing.

#### Parameters

| | |
| --- | --- |
| packedValue | `Long` value encoding the `x` and `y` components of the `Offset`. Encoded values can be obtained by using the `packedValue` property of existing `Offset` instances. |



## Properties

<div class='sourceset sourceset-common'>Common</div>


```kotlin
inline val x: Float
```


<div class='sourceset sourceset-common'>Common</div>


```kotlin
inline val y: Float
```


## Functions

```kotlin
inline operator fun component1(): Float
```

```kotlin
inline operator fun component2(): Float
```

```kotlin
fun copy(x: Float = unpackFloat1(packedValue), y: Float = unpackFloat2(packedValue)) =
        Offset(packFloats(x, y))
```


Returns a copy of this Offset instance optionally overriding the x or y parameter


```kotlin
inline fun isValid(): Boolean
```


Returns:
- False if `x` or `y` is a NaN
- True if `x` or `y` is infinite
- True otherwise


```kotlin
fun getDistance(): Float
```


The magnitude of the offset.

If you need this value to compare it to another `Offset`'s distance, consider using
`getDistanceSquared` instead, since it is cheaper to compute.


```kotlin
fun getDistanceSquared(): Float
```


The square of the magnitude of the offset.

This is cheaper than computing the `getDistance` itself.


```kotlin
inline operator fun unaryMinus(): Offset
```


Unary negation operator.

Returns an offset with the coordinates negated.

If the `Offset` represents an arrow on a plane, this operator returns the same arrow but
pointing in the reverse direction.


```kotlin
operator fun minus(other: Offset): Offset
```


Binary subtraction operator.

Returns an offset whose `x` value is the left-hand-side operand's `x` minus the
right-hand-side operand's `x` and whose `y` value is the left-hand-side operand's `y` minus
the right-hand-side operand's `y`.


```kotlin
operator fun plus(other: Offset): Offset
```


Binary addition operator.

Returns an offset whose `x` value is the sum of the `x` values of the two operands, and whose
`y` value is the sum of the `y` values of the two operands.


```kotlin
operator fun times(operand: Float): Offset
```


Multiplication operator.

Returns an offset whose coordinates are the coordinates of the left-hand-side operand (an
Offset) multiplied by the scalar right-hand-side operand (a Float).


```kotlin
operator fun div(operand: Float): Offset
```


Division operator.

Returns an offset whose coordinates are the coordinates of the left-hand-side operand (an
Offset) divided by the scalar right-hand-side operand (a Float).


```kotlin
operator fun rem(operand: Float): Offset
```


Modulo (remainder) operator.

Returns an offset whose coordinates are the remainder of dividing the coordinates of the
left-hand-side operand (an Offset) by the scalar right-hand-side operand (a Float).


## Companion Object

#### Properties

<div class='sourceset sourceset-common'>Common</div>


```kotlin
val Zero = Offset(0x0L)
```


An offset with zero magnitude.

This can be used to represent the origin of a coordinate space.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val Infinite = Offset(DualFloatInfinityBase)
```


An offset with infinite x and y components.

See also `isFinite` to check whether both components are finite.



<div class='sourceset sourceset-common'>Common</div>


```kotlin
val Unspecified = Offset(UnspecifiedPackedFloats)
```


Represents an unspecified `Offset` value, usually a replacement for `null` when a
primitive value is desired.





