Google is committed to advancing racial equity for Black communities. See how.

# Offset

`@Immutable inline class Offset`
 kotlin.Any ↳ androidx.compose.ui.geometry.Offset

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 RenderObject, 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.

• Size, which represents a vector describing the size of a rectangle.

Creates an offset. The first argument sets x, the horizontal component, and the second sets y, the vertical component.

## Summary

Public constructors
`<init>(packedValue: Long)`

An immutable 2D floating-point offset.

Public methods
operator Float
`component1()`

operator Float
`component2()`

Offset
`copy(x: Float = this.x, y: Float = this.y)`

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

operator Offset
`div(operand: Float)`

Division operator.

Float
`getDistance()`

The magnitude of the offset.

Float
`getDistanceSquared()`

The square of the magnitude of the offset.

Boolean
`isValid()`

operator Offset
`minus(other: Offset)`

Binary subtraction operator.

operator Offset
`plus(other: Offset)`

operator Offset
`rem(operand: Float)`

Modulo (remainder) operator.

operator Offset
`times(operand: Float)`

Multiplication operator.

String
`toString()`

operator Offset
`unaryMinus()`

Unary negation operator.

Extension functions
From androidx.compose.ui.unit
 operator Offset `Offset.minus(offset: IntOffset)` operator Offset `Offset.plus(offset: IntOffset)` IntOffset `Offset.round()` Round a Offset down to the nearest Int coordinates.
From androidx.compose.ui.geometry
 Offset `Offset.takeOrElse(block: () -> Offset)` If this Offset then this is returned, otherwise block is executed and its result is returned.
Properties
Long
`packedValue`

Float
`x`

Float
`y`

Companion properties
Offset
`Infinite`

An offset with infinite x and y components.

Offset
`Unspecified`

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

Offset
`Zero`

An offset with zero magnitude.

Extension properties
From androidx.compose.ui.geometry
 Boolean `isFinite` True if both x and y values of the Offset are finite Boolean `isSpecified` `false` when this is Offset.Unspecified. Boolean `isUnspecified` `true` when this is Offset.Unspecified.

## Public constructors

### <init>

`Offset(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 RenderObject, 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.

• Size, which represents a vector describing the size of a rectangle.

Creates an offset. The first argument sets x, the horizontal component, and the second sets y, the vertical component.

## Public methods

### component1

`@Stable operator fun component1(): Float`

### component2

`@Stable operator fun component2(): Float`

### copy

`fun copy(    x: Float = this.x,     y: Float = this.y): Offset`

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

### div

`@Stable 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).

### getDistance

`@Stable 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.

### getDistanceSquared

`@Stable fun getDistanceSquared(): Float`

The square of the magnitude of the offset.

This is cheaper than computing the getDistance itself.

### isValid

`@Stable fun isValid(): Boolean`

### minus

`@Stable 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.

### plus

`@Stable operator fun plus(other: Offset): Offset`

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.

### rem

`@Stable 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).

### times

`@Stable 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).

### toString

`fun toString(): String`

### unaryMinus

`@Stable 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.

## Properties

### packedValue

`val packedValue: Long`

### x

`@Stable val x: Float`

### y

`@Stable val y: Float`

## Companion properties

### Infinite

`@Stable val Infinite: Offset`

An offset with infinite x and y components.

• isInfinite, which checks whether either component is infinite.
• isFinite, which checks whether both components are finite.

### Unspecified

`@Stable val Unspecified: Offset`

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

### Zero

`@Stable val Zero: Offset`

An offset with zero magnitude.

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