From eff1c6f578045e790f61d65afa97c5b18c6f77cf Mon Sep 17 00:00:00 2001 From: falkTX Date: Wed, 31 Aug 2022 13:50:18 +0100 Subject: [PATCH] Add overloaded double precision functions to parameter ranges --- distrho/DistrhoPlugin.hpp | 54 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/distrho/DistrhoPlugin.hpp b/distrho/DistrhoPlugin.hpp index f1e00271..41493e53 100644 --- 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; @@ -371,6 +371,21 @@ struct ParameterRanges { return normValue; } + /** + 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. */ @@ -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; @@ -391,6 +406,27 @@ struct ParameterRanges { return normValue; } + /** + 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. */ @@ -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; + } }; /**