Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 68bd5fdd authored by Romain Guy's avatar Romain Guy
Browse files

Introduce android.graphics.ColorSpace

This class can be used to define color spaces. A color space has a color model
and a profile connection space (CIE XYZ D50). This implementation can be used
to query various properties of RGB color spaces or perform conversions between
various color spaces (RGB, XYZ and Lab).

Refer to the documentation for more details.

Test: cts-tradefed run singleCommand cts-dev --module CtsGraphicsTestCases --test android.graphics.cts.ColorSpaceTest
Bug: 32984164
Change-Id: Ie2117c1212c1375a7d403d3c1afaf73d7c2e0b47
parent 51295748
Loading
Loading
Loading
Loading
+112 −0
Original line number Original line Diff line number Diff line
@@ -11972,6 +11972,118 @@ package android.graphics {
    ctor public ColorMatrixColorFilter(float[]);
    ctor public ColorMatrixColorFilter(float[]);
  }
  }
  public abstract class ColorSpace {
    method public static android.graphics.ColorSpace adapt(android.graphics.ColorSpace, float[]);
    method public static android.graphics.ColorSpace adapt(android.graphics.ColorSpace, float[], android.graphics.ColorSpace.Adaptation);
    method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace);
    method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent);
    method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace);
    method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent);
    method public float[] fromXyz(float, float, float);
    method public abstract float[] fromXyz(float[]);
    method public static android.graphics.ColorSpace get(android.graphics.ColorSpace.Named);
    method public int getComponentCount();
    method public int getId();
    method public abstract float getMaxValue(int);
    method public abstract float getMinValue(int);
    method public android.graphics.ColorSpace.Model getModel();
    method public java.lang.String getName();
    method public boolean isSrgb();
    method public abstract boolean isWideGamut();
    method public float[] toXyz(float, float, float);
    method public abstract float[] toXyz(float[]);
    field public static final float[] ILLUMINANT_A;
    field public static final float[] ILLUMINANT_B;
    field public static final float[] ILLUMINANT_C;
    field public static final float[] ILLUMINANT_D50;
    field public static final float[] ILLUMINANT_D55;
    field public static final float[] ILLUMINANT_D60;
    field public static final float[] ILLUMINANT_D65;
    field public static final float[] ILLUMINANT_D75;
    field public static final float[] ILLUMINANT_E;
    field public static final int MAX_ID = 64; // 0x40
    field public static final int MIN_ID = -1; // 0xffffffff
  }
  public static final class ColorSpace.Adaptation extends java.lang.Enum {
    method public static android.graphics.ColorSpace.Adaptation valueOf(java.lang.String);
    method public static final android.graphics.ColorSpace.Adaptation[] values();
    enum_constant public static final android.graphics.ColorSpace.Adaptation BRADFORD;
    enum_constant public static final android.graphics.ColorSpace.Adaptation VON_KRIES;
  }
  public static class ColorSpace.Connector {
    method public android.graphics.ColorSpace getDestination();
    method public android.graphics.ColorSpace.RenderIntent getIntent();
    method public android.graphics.ColorSpace getSource();
    method public float[] transform(float, float, float);
    method public float[] transform(float[]);
  }
  public static final class ColorSpace.Model extends java.lang.Enum {
    method public int getComponentCount();
    method public static android.graphics.ColorSpace.Model valueOf(java.lang.String);
    method public static final android.graphics.ColorSpace.Model[] values();
    enum_constant public static final android.graphics.ColorSpace.Model CMYK;
    enum_constant public static final android.graphics.ColorSpace.Model LAB;
    enum_constant public static final android.graphics.ColorSpace.Model RGB;
    enum_constant public static final android.graphics.ColorSpace.Model XYZ;
  }
  public static final class ColorSpace.Named extends java.lang.Enum {
    method public static android.graphics.ColorSpace.Named valueOf(java.lang.String);
    method public static final android.graphics.ColorSpace.Named[] values();
    enum_constant public static final android.graphics.ColorSpace.Named ACES;
    enum_constant public static final android.graphics.ColorSpace.Named ACESCG;
    enum_constant public static final android.graphics.ColorSpace.Named ADOBE_RGB;
    enum_constant public static final android.graphics.ColorSpace.Named BT2020;
    enum_constant public static final android.graphics.ColorSpace.Named BT709;
    enum_constant public static final android.graphics.ColorSpace.Named CIE_LAB;
    enum_constant public static final android.graphics.ColorSpace.Named CIE_XYZ;
    enum_constant public static final android.graphics.ColorSpace.Named DCI_P3;
    enum_constant public static final android.graphics.ColorSpace.Named DISPLAY_P3;
    enum_constant public static final android.graphics.ColorSpace.Named EXTENDED_SRGB;
    enum_constant public static final android.graphics.ColorSpace.Named LINEAR_EXTENDED_SRGB;
    enum_constant public static final android.graphics.ColorSpace.Named LINEAR_SRGB;
    enum_constant public static final android.graphics.ColorSpace.Named NTSC_1953;
    enum_constant public static final android.graphics.ColorSpace.Named PRO_PHOTO_RGB;
    enum_constant public static final android.graphics.ColorSpace.Named SMPTE_C;
    enum_constant public static final android.graphics.ColorSpace.Named SRGB;
  }
  public static final class ColorSpace.RenderIntent extends java.lang.Enum {
    method public static android.graphics.ColorSpace.RenderIntent valueOf(java.lang.String);
    method public static final android.graphics.ColorSpace.RenderIntent[] values();
    enum_constant public static final android.graphics.ColorSpace.RenderIntent ABSOLUTE;
    enum_constant public static final android.graphics.ColorSpace.RenderIntent PERCEPTUAL;
    enum_constant public static final android.graphics.ColorSpace.RenderIntent RELATIVE;
    enum_constant public static final android.graphics.ColorSpace.RenderIntent SATURATION;
  }
  public static class ColorSpace.Rgb extends android.graphics.ColorSpace {
    ctor public ColorSpace.Rgb(java.lang.String, float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator);
    ctor public ColorSpace.Rgb(java.lang.String, float[], float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator, float, float);
    method public float[] fromLinear(float, float, float);
    method public float[] fromLinear(float[]);
    method public float[] fromXyz(float[]);
    method public java.util.function.DoubleUnaryOperator getEotf();
    method public float[] getInverseTransform(float[]);
    method public float[] getInverseTransform();
    method public float getMaxValue(int);
    method public float getMinValue(int);
    method public java.util.function.DoubleUnaryOperator getOetf();
    method public float[] getPrimaries(float[]);
    method public float[] getPrimaries();
    method public float[] getTransform(float[]);
    method public float[] getTransform();
    method public float[] getWhitePoint(float[]);
    method public float[] getWhitePoint();
    method public boolean isWideGamut();
    method public float[] toLinear(float, float, float);
    method public float[] toLinear(float[]);
    method public float[] toXyz(float[]);
  }
  public class ComposePathEffect extends android.graphics.PathEffect {
  public class ComposePathEffect extends android.graphics.PathEffect {
    ctor public ComposePathEffect(android.graphics.PathEffect, android.graphics.PathEffect);
    ctor public ComposePathEffect(android.graphics.PathEffect, android.graphics.PathEffect);
  }
  }
+112 −0
Original line number Original line Diff line number Diff line
@@ -12455,6 +12455,118 @@ package android.graphics {
    ctor public ColorMatrixColorFilter(float[]);
    ctor public ColorMatrixColorFilter(float[]);
  }
  }
  public abstract class ColorSpace {
    method public static android.graphics.ColorSpace adapt(android.graphics.ColorSpace, float[]);
    method public static android.graphics.ColorSpace adapt(android.graphics.ColorSpace, float[], android.graphics.ColorSpace.Adaptation);
    method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace);
    method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent);
    method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace);
    method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent);
    method public float[] fromXyz(float, float, float);
    method public abstract float[] fromXyz(float[]);
    method public static android.graphics.ColorSpace get(android.graphics.ColorSpace.Named);
    method public int getComponentCount();
    method public int getId();
    method public abstract float getMaxValue(int);
    method public abstract float getMinValue(int);
    method public android.graphics.ColorSpace.Model getModel();
    method public java.lang.String getName();
    method public boolean isSrgb();
    method public abstract boolean isWideGamut();
    method public float[] toXyz(float, float, float);
    method public abstract float[] toXyz(float[]);
    field public static final float[] ILLUMINANT_A;
    field public static final float[] ILLUMINANT_B;
    field public static final float[] ILLUMINANT_C;
    field public static final float[] ILLUMINANT_D50;
    field public static final float[] ILLUMINANT_D55;
    field public static final float[] ILLUMINANT_D60;
    field public static final float[] ILLUMINANT_D65;
    field public static final float[] ILLUMINANT_D75;
    field public static final float[] ILLUMINANT_E;
    field public static final int MAX_ID = 64; // 0x40
    field public static final int MIN_ID = -1; // 0xffffffff
  }
  public static final class ColorSpace.Adaptation extends java.lang.Enum {
    method public static android.graphics.ColorSpace.Adaptation valueOf(java.lang.String);
    method public static final android.graphics.ColorSpace.Adaptation[] values();
    enum_constant public static final android.graphics.ColorSpace.Adaptation BRADFORD;
    enum_constant public static final android.graphics.ColorSpace.Adaptation VON_KRIES;
  }
  public static class ColorSpace.Connector {
    method public android.graphics.ColorSpace getDestination();
    method public android.graphics.ColorSpace.RenderIntent getIntent();
    method public android.graphics.ColorSpace getSource();
    method public float[] transform(float, float, float);
    method public float[] transform(float[]);
  }
  public static final class ColorSpace.Model extends java.lang.Enum {
    method public int getComponentCount();
    method public static android.graphics.ColorSpace.Model valueOf(java.lang.String);
    method public static final android.graphics.ColorSpace.Model[] values();
    enum_constant public static final android.graphics.ColorSpace.Model CMYK;
    enum_constant public static final android.graphics.ColorSpace.Model LAB;
    enum_constant public static final android.graphics.ColorSpace.Model RGB;
    enum_constant public static final android.graphics.ColorSpace.Model XYZ;
  }
  public static final class ColorSpace.Named extends java.lang.Enum {
    method public static android.graphics.ColorSpace.Named valueOf(java.lang.String);
    method public static final android.graphics.ColorSpace.Named[] values();
    enum_constant public static final android.graphics.ColorSpace.Named ACES;
    enum_constant public static final android.graphics.ColorSpace.Named ACESCG;
    enum_constant public static final android.graphics.ColorSpace.Named ADOBE_RGB;
    enum_constant public static final android.graphics.ColorSpace.Named BT2020;
    enum_constant public static final android.graphics.ColorSpace.Named BT709;
    enum_constant public static final android.graphics.ColorSpace.Named CIE_LAB;
    enum_constant public static final android.graphics.ColorSpace.Named CIE_XYZ;
    enum_constant public static final android.graphics.ColorSpace.Named DCI_P3;
    enum_constant public static final android.graphics.ColorSpace.Named DISPLAY_P3;
    enum_constant public static final android.graphics.ColorSpace.Named EXTENDED_SRGB;
    enum_constant public static final android.graphics.ColorSpace.Named LINEAR_EXTENDED_SRGB;
    enum_constant public static final android.graphics.ColorSpace.Named LINEAR_SRGB;
    enum_constant public static final android.graphics.ColorSpace.Named NTSC_1953;
    enum_constant public static final android.graphics.ColorSpace.Named PRO_PHOTO_RGB;
    enum_constant public static final android.graphics.ColorSpace.Named SMPTE_C;
    enum_constant public static final android.graphics.ColorSpace.Named SRGB;
  }
  public static final class ColorSpace.RenderIntent extends java.lang.Enum {
    method public static android.graphics.ColorSpace.RenderIntent valueOf(java.lang.String);
    method public static final android.graphics.ColorSpace.RenderIntent[] values();
    enum_constant public static final android.graphics.ColorSpace.RenderIntent ABSOLUTE;
    enum_constant public static final android.graphics.ColorSpace.RenderIntent PERCEPTUAL;
    enum_constant public static final android.graphics.ColorSpace.RenderIntent RELATIVE;
    enum_constant public static final android.graphics.ColorSpace.RenderIntent SATURATION;
  }
  public static class ColorSpace.Rgb extends android.graphics.ColorSpace {
    ctor public ColorSpace.Rgb(java.lang.String, float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator);
    ctor public ColorSpace.Rgb(java.lang.String, float[], float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator, float, float);
    method public float[] fromLinear(float, float, float);
    method public float[] fromLinear(float[]);
    method public float[] fromXyz(float[]);
    method public java.util.function.DoubleUnaryOperator getEotf();
    method public float[] getInverseTransform(float[]);
    method public float[] getInverseTransform();
    method public float getMaxValue(int);
    method public float getMinValue(int);
    method public java.util.function.DoubleUnaryOperator getOetf();
    method public float[] getPrimaries(float[]);
    method public float[] getPrimaries();
    method public float[] getTransform(float[]);
    method public float[] getTransform();
    method public float[] getWhitePoint(float[]);
    method public float[] getWhitePoint();
    method public boolean isWideGamut();
    method public float[] toLinear(float, float, float);
    method public float[] toLinear(float[]);
    method public float[] toXyz(float[]);
  }
  public class ComposePathEffect extends android.graphics.PathEffect {
  public class ComposePathEffect extends android.graphics.PathEffect {
    ctor public ComposePathEffect(android.graphics.PathEffect, android.graphics.PathEffect);
    ctor public ComposePathEffect(android.graphics.PathEffect, android.graphics.PathEffect);
  }
  }
+112 −0
Original line number Original line Diff line number Diff line
@@ -11997,6 +11997,118 @@ package android.graphics {
    ctor public ColorMatrixColorFilter(float[]);
    ctor public ColorMatrixColorFilter(float[]);
  }
  }
  public abstract class ColorSpace {
    method public static android.graphics.ColorSpace adapt(android.graphics.ColorSpace, float[]);
    method public static android.graphics.ColorSpace adapt(android.graphics.ColorSpace, float[], android.graphics.ColorSpace.Adaptation);
    method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace);
    method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent);
    method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace);
    method public static android.graphics.ColorSpace.Connector connect(android.graphics.ColorSpace, android.graphics.ColorSpace.RenderIntent);
    method public float[] fromXyz(float, float, float);
    method public abstract float[] fromXyz(float[]);
    method public static android.graphics.ColorSpace get(android.graphics.ColorSpace.Named);
    method public int getComponentCount();
    method public int getId();
    method public abstract float getMaxValue(int);
    method public abstract float getMinValue(int);
    method public android.graphics.ColorSpace.Model getModel();
    method public java.lang.String getName();
    method public boolean isSrgb();
    method public abstract boolean isWideGamut();
    method public float[] toXyz(float, float, float);
    method public abstract float[] toXyz(float[]);
    field public static final float[] ILLUMINANT_A;
    field public static final float[] ILLUMINANT_B;
    field public static final float[] ILLUMINANT_C;
    field public static final float[] ILLUMINANT_D50;
    field public static final float[] ILLUMINANT_D55;
    field public static final float[] ILLUMINANT_D60;
    field public static final float[] ILLUMINANT_D65;
    field public static final float[] ILLUMINANT_D75;
    field public static final float[] ILLUMINANT_E;
    field public static final int MAX_ID = 64; // 0x40
    field public static final int MIN_ID = -1; // 0xffffffff
  }
  public static final class ColorSpace.Adaptation extends java.lang.Enum {
    method public static android.graphics.ColorSpace.Adaptation valueOf(java.lang.String);
    method public static final android.graphics.ColorSpace.Adaptation[] values();
    enum_constant public static final android.graphics.ColorSpace.Adaptation BRADFORD;
    enum_constant public static final android.graphics.ColorSpace.Adaptation VON_KRIES;
  }
  public static class ColorSpace.Connector {
    method public android.graphics.ColorSpace getDestination();
    method public android.graphics.ColorSpace.RenderIntent getIntent();
    method public android.graphics.ColorSpace getSource();
    method public float[] transform(float, float, float);
    method public float[] transform(float[]);
  }
  public static final class ColorSpace.Model extends java.lang.Enum {
    method public int getComponentCount();
    method public static android.graphics.ColorSpace.Model valueOf(java.lang.String);
    method public static final android.graphics.ColorSpace.Model[] values();
    enum_constant public static final android.graphics.ColorSpace.Model CMYK;
    enum_constant public static final android.graphics.ColorSpace.Model LAB;
    enum_constant public static final android.graphics.ColorSpace.Model RGB;
    enum_constant public static final android.graphics.ColorSpace.Model XYZ;
  }
  public static final class ColorSpace.Named extends java.lang.Enum {
    method public static android.graphics.ColorSpace.Named valueOf(java.lang.String);
    method public static final android.graphics.ColorSpace.Named[] values();
    enum_constant public static final android.graphics.ColorSpace.Named ACES;
    enum_constant public static final android.graphics.ColorSpace.Named ACESCG;
    enum_constant public static final android.graphics.ColorSpace.Named ADOBE_RGB;
    enum_constant public static final android.graphics.ColorSpace.Named BT2020;
    enum_constant public static final android.graphics.ColorSpace.Named BT709;
    enum_constant public static final android.graphics.ColorSpace.Named CIE_LAB;
    enum_constant public static final android.graphics.ColorSpace.Named CIE_XYZ;
    enum_constant public static final android.graphics.ColorSpace.Named DCI_P3;
    enum_constant public static final android.graphics.ColorSpace.Named DISPLAY_P3;
    enum_constant public static final android.graphics.ColorSpace.Named EXTENDED_SRGB;
    enum_constant public static final android.graphics.ColorSpace.Named LINEAR_EXTENDED_SRGB;
    enum_constant public static final android.graphics.ColorSpace.Named LINEAR_SRGB;
    enum_constant public static final android.graphics.ColorSpace.Named NTSC_1953;
    enum_constant public static final android.graphics.ColorSpace.Named PRO_PHOTO_RGB;
    enum_constant public static final android.graphics.ColorSpace.Named SMPTE_C;
    enum_constant public static final android.graphics.ColorSpace.Named SRGB;
  }
  public static final class ColorSpace.RenderIntent extends java.lang.Enum {
    method public static android.graphics.ColorSpace.RenderIntent valueOf(java.lang.String);
    method public static final android.graphics.ColorSpace.RenderIntent[] values();
    enum_constant public static final android.graphics.ColorSpace.RenderIntent ABSOLUTE;
    enum_constant public static final android.graphics.ColorSpace.RenderIntent PERCEPTUAL;
    enum_constant public static final android.graphics.ColorSpace.RenderIntent RELATIVE;
    enum_constant public static final android.graphics.ColorSpace.RenderIntent SATURATION;
  }
  public static class ColorSpace.Rgb extends android.graphics.ColorSpace {
    ctor public ColorSpace.Rgb(java.lang.String, float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator);
    ctor public ColorSpace.Rgb(java.lang.String, float[], float[], java.util.function.DoubleUnaryOperator, java.util.function.DoubleUnaryOperator, float, float);
    method public float[] fromLinear(float, float, float);
    method public float[] fromLinear(float[]);
    method public float[] fromXyz(float[]);
    method public java.util.function.DoubleUnaryOperator getEotf();
    method public float[] getInverseTransform(float[]);
    method public float[] getInverseTransform();
    method public float getMaxValue(int);
    method public float getMinValue(int);
    method public java.util.function.DoubleUnaryOperator getOetf();
    method public float[] getPrimaries(float[]);
    method public float[] getPrimaries();
    method public float[] getTransform(float[]);
    method public float[] getTransform();
    method public float[] getWhitePoint(float[]);
    method public float[] getWhitePoint();
    method public boolean isWideGamut();
    method public float[] toLinear(float, float, float);
    method public float[] toLinear(float[]);
    method public float[] toXyz(float[]);
  }
  public class ComposePathEffect extends android.graphics.PathEffect {
  public class ComposePathEffect extends android.graphics.PathEffect {
    ctor public ComposePathEffect(android.graphics.PathEffect, android.graphics.PathEffect);
    ctor public ComposePathEffect(android.graphics.PathEffect, android.graphics.PathEffect);
  }
  }
+48 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2016 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.annotation;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.LOCAL_VARIABLE;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.SOURCE;

/**
 * <p>Denotes that the annotated element represents a packed color
 * long. If applied to a long array, every element in the array
 * represents a color long. For more information on how colors
 * are packed in a long, please refer to the documentation of
 * the {@link android.graphics.Color} class.</p>
 *
 * <p>Example:</p>
 *
 * <pre>{@code
 *  public void setFillColor(@ColorLong long color);
 * }</pre>
 *
 * @see android.graphics.Color
 *
 * @hide
 */
@Retention(SOURCE)
@Target({PARAMETER,METHOD,LOCAL_VARIABLE,FIELD})
public @interface ColorLong {
}
+3 −3
Original line number Original line Diff line number Diff line
@@ -543,9 +543,9 @@ public final class Half {


    /**
    /**
     * <p>Converts the specified half-precision float value into a
     * <p>Converts the specified half-precision float value into a
     * single-precision float value with the following special cases:</p>
     * single-precision float value. The following special cases are handled:</p>
     * <ul>
     * <ul>
     * <li>If the input is {@link #NaN}, the returned* value is {@link Float#NaN}</li>
     * <li>If the input is {@link #NaN}, the returned value is {@link Float#NaN}</li>
     * <li>If the input is {@link #POSITIVE_INFINITY} or
     * <li>If the input is {@link #POSITIVE_INFINITY} or
     * {@link #NEGATIVE_INFINITY}, the returned value is respectively
     * {@link #NEGATIVE_INFINITY}, the returned value is respectively
     * {@link Float#POSITIVE_INFINITY} or {@link Float#NEGATIVE_INFINITY}</li>
     * {@link Float#POSITIVE_INFINITY} or {@link Float#NEGATIVE_INFINITY}</li>
@@ -587,7 +587,7 @@ public final class Half {


    /**
    /**
     * <p>Converts the specified single-precision float value into a
     * <p>Converts the specified single-precision float value into a
     * half-precision float value with the following special cases:</p>
     * half-precision float value. The following special cases are handled:</p>
     * <ul>
     * <ul>
     * <li>If the input is NaN (see {@link Float#isNaN(float)}), the returned
     * <li>If the input is NaN (see {@link Float#isNaN(float)}), the returned
     * value is {@link #NaN}</li>
     * value is {@link #NaN}</li>
Loading