Skip to content

Commit f2668db

Browse files
Steve Kondiktemasek
authored andcommitted
livedisplay: Factoring out color temperature to RGB conversion algorithm
* We need this for other things, so move this code to CMSDK. Change-Id: I8c377c325b31b56b45145dc26022b31ab836db84
1 parent 683a613 commit f2668db

File tree

1 file changed

+2
-221
lines changed

1 file changed

+2
-221
lines changed

services/core/java/com/android/server/display/LiveDisplayController.java

Lines changed: 2 additions & 221 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848

4949
import cyanogenmod.hardware.CMHardwareManager;
5050
import cyanogenmod.providers.CMSettings;
51+
import cyanogenmod.util.ColorUtils;
5152

5253
import java.io.PrintWriter;
5354

@@ -293,7 +294,7 @@ public void onAnimationUpdate(ValueAnimator animation) {
293294
private synchronized void setDisplayTemperature(int temperature) {
294295
mColorTemperature = temperature;
295296

296-
final float[] rgb = temperatureToRGB(temperature);
297+
final float[] rgb = ColorUtils.temperatureToRGB(temperature);
297298

298299
if (!mLowPerformance) {
299300
rgb[0] *= mColorAdjustment[0];
@@ -430,25 +431,6 @@ private synchronized void updateLowPowerMode() {
430431
mLowPower = enabled;
431432
}
432433

433-
/**
434-
* Convert a color temperature value (in Kelvin) to a RGB units as floats.
435-
* This can be used in a transform matrix or hardware gamma control.
436-
*
437-
* @param tempK
438-
* @return
439-
*/
440-
private static float[] temperatureToRGB(int degreesK) {
441-
int k = MathUtils.constrain(degreesK, 1000, 20000);
442-
float a = (k % 100) / 100.0f;
443-
int i = ((k - 1000)/ 100) * 3;
444-
445-
return new float[] { interp(i, a), interp(i+1, a), interp(i+2, a) };
446-
}
447-
448-
private static float interp(int i, float a) {
449-
return MathUtils.lerp((float)sColorTable[i], (float)sColorTable[i+3], a);
450-
}
451-
452434
/**
453435
* Where is the sun anyway? This calculation determines day or night, and scales
454436
* the value around sunset/sunrise for a smooth transition.
@@ -631,205 +613,4 @@ public void dump(PrintWriter pw) {
631613
pw.println(" mColorEnhancement=" + (mUseColorEnhancement ? mColorEnhancement : "N/A"));
632614
pw.println(" mLowPower=" + (mUseLowPower ? mLowPower : "N/A"));
633615
}
634-
635-
/**
636-
* This table is a modified version of the original blackbody chart, found here:
637-
* http://www.vendian.org/mncharity/dir3/blackbody/UnstableURLs/bbr_color.html
638-
*
639-
* Created by Ingo Thiel.
640-
*/
641-
private static final double[] sColorTable = new double[] {
642-
1.00000000, 0.18172716, 0.00000000,
643-
1.00000000, 0.25503671, 0.00000000,
644-
1.00000000, 0.30942099, 0.00000000,
645-
1.00000000, 0.35357379, 0.00000000,
646-
1.00000000, 0.39091524, 0.00000000,
647-
1.00000000, 0.42322816, 0.00000000,
648-
1.00000000, 0.45159884, 0.00000000,
649-
1.00000000, 0.47675916, 0.00000000,
650-
1.00000000, 0.49923747, 0.00000000,
651-
1.00000000, 0.51943421, 0.00000000,
652-
1.00000000, 0.54360078, 0.08679949,
653-
1.00000000, 0.56618736, 0.14065513,
654-
1.00000000, 0.58734976, 0.18362641,
655-
1.00000000, 0.60724493, 0.22137978,
656-
1.00000000, 0.62600248, 0.25591950,
657-
1.00000000, 0.64373109, 0.28819679,
658-
1.00000000, 0.66052319, 0.31873863,
659-
1.00000000, 0.67645822, 0.34786758,
660-
1.00000000, 0.69160518, 0.37579588,
661-
1.00000000, 0.70602449, 0.40267128,
662-
1.00000000, 0.71976951, 0.42860152,
663-
1.00000000, 0.73288760, 0.45366838,
664-
1.00000000, 0.74542112, 0.47793608,
665-
1.00000000, 0.75740814, 0.50145662,
666-
1.00000000, 0.76888303, 0.52427322,
667-
1.00000000, 0.77987699, 0.54642268,
668-
1.00000000, 0.79041843, 0.56793692,
669-
1.00000000, 0.80053332, 0.58884417,
670-
1.00000000, 0.81024551, 0.60916971,
671-
1.00000000, 0.81957693, 0.62893653,
672-
1.00000000, 0.82854786, 0.64816570,
673-
1.00000000, 0.83717703, 0.66687674,
674-
1.00000000, 0.84548188, 0.68508786,
675-
1.00000000, 0.85347859, 0.70281616,
676-
1.00000000, 0.86118227, 0.72007777,
677-
1.00000000, 0.86860704, 0.73688797,
678-
1.00000000, 0.87576611, 0.75326132,
679-
1.00000000, 0.88267187, 0.76921169,
680-
1.00000000, 0.88933596, 0.78475236,
681-
1.00000000, 0.89576933, 0.79989606,
682-
1.00000000, 0.90198230, 0.81465502,
683-
1.00000000, 0.90963069, 0.82838210,
684-
1.00000000, 0.91710889, 0.84190889,
685-
1.00000000, 0.92441842, 0.85523742,
686-
1.00000000, 0.93156127, 0.86836903,
687-
1.00000000, 0.93853986, 0.88130458,
688-
1.00000000, 0.94535695, 0.89404470,
689-
1.00000000, 0.95201559, 0.90658983,
690-
1.00000000, 0.95851906, 0.91894041,
691-
1.00000000, 0.96487079, 0.93109690,
692-
1.00000000, 0.97107439, 0.94305985,
693-
1.00000000, 0.97713351, 0.95482993,
694-
1.00000000, 0.98305189, 0.96640795,
695-
1.00000000, 0.98883326, 0.97779486,
696-
1.00000000, 0.99448139, 0.98899179,
697-
1.00000000, 1.00000000, 1.00000000,
698-
0.98947904, 0.99348723, 1.00000000,
699-
0.97940448, 0.98722715, 1.00000000,
700-
0.96975025, 0.98120637, 1.00000000,
701-
0.96049223, 0.97541240, 1.00000000,
702-
0.95160805, 0.96983355, 1.00000000,
703-
0.94303638, 0.96443333, 1.00000000,
704-
0.93480451, 0.95923080, 1.00000000,
705-
0.92689056, 0.95421394, 1.00000000,
706-
0.91927697, 0.94937330, 1.00000000,
707-
0.91194747, 0.94470005, 1.00000000,
708-
0.90488690, 0.94018594, 1.00000000,
709-
0.89808115, 0.93582323, 1.00000000,
710-
0.89151710, 0.93160469, 1.00000000,
711-
0.88518247, 0.92752354, 1.00000000,
712-
0.87906581, 0.92357340, 1.00000000,
713-
0.87315640, 0.91974827, 1.00000000,
714-
0.86744421, 0.91604254, 1.00000000,
715-
0.86191983, 0.91245088, 1.00000000,
716-
0.85657444, 0.90896831, 1.00000000,
717-
0.85139976, 0.90559011, 1.00000000,
718-
0.84638799, 0.90231183, 1.00000000,
719-
0.84153180, 0.89912926, 1.00000000,
720-
0.83682430, 0.89603843, 1.00000000,
721-
0.83225897, 0.89303558, 1.00000000,
722-
0.82782969, 0.89011714, 1.00000000,
723-
0.82353066, 0.88727974, 1.00000000,
724-
0.81935641, 0.88452017, 1.00000000,
725-
0.81530175, 0.88183541, 1.00000000,
726-
0.81136180, 0.87922257, 1.00000000,
727-
0.80753191, 0.87667891, 1.00000000,
728-
0.80380769, 0.87420182, 1.00000000,
729-
0.80018497, 0.87178882, 1.00000000,
730-
0.79665980, 0.86943756, 1.00000000,
731-
0.79322843, 0.86714579, 1.00000000,
732-
0.78988728, 0.86491137, 1.00000000,
733-
0.78663296, 0.86273225, 1.00000000,
734-
0.78346225, 0.86060650, 1.00000000,
735-
0.78037207, 0.85853224, 1.00000000,
736-
0.77735950, 0.85650771, 1.00000000,
737-
0.77442176, 0.85453121, 1.00000000,
738-
0.77155617, 0.85260112, 1.00000000,
739-
0.76876022, 0.85071588, 1.00000000,
740-
0.76603147, 0.84887402, 1.00000000,
741-
0.76336762, 0.84707411, 1.00000000,
742-
0.76076645, 0.84531479, 1.00000000,
743-
0.75822586, 0.84359476, 1.00000000,
744-
0.75574383, 0.84191277, 1.00000000,
745-
0.75331843, 0.84026762, 1.00000000,
746-
0.75094780, 0.83865816, 1.00000000,
747-
0.74863017, 0.83708329, 1.00000000,
748-
0.74636386, 0.83554194, 1.00000000,
749-
0.74414722, 0.83403311, 1.00000000,
750-
0.74197871, 0.83255582, 1.00000000,
751-
0.73985682, 0.83110912, 1.00000000,
752-
0.73778012, 0.82969211, 1.00000000,
753-
0.73574723, 0.82830393, 1.00000000,
754-
0.73375683, 0.82694373, 1.00000000,
755-
0.73180765, 0.82561071, 1.00000000,
756-
0.72989845, 0.82430410, 1.00000000,
757-
0.72802807, 0.82302316, 1.00000000,
758-
0.72619537, 0.82176715, 1.00000000,
759-
0.72439927, 0.82053539, 1.00000000,
760-
0.72263872, 0.81932722, 1.00000000,
761-
0.72091270, 0.81814197, 1.00000000,
762-
0.71922025, 0.81697905, 1.00000000,
763-
0.71756043, 0.81583783, 1.00000000,
764-
0.71593234, 0.81471775, 1.00000000,
765-
0.71433510, 0.81361825, 1.00000000,
766-
0.71276788, 0.81253878, 1.00000000,
767-
0.71122987, 0.81147883, 1.00000000,
768-
0.70972029, 0.81043789, 1.00000000,
769-
0.70823838, 0.80941546, 1.00000000,
770-
0.70678342, 0.80841109, 1.00000000,
771-
0.70535469, 0.80742432, 1.00000000,
772-
0.70395153, 0.80645469, 1.00000000,
773-
0.70257327, 0.80550180, 1.00000000,
774-
0.70121928, 0.80456522, 1.00000000,
775-
0.69988894, 0.80364455, 1.00000000,
776-
0.69858167, 0.80273941, 1.00000000,
777-
0.69729688, 0.80184943, 1.00000000,
778-
0.69603402, 0.80097423, 1.00000000,
779-
0.69479255, 0.80011347, 1.00000000,
780-
0.69357196, 0.79926681, 1.00000000,
781-
0.69237173, 0.79843391, 1.00000000,
782-
0.69119138, 0.79761446, 1.00000000,
783-
0.69003044, 0.79680814, 1.00000000,
784-
0.68888844, 0.79601466, 1.00000000,
785-
0.68776494, 0.79523371, 1.00000000,
786-
0.68665951, 0.79446502, 1.00000000,
787-
0.68557173, 0.79370830, 1.00000000,
788-
0.68450119, 0.79296330, 1.00000000,
789-
0.68344751, 0.79222975, 1.00000000,
790-
0.68241029, 0.79150740, 1.00000000,
791-
0.68138918, 0.79079600, 1.00000000,
792-
0.68038380, 0.79009531, 1.00000000,
793-
0.67939381, 0.78940511, 1.00000000,
794-
0.67841888, 0.78872517, 1.00000000,
795-
0.67745866, 0.78805526, 1.00000000,
796-
0.67651284, 0.78739518, 1.00000000,
797-
0.67558112, 0.78674472, 1.00000000,
798-
0.67466317, 0.78610368, 1.00000000,
799-
0.67375872, 0.78547186, 1.00000000,
800-
0.67286748, 0.78484907, 1.00000000,
801-
0.67198916, 0.78423512, 1.00000000,
802-
0.67112350, 0.78362984, 1.00000000,
803-
0.67027024, 0.78303305, 1.00000000,
804-
0.66942911, 0.78244457, 1.00000000,
805-
0.66859988, 0.78186425, 1.00000000,
806-
0.66778228, 0.78129191, 1.00000000,
807-
0.66697610, 0.78072740, 1.00000000,
808-
0.66618110, 0.78017057, 1.00000000,
809-
0.66539706, 0.77962127, 1.00000000,
810-
0.66462376, 0.77907934, 1.00000000,
811-
0.66386098, 0.77854465, 1.00000000,
812-
0.66310852, 0.77801705, 1.00000000,
813-
0.66236618, 0.77749642, 1.00000000,
814-
0.66163375, 0.77698261, 1.00000000,
815-
0.66091106, 0.77647551, 1.00000000,
816-
0.66019791, 0.77597498, 1.00000000,
817-
0.65949412, 0.77548090, 1.00000000,
818-
0.65879952, 0.77499315, 1.00000000,
819-
0.65811392, 0.77451161, 1.00000000,
820-
0.65743716, 0.77403618, 1.00000000,
821-
0.65676908, 0.77356673, 1.00000000,
822-
0.65610952, 0.77310316, 1.00000000,
823-
0.65545831, 0.77264537, 1.00000000,
824-
0.65481530, 0.77219324, 1.00000000,
825-
0.65418036, 0.77174669, 1.00000000,
826-
0.65355332, 0.77130560, 1.00000000,
827-
0.65293404, 0.77086988, 1.00000000,
828-
0.65232240, 0.77043944, 1.00000000,
829-
0.65171824, 0.77001419, 1.00000000,
830-
0.65112144, 0.76959404, 1.00000000,
831-
0.65053187, 0.76917889, 1.00000000,
832-
0.64994941, 0.76876866, 1.00000000,
833-
0.64937392, 0.76836326, 1.00000000
834-
};
835616
}

0 commit comments

Comments
 (0)