DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit eff1c6f578045e790f61d65afa97c5b18c6f77cf
parent 7190f4da7661d00b23f48317f9e99f83fea0ea4f
Author: falkTX <falktx@falktx.com>
Date:   Wed, 31 Aug 2022 13:49:51 +0100

Add overloaded double precision functions to parameter ranges

Diffstat:
Mdistrho/DistrhoPlugin.hpp | 54++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 file changed, 52 insertions(+), 2 deletions(-)

diff --git a/distrho/DistrhoPlugin.hpp b/distrho/DistrhoPlugin.hpp @@ -362,7 +362,7 @@ struct ParameterRanges { */ float getNormalizedValue(const float& value) const noexcept { - const float normValue((value - min) / (max - min)); + const float normValue = (value - min) / (max - min); if (normValue <= 0.0f) return 0.0f; @@ -372,6 +372,21 @@ struct ParameterRanges { } /** + Get a value normalized to 0.0<->1.0. + Overloaded function using double precision values. + */ + double getNormalizedValue(const double& value) const noexcept + { + const double normValue = (value - min) / (max - min); + + if (normValue <= 0.0) + return 0.0; + if (normValue >= 1.0) + return 1.0; + return normValue; + } + + /** Get a value normalized to 0.0<->1.0, fixed within range. */ float getFixedAndNormalizedValue(const float& value) const noexcept @@ -381,7 +396,7 @@ struct ParameterRanges { if (value >= max) return 1.0f; - const float normValue((value - min) / (max - min)); + const float normValue = (value - min) / (max - min); if (normValue <= 0.0f) return 0.0f; @@ -392,6 +407,27 @@ struct ParameterRanges { } /** + Get a value normalized to 0.0<->1.0, fixed within range. + Overloaded function using double precision values. + */ + double getFixedAndNormalizedValue(const double& value) const noexcept + { + if (value <= min) + return 0.0; + if (value >= max) + return 1.0; + + const double normValue = (value - min) / (max - min); + + if (normValue <= 0.0) + return 0.0; + if (normValue >= 1.0) + return 1.0; + + return normValue; + } + + /** Get a proper value previously normalized to 0.0<->1.0. */ float getUnnormalizedValue(const float& value) const noexcept @@ -403,6 +439,20 @@ struct ParameterRanges { return value * (max - min) + min; } + + /** + Get a proper value previously normalized to 0.0<->1.0. + Overloaded function using double precision values. + */ + double getUnnormalizedValue(const double& value) const noexcept + { + if (value <= 0.0) + return min; + if (value >= 1.0) + return max; + + return value * (max - min) + min; + } }; /**