From 1199c8f40ae49efe889ab748f7e66a17fed375c2 Mon Sep 17 00:00:00 2001 From: Christine Franks Date: Wed, 26 Jul 2017 17:51:16 -0700 Subject: Update night display intensity coefficients Bug: 64019890 Test: manual - adjust intensity slider Change-Id: I38ec7385b36367e5c9f6c606e65a982efbd32a1b --- core/res/res/values/config.xml | 12 ++++++++ core/res/res/values/symbols.xml | 1 + .../server/display/NightDisplayService.java | 32 ++++++++++------------ 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index 172cae97d0a1..5efc226b1571 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -882,6 +882,18 @@ 4082 + + 0.0 + 0.0 + 1.0 + -0.00000000962353339 + 0.000153045476 + 0.390782778 + -0.0000000189359041 + 0.000302412211 + -0.198650895 + + diff --git a/services/core/java/com/android/server/display/NightDisplayService.java b/services/core/java/com/android/server/display/NightDisplayService.java index 026921deea55..c4911b887dad 100644 --- a/services/core/java/com/android/server/display/NightDisplayService.java +++ b/services/core/java/com/android/server/display/NightDisplayService.java @@ -52,6 +52,8 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.Calendar; import java.util.TimeZone; +import com.android.internal.R; + import static com.android.server.display.DisplayTransformManager.LEVEL_COLOR_MATRIX_NIGHT_DISPLAY; /** @@ -110,19 +112,7 @@ public final class NightDisplayService extends SystemService private float[] mMatrixNight = new float[16]; - /** - * The 3x3 color transformation matrix is formatted like so: - * - * - * - * - *
R: a coefficientG: a coefficientB: a coefficient
R: b coefficientG: b coefficientB: b coefficient
R: y-interceptG: y-interceptB: y-intercept
- */ - private static final float[] mColorTempCoefficients = new float[] { - 0.0f, -0.000000014365268757f, -0.000000000910931179f, - 0.0f, 0.000255092801250106f, 0.000207598323269139f, - 1.0f, -0.064156942434907716f, -0.349361641294833436f - }; + private final float[] mColorTempCoefficients = new float[9]; private int mCurrentUser = UserHandle.USER_NULL; private ContentObserver mUserSetupObserver; @@ -136,6 +126,12 @@ public final class NightDisplayService extends SystemService public NightDisplayService(Context context) { super(context); mHandler = new Handler(Looper.getMainLooper()); + + final String[] coefficients = context.getResources().getStringArray( + R.array.config_nightDisplayColorTemperatureCoefficients); + for (int i = 0; i < 9 && i < coefficients.length; i++) { + mColorTempCoefficients[i] = Float.parseFloat(coefficients[i]); + } } @Override @@ -410,11 +406,11 @@ public final class NightDisplayService extends SystemService final float squareTemperature = colorTemperature * colorTemperature; final float red = squareTemperature * mColorTempCoefficients[0] - + colorTemperature * mColorTempCoefficients[3] + mColorTempCoefficients[6]; - final float green = squareTemperature * mColorTempCoefficients[1] - + colorTemperature * mColorTempCoefficients[4] + mColorTempCoefficients[7]; - final float blue = squareTemperature * mColorTempCoefficients[2] - + colorTemperature * mColorTempCoefficients[5] + mColorTempCoefficients[8]; + + colorTemperature * mColorTempCoefficients[1] + mColorTempCoefficients[2]; + final float green = squareTemperature * mColorTempCoefficients[3] + + colorTemperature * mColorTempCoefficients[4] + mColorTempCoefficients[5]; + final float blue = squareTemperature * mColorTempCoefficients[6] + + colorTemperature * mColorTempCoefficients[7] + mColorTempCoefficients[8]; outTemp[0] = red; outTemp[5] = green; outTemp[10] = blue; -- cgit v1.2.3-59-g8ed1b