diff options
author | Steve Kondik <steve@cyngn.com> | 2016-07-18 02:36:42 -0700 |
---|---|---|
committer | Steve Kondik <steve@cyngn.com> | 2016-07-20 10:07:31 -0700 |
commit | 86cae92291f728d0eca637573ecbe6e0a53ccf1a (patch) | |
tree | 577cc188e1b9fc69b006135fbb480b1848a29e1d /sdk/src/java/cyanogenmod/hardware/CMHardwareManager.java | |
parent | 25d708141814289067587e504a0bb33a76c28a78 (diff) | |
download | vendor_cmsdk-86cae92291f728d0eca637573ecbe6e0a53ccf1a.zip vendor_cmsdk-86cae92291f728d0eca637573ecbe6e0a53ccf1a.tar.gz vendor_cmsdk-86cae92291f728d0eca637573ecbe6e0a53ccf1a.tar.bz2 |
livedisplay: Add support for direct color balance control
* We currently use the DisplayColorCalibration API for setting display
temperature which makes a lot of guesses about what temperature
the display really is. Some devices will support the new ColorBalance
API (via QDCM or other mechanism), which offers a calibrated
alternative. Add support for this, which will supercede DCC if
available.
* Additionally, define the available color temperature range as a
set of overlayable values so this can be specified per-device.
This range will be mapped to balance values using the power curve
calculations in the new MathUtils class.
Change-Id: I99608c09807b747d962680293c7b0cee8d669003
Diffstat (limited to 'sdk/src/java/cyanogenmod/hardware/CMHardwareManager.java')
-rw-r--r-- | sdk/src/java/cyanogenmod/hardware/CMHardwareManager.java | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/sdk/src/java/cyanogenmod/hardware/CMHardwareManager.java b/sdk/src/java/cyanogenmod/hardware/CMHardwareManager.java index 7765b94..d31ce9b 100644 --- a/sdk/src/java/cyanogenmod/hardware/CMHardwareManager.java +++ b/sdk/src/java/cyanogenmod/hardware/CMHardwareManager.java @@ -20,6 +20,7 @@ import android.os.IBinder; import android.os.RemoteException; import android.os.ServiceManager; import android.util.Log; +import android.util.Range; import cyanogenmod.app.CMContextConstants; @@ -129,6 +130,11 @@ public final class CMHardwareManager { */ public static final int FEATURE_UNIQUE_DEVICE_ID = 0x10000; + /** + * Color balance + */ + public static final int FEATURE_COLOR_BALANCE = 0x20000; + private static final List<Integer> BOOLEAN_FEATURES = Arrays.asList( FEATURE_ADAPTIVE_BACKLIGHT, FEATURE_COLOR_ENHANCEMENT, @@ -803,6 +809,39 @@ public final class CMHardwareManager { return false; } + public Range<Integer> getColorBalanceRange() { + int min = 0; + int max = 0; + try { + if (checkService()) { + min = sService.getColorBalanceMin(); + max = sService.getColorBalanceMax(); + } + } catch (RemoteException e) { + } + return new Range<Integer>(min, max); + } + + public int getColorBalance() { + try { + if (checkService()) { + return sService.getColorBalance(); + } + } catch (RemoteException e) { + } + return 0; + } + + public boolean setColorBalance(int value) { + try { + if (checkService()) { + return sService.setColorBalance(value); + } + } catch (RemoteException e) { + } + return false; + } + /** * @return true if service is valid */ |