Package uk.ac.starlink.array

# Interface OffsetMapper

All Known Implementing Classes:
  `OrderedShapeMapper`, `ReorderingMapper`

public interface OffsetMapper
Defines a mapping of pixel offsets in one array to their offsets in another array.

This interface is intended to describe the relationship between the positions of pixels in two arrays. For each offset into array 1 of interest, the `mapOffset(long)` method returns the offset of the corresponding pixel position in array 2.

Author:
  Mark Taylor (Starlink)
See Also:
  - `PixelMapArrayImpl`

## Method Summary

Modifier and Type
Method
Description
`long`
`mapOffset(long off1)`
Returns an offset into array 2 corresponding to a given offset in array 1.
`long[]`
`mapRange(long[] range1)`
Returns a two-element array `(min,max)` indicating the range of mapping output values (array 2 offsets) which correspond to a given range of input values (array 1 offsets).

## Method Details

### mapOffset

long mapOffset(long off1)
Returns an offset into array 2 corresponding to a given offset in array 1. Any `long` value may be returned, though depending on the the size of array 2 it may not fall within its bounds. A negative value always corresponds to a pixel which does not exist in array 2. It is the responsibility of clients of this OffsetMapper to cope with such out-of-bounds return values sensibly.

Parameters:
  `off1` - the offset into the array 1 giving a pixel position
Returns:
  the offset into array 2 giving the position of the corresponding pixel off1 into array 1

### mapRange

long[] mapRange(long[] range1)
Returns a two-element array `(min,max)` indicating the range of mapping output values (array 2 offsets) which correspond to a given range of input values (array 1 offsets). The return value constitutes a guarantee that `mapOffset(long)` will not return any value outside of the range returned, as long as no value outside of the supplied range parameter is not supplied to it. The returned range is only used for efficiency purposes and may be conservative (a larger range than will actually be returned). A null value may be returned; this, like a return value of `{-Long.MIN_VALUE,Long.MAX_VALUE}` constitutes no guarantee about the mapping output values.

Parameters:
  `range1` - a two-element array giving the lowest value and highest value (inclusive) which will be supplied to the `mapOffset` method (range to be considered in array 1)
Returns:
  a two-element array giving the lowest value and highest value (inclusive) which could be returned by the `mapOffset` method (range which could be returned in array 2) under the above circumstances. May be `null` if the information is not available