Merge "Add conversion between @NamedDataSpace and ColorSpace.Named enums" into tm-dev
This commit is contained in:
@@ -14390,6 +14390,8 @@ package android.graphics {
|
|||||||
method @NonNull @Size(min=3) public abstract float[] fromXyz(@NonNull @Size(min=3) float[]);
|
method @NonNull @Size(min=3) public abstract float[] fromXyz(@NonNull @Size(min=3) float[]);
|
||||||
method @NonNull public static android.graphics.ColorSpace get(@NonNull android.graphics.ColorSpace.Named);
|
method @NonNull public static android.graphics.ColorSpace get(@NonNull android.graphics.ColorSpace.Named);
|
||||||
method @IntRange(from=1, to=4) public int getComponentCount();
|
method @IntRange(from=1, to=4) public int getComponentCount();
|
||||||
|
method public int getDataSpace();
|
||||||
|
method @Nullable public static android.graphics.ColorSpace getFromDataSpace(int);
|
||||||
method @IntRange(from=android.graphics.ColorSpace.MIN_ID, to=android.graphics.ColorSpace.MAX_ID) public int getId();
|
method @IntRange(from=android.graphics.ColorSpace.MIN_ID, to=android.graphics.ColorSpace.MAX_ID) public int getId();
|
||||||
method public abstract float getMaxValue(@IntRange(from=0, to=3) int);
|
method public abstract float getMaxValue(@IntRange(from=0, to=3) int);
|
||||||
method public abstract float getMinValue(@IntRange(from=0, to=3) int);
|
method public abstract float getMinValue(@IntRange(from=0, to=3) int);
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ import android.annotation.NonNull;
|
|||||||
import android.annotation.Nullable;
|
import android.annotation.Nullable;
|
||||||
import android.annotation.Size;
|
import android.annotation.Size;
|
||||||
import android.annotation.SuppressAutoDoc;
|
import android.annotation.SuppressAutoDoc;
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
|
import android.hardware.DataSpace;
|
||||||
|
import android.hardware.DataSpace.NamedDataSpace;
|
||||||
|
import android.util.SparseIntArray;
|
||||||
|
|
||||||
import libcore.util.NativeAllocationRegistry;
|
import libcore.util.NativeAllocationRegistry;
|
||||||
|
|
||||||
@@ -207,6 +211,7 @@ public abstract class ColorSpace {
|
|||||||
|
|
||||||
// See static initialization block next to #get(Named)
|
// See static initialization block next to #get(Named)
|
||||||
private static final ColorSpace[] sNamedColorSpaces = new ColorSpace[Named.values().length];
|
private static final ColorSpace[] sNamedColorSpaces = new ColorSpace[Named.values().length];
|
||||||
|
private static final SparseIntArray sDataToColorSpaces = new SparseIntArray();
|
||||||
|
|
||||||
@NonNull private final String mName;
|
@NonNull private final String mName;
|
||||||
@NonNull private final Model mModel;
|
@NonNull private final Model mModel;
|
||||||
@@ -1388,6 +1393,47 @@ public abstract class ColorSpace {
|
|||||||
return sNamedColorSpaces[index];
|
return sNamedColorSpaces[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a {@link ColorSpace} object using a {@link android.hardware.DataSpace DataSpace}
|
||||||
|
* value.
|
||||||
|
*
|
||||||
|
* <p>This function maps from a dataspace to a {@link Named} ColorSpace.
|
||||||
|
* If no {@link Named} ColorSpace object matching the {@code dataSpace} value can be created,
|
||||||
|
* {@code null} will return.</p>
|
||||||
|
*
|
||||||
|
* @param dataSpace The dataspace value
|
||||||
|
* @return the ColorSpace object or {@code null} if no matching colorspace can be found.
|
||||||
|
*/
|
||||||
|
@SuppressLint("MethodNameUnits")
|
||||||
|
@Nullable
|
||||||
|
public static ColorSpace getFromDataSpace(@NamedDataSpace int dataSpace) {
|
||||||
|
int index = sDataToColorSpaces.get(dataSpace, -1);
|
||||||
|
if (index != -1) {
|
||||||
|
return ColorSpace.get(index);
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieve the {@link android.hardware.DataSpace DataSpace} value from a {@link ColorSpace}
|
||||||
|
* object.
|
||||||
|
*
|
||||||
|
* <p>If this {@link ColorSpace} object has no matching {@code dataSpace} value,
|
||||||
|
* {@link android.hardware.DataSpace#DATASPACE_UNKNOWN DATASPACE_UNKNOWN} will return.</p>
|
||||||
|
*
|
||||||
|
* @return the dataspace value.
|
||||||
|
*/
|
||||||
|
@SuppressLint("MethodNameUnits")
|
||||||
|
public @NamedDataSpace int getDataSpace() {
|
||||||
|
int index = sDataToColorSpaces.indexOfValue(getId());
|
||||||
|
if (index != -1) {
|
||||||
|
return sDataToColorSpaces.keyAt(index);
|
||||||
|
} else {
|
||||||
|
return DataSpace.DATASPACE_UNKNOWN;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>Returns an instance of {@link ColorSpace} identified by the specified
|
* <p>Returns an instance of {@link ColorSpace} identified by the specified
|
||||||
* name. The list of names provided in the {@link Named} enum gives access
|
* name. The list of names provided in the {@link Named} enum gives access
|
||||||
@@ -1445,6 +1491,7 @@ public abstract class ColorSpace {
|
|||||||
SRGB_TRANSFER_PARAMETERS,
|
SRGB_TRANSFER_PARAMETERS,
|
||||||
Named.SRGB.ordinal()
|
Named.SRGB.ordinal()
|
||||||
);
|
);
|
||||||
|
sDataToColorSpaces.put(DataSpace.DATASPACE_SRGB, Named.SRGB.ordinal());
|
||||||
sNamedColorSpaces[Named.LINEAR_SRGB.ordinal()] = new ColorSpace.Rgb(
|
sNamedColorSpaces[Named.LINEAR_SRGB.ordinal()] = new ColorSpace.Rgb(
|
||||||
"sRGB IEC61966-2.1 (Linear)",
|
"sRGB IEC61966-2.1 (Linear)",
|
||||||
SRGB_PRIMARIES,
|
SRGB_PRIMARIES,
|
||||||
@@ -1453,6 +1500,7 @@ public abstract class ColorSpace {
|
|||||||
0.0f, 1.0f,
|
0.0f, 1.0f,
|
||||||
Named.LINEAR_SRGB.ordinal()
|
Named.LINEAR_SRGB.ordinal()
|
||||||
);
|
);
|
||||||
|
sDataToColorSpaces.put(DataSpace.DATASPACE_SRGB_LINEAR, Named.LINEAR_SRGB.ordinal());
|
||||||
sNamedColorSpaces[Named.EXTENDED_SRGB.ordinal()] = new ColorSpace.Rgb(
|
sNamedColorSpaces[Named.EXTENDED_SRGB.ordinal()] = new ColorSpace.Rgb(
|
||||||
"scRGB-nl IEC 61966-2-2:2003",
|
"scRGB-nl IEC 61966-2-2:2003",
|
||||||
SRGB_PRIMARIES,
|
SRGB_PRIMARIES,
|
||||||
@@ -1464,6 +1512,7 @@ public abstract class ColorSpace {
|
|||||||
SRGB_TRANSFER_PARAMETERS,
|
SRGB_TRANSFER_PARAMETERS,
|
||||||
Named.EXTENDED_SRGB.ordinal()
|
Named.EXTENDED_SRGB.ordinal()
|
||||||
);
|
);
|
||||||
|
sDataToColorSpaces.put(DataSpace.DATASPACE_SCRGB, Named.EXTENDED_SRGB.ordinal());
|
||||||
sNamedColorSpaces[Named.LINEAR_EXTENDED_SRGB.ordinal()] = new ColorSpace.Rgb(
|
sNamedColorSpaces[Named.LINEAR_EXTENDED_SRGB.ordinal()] = new ColorSpace.Rgb(
|
||||||
"scRGB IEC 61966-2-2:2003",
|
"scRGB IEC 61966-2-2:2003",
|
||||||
SRGB_PRIMARIES,
|
SRGB_PRIMARIES,
|
||||||
@@ -1472,6 +1521,8 @@ public abstract class ColorSpace {
|
|||||||
-0.5f, 7.499f,
|
-0.5f, 7.499f,
|
||||||
Named.LINEAR_EXTENDED_SRGB.ordinal()
|
Named.LINEAR_EXTENDED_SRGB.ordinal()
|
||||||
);
|
);
|
||||||
|
sDataToColorSpaces.put(
|
||||||
|
DataSpace.DATASPACE_SCRGB_LINEAR, Named.LINEAR_EXTENDED_SRGB.ordinal());
|
||||||
sNamedColorSpaces[Named.BT709.ordinal()] = new ColorSpace.Rgb(
|
sNamedColorSpaces[Named.BT709.ordinal()] = new ColorSpace.Rgb(
|
||||||
"Rec. ITU-R BT.709-5",
|
"Rec. ITU-R BT.709-5",
|
||||||
new float[] { 0.640f, 0.330f, 0.300f, 0.600f, 0.150f, 0.060f },
|
new float[] { 0.640f, 0.330f, 0.300f, 0.600f, 0.150f, 0.060f },
|
||||||
@@ -1480,6 +1531,7 @@ public abstract class ColorSpace {
|
|||||||
new Rgb.TransferParameters(1 / 1.099, 0.099 / 1.099, 1 / 4.5, 0.081, 1 / 0.45),
|
new Rgb.TransferParameters(1 / 1.099, 0.099 / 1.099, 1 / 4.5, 0.081, 1 / 0.45),
|
||||||
Named.BT709.ordinal()
|
Named.BT709.ordinal()
|
||||||
);
|
);
|
||||||
|
sDataToColorSpaces.put(DataSpace.DATASPACE_BT709, Named.BT709.ordinal());
|
||||||
sNamedColorSpaces[Named.BT2020.ordinal()] = new ColorSpace.Rgb(
|
sNamedColorSpaces[Named.BT2020.ordinal()] = new ColorSpace.Rgb(
|
||||||
"Rec. ITU-R BT.2020-1",
|
"Rec. ITU-R BT.2020-1",
|
||||||
new float[] { 0.708f, 0.292f, 0.170f, 0.797f, 0.131f, 0.046f },
|
new float[] { 0.708f, 0.292f, 0.170f, 0.797f, 0.131f, 0.046f },
|
||||||
@@ -1488,6 +1540,7 @@ public abstract class ColorSpace {
|
|||||||
new Rgb.TransferParameters(1 / 1.0993, 0.0993 / 1.0993, 1 / 4.5, 0.08145, 1 / 0.45),
|
new Rgb.TransferParameters(1 / 1.0993, 0.0993 / 1.0993, 1 / 4.5, 0.08145, 1 / 0.45),
|
||||||
Named.BT2020.ordinal()
|
Named.BT2020.ordinal()
|
||||||
);
|
);
|
||||||
|
sDataToColorSpaces.put(DataSpace.DATASPACE_BT2020, Named.BT2020.ordinal());
|
||||||
sNamedColorSpaces[Named.DCI_P3.ordinal()] = new ColorSpace.Rgb(
|
sNamedColorSpaces[Named.DCI_P3.ordinal()] = new ColorSpace.Rgb(
|
||||||
"SMPTE RP 431-2-2007 DCI (P3)",
|
"SMPTE RP 431-2-2007 DCI (P3)",
|
||||||
new float[] { 0.680f, 0.320f, 0.265f, 0.690f, 0.150f, 0.060f },
|
new float[] { 0.680f, 0.320f, 0.265f, 0.690f, 0.150f, 0.060f },
|
||||||
@@ -1496,6 +1549,7 @@ public abstract class ColorSpace {
|
|||||||
0.0f, 1.0f,
|
0.0f, 1.0f,
|
||||||
Named.DCI_P3.ordinal()
|
Named.DCI_P3.ordinal()
|
||||||
);
|
);
|
||||||
|
sDataToColorSpaces.put(DataSpace.DATASPACE_DCI_P3, Named.DCI_P3.ordinal());
|
||||||
sNamedColorSpaces[Named.DISPLAY_P3.ordinal()] = new ColorSpace.Rgb(
|
sNamedColorSpaces[Named.DISPLAY_P3.ordinal()] = new ColorSpace.Rgb(
|
||||||
"Display P3",
|
"Display P3",
|
||||||
new float[] { 0.680f, 0.320f, 0.265f, 0.690f, 0.150f, 0.060f },
|
new float[] { 0.680f, 0.320f, 0.265f, 0.690f, 0.150f, 0.060f },
|
||||||
@@ -1504,6 +1558,7 @@ public abstract class ColorSpace {
|
|||||||
SRGB_TRANSFER_PARAMETERS,
|
SRGB_TRANSFER_PARAMETERS,
|
||||||
Named.DISPLAY_P3.ordinal()
|
Named.DISPLAY_P3.ordinal()
|
||||||
);
|
);
|
||||||
|
sDataToColorSpaces.put(DataSpace.DATASPACE_DISPLAY_P3, Named.DISPLAY_P3.ordinal());
|
||||||
sNamedColorSpaces[Named.NTSC_1953.ordinal()] = new ColorSpace.Rgb(
|
sNamedColorSpaces[Named.NTSC_1953.ordinal()] = new ColorSpace.Rgb(
|
||||||
"NTSC (1953)",
|
"NTSC (1953)",
|
||||||
NTSC_1953_PRIMARIES,
|
NTSC_1953_PRIMARIES,
|
||||||
@@ -1528,6 +1583,7 @@ public abstract class ColorSpace {
|
|||||||
0.0f, 1.0f,
|
0.0f, 1.0f,
|
||||||
Named.ADOBE_RGB.ordinal()
|
Named.ADOBE_RGB.ordinal()
|
||||||
);
|
);
|
||||||
|
sDataToColorSpaces.put(DataSpace.DATASPACE_ADOBE_RGB, Named.ADOBE_RGB.ordinal());
|
||||||
sNamedColorSpaces[Named.PRO_PHOTO_RGB.ordinal()] = new ColorSpace.Rgb(
|
sNamedColorSpaces[Named.PRO_PHOTO_RGB.ordinal()] = new ColorSpace.Rgb(
|
||||||
"ROMM RGB ISO 22028-2:2013",
|
"ROMM RGB ISO 22028-2:2013",
|
||||||
new float[] { 0.7347f, 0.2653f, 0.1596f, 0.8404f, 0.0366f, 0.0001f },
|
new float[] { 0.7347f, 0.2653f, 0.1596f, 0.8404f, 0.0366f, 0.0001f },
|
||||||
|
|||||||
Reference in New Issue
Block a user