Skip to content

Commit e1bd9a3

Browse files
author
cabanier
committed
Fixed gamma function in js section
1 parent 994038e commit e1bd9a3

2 files changed

Lines changed: 27 additions & 39 deletions

File tree

css-color/Overview.bs

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2911,7 +2911,11 @@ function lin_P3(RGB) {
29112911
// to linear light (un-companded) form.
29122912

29132913
return RGB.map(function (val) {
2914-
return Math.pow(val, 2.4);
2914+
if (val < 0.04045) {
2915+
return val / 12.92;
2916+
}
2917+
2918+
return Math.pow((val + 0.055) / 1.055, 2.4);
29152919
});
29162920
}
29172921

@@ -2920,7 +2924,11 @@ function gam_P3(RGB) {
29202924
// to gamma corrected form
29212925

29222926
return RGB.map(function (val) {
2923-
return Math.pow(val, 1/2.4);
2927+
if (val > 0.0031308) {
2928+
return 1.055 * Math.pow(val, 1/2.4) - 0.055;
2929+
}
2930+
2931+
return 12.92 * val;
29242932
});
29252933
}
29262934

@@ -2954,31 +2962,17 @@ function XYZ_to_lin_P3(XYZ) {
29542962
function lin_2020(RGB) {
29552963
// convert an array of Rec. 2020 RGB values in the range 0.0 - 1.0
29562964
// to linear light (un-companded) form.
2957-
const α = 1.09929682680944 ;
2958-
const β = 0.018053968510807;
2959-
29602965
return RGB.map(function (val) {
2961-
if (val < β * 4.5 ) {
2962-
return val / 4.5;
2963-
}
2964-
2965-
return Math.pow((val + α -1 ) / α, 2.4);
2966+
return Math.pow(val, 2.4);
29662967
});
29672968
}
29682969
//check with standard this really is 2.4 and 1/2.4, not 0.45 was wikipedia claims
29692970

29702971
function gam_2020(RGB) {
29712972
// convert an array of linear-light Rec. 2020 RGB in the range 0.0-1.0
29722973
// to gamma corrected form
2973-
const α = 1.09929682680944 ;
2974-
const β = 0.018053968510807;
2975-
29762974
return RGB.map(function (val) {
2977-
if (val > β ) {
2978-
return α * Math.pow(val, 1/2.4) - (α - 1);
2979-
}
2980-
2981-
return 4.5 * val;
2975+
return Math.pow(val, 1/2.4);
29822976
});
29832977
}
29842978

css-color/Overview.html

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -280,7 +280,7 @@
280280
<div class="head">
281281
<p data-fill-with="logo"><a class="logo" href="http://www.w3.org/"> <img alt="W3C" height="48" src="https://www.w3.org/StyleSheets/TR/2016/logos/W3C" width="72"> </a> </p>
282282
<h1>CSS Color Module Level 4</h1>
283-
<h2 class="no-num no-toc no-ref heading settled" id="subtitle"><span class="content">Editor’s Draft, <time class="dt-updated" datetime="2016-09-28">28 September 2016</time></span></h2>
283+
<h2 class="no-num no-toc no-ref heading settled" id="subtitle"><span class="content">Editor’s Draft, <time class="dt-updated" datetime="2016-09-29">29 September 2016</time></span></h2>
284284
<div data-fill-with="spec-metadata">
285285
<dl>
286286
<dt>This version:
@@ -4660,7 +4660,11 @@ <h2 class="heading settled" data-level="17" id="color-conversion-code"><span cla
46604660
</span> <span class="c1">// to linear light (un-companded) form.
46614661
</span>
46624662
<span class="k">return</span> RGB<span class="p">.</span>map<span class="p">(</span><span class="kd">function</span> <span class="p">(</span>val<span class="p">)</span> <span class="p">{</span>
4663-
<span class="k">return</span> Math<span class="p">.</span>pow<span class="p">(</span>val<span class="p">,</span> <span class="mf">2.4</span><span class="p">)</span><span class="p">;</span>
4663+
<span class="k">if</span> <span class="p">(</span>val <span class="o">&lt;</span> <span class="mf">0.04045</span><span class="p">)</span> <span class="p">{</span>
4664+
<span class="k">return</span> val <span class="o">/</span> <span class="mf">12.92</span><span class="p">;</span>
4665+
<span class="p">}</span>
4666+
4667+
<span class="k">return</span> Math<span class="p">.</span>pow<span class="p">(</span><span class="p">(</span>val <span class="o">+</span> <span class="mf">0.055</span><span class="p">)</span> <span class="o">/</span> <span class="mf">1.055</span><span class="p">,</span> <span class="mf">2.4</span><span class="p">)</span><span class="p">;</span>
46644668
<span class="p">}</span><span class="p">)</span><span class="p">;</span>
46654669
<span class="p">}</span>
46664670

@@ -4669,7 +4673,11 @@ <h2 class="heading settled" data-level="17" id="color-conversion-code"><span cla
46694673
</span> <span class="c1">// to gamma corrected form
46704674
</span>
46714675
<span class="k">return</span> RGB<span class="p">.</span>map<span class="p">(</span><span class="kd">function</span> <span class="p">(</span>val<span class="p">)</span> <span class="p">{</span>
4672-
<span class="k">return</span> Math<span class="p">.</span>pow<span class="p">(</span>val<span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="mf">2.4</span><span class="p">)</span><span class="p">;</span>
4676+
<span class="k">if</span> <span class="p">(</span>val <span class="o">></span> <span class="mf">0.0031308</span><span class="p">)</span> <span class="p">{</span>
4677+
<span class="k">return</span> <span class="mf">1.055</span> <span class="o">*</span> Math<span class="p">.</span>pow<span class="p">(</span>val<span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="mf">2.4</span><span class="p">)</span> <span class="o">-</span> <span class="mf">0.055</span><span class="p">;</span>
4678+
<span class="p">}</span>
4679+
4680+
<span class="k">return</span> <span class="mf">12.92</span> <span class="o">*</span> val<span class="p">;</span>
46734681
<span class="p">}</span><span class="p">)</span><span class="p">;</span>
46744682
<span class="p">}</span>
46754683

@@ -4703,31 +4711,17 @@ <h2 class="heading settled" data-level="17" id="color-conversion-code"><span cla
47034711
<span class="kd">function</span> lin_2020<span class="p">(</span>RGB<span class="p">)</span> <span class="p">{</span>
47044712
<span class="c1">// convert an array of Rec. 2020 RGB values in the range 0.0 - 1.0
47054713
</span> <span class="c1">// to linear light (un-companded) form.
4706-
</span> <span class="kr">const</span> α <span class="o">=</span> <span class="mf">1.09929682680944</span> <span class="p">;</span>
4707-
<span class="kr">const</span> β <span class="o">=</span> <span class="mf">0.018053968510807</span><span class="p">;</span>
4708-
4709-
<span class="k">return</span> RGB<span class="p">.</span>map<span class="p">(</span><span class="kd">function</span> <span class="p">(</span>val<span class="p">)</span> <span class="p">{</span>
4710-
<span class="k">if</span> <span class="p">(</span>val <span class="o">&lt;</span> β <span class="o">*</span> <span class="mf">4.5</span> <span class="p">)</span> <span class="p">{</span>
4711-
<span class="k">return</span> val <span class="o">/</span> <span class="mf">4.5</span><span class="p">;</span>
4712-
<span class="p">}</span>
4713-
4714-
<span class="k">return</span> Math<span class="p">.</span>pow<span class="p">(</span><span class="p">(</span>val <span class="o">+</span> α <span class="o">-</span><span class="mi">1</span> <span class="p">)</span> <span class="o">/</span> α<span class="p">,</span> <span class="mf">2.4</span><span class="p">)</span><span class="p">;</span>
4714+
</span> <span class="k">return</span> RGB<span class="p">.</span>map<span class="p">(</span><span class="kd">function</span> <span class="p">(</span>val<span class="p">)</span> <span class="p">{</span>
4715+
<span class="k">return</span> Math<span class="p">.</span>pow<span class="p">(</span>val<span class="p">,</span> <span class="mf">2.4</span><span class="p">)</span><span class="p">;</span>
47154716
<span class="p">}</span><span class="p">)</span><span class="p">;</span>
47164717
<span class="p">}</span>
47174718
<span class="c1">//check with standard this really is 2.4 and 1/2.4, not 0.45 was wikipedia claims
47184719
</span>
47194720
<span class="kd">function</span> gam_2020<span class="p">(</span>RGB<span class="p">)</span> <span class="p">{</span>
47204721
<span class="c1">// convert an array of linear-light Rec. 2020 RGB in the range 0.0-1.0
47214722
</span> <span class="c1">// to gamma corrected form
4722-
</span> <span class="kr">const</span> α <span class="o">=</span> <span class="mf">1.09929682680944</span> <span class="p">;</span>
4723-
<span class="kr">const</span> β <span class="o">=</span> <span class="mf">0.018053968510807</span><span class="p">;</span>
4724-
4725-
<span class="k">return</span> RGB<span class="p">.</span>map<span class="p">(</span><span class="kd">function</span> <span class="p">(</span>val<span class="p">)</span> <span class="p">{</span>
4726-
<span class="k">if</span> <span class="p">(</span>val <span class="o">></span> β <span class="p">)</span> <span class="p">{</span>
4727-
<span class="k">return</span> α <span class="o">*</span> Math<span class="p">.</span>pow<span class="p">(</span>val<span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="mf">2.4</span><span class="p">)</span> <span class="o">-</span> <span class="p">(</span>α <span class="o">-</span> <span class="mi">1</span><span class="p">)</span><span class="p">;</span>
4728-
<span class="p">}</span>
4729-
4730-
<span class="k">return</span> <span class="mf">4.5</span> <span class="o">*</span> val<span class="p">;</span>
4723+
</span> <span class="k">return</span> RGB<span class="p">.</span>map<span class="p">(</span><span class="kd">function</span> <span class="p">(</span>val<span class="p">)</span> <span class="p">{</span>
4724+
<span class="k">return</span> Math<span class="p">.</span>pow<span class="p">(</span>val<span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="mf">2.4</span><span class="p">)</span><span class="p">;</span>
47314725
<span class="p">}</span><span class="p">)</span><span class="p">;</span>
47324726
<span class="p">}</span>
47334727

0 commit comments

Comments
 (0)