From 6437518061fc8718590e0272ed17ea64710d2299 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Tue, 28 Apr 2015 17:30:04 -0700 Subject: [PATCH] Adjust display inversion matrix to account for luminance Bug: 20346301 Change-Id: I10633705f2bfddbdeec063f9489a4f8679b9e8ee --- .../accessibility/DisplayAdjustmentUtils.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/services/accessibility/java/com/android/server/accessibility/DisplayAdjustmentUtils.java b/services/accessibility/java/com/android/server/accessibility/DisplayAdjustmentUtils.java index 38827d09c99ff..d0b5898076fcd 100644 --- a/services/accessibility/java/com/android/server/accessibility/DisplayAdjustmentUtils.java +++ b/services/accessibility/java/com/android/server/accessibility/DisplayAdjustmentUtils.java @@ -41,12 +41,18 @@ class DisplayAdjustmentUtils { 0, 0, 0, 1 }; - /** Matrix and offset used for value-only display inversion. */ + /** + * Matrix and offset used for luminance inversion. Represents a transform + * from RGB to YIQ color space, rotation around the Y axis by 180 degrees, + * transform back to RGB color space, and subtraction from 1. The last row + * represents a non-multiplied addition, see surfaceflinger's ProgramCache + * for full implementation details. + */ private static final float[] INVERSION_MATRIX_VALUE_ONLY = new float[] { - 0, -.5f, -.5f, 0, - -.5f, 0, -.5f, 0, - -.5f, -.5f, 0, 0, - 1, 1, 1, 1 + 0.402f, -0.598f, -0.599f, 0, + -1.174f, -0.174f, -1.175f, 0, + -0.228f, -0.228f, 0.772f, 0, + 1, 1, 1, 1 }; /** Default inversion mode for display color correction. */