com.orsoncharts.axis

## Interface TickSelector

- All Known Implementing Classes:
    IntegerTickSelector, NumberTickSelector

      public interface TickSelector

  Provides standard tick sizes and formatting for numerical axes. Conceptually, the selector maintains a list of standard tick sizes (ordered by size), and a pointer to the current (selected) tick size. Clients of the selector will initialise the pointer by calling the `select(double)` method with a reference value (a guess, based on context, of the largest usable tick size - for example, one half of the axis length) then, as required, move the pointer to a smaller or larger tick size (using the `next()` and `previous()` methods) to find the most appropriate standard size to use.

  The `NumberTickSelector` class provides a standard implementation, but you can create your own if necessary.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `java.text.Format` | `getCurrentTickLabelFormat()` Returns the tick formatter associated with the tick size that the cursor is currently referencing.
    `double` | `getCurrentTickSize()` Returns the tick size that the cursor is currently referencing.
    `boolean` | `next()` Move the cursor to the next (larger) tick size, if there is one.
    `boolean` | `previous()` Move the cursor to the previous (smaller) tick size, if there is one.
    `double` | `select(double reference)` Selects and returns a standard tick size that is greater than or equal to the specified reference value and, ideally, as close to it as possible (to minimise the number of iterations used by axes to determine the tick size to use).

- - ### Method Detail

    - #### select

          double select(double reference)

      Selects and returns a standard tick size that is greater than or equal to the specified reference value and, ideally, as close to it as possible (to minimise the number of iterations used by axes to determine the tick size to use). After a call to this method, the `getCurrentTickSize()` method should return the selected tick size (there is a "cursor" that points to this tick size), the `next()` method should move the pointer to the next (larger) standard tick size, and the `previous()` method should move the pointer to the previous (smaller) standard tick size.
      Parameters:
        `reference` - the reference value (must be positive and finite).
      Returns:
        The selected tick size.

    - #### next

          boolean next()

      Move the cursor to the next (larger) tick size, if there is one. Returns `true` in the case that the cursor is moved, and `false` where there are a finite number of tick sizes and the current tick size is the largest available.
      Returns:
        A boolean.

    - #### previous

          boolean previous()

      Move the cursor to the previous (smaller) tick size, if there is one. Returns `true` in the case that the cursor is moved, and `false` where there are a finite number of tick sizes and the current tick size is the smallest available.
      Returns:
        A boolean.

    - #### getCurrentTickSize

          double getCurrentTickSize()

      Returns the tick size that the cursor is currently referencing.
      Returns:
        The tick size.

    - #### getCurrentTickLabelFormat

          java.text.Format getCurrentTickLabelFormat()

      Returns the tick formatter associated with the tick size that the cursor is currently referencing.
      Returns:
        The formatter.