diff options
author | Jon Lund Steffensen <jonlst@gmail.com> | 2013-10-21 22:30:09 -0400 |
---|---|---|
committer | Jon Lund Steffensen <jonlst@gmail.com> | 2013-10-21 22:52:38 -0400 |
commit | 070bf1d3de78c208cbb8a393b08396bbd867e903 (patch) | |
tree | a7da088ca083a3db923494a9b87b0846572ea57b /src | |
parent | Update HACKING document (diff) | |
download | redshift-ng-070bf1d3de78c208cbb8a393b08396bbd867e903.tar.gz redshift-ng-070bf1d3de78c208cbb8a393b08396bbd867e903.tar.bz2 redshift-ng-070bf1d3de78c208cbb8a393b08396bbd867e903.tar.xz |
colorramp: Use new color ramp table provided by Ingo Thies.
This table is calculated by the actual Planckian locus below 5000K, and by CIE daylight standard above 5000K.
Also, the new table applies proper gamma correction according to sRGB.
More information can be found in README-colorramp.
Diffstat (limited to 'src')
-rw-r--r-- | src/colorramp.c | 342 | ||||
-rw-r--r-- | src/redshift.c | 12 |
2 files changed, 254 insertions, 100 deletions
diff --git a/src/colorramp.c b/src/colorramp.c index 4d32d7e..158f7cd 100644 --- a/src/colorramp.c +++ b/src/colorramp.c @@ -14,107 +14,261 @@ You should have received a copy of the GNU General Public License along with Redshift. If not, see <http://www.gnu.org/licenses/>. - Copyright (c) 2010 Jon Lund Steffensen <jonlst@gmail.com> + Copyright (c) 2013 Jon Lund Steffensen <jonlst@gmail.com> + Copyright (c) 2013 Ingo Thies <ithies@astro.uni-bonn.de> */ #include <stdint.h> #include <math.h> -/* Source: http://www.vendian.org/mncharity/dir3/blackbody/ - Rescaled to make exactly 6500K equal to full intensity in all channels. */ +/* Whitepoint values for temperatures at 100K intervals. + These will be interpolated for the actual temperature. + This table was provided by Ingo Thies, 2013. See + the file README-colorramp for more information. */ static const float blackbody_color[] = { - 1.0000, 0.0425, 0.0000, /* 1000K */ - 1.0000, 0.0668, 0.0000, /* 1100K */ - 1.0000, 0.0911, 0.0000, /* 1200K */ - 1.0000, 0.1149, 0.0000, /* ... */ - 1.0000, 0.1380, 0.0000, - 1.0000, 0.1604, 0.0000, - 1.0000, 0.1819, 0.0000, - 1.0000, 0.2024, 0.0000, - 1.0000, 0.2220, 0.0000, - 1.0000, 0.2406, 0.0000, - 1.0000, 0.2630, 0.0062, - 1.0000, 0.2868, 0.0155, - 1.0000, 0.3102, 0.0261, - 1.0000, 0.3334, 0.0379, - 1.0000, 0.3562, 0.0508, - 1.0000, 0.3787, 0.0650, - 1.0000, 0.4008, 0.0802, - 1.0000, 0.4227, 0.0964, - 1.0000, 0.4442, 0.1136, - 1.0000, 0.4652, 0.1316, - 1.0000, 0.4859, 0.1505, - 1.0000, 0.5062, 0.1702, - 1.0000, 0.5262, 0.1907, - 1.0000, 0.5458, 0.2118, - 1.0000, 0.5650, 0.2335, - 1.0000, 0.5839, 0.2558, - 1.0000, 0.6023, 0.2786, - 1.0000, 0.6204, 0.3018, - 1.0000, 0.6382, 0.3255, - 1.0000, 0.6557, 0.3495, - 1.0000, 0.6727, 0.3739, - 1.0000, 0.6894, 0.3986, - 1.0000, 0.7058, 0.4234, - 1.0000, 0.7218, 0.4485, - 1.0000, 0.7375, 0.4738, - 1.0000, 0.7529, 0.4992, - 1.0000, 0.7679, 0.5247, - 1.0000, 0.7826, 0.5503, - 1.0000, 0.7970, 0.5760, - 1.0000, 0.8111, 0.6016, - 1.0000, 0.8250, 0.6272, - 1.0000, 0.8384, 0.6529, - 1.0000, 0.8517, 0.6785, - 1.0000, 0.8647, 0.7040, - 1.0000, 0.8773, 0.7294, - 1.0000, 0.8897, 0.7548, - 1.0000, 0.9019, 0.7801, - 1.0000, 0.9137, 0.8051, - 1.0000, 0.9254, 0.8301, - 1.0000, 0.9367, 0.8550, - 1.0000, 0.9478, 0.8795, - 1.0000, 0.9587, 0.9040, - 1.0000, 0.9694, 0.9283, - 1.0000, 0.9798, 0.9524, - 1.0000, 0.9900, 0.9763, - 1.0000, 1.0000, 1.0000, /* 6500K */ - 0.9771, 0.9867, 1.0000, - 0.9554, 0.9740, 1.0000, - 0.9349, 0.9618, 1.0000, - 0.9154, 0.9500, 1.0000, - 0.8968, 0.9389, 1.0000, - 0.8792, 0.9282, 1.0000, - 0.8624, 0.9179, 1.0000, - 0.8465, 0.9080, 1.0000, - 0.8313, 0.8986, 1.0000, - 0.8167, 0.8895, 1.0000, - 0.8029, 0.8808, 1.0000, - 0.7896, 0.8724, 1.0000, - 0.7769, 0.8643, 1.0000, - 0.7648, 0.8565, 1.0000, - 0.7532, 0.8490, 1.0000, - 0.7420, 0.8418, 1.0000, - 0.7314, 0.8348, 1.0000, - 0.7212, 0.8281, 1.0000, - 0.7113, 0.8216, 1.0000, - 0.7018, 0.8153, 1.0000, - 0.6927, 0.8092, 1.0000, - 0.6839, 0.8032, 1.0000, - 0.6755, 0.7975, 1.0000, - 0.6674, 0.7921, 1.0000, - 0.6595, 0.7867, 1.0000, - 0.6520, 0.7816, 1.0000, - 0.6447, 0.7765, 1.0000, - 0.6376, 0.7717, 1.0000, - 0.6308, 0.7670, 1.0000, - 0.6242, 0.7623, 1.0000, - 0.6179, 0.7579, 1.0000, - 0.6117, 0.7536, 1.0000, - 0.6058, 0.7493, 1.0000, - 0.6000, 0.7453, 1.0000, - 0.5944, 0.7414, 1.0000 /* 10000K */ + 1.00000000, 0.18172716, 0.00000000, /* 1000K */ + 1.00000000, 0.25503671, 0.00000000, /* 1100K */ + 1.00000000, 0.30942099, 0.00000000, /* 1200K */ + 1.00000000, 0.35357379, 0.00000000, /* ... */ + 1.00000000, 0.39091524, 0.00000000, + 1.00000000, 0.42322816, 0.00000000, + 1.00000000, 0.45159884, 0.00000000, + 1.00000000, 0.47675916, 0.00000000, + 1.00000000, 0.49923747, 0.00000000, + 1.00000000, 0.51943421, 0.00000000, + 1.00000000, 0.54360078, 0.08679949, + 1.00000000, 0.56618736, 0.14065513, + 1.00000000, 0.58734976, 0.18362641, + 1.00000000, 0.60724493, 0.22137978, + 1.00000000, 0.62600248, 0.25591950, + 1.00000000, 0.64373109, 0.28819679, + 1.00000000, 0.66052319, 0.31873863, + 1.00000000, 0.67645822, 0.34786758, + 1.00000000, 0.69160518, 0.37579588, + 1.00000000, 0.70602449, 0.40267128, + 1.00000000, 0.71976951, 0.42860152, + 1.00000000, 0.73288760, 0.45366838, + 1.00000000, 0.74542112, 0.47793608, + 1.00000000, 0.75740814, 0.50145662, + 1.00000000, 0.76888303, 0.52427322, + 1.00000000, 0.77987699, 0.54642268, + 1.00000000, 0.79041843, 0.56793692, + 1.00000000, 0.80053332, 0.58884417, + 1.00000000, 0.81024551, 0.60916971, + 1.00000000, 0.81957693, 0.62893653, + 1.00000000, 0.82854786, 0.64816570, + 1.00000000, 0.83717703, 0.66687674, + 1.00000000, 0.84548188, 0.68508786, + 1.00000000, 0.85347859, 0.70281616, + 1.00000000, 0.86118227, 0.72007777, + 1.00000000, 0.86860704, 0.73688797, + 1.00000000, 0.87576611, 0.75326132, + 1.00000000, 0.88267187, 0.76921169, + 1.00000000, 0.88933596, 0.78475236, + 1.00000000, 0.89576933, 0.79989606, + 1.00000000, 0.90198230, 0.81465502, + 1.00000000, 0.90963069, 0.82838210, + 1.00000000, 0.91710889, 0.84190889, + 1.00000000, 0.92441842, 0.85523742, + 1.00000000, 0.93156127, 0.86836903, + 1.00000000, 0.93853986, 0.88130458, + 1.00000000, 0.94535695, 0.89404470, + 1.00000000, 0.95201559, 0.90658983, + 1.00000000, 0.95851906, 0.91894041, + 1.00000000, 0.96487079, 0.93109690, + 1.00000000, 0.97107439, 0.94305985, + 1.00000000, 0.97713351, 0.95482993, + 1.00000000, 0.98305189, 0.96640795, + 1.00000000, 0.98883326, 0.97779486, + 1.00000000, 0.99448139, 0.98899179, + 1.00000000, 1.00000000, 1.00000000, /* 6500K */ + 0.98947904, 0.99348723, 1.00000000, + 0.97940448, 0.98722715, 1.00000000, + 0.96975025, 0.98120637, 1.00000000, + 0.96049223, 0.97541240, 1.00000000, + 0.95160805, 0.96983355, 1.00000000, + 0.94303638, 0.96443333, 1.00000000, + 0.93480451, 0.95923080, 1.00000000, + 0.92689056, 0.95421394, 1.00000000, + 0.91927697, 0.94937330, 1.00000000, + 0.91194747, 0.94470005, 1.00000000, + 0.90488690, 0.94018594, 1.00000000, + 0.89808115, 0.93582323, 1.00000000, + 0.89151710, 0.93160469, 1.00000000, + 0.88518247, 0.92752354, 1.00000000, + 0.87906581, 0.92357340, 1.00000000, + 0.87315640, 0.91974827, 1.00000000, + 0.86744421, 0.91604254, 1.00000000, + 0.86191983, 0.91245088, 1.00000000, + 0.85657444, 0.90896831, 1.00000000, + 0.85139976, 0.90559011, 1.00000000, + 0.84638799, 0.90231183, 1.00000000, + 0.84153180, 0.89912926, 1.00000000, + 0.83682430, 0.89603843, 1.00000000, + 0.83225897, 0.89303558, 1.00000000, + 0.82782969, 0.89011714, 1.00000000, + 0.82353066, 0.88727974, 1.00000000, + 0.81935641, 0.88452017, 1.00000000, + 0.81530175, 0.88183541, 1.00000000, + 0.81136180, 0.87922257, 1.00000000, + 0.80753191, 0.87667891, 1.00000000, + 0.80380769, 0.87420182, 1.00000000, + 0.80018497, 0.87178882, 1.00000000, + 0.79665980, 0.86943756, 1.00000000, + 0.79322843, 0.86714579, 1.00000000, + 0.78988728, 0.86491137, 1.00000000, /* 10000K */ + 0.78663296, 0.86273225, 1.00000000, + 0.78346225, 0.86060650, 1.00000000, + 0.78037207, 0.85853224, 1.00000000, + 0.77735950, 0.85650771, 1.00000000, + 0.77442176, 0.85453121, 1.00000000, + 0.77155617, 0.85260112, 1.00000000, + 0.76876022, 0.85071588, 1.00000000, + 0.76603147, 0.84887402, 1.00000000, + 0.76336762, 0.84707411, 1.00000000, + 0.76076645, 0.84531479, 1.00000000, + 0.75822586, 0.84359476, 1.00000000, + 0.75574383, 0.84191277, 1.00000000, + 0.75331843, 0.84026762, 1.00000000, + 0.75094780, 0.83865816, 1.00000000, + 0.74863017, 0.83708329, 1.00000000, + 0.74636386, 0.83554194, 1.00000000, + 0.74414722, 0.83403311, 1.00000000, + 0.74197871, 0.83255582, 1.00000000, + 0.73985682, 0.83110912, 1.00000000, + 0.73778012, 0.82969211, 1.00000000, + 0.73574723, 0.82830393, 1.00000000, + 0.73375683, 0.82694373, 1.00000000, + 0.73180765, 0.82561071, 1.00000000, + 0.72989845, 0.82430410, 1.00000000, + 0.72802807, 0.82302316, 1.00000000, + 0.72619537, 0.82176715, 1.00000000, + 0.72439927, 0.82053539, 1.00000000, + 0.72263872, 0.81932722, 1.00000000, + 0.72091270, 0.81814197, 1.00000000, + 0.71922025, 0.81697905, 1.00000000, + 0.71756043, 0.81583783, 1.00000000, + 0.71593234, 0.81471775, 1.00000000, + 0.71433510, 0.81361825, 1.00000000, + 0.71276788, 0.81253878, 1.00000000, + 0.71122987, 0.81147883, 1.00000000, + 0.70972029, 0.81043789, 1.00000000, + 0.70823838, 0.80941546, 1.00000000, + 0.70678342, 0.80841109, 1.00000000, + 0.70535469, 0.80742432, 1.00000000, + 0.70395153, 0.80645469, 1.00000000, + 0.70257327, 0.80550180, 1.00000000, + 0.70121928, 0.80456522, 1.00000000, + 0.69988894, 0.80364455, 1.00000000, + 0.69858167, 0.80273941, 1.00000000, + 0.69729688, 0.80184943, 1.00000000, + 0.69603402, 0.80097423, 1.00000000, + 0.69479255, 0.80011347, 1.00000000, + 0.69357196, 0.79926681, 1.00000000, + 0.69237173, 0.79843391, 1.00000000, + 0.69119138, 0.79761446, 1.00000000, /* 15000K */ + 0.69003044, 0.79680814, 1.00000000, + 0.68888844, 0.79601466, 1.00000000, + 0.68776494, 0.79523371, 1.00000000, + 0.68665951, 0.79446502, 1.00000000, + 0.68557173, 0.79370830, 1.00000000, + 0.68450119, 0.79296330, 1.00000000, + 0.68344751, 0.79222975, 1.00000000, + 0.68241029, 0.79150740, 1.00000000, + 0.68138918, 0.79079600, 1.00000000, + 0.68038380, 0.79009531, 1.00000000, + 0.67939381, 0.78940511, 1.00000000, + 0.67841888, 0.78872517, 1.00000000, + 0.67745866, 0.78805526, 1.00000000, + 0.67651284, 0.78739518, 1.00000000, + 0.67558112, 0.78674472, 1.00000000, + 0.67466317, 0.78610368, 1.00000000, + 0.67375872, 0.78547186, 1.00000000, + 0.67286748, 0.78484907, 1.00000000, + 0.67198916, 0.78423512, 1.00000000, + 0.67112350, 0.78362984, 1.00000000, + 0.67027024, 0.78303305, 1.00000000, + 0.66942911, 0.78244457, 1.00000000, + 0.66859988, 0.78186425, 1.00000000, + 0.66778228, 0.78129191, 1.00000000, + 0.66697610, 0.78072740, 1.00000000, + 0.66618110, 0.78017057, 1.00000000, + 0.66539706, 0.77962127, 1.00000000, + 0.66462376, 0.77907934, 1.00000000, + 0.66386098, 0.77854465, 1.00000000, + 0.66310852, 0.77801705, 1.00000000, + 0.66236618, 0.77749642, 1.00000000, + 0.66163375, 0.77698261, 1.00000000, + 0.66091106, 0.77647551, 1.00000000, + 0.66019791, 0.77597498, 1.00000000, + 0.65949412, 0.77548090, 1.00000000, + 0.65879952, 0.77499315, 1.00000000, + 0.65811392, 0.77451161, 1.00000000, + 0.65743716, 0.77403618, 1.00000000, + 0.65676908, 0.77356673, 1.00000000, + 0.65610952, 0.77310316, 1.00000000, + 0.65545831, 0.77264537, 1.00000000, + 0.65481530, 0.77219324, 1.00000000, + 0.65418036, 0.77174669, 1.00000000, + 0.65355332, 0.77130560, 1.00000000, + 0.65293404, 0.77086988, 1.00000000, + 0.65232240, 0.77043944, 1.00000000, + 0.65171824, 0.77001419, 1.00000000, + 0.65112144, 0.76959404, 1.00000000, + 0.65053187, 0.76917889, 1.00000000, + 0.64994941, 0.76876866, 1.00000000, /* 20000K */ + 0.64937392, 0.76836326, 1.00000000, + 0.64880528, 0.76796263, 1.00000000, + 0.64824339, 0.76756666, 1.00000000, + 0.64768812, 0.76717529, 1.00000000, + 0.64713935, 0.76678844, 1.00000000, + 0.64659699, 0.76640603, 1.00000000, + 0.64606092, 0.76602798, 1.00000000, + 0.64553103, 0.76565424, 1.00000000, + 0.64500722, 0.76528472, 1.00000000, + 0.64448939, 0.76491935, 1.00000000, + 0.64397745, 0.76455808, 1.00000000, + 0.64347129, 0.76420082, 1.00000000, + 0.64297081, 0.76384753, 1.00000000, + 0.64247594, 0.76349813, 1.00000000, + 0.64198657, 0.76315256, 1.00000000, + 0.64150261, 0.76281076, 1.00000000, + 0.64102399, 0.76247267, 1.00000000, + 0.64055061, 0.76213824, 1.00000000, + 0.64008239, 0.76180740, 1.00000000, + 0.63961926, 0.76148010, 1.00000000, + 0.63916112, 0.76115628, 1.00000000, + 0.63870790, 0.76083590, 1.00000000, + 0.63825953, 0.76051890, 1.00000000, + 0.63781592, 0.76020522, 1.00000000, + 0.63737701, 0.75989482, 1.00000000, + 0.63694273, 0.75958764, 1.00000000, + 0.63651299, 0.75928365, 1.00000000, + 0.63608774, 0.75898278, 1.00000000, + 0.63566691, 0.75868499, 1.00000000, + 0.63525042, 0.75839025, 1.00000000, + 0.63483822, 0.75809849, 1.00000000, + 0.63443023, 0.75780969, 1.00000000, + 0.63402641, 0.75752379, 1.00000000, + 0.63362667, 0.75724075, 1.00000000, + 0.63323097, 0.75696053, 1.00000000, + 0.63283925, 0.75668310, 1.00000000, + 0.63245144, 0.75640840, 1.00000000, + 0.63206749, 0.75613641, 1.00000000, + 0.63168735, 0.75586707, 1.00000000, + 0.63131096, 0.75560036, 1.00000000, + 0.63093826, 0.75533624, 1.00000000, + 0.63056920, 0.75507467, 1.00000000, + 0.63020374, 0.75481562, 1.00000000, + 0.62984181, 0.75455904, 1.00000000, + 0.62948337, 0.75430491, 1.00000000, + 0.62912838, 0.75405319, 1.00000000, + 0.62877678, 0.75380385, 1.00000000, + 0.62842852, 0.75355685, 1.00000000, + 0.62808356, 0.75331217, 1.00000000, + 0.62774186, 0.75306977, 1.00000000, /* 25000K */ + 0.62740336, 0.75282962, 1.00000000 /* 25100K */ }; diff --git a/src/redshift.c b/src/redshift.c index 1edfd86..d7e9b37 100644 --- a/src/redshift.c +++ b/src/redshift.c @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with Redshift. If not, see <http://www.gnu.org/licenses/>. - Copyright (c) 2011 Jon Lund Steffensen <jonlst@gmail.com> + Copyright (c) 2013 Jon Lund Steffensen <jonlst@gmail.com> */ #ifdef HAVE_CONFIG_H @@ -200,7 +200,7 @@ static const location_provider_t location_providers[] = { #define MIN_LON -180.0 #define MAX_LON 180.0 #define MIN_TEMP 1000 -#define MAX_TEMP 10000 +#define MAX_TEMP 25000 #define MIN_BRIGHTNESS 0.1 #define MAX_BRIGHTNESS 1.0 #define MIN_GAMMA 0.1 @@ -208,7 +208,7 @@ static const location_provider_t location_providers[] = { /* Default values for parameters. */ #define DEFAULT_DAY_TEMP 5500 -#define DEFAULT_NIGHT_TEMP 3700 +#define DEFAULT_NIGHT_TEMP 3500 #define DEFAULT_BRIGHTNESS 1.0 #define DEFAULT_GAMMA 1.0 @@ -996,7 +996,7 @@ main(int argc, char *argv[]) } /* Color temperature at daytime */ - if (temp_day < MIN_TEMP || temp_day >= MAX_TEMP) { + if (temp_day < MIN_TEMP || temp_day > MAX_TEMP) { fprintf(stderr, _("Temperature must be between %uK and %uK.\n"), MIN_TEMP, MAX_TEMP); @@ -1004,7 +1004,7 @@ main(int argc, char *argv[]) } /* Color temperature at night */ - if (temp_night < MIN_TEMP || temp_night >= MAX_TEMP) { + if (temp_night < MIN_TEMP || temp_night > MAX_TEMP) { fprintf(stderr, _("Temperature must be between %uK and %uK.\n"), MIN_TEMP, MAX_TEMP); @@ -1014,7 +1014,7 @@ main(int argc, char *argv[]) if (mode == PROGRAM_MODE_MANUAL) { /* Check color temperature to be set */ - if (temp_set < MIN_TEMP || temp_set >= MAX_TEMP) { + if (temp_set < MIN_TEMP || temp_set > MAX_TEMP) { fprintf(stderr, _("Temperature must be between %uK and %uK.\n"), MIN_TEMP, MAX_TEMP); |