Loading cmds/screencap/screencap.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -81,8 +81,7 @@ static sk_sp<SkColorSpace> dataSpaceToColorSpace(ui::Dataspace d) case ui::Dataspace::V0_SRGB: return SkColorSpace::MakeSRGB(); case ui::Dataspace::DISPLAY_P3: return SkColorSpace::MakeRGB( SkColorSpace::kSRGB_RenderTargetGamma, SkColorSpace::kDCIP3_D65_Gamut); return SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kDCIP3); default: return nullptr; } Loading core/jni/android/graphics/Bitmap.cpp +23 −25 Original line number Diff line number Diff line Loading @@ -8,7 +8,6 @@ #include "SkImageInfo.h" #include "SkColor.h" #include "SkColorSpace.h" #include "SkMatrix44.h" #include "GraphicsJNI.h" #include "SkStream.h" Loading Loading @@ -356,8 +355,8 @@ static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, if (xyzD50 == nullptr || transferParameters == nullptr) { colorSpace = SkColorSpace::MakeSRGB(); } else { SkColorSpaceTransferFn p = GraphicsJNI::getNativeTransferParameters(env, transferParameters); SkMatrix44 xyzMatrix = GraphicsJNI::getNativeXYZMatrix(env, xyzD50); skcms_TransferFunction p = GraphicsJNI::getNativeTransferParameters(env, transferParameters); skcms_Matrix3x3 xyzMatrix = GraphicsJNI::getNativeXYZMatrix(env, xyzD50); colorSpace = SkColorSpace::MakeRGB(p, xyzMatrix); } Loading Loading @@ -549,8 +548,7 @@ static jboolean Bitmap_compress(JNIEnv* env, jobject clazz, jlong bitmapHandle, if (skbitmap.colorType() == kRGBA_F16_SkColorType) { // Convert to P3 before encoding. This matches SkAndroidCodec::computeOutputColorSpace // for wide gamuts. auto cs = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma, SkColorSpace::kDCIP3_D65_Gamut); auto cs = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kDCIP3); auto info = skbitmap.info().makeColorType(kRGBA_8888_SkColorType) .makeColorSpace(std::move(cs)); SkBitmap p3; Loading Loading @@ -910,32 +908,32 @@ static jboolean Bitmap_getColorSpace(JNIEnv* env, jobject, jlong bitmapHandle, SkColorSpace* colorSpace = bitmapHolder->info().colorSpace(); if (colorSpace == nullptr) return JNI_FALSE; SkMatrix44 xyzMatrix(SkMatrix44::kUninitialized_Constructor); skcms_Matrix3x3 xyzMatrix; if (!colorSpace->toXYZD50(&xyzMatrix)) return JNI_FALSE; jfloat* xyz = env->GetFloatArrayElements(xyzArray, NULL); xyz[0] = xyzMatrix.getFloat(0, 0); xyz[1] = xyzMatrix.getFloat(1, 0); xyz[2] = xyzMatrix.getFloat(2, 0); xyz[3] = xyzMatrix.getFloat(0, 1); xyz[4] = xyzMatrix.getFloat(1, 1); xyz[5] = xyzMatrix.getFloat(2, 1); xyz[6] = xyzMatrix.getFloat(0, 2); xyz[7] = xyzMatrix.getFloat(1, 2); xyz[8] = xyzMatrix.getFloat(2, 2); xyz[0] = xyzMatrix.vals[0][0]; xyz[1] = xyzMatrix.vals[1][0]; xyz[2] = xyzMatrix.vals[2][0]; xyz[3] = xyzMatrix.vals[0][1]; xyz[4] = xyzMatrix.vals[1][1]; xyz[5] = xyzMatrix.vals[2][1]; xyz[6] = xyzMatrix.vals[0][2]; xyz[7] = xyzMatrix.vals[1][2]; xyz[8] = xyzMatrix.vals[2][2]; env->ReleaseFloatArrayElements(xyzArray, xyz, 0); SkColorSpaceTransferFn transferParams; skcms_TransferFunction transferParams; if (!colorSpace->isNumericalTransferFn(&transferParams)) return JNI_FALSE; jfloat* params = env->GetFloatArrayElements(paramsArray, NULL); params[0] = transferParams.fA; params[1] = transferParams.fB; params[2] = transferParams.fC; params[3] = transferParams.fD; params[4] = transferParams.fE; params[5] = transferParams.fF; params[6] = transferParams.fG; params[0] = transferParams.a; params[1] = transferParams.b; params[2] = transferParams.c; params[3] = transferParams.d; params[4] = transferParams.e; params[5] = transferParams.f; params[6] = transferParams.g; env->ReleaseFloatArrayElements(paramsArray, params, 0); return JNI_TRUE; Loading Loading @@ -1121,8 +1119,8 @@ static jobject Bitmap_createHardwareBitmap(JNIEnv* env, jobject, jobject graphic static jobject Bitmap_wrapHardwareBufferBitmap(JNIEnv* env, jobject, jobject hardwareBuffer, jfloatArray xyzD50, jobject transferParameters) { SkColorSpaceTransferFn p = GraphicsJNI::getNativeTransferParameters(env, transferParameters); SkMatrix44 xyzMatrix = GraphicsJNI::getNativeXYZMatrix(env, xyzD50); skcms_TransferFunction p = GraphicsJNI::getNativeTransferParameters(env, transferParameters); skcms_Matrix3x3 xyzMatrix = GraphicsJNI::getNativeXYZMatrix(env, xyzD50); sk_sp<SkColorSpace> colorSpace = SkColorSpace::MakeRGB(p, xyzMatrix); AHardwareBuffer* hwBuf = android_hardware_HardwareBuffer_getNativeHardwareBuffer(env, hardwareBuffer); Loading core/jni/android/graphics/Graphics.cpp +36 −36 Original line number Diff line number Diff line Loading @@ -424,30 +424,30 @@ jobject GraphicsJNI::createRegion(JNIEnv* env, SkRegion* region) /////////////////////////////////////////////////////////////////////////////// SkColorSpaceTransferFn GraphicsJNI::getNativeTransferParameters(JNIEnv* env, jobject transferParams) { SkColorSpaceTransferFn p; p.fA = (float) env->GetDoubleField(transferParams, gTransferParams_aFieldID); p.fB = (float) env->GetDoubleField(transferParams, gTransferParams_bFieldID); p.fC = (float) env->GetDoubleField(transferParams, gTransferParams_cFieldID); p.fD = (float) env->GetDoubleField(transferParams, gTransferParams_dFieldID); p.fE = (float) env->GetDoubleField(transferParams, gTransferParams_eFieldID); p.fF = (float) env->GetDoubleField(transferParams, gTransferParams_fFieldID); p.fG = (float) env->GetDoubleField(transferParams, gTransferParams_gFieldID); skcms_TransferFunction GraphicsJNI::getNativeTransferParameters(JNIEnv* env, jobject transferParams) { skcms_TransferFunction p; p.a = (float) env->GetDoubleField(transferParams, gTransferParams_aFieldID); p.b = (float) env->GetDoubleField(transferParams, gTransferParams_bFieldID); p.c = (float) env->GetDoubleField(transferParams, gTransferParams_cFieldID); p.d = (float) env->GetDoubleField(transferParams, gTransferParams_dFieldID); p.e = (float) env->GetDoubleField(transferParams, gTransferParams_eFieldID); p.f = (float) env->GetDoubleField(transferParams, gTransferParams_fFieldID); p.g = (float) env->GetDoubleField(transferParams, gTransferParams_gFieldID); return p; } SkMatrix44 GraphicsJNI::getNativeXYZMatrix(JNIEnv* env, jfloatArray xyzD50) { SkMatrix44 xyzMatrix(SkMatrix44::kIdentity_Constructor); skcms_Matrix3x3 GraphicsJNI::getNativeXYZMatrix(JNIEnv* env, jfloatArray xyzD50) { skcms_Matrix3x3 xyzMatrix; jfloat* array = env->GetFloatArrayElements(xyzD50, NULL); xyzMatrix.setFloat(0, 0, array[0]); xyzMatrix.setFloat(1, 0, array[1]); xyzMatrix.setFloat(2, 0, array[2]); xyzMatrix.setFloat(0, 1, array[3]); xyzMatrix.setFloat(1, 1, array[4]); xyzMatrix.setFloat(2, 1, array[5]); xyzMatrix.setFloat(0, 2, array[6]); xyzMatrix.setFloat(1, 2, array[7]); xyzMatrix.setFloat(2, 2, array[8]); xyzMatrix.vals[0][0] = array[0]; xyzMatrix.vals[1][0] = array[1]; xyzMatrix.vals[2][0] = array[2]; xyzMatrix.vals[0][1] = array[3]; xyzMatrix.vals[1][1] = array[4]; xyzMatrix.vals[2][1] = array[5]; xyzMatrix.vals[0][2] = array[6]; xyzMatrix.vals[1][2] = array[7]; xyzMatrix.vals[2][2] = array[8]; env->ReleaseFloatArrayElements(xyzD50, array, 0); return xyzMatrix; } Loading @@ -472,8 +472,8 @@ sk_sp<SkColorSpace> GraphicsJNI::getNativeColorSpace(JNIEnv* env, jobject colorS jfloatArray xyzD50 = (jfloatArray) env->CallObjectMethod(colorSpaceD50, gColorSpaceRGB_getTransformMethodID); SkMatrix44 xyzMatrix = getNativeXYZMatrix(env, xyzD50); SkColorSpaceTransferFn transferFunction = getNativeTransferParameters(env, transferParams); skcms_Matrix3x3 xyzMatrix = getNativeXYZMatrix(env, xyzD50); skcms_TransferFunction transferFunction = getNativeTransferParameters(env, transferParams); return SkColorSpace::MakeRGB(transferFunction, xyzMatrix); } Loading @@ -499,30 +499,30 @@ jobject GraphicsJNI::getColorSpace(JNIEnv* env, sk_sp<SkColorSpace>& decodeColor } else if (decodeColorSpace.get() != nullptr) { // Try to match against known RGB color spaces using the CIE XYZ D50 // conversion matrix and numerical transfer function parameters SkMatrix44 xyzMatrix(SkMatrix44::kUninitialized_Constructor); skcms_Matrix3x3 xyzMatrix; LOG_ALWAYS_FATAL_IF(!decodeColorSpace->toXYZD50(&xyzMatrix)); SkColorSpaceTransferFn transferParams; skcms_TransferFunction transferParams; // We can only handle numerical transfer functions at the moment LOG_ALWAYS_FATAL_IF(!decodeColorSpace->isNumericalTransferFn(&transferParams)); jobject params = env->NewObject(gTransferParameters_class, gTransferParameters_constructorMethodID, transferParams.fA, transferParams.fB, transferParams.fC, transferParams.fD, transferParams.fE, transferParams.fF, transferParams.fG); transferParams.a, transferParams.b, transferParams.c, transferParams.d, transferParams.e, transferParams.f, transferParams.g); jfloatArray xyzArray = env->NewFloatArray(9); jfloat xyz[9] = { xyzMatrix.getFloat(0, 0), xyzMatrix.getFloat(1, 0), xyzMatrix.getFloat(2, 0), xyzMatrix.getFloat(0, 1), xyzMatrix.getFloat(1, 1), xyzMatrix.getFloat(2, 1), xyzMatrix.getFloat(0, 2), xyzMatrix.getFloat(1, 2), xyzMatrix.getFloat(2, 2) xyzMatrix.vals[0][0], xyzMatrix.vals[1][0], xyzMatrix.vals[2][0], xyzMatrix.vals[0][1], xyzMatrix.vals[1][1], xyzMatrix.vals[2][1], xyzMatrix.vals[0][2], xyzMatrix.vals[1][2], xyzMatrix.vals[2][2] }; env->SetFloatArrayRegion(xyzArray, 0, 9, xyz); Loading core/jni/android/graphics/GraphicsJNI.h +2 −3 Original line number Diff line number Diff line Loading @@ -10,7 +10,6 @@ #include "SkPoint.h" #include "SkRect.h" #include "SkColorSpace.h" #include "SkMatrix44.h" #include <jni.h> #include <hwui/Canvas.h> #include <hwui/Bitmap.h> Loading Loading @@ -101,8 +100,8 @@ public: int srcStride, int x, int y, int width, int height, SkBitmap* dstBitmap); static SkColorSpaceTransferFn getNativeTransferParameters(JNIEnv* env, jobject transferParams); static SkMatrix44 getNativeXYZMatrix(JNIEnv* env, jfloatArray xyzD50); static skcms_TransferFunction getNativeTransferParameters(JNIEnv* env, jobject transferParams); static skcms_Matrix3x3 getNativeXYZMatrix(JNIEnv* env, jfloatArray xyzD50); static sk_sp<SkColorSpace> getNativeColorSpace(JNIEnv* env, jobject colorSpace); static jobject getColorSpace(JNIEnv* env, sk_sp<SkColorSpace>& decodeColorSpace, Loading libs/hwui/DeviceInfo.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -79,8 +79,7 @@ static void queryWideColorGamutPreference(SkColorSpace::Gamut* colorGamut, switch (wcgDataspace) { case ui::Dataspace::DISPLAY_P3: *colorGamut = SkColorSpace::Gamut::kDCIP3_D65_Gamut; *colorSpace = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma, SkColorSpace::Gamut::kDCIP3_D65_Gamut); *colorSpace = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kDCIP3); break; case ui::Dataspace::V0_SCRGB: *colorGamut = SkColorSpace::Gamut::kSRGB_Gamut; Loading Loading
cmds/screencap/screencap.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -81,8 +81,7 @@ static sk_sp<SkColorSpace> dataSpaceToColorSpace(ui::Dataspace d) case ui::Dataspace::V0_SRGB: return SkColorSpace::MakeSRGB(); case ui::Dataspace::DISPLAY_P3: return SkColorSpace::MakeRGB( SkColorSpace::kSRGB_RenderTargetGamma, SkColorSpace::kDCIP3_D65_Gamut); return SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kDCIP3); default: return nullptr; } Loading
core/jni/android/graphics/Bitmap.cpp +23 −25 Original line number Diff line number Diff line Loading @@ -8,7 +8,6 @@ #include "SkImageInfo.h" #include "SkColor.h" #include "SkColorSpace.h" #include "SkMatrix44.h" #include "GraphicsJNI.h" #include "SkStream.h" Loading Loading @@ -356,8 +355,8 @@ static jobject Bitmap_creator(JNIEnv* env, jobject, jintArray jColors, if (xyzD50 == nullptr || transferParameters == nullptr) { colorSpace = SkColorSpace::MakeSRGB(); } else { SkColorSpaceTransferFn p = GraphicsJNI::getNativeTransferParameters(env, transferParameters); SkMatrix44 xyzMatrix = GraphicsJNI::getNativeXYZMatrix(env, xyzD50); skcms_TransferFunction p = GraphicsJNI::getNativeTransferParameters(env, transferParameters); skcms_Matrix3x3 xyzMatrix = GraphicsJNI::getNativeXYZMatrix(env, xyzD50); colorSpace = SkColorSpace::MakeRGB(p, xyzMatrix); } Loading Loading @@ -549,8 +548,7 @@ static jboolean Bitmap_compress(JNIEnv* env, jobject clazz, jlong bitmapHandle, if (skbitmap.colorType() == kRGBA_F16_SkColorType) { // Convert to P3 before encoding. This matches SkAndroidCodec::computeOutputColorSpace // for wide gamuts. auto cs = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma, SkColorSpace::kDCIP3_D65_Gamut); auto cs = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kDCIP3); auto info = skbitmap.info().makeColorType(kRGBA_8888_SkColorType) .makeColorSpace(std::move(cs)); SkBitmap p3; Loading Loading @@ -910,32 +908,32 @@ static jboolean Bitmap_getColorSpace(JNIEnv* env, jobject, jlong bitmapHandle, SkColorSpace* colorSpace = bitmapHolder->info().colorSpace(); if (colorSpace == nullptr) return JNI_FALSE; SkMatrix44 xyzMatrix(SkMatrix44::kUninitialized_Constructor); skcms_Matrix3x3 xyzMatrix; if (!colorSpace->toXYZD50(&xyzMatrix)) return JNI_FALSE; jfloat* xyz = env->GetFloatArrayElements(xyzArray, NULL); xyz[0] = xyzMatrix.getFloat(0, 0); xyz[1] = xyzMatrix.getFloat(1, 0); xyz[2] = xyzMatrix.getFloat(2, 0); xyz[3] = xyzMatrix.getFloat(0, 1); xyz[4] = xyzMatrix.getFloat(1, 1); xyz[5] = xyzMatrix.getFloat(2, 1); xyz[6] = xyzMatrix.getFloat(0, 2); xyz[7] = xyzMatrix.getFloat(1, 2); xyz[8] = xyzMatrix.getFloat(2, 2); xyz[0] = xyzMatrix.vals[0][0]; xyz[1] = xyzMatrix.vals[1][0]; xyz[2] = xyzMatrix.vals[2][0]; xyz[3] = xyzMatrix.vals[0][1]; xyz[4] = xyzMatrix.vals[1][1]; xyz[5] = xyzMatrix.vals[2][1]; xyz[6] = xyzMatrix.vals[0][2]; xyz[7] = xyzMatrix.vals[1][2]; xyz[8] = xyzMatrix.vals[2][2]; env->ReleaseFloatArrayElements(xyzArray, xyz, 0); SkColorSpaceTransferFn transferParams; skcms_TransferFunction transferParams; if (!colorSpace->isNumericalTransferFn(&transferParams)) return JNI_FALSE; jfloat* params = env->GetFloatArrayElements(paramsArray, NULL); params[0] = transferParams.fA; params[1] = transferParams.fB; params[2] = transferParams.fC; params[3] = transferParams.fD; params[4] = transferParams.fE; params[5] = transferParams.fF; params[6] = transferParams.fG; params[0] = transferParams.a; params[1] = transferParams.b; params[2] = transferParams.c; params[3] = transferParams.d; params[4] = transferParams.e; params[5] = transferParams.f; params[6] = transferParams.g; env->ReleaseFloatArrayElements(paramsArray, params, 0); return JNI_TRUE; Loading Loading @@ -1121,8 +1119,8 @@ static jobject Bitmap_createHardwareBitmap(JNIEnv* env, jobject, jobject graphic static jobject Bitmap_wrapHardwareBufferBitmap(JNIEnv* env, jobject, jobject hardwareBuffer, jfloatArray xyzD50, jobject transferParameters) { SkColorSpaceTransferFn p = GraphicsJNI::getNativeTransferParameters(env, transferParameters); SkMatrix44 xyzMatrix = GraphicsJNI::getNativeXYZMatrix(env, xyzD50); skcms_TransferFunction p = GraphicsJNI::getNativeTransferParameters(env, transferParameters); skcms_Matrix3x3 xyzMatrix = GraphicsJNI::getNativeXYZMatrix(env, xyzD50); sk_sp<SkColorSpace> colorSpace = SkColorSpace::MakeRGB(p, xyzMatrix); AHardwareBuffer* hwBuf = android_hardware_HardwareBuffer_getNativeHardwareBuffer(env, hardwareBuffer); Loading
core/jni/android/graphics/Graphics.cpp +36 −36 Original line number Diff line number Diff line Loading @@ -424,30 +424,30 @@ jobject GraphicsJNI::createRegion(JNIEnv* env, SkRegion* region) /////////////////////////////////////////////////////////////////////////////// SkColorSpaceTransferFn GraphicsJNI::getNativeTransferParameters(JNIEnv* env, jobject transferParams) { SkColorSpaceTransferFn p; p.fA = (float) env->GetDoubleField(transferParams, gTransferParams_aFieldID); p.fB = (float) env->GetDoubleField(transferParams, gTransferParams_bFieldID); p.fC = (float) env->GetDoubleField(transferParams, gTransferParams_cFieldID); p.fD = (float) env->GetDoubleField(transferParams, gTransferParams_dFieldID); p.fE = (float) env->GetDoubleField(transferParams, gTransferParams_eFieldID); p.fF = (float) env->GetDoubleField(transferParams, gTransferParams_fFieldID); p.fG = (float) env->GetDoubleField(transferParams, gTransferParams_gFieldID); skcms_TransferFunction GraphicsJNI::getNativeTransferParameters(JNIEnv* env, jobject transferParams) { skcms_TransferFunction p; p.a = (float) env->GetDoubleField(transferParams, gTransferParams_aFieldID); p.b = (float) env->GetDoubleField(transferParams, gTransferParams_bFieldID); p.c = (float) env->GetDoubleField(transferParams, gTransferParams_cFieldID); p.d = (float) env->GetDoubleField(transferParams, gTransferParams_dFieldID); p.e = (float) env->GetDoubleField(transferParams, gTransferParams_eFieldID); p.f = (float) env->GetDoubleField(transferParams, gTransferParams_fFieldID); p.g = (float) env->GetDoubleField(transferParams, gTransferParams_gFieldID); return p; } SkMatrix44 GraphicsJNI::getNativeXYZMatrix(JNIEnv* env, jfloatArray xyzD50) { SkMatrix44 xyzMatrix(SkMatrix44::kIdentity_Constructor); skcms_Matrix3x3 GraphicsJNI::getNativeXYZMatrix(JNIEnv* env, jfloatArray xyzD50) { skcms_Matrix3x3 xyzMatrix; jfloat* array = env->GetFloatArrayElements(xyzD50, NULL); xyzMatrix.setFloat(0, 0, array[0]); xyzMatrix.setFloat(1, 0, array[1]); xyzMatrix.setFloat(2, 0, array[2]); xyzMatrix.setFloat(0, 1, array[3]); xyzMatrix.setFloat(1, 1, array[4]); xyzMatrix.setFloat(2, 1, array[5]); xyzMatrix.setFloat(0, 2, array[6]); xyzMatrix.setFloat(1, 2, array[7]); xyzMatrix.setFloat(2, 2, array[8]); xyzMatrix.vals[0][0] = array[0]; xyzMatrix.vals[1][0] = array[1]; xyzMatrix.vals[2][0] = array[2]; xyzMatrix.vals[0][1] = array[3]; xyzMatrix.vals[1][1] = array[4]; xyzMatrix.vals[2][1] = array[5]; xyzMatrix.vals[0][2] = array[6]; xyzMatrix.vals[1][2] = array[7]; xyzMatrix.vals[2][2] = array[8]; env->ReleaseFloatArrayElements(xyzD50, array, 0); return xyzMatrix; } Loading @@ -472,8 +472,8 @@ sk_sp<SkColorSpace> GraphicsJNI::getNativeColorSpace(JNIEnv* env, jobject colorS jfloatArray xyzD50 = (jfloatArray) env->CallObjectMethod(colorSpaceD50, gColorSpaceRGB_getTransformMethodID); SkMatrix44 xyzMatrix = getNativeXYZMatrix(env, xyzD50); SkColorSpaceTransferFn transferFunction = getNativeTransferParameters(env, transferParams); skcms_Matrix3x3 xyzMatrix = getNativeXYZMatrix(env, xyzD50); skcms_TransferFunction transferFunction = getNativeTransferParameters(env, transferParams); return SkColorSpace::MakeRGB(transferFunction, xyzMatrix); } Loading @@ -499,30 +499,30 @@ jobject GraphicsJNI::getColorSpace(JNIEnv* env, sk_sp<SkColorSpace>& decodeColor } else if (decodeColorSpace.get() != nullptr) { // Try to match against known RGB color spaces using the CIE XYZ D50 // conversion matrix and numerical transfer function parameters SkMatrix44 xyzMatrix(SkMatrix44::kUninitialized_Constructor); skcms_Matrix3x3 xyzMatrix; LOG_ALWAYS_FATAL_IF(!decodeColorSpace->toXYZD50(&xyzMatrix)); SkColorSpaceTransferFn transferParams; skcms_TransferFunction transferParams; // We can only handle numerical transfer functions at the moment LOG_ALWAYS_FATAL_IF(!decodeColorSpace->isNumericalTransferFn(&transferParams)); jobject params = env->NewObject(gTransferParameters_class, gTransferParameters_constructorMethodID, transferParams.fA, transferParams.fB, transferParams.fC, transferParams.fD, transferParams.fE, transferParams.fF, transferParams.fG); transferParams.a, transferParams.b, transferParams.c, transferParams.d, transferParams.e, transferParams.f, transferParams.g); jfloatArray xyzArray = env->NewFloatArray(9); jfloat xyz[9] = { xyzMatrix.getFloat(0, 0), xyzMatrix.getFloat(1, 0), xyzMatrix.getFloat(2, 0), xyzMatrix.getFloat(0, 1), xyzMatrix.getFloat(1, 1), xyzMatrix.getFloat(2, 1), xyzMatrix.getFloat(0, 2), xyzMatrix.getFloat(1, 2), xyzMatrix.getFloat(2, 2) xyzMatrix.vals[0][0], xyzMatrix.vals[1][0], xyzMatrix.vals[2][0], xyzMatrix.vals[0][1], xyzMatrix.vals[1][1], xyzMatrix.vals[2][1], xyzMatrix.vals[0][2], xyzMatrix.vals[1][2], xyzMatrix.vals[2][2] }; env->SetFloatArrayRegion(xyzArray, 0, 9, xyz); Loading
core/jni/android/graphics/GraphicsJNI.h +2 −3 Original line number Diff line number Diff line Loading @@ -10,7 +10,6 @@ #include "SkPoint.h" #include "SkRect.h" #include "SkColorSpace.h" #include "SkMatrix44.h" #include <jni.h> #include <hwui/Canvas.h> #include <hwui/Bitmap.h> Loading Loading @@ -101,8 +100,8 @@ public: int srcStride, int x, int y, int width, int height, SkBitmap* dstBitmap); static SkColorSpaceTransferFn getNativeTransferParameters(JNIEnv* env, jobject transferParams); static SkMatrix44 getNativeXYZMatrix(JNIEnv* env, jfloatArray xyzD50); static skcms_TransferFunction getNativeTransferParameters(JNIEnv* env, jobject transferParams); static skcms_Matrix3x3 getNativeXYZMatrix(JNIEnv* env, jfloatArray xyzD50); static sk_sp<SkColorSpace> getNativeColorSpace(JNIEnv* env, jobject colorSpace); static jobject getColorSpace(JNIEnv* env, sk_sp<SkColorSpace>& decodeColorSpace, Loading
libs/hwui/DeviceInfo.cpp +1 −2 Original line number Diff line number Diff line Loading @@ -79,8 +79,7 @@ static void queryWideColorGamutPreference(SkColorSpace::Gamut* colorGamut, switch (wcgDataspace) { case ui::Dataspace::DISPLAY_P3: *colorGamut = SkColorSpace::Gamut::kDCIP3_D65_Gamut; *colorSpace = SkColorSpace::MakeRGB(SkColorSpace::kSRGB_RenderTargetGamma, SkColorSpace::Gamut::kDCIP3_D65_Gamut); *colorSpace = SkColorSpace::MakeRGB(SkNamedTransferFn::kSRGB, SkNamedGamut::kDCIP3); break; case ui::Dataspace::V0_SCRGB: *colorGamut = SkColorSpace::Gamut::kSRGB_Gamut; Loading