Package com.io7m.smfj.core

## Class SMFCoordinateSystem

- java.lang.Object
- - com.io7m.smfj.core.SMFCoordinateSystem

- All Implemented Interfaces:
    `SMFCoordinateSystemType`

      public final class SMFCoordinateSystem
      extends java.lang.Object
      implements SMFCoordinateSystemType

  The specification of a coordinate system and face winding order.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `SMFCoordinateSystem.Builder` | Builds instances of type `SMFCoordinateSystem`.

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `com.io7m.jcoords.core.conversion.CAxisSystem` | `axes()` |
    `static SMFCoordinateSystem.Builder` | `builder()` | Creates a builder for `SMFCoordinateSystem`.
    `static SMFCoordinateSystem` | `copyOf​(SMFCoordinateSystemType instance)` | Creates an immutable copy of a `SMFCoordinateSystemType` value.
    `boolean` | `equals​(java.lang.Object another)` | This instance is equal to all instances of `SMFCoordinateSystem` that have equal attribute values.
    `int` | `hashCode()` | Computes a hash code from attributes: `axes`, `windingOrder`.
    `static SMFCoordinateSystem` | `of​(com.io7m.jcoords.core.conversion.CAxisSystem axes, SMFFaceWindingOrder windingOrder)` | Construct a new immutable `SMFCoordinateSystem` instance.
    `java.lang.String` | `toHumanString()`
    `java.lang.String` | `toString()` | Prints the immutable value `SMFCoordinateSystem` with attribute values.
    `SMFFaceWindingOrder` | `windingOrder()` |
    `SMFCoordinateSystem` | `withAxes​(com.io7m.jcoords.core.conversion.CAxisSystem value)` | Copy the current immutable object by setting a value for the `axes` attribute.
    `SMFCoordinateSystem` | `withWindingOrder​(SMFFaceWindingOrder value)` | Copy the current immutable object by setting a value for the `windingOrder` attribute.

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Method Detail

    - #### axes

          public com.io7m.jcoords.core.conversion.CAxisSystem axes()

      Specified by:
        `axes` in interface `SMFCoordinateSystemType`
      Returns:
        The coordinate system axes

    - #### windingOrder

          public SMFFaceWindingOrder windingOrder()

      Specified by:
        `windingOrder` in interface `SMFCoordinateSystemType`
      Returns:
        The winding order for triangles

    - #### withAxes

          public final SMFCoordinateSystem withAxes​(com.io7m.jcoords.core.conversion.CAxisSystem value)

      Copy the current immutable object by setting a value for the `axes` attribute. A shallow reference equality check is used to prevent copying of the same value by returning `this`.
      Parameters:
        `value` - A new value for axes
      Returns:
        A modified copy of the `this` object

    - #### withWindingOrder

          public final SMFCoordinateSystem withWindingOrder​(SMFFaceWindingOrder value)

      Copy the current immutable object by setting a value for the `windingOrder` attribute. A value equality check is used to prevent copying of the same value by returning `this`.
      Parameters:
        `value` - A new value for windingOrder
      Returns:
        A modified copy of the `this` object

    - #### equals

          public boolean equals​(java.lang.Object another)

      This instance is equal to all instances of `SMFCoordinateSystem` that have equal attribute values.
      Overrides:
        `equals` in class `java.lang.Object`
      Returns:
        `true` if `this` is equal to `another` instance

    - #### hashCode

          public int hashCode()

      Computes a hash code from attributes: `axes`, `windingOrder`.
      Overrides:
        `hashCode` in class `java.lang.Object`
      Returns:
        hashCode value

    - #### toString

          public java.lang.String toString()

      Prints the immutable value `SMFCoordinateSystem` with attribute values.
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        A string representation of the value

    - #### toHumanString

          public java.lang.String toHumanString()

      Returns a lazily initialized value of the `toHumanString` attribute. Initialized once and only once and stored for subsequent access with proper synchronization. In case of any exception or error thrown by the lazy value initializer, the result will not be memoised (i.e. remembered) and on next call computation will be attempted again.

      Specified by:
        `toHumanString` in interface `SMFCoordinateSystemType`
      Returns:
        A lazily initialized value of the `toHumanString` attribute

    - #### of

          public static SMFCoordinateSystem of​(com.io7m.jcoords.core.conversion.CAxisSystem axes,
                                               SMFFaceWindingOrder windingOrder)

      Construct a new immutable `SMFCoordinateSystem` instance.
      Parameters:
        `axes` - The value for the `axes` attribute
        `windingOrder` - The value for the `windingOrder` attribute
      Returns:
        An immutable SMFCoordinateSystem instance

    - #### copyOf

          public static SMFCoordinateSystem copyOf​(SMFCoordinateSystemType instance)

      Creates an immutable copy of a `SMFCoordinateSystemType` value. Uses accessors to get values to initialize the new immutable instance. If an instance is already immutable, it is returned as is.
      Parameters:
        `instance` - The instance to copy
      Returns:
        A copied immutable SMFCoordinateSystem instance

    - #### builder

          public static SMFCoordinateSystem.Builder builder()

      Creates a builder for `SMFCoordinateSystem`.

           SMFCoordinateSystem.builder()
              .setAxes(com.io7m.jcoords.core.conversion.CAxisSystem) // optional axes
              .setWindingOrder(com.io7m.smfj.core.SMFFaceWindingOrder) // optional windingOrder
              .build();

      Returns:
        A new SMFCoordinateSystem builder