Offset
value class Offset(val packedValue: Long)
An immutable 2D floating-point offset.
Generally speaking, Offsets can be interpreted in two ways:
- 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 anOffset
from the top left of the parent box. - 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 theOffset
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
inline val x: Float
inline val y: Float
Functions
inline operator fun component1(): Float
inline operator fun component2(): Float
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
inline fun isValid(): Boolean
Returns:
- False if
x
ory
is a NaN - True if
x
ory
is infinite - True otherwise
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.
fun getDistanceSquared(): Float
The square of the magnitude of the offset.
This is cheaper than computing the getDistance
itself.
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.
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
.
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.
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).
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).
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
val Zero = Offset(0x0L)
An offset with zero magnitude.
This can be used to represent the origin of a coordinate space.
val Infinite = Offset(DualFloatInfinityBase)
An offset with infinite x and y components.
See also isFinite
to check whether both components are finite.
val Unspecified = Offset(UnspecifiedPackedFloats)
Represents an unspecified Offset
value, usually a replacement for null
when a
primitive value is desired.