Remove gamma value lower limit to enable inverse gamma correction (#5187)
* Enable inverse gamma correction (gamma < 1.0) Allow gamma values from 0.1 to 3.0 instead of restricting to > 1.0. This enables inverse gamma curves for use cases requiring brightened mid-tones and compressed highlights. Changes: - Update backend validation in set.cpp and cfg.cpp to accept 0.1-3.0 - Update HTML form min value from 1 to 0.1 Co-authored-by: Flo <flo@Mac.lan> Co-authored-by: Damian Schneider <daedae@gmx.ch>
This commit is contained in:
@@ -520,11 +520,11 @@ bool deserializeConfig(JsonObject doc, bool fromFS) {
|
|||||||
CJSON(gammaCorrectVal, light["gc"]["val"]); // default 2.2
|
CJSON(gammaCorrectVal, light["gc"]["val"]); // default 2.2
|
||||||
float light_gc_bri = light["gc"]["bri"] | 1.0f; // default to 1.0 (false)
|
float light_gc_bri = light["gc"]["bri"] | 1.0f; // default to 1.0 (false)
|
||||||
float light_gc_col = light["gc"]["col"] | gammaCorrectVal; // default to gammaCorrectVal (true)
|
float light_gc_col = light["gc"]["col"] | gammaCorrectVal; // default to gammaCorrectVal (true)
|
||||||
if (light_gc_bri > 1.0f) gammaCorrectBri = true;
|
if (light_gc_bri != 1.0f) gammaCorrectBri = true;
|
||||||
else gammaCorrectBri = false;
|
else gammaCorrectBri = false;
|
||||||
if (light_gc_col > 1.0f) gammaCorrectCol = true;
|
if (light_gc_col != 1.0f) gammaCorrectCol = true;
|
||||||
else gammaCorrectCol = false;
|
else gammaCorrectCol = false;
|
||||||
if (gammaCorrectVal <= 1.0f || gammaCorrectVal > 3) {
|
if (gammaCorrectVal < 0.1f || gammaCorrectVal > 3) {
|
||||||
gammaCorrectVal = 1.0f; // no gamma correction
|
gammaCorrectVal = 1.0f; // no gamma correction
|
||||||
gammaCorrectBri = false;
|
gammaCorrectBri = false;
|
||||||
gammaCorrectCol = false;
|
gammaCorrectCol = false;
|
||||||
|
|||||||
@@ -958,7 +958,7 @@ Swap: <select id="xw${s}" name="XW${s}">
|
|||||||
Apply preset <input name="BP" type="number" class="m" min="0" max="250" required> at boot (0 uses values from above)<br><br>
|
Apply preset <input name="BP" type="number" class="m" min="0" max="250" required> at boot (0 uses values from above)<br><br>
|
||||||
Use Gamma correction for color: <input type="checkbox" name="GC"> (strongly recommended)<br>
|
Use Gamma correction for color: <input type="checkbox" name="GC"> (strongly recommended)<br>
|
||||||
Use Gamma correction for brightness: <input type="checkbox" name="GB"> (not recommended)<br>
|
Use Gamma correction for brightness: <input type="checkbox" name="GB"> (not recommended)<br>
|
||||||
Use Gamma value: <input name="GV" type="number" class="m" placeholder="2.8" min="1" max="3" step="0.1" required><br><br>
|
Use Gamma value: <input name="GV" type="number" class="m" placeholder="2.2" min="0.1" max="3" step="0.1" required><br><br>
|
||||||
Brightness factor: <input name="BF" type="number" class="m" min="1" max="255" required> %
|
Brightness factor: <input name="BF" type="number" class="m" min="1" max="255" required> %
|
||||||
<h3>Transitions</h3>
|
<h3>Transitions</h3>
|
||||||
Default transition time: <input name="TD" type="number" class="xl" min="0" max="65500"> ms<br>
|
Default transition time: <input name="TD" type="number" class="xl" min="0" max="65500"> ms<br>
|
||||||
|
|||||||
@@ -378,7 +378,7 @@ void handleSettingsSet(AsyncWebServerRequest *request, byte subPage)
|
|||||||
gammaCorrectBri = request->hasArg(F("GB"));
|
gammaCorrectBri = request->hasArg(F("GB"));
|
||||||
gammaCorrectCol = request->hasArg(F("GC"));
|
gammaCorrectCol = request->hasArg(F("GC"));
|
||||||
gammaCorrectVal = request->arg(F("GV")).toFloat();
|
gammaCorrectVal = request->arg(F("GV")).toFloat();
|
||||||
if (gammaCorrectVal <= 1.0f || gammaCorrectVal > 3) {
|
if (gammaCorrectVal < 0.1f || gammaCorrectVal > 3) {
|
||||||
gammaCorrectVal = 1.0f; // no gamma correction
|
gammaCorrectVal = 1.0f; // no gamma correction
|
||||||
gammaCorrectBri = false;
|
gammaCorrectBri = false;
|
||||||
gammaCorrectCol = false;
|
gammaCorrectCol = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user