Package ej.mwt.style.outline.border

## Class FlexibleRectangularMulticoloredBorder

- java.lang.Object
- - ej.mwt.style.outline.FlexibleOutline
  - - ej.mwt.style.outline.border.FlexibleRectangularMulticoloredBorder

- All Implemented Interfaces:
    `Outline`

      public class FlexibleRectangularMulticoloredBorder
      extends FlexibleOutline

  Represents and draw a rectangular border with different thicknesses and colors.

  Each edge color can be customized.

  The thicknesses are stored as a `char` for heap optimization and therefore cannot exceed `65535`.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `FlexibleRectangularMulticoloredBorder​(int top, int colorTop, int right, int colorRight, int bottom, int colorBottom, int left, int colorLeft)` | Creates a flexible rectangular border specifying its edges thickness and color.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `apply​(GraphicsContext g, Size size)` | Applies the outline on a graphics context.
    `boolean` | `equals​(Object obj)` | Indicates whether some other object is "equal to" this one.
    `int` | `getColorBottom()` | Gets the bottom color.
    `int` | `getColorLeft()` | Gets the left color.
    `int` | `getColorRight()` | Gets the right color.
    `int` | `getColorTop()` | Gets the top color.
    `int` | `hashCode()` | Returns a hash code value for the object.

    - ### Methods inherited from class ej.mwt.style.outline.FlexibleOutline

      `apply, getBottom, getLeft, getRight, getTop`

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

      `clone, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### FlexibleRectangularMulticoloredBorder

          public FlexibleRectangularMulticoloredBorder​(int top,
                                                       int colorTop,
                                                       int right,
                                                       int colorRight,
                                                       int bottom,
                                                       int colorBottom,
                                                       int left,
                                                       int colorLeft)

      Creates a flexible rectangular border specifying its edges thickness and color.

      The given thickness values are clamped between `0` and `Character.MAX_VALUE`.

      Parameters:
        `top` - the top thickness.
        `colorTop` - the top color.
        `right` - the right thickness.
        `colorRight` - the right color.
        `bottom` - the bottom thickness.
        `colorBottom` - the bottom color.
        `left` - the left thickness.
        `colorLeft` - the left color.

  - ### Method Detail

    - #### getColorTop

          public int getColorTop()

      Gets the top color.
      Returns:
        the top color.

    - #### getColorBottom

          public int getColorBottom()

      Gets the bottom color.
      Returns:
        the bottom color.

    - #### getColorLeft

          public int getColorLeft()

      Gets the left color.
      Returns:
        the left color.

    - #### getColorRight

          public int getColorRight()

      Gets the right color.
      Returns:
        the right color.

    - #### apply

          public void apply​(GraphicsContext g,
                            Size size)

      Description copied from interface: `Outline`
      Applies the outline on a graphics context.
      Specified by:
        `apply` in interface `Outline`
      Overrides:
        `apply` in class `FlexibleOutline`
      Parameters:
        `g` - the graphics context.
        `size` - the size to apply on.

    - #### equals

          public boolean equals​(@Nullable
                                Object obj)

      Description copied from class: `Object`
      Indicates whether some other object is "equal to" this one.

      The `equals` method implements an equivalence relation on non-null object references:

      - It is reflexive: for any non-null reference value `x`, `x.equals(x)` should return `true`.
      - It is symmetric: for any non-null reference values `x` and `y`, `x.equals(y)` should return `true` if and only if `y.equals(x)` returns `true`.
      - It is transitive: for any non-null reference values `x`, `y`, and `z`, if `x.equals(y)` returns `true` and `y.equals(z)` returns `true`, then `x.equals(z)` should return `true`.
      - It is consistent: for any non-null reference values `x` and `y`, multiple invocations of `x.equals(y)` consistently return `true` or consistently return `false`, provided no information used in `equals` comparisons on the objects is modified.
      - For any non-null reference value `x`, `x.equals(null)` should return `false`.

      The `equals` method for class `Object` implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values `x` and `y`, this method returns `true` if and only if `x` and `y` refer to the same object (`x == y` has the value `true`).

      Note that it is generally necessary to override the `hashCode` method whenever this method is overridden, so as to maintain the general contract for the `hashCode` method, which states that equal objects must have equal hash codes.

      Specified by:
        `equals` in interface `Outline`
      Overrides:
        `equals` in class `FlexibleOutline`
      Parameters:
        `obj` - the reference object with which to compare.
      Returns:
        `true` if this object is the same as the obj argument; `false` otherwise.
      See Also:
        `Object.hashCode()`, `HashMap`

    - #### hashCode

          public int hashCode()

      Description copied from class: `Object`
      Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by `HashMap`.

      The general contract of `hashCode` is:

      - Whenever it is invoked on the same object more than once during an execution of a Java application, the `hashCode` method must consistently return the same integer, provided no information used in `equals` comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
      - If two objects are equal according to the `equals(Object)` method, then calling the `hashCode` method on each of the two objects must produce the same integer result.
      - It is not required that if two objects are unequal according to the `Object.equals(java.lang.Object)` method, then calling the `hashCode` method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.

      As much as is reasonably practical, the hashCode method defined by class `Object` does return distinct integers for distinct objects. (This is typically implemented by converting the internal address of the object into an integer, but this implementation technique is not required by the JavaTM programming language.)

      Specified by:
        `hashCode` in interface `Outline`
      Overrides:
        `hashCode` in class `FlexibleOutline`
      Returns:
        a hash code value for this object.
      See Also:
        `Object.equals(java.lang.Object)`, `System.identityHashCode(java.lang.Object)`