summaryrefslogtreecommitdiffstats
path: root/cmhw/org/cyanogenmod/hardware/DisplayGammaCalibration.java
diff options
context:
space:
mode:
Diffstat (limited to 'cmhw/org/cyanogenmod/hardware/DisplayGammaCalibration.java')
-rw-r--r--cmhw/org/cyanogenmod/hardware/DisplayGammaCalibration.java79
1 files changed, 79 insertions, 0 deletions
diff --git a/cmhw/org/cyanogenmod/hardware/DisplayGammaCalibration.java b/cmhw/org/cyanogenmod/hardware/DisplayGammaCalibration.java
new file mode 100644
index 0000000..8be53c0
--- /dev/null
+++ b/cmhw/org/cyanogenmod/hardware/DisplayGammaCalibration.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2013 The CyanogenMod Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.cyanogenmod.hardware;
+
+import org.cyanogenmod.hardware.util.FileUtils;
+import java.io.File;
+
+public class DisplayGammaCalibration {
+ private static final String[] GAMMA_FILE = new String[] {
+ "/sys/class/misc/samoled_color/red_v1_offset",
+ "/sys/class/misc/samoled_color/green_v1_offset",
+ "/sys/class/misc/samoled_color/blue_v1_offset"
+ };
+ private static final String GAMMA_FILE_V2 = "/sys/class/misc/colorcontrol/v1_offset";
+
+ public static boolean isSupported() {
+ if (new File(GAMMA_FILE_V2).exists()) {
+ return true;
+ }
+ for (String filePath : GAMMA_FILE) {
+ if (!new File(filePath).exists()) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ public static int getNumberOfControls() {
+ return 1;
+ }
+
+ public static int getMaxValue(int control) {
+ return 20;
+ }
+
+ public static int getMinValue(int control) {
+ return -20;
+ }
+
+ public static String getCurGamma(int control) {
+ if (new File(GAMMA_FILE_V2).exists()) {
+ return FileUtils.readOneLine(GAMMA_FILE_V2);
+ } else {
+ StringBuilder values = new StringBuilder();
+ for (String filePath : GAMMA_FILE) {
+ values.append(FileUtils.readOneLine(filePath)).append(" ");
+ }
+ return values.toString();
+ }
+ }
+
+ public static boolean setGamma(int control, String gamma) {
+ if (new File(GAMMA_FILE_V2).exists()) {
+ return FileUtils.writeLine(GAMMA_FILE_V2, gamma);
+ } else {
+ String[] valuesSplit = gamma.split(" ");
+ boolean result = true;
+ for (int i = 0; i < valuesSplit.length; i++) {
+ String targetFile = GAMMA_FILE[i];
+ result &= FileUtils.writeLine(targetFile, valuesSplit[i]);
+ }
+ return result;
+ }
+ }
+}