Merge "Work around incorrect Skia gamma" into pi-dev
am: c45c2d65a5
Change-Id: Id3e644dfa906600d664454cc96af242cf7bf2ff0
This commit is contained in:
@@ -1269,6 +1269,15 @@ static jboolean Bitmap_isSRGB(JNIEnv* env, jobject, jlong bitmapHandle) {
|
||||
return GraphicsJNI::isColorSpaceSRGB(colorSpace);
|
||||
}
|
||||
|
||||
static jboolean Bitmap_isSRGBLinear(JNIEnv* env, jobject, jlong bitmapHandle) {
|
||||
LocalScopedBitmap bitmapHolder(bitmapHandle);
|
||||
if (!bitmapHolder.valid()) return JNI_FALSE;
|
||||
|
||||
SkColorSpace* colorSpace = bitmapHolder->info().colorSpace();
|
||||
sk_sp<SkColorSpace> srgbLinear = SkColorSpace::MakeSRGBLinear();
|
||||
return colorSpace == srgbLinear.get() ? JNI_TRUE : JNI_FALSE;
|
||||
}
|
||||
|
||||
static jboolean Bitmap_getColorSpace(JNIEnv* env, jobject, jlong bitmapHandle,
|
||||
jfloatArray xyzArray, jfloatArray paramsArray) {
|
||||
|
||||
@@ -1614,6 +1623,7 @@ static const JNINativeMethod gBitmapMethods[] = {
|
||||
(void*) Bitmap_createGraphicBufferHandle },
|
||||
{ "nativeGetColorSpace", "(J[F[F)Z", (void*)Bitmap_getColorSpace },
|
||||
{ "nativeIsSRGB", "(J)Z", (void*)Bitmap_isSRGB },
|
||||
{ "nativeIsSRGBLinear", "(J)Z", (void*)Bitmap_isSRGBLinear},
|
||||
{ "nativeCopyColorSpace", "(JJ)V",
|
||||
(void*)Bitmap_copyColorSpace },
|
||||
};
|
||||
|
||||
@@ -1669,6 +1669,8 @@ public final class Bitmap implements Parcelable {
|
||||
if (mColorSpace == null) {
|
||||
if (nativeIsSRGB(mNativePtr)) {
|
||||
mColorSpace = ColorSpace.get(ColorSpace.Named.SRGB);
|
||||
} else if (getConfig() == Config.HARDWARE && nativeIsSRGBLinear(mNativePtr)) {
|
||||
mColorSpace = ColorSpace.get(ColorSpace.Named.LINEAR_EXTENDED_SRGB);
|
||||
} else {
|
||||
float[] xyz = new float[9];
|
||||
float[] params = new float[7];
|
||||
@@ -2092,5 +2094,6 @@ public final class Bitmap implements Parcelable {
|
||||
private static native GraphicBuffer nativeCreateGraphicBufferHandle(long nativeBitmap);
|
||||
private static native boolean nativeGetColorSpace(long nativePtr, float[] xyz, float[] params);
|
||||
private static native boolean nativeIsSRGB(long nativePtr);
|
||||
private static native boolean nativeIsSRGBLinear(long nativePtr);
|
||||
private static native void nativeCopyColorSpace(long srcBitmap, long dstBitmap);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user