Loading core/jni/android/graphics/Bitmap.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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 }, }; Loading graphics/java/android/graphics/Bitmap.java +3 −0 Original line number Diff line number Diff line Loading @@ -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]; Loading Loading @@ -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); } Loading
core/jni/android/graphics/Bitmap.cpp +10 −0 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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 }, }; Loading
graphics/java/android/graphics/Bitmap.java +3 −0 Original line number Diff line number Diff line Loading @@ -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]; Loading Loading @@ -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); }