# HG changeset patch # User Sebastien Jodogne # Date 1630415245 -7200 # Node ID 46fff4855a643aee16e1ba1262149d03818cf038 # Parent 770c288709253a5a30f98bd707df9c05cef4cb7c compatibility with older versions of the Orthanc framework diff -r 770c28870925 -r 46fff4855a64 Plugin/WadoRsRetrieveRendered.cpp --- a/Plugin/WadoRsRetrieveRendered.cpp Tue Aug 31 14:52:41 2021 +0200 +++ b/Plugin/WadoRsRetrieveRendered.cpp Tue Aug 31 15:07:25 2021 +0200 @@ -26,13 +26,70 @@ #include #include #include -#include #include +#if ORTHANC_FRAMEWORK_VERSION_IS_ABOVE(1, 9, 7) +# include +#else +# include +#endif + #include #include +static bool ParseFloat(float& target, + const std::string& source) +{ +#if ORTHANC_FRAMEWORK_VERSION_IS_ABOVE(1, 9, 7) + return Orthanc::SerializationToolbox::ParseFloat(target, source); + +#else + // Emulation for older versions of the Orthanc framework + std::string s = Orthanc::Toolbox::StripSpaces(source); + + if (s.empty()) + { + return false; + } + else + { + try + { + target = boost::lexical_cast(s); + return true; + } + catch (boost::bad_lexical_cast&) + { + return false; + } + } +#endif +} + + +static bool ParseFirstFloat(float& target, + const std::string& source) +{ +#if ORTHANC_FRAMEWORK_VERSION_IS_ABOVE(1, 9, 7) + return Orthanc::SerializationToolbox::ParseFirstFloat(target, source); + +#else + // Emulation for older versions of the Orthanc framework + std::vector tokens; + Orthanc::Toolbox::TokenizeString(tokens, source, '\\'); + if (tokens.empty()) + { + return false; + } + else + { + return ParseFloat(target, tokens[0]); + } +#endif +} + + namespace { enum WindowingMode @@ -722,8 +779,8 @@ { float s, i; - if (Orthanc::SerializationToolbox::ParseFloat(s, tags[RESCALE_SLOPE].asString()) && - Orthanc::SerializationToolbox::ParseFloat(i, tags[RESCALE_INTERCEPT].asString())) + if (ParseFloat(s, tags[RESCALE_SLOPE].asString()) && + ParseFloat(i, tags[RESCALE_INTERCEPT].asString())) { parameters.SetRescaleSlope(s); parameters.SetRescaleIntercept(i); @@ -749,8 +806,8 @@ { float wc, ww; - if (Orthanc::SerializationToolbox::ParseFirstFloat(wc, tags[WINDOW_CENTER].asString()) && - Orthanc::SerializationToolbox::ParseFirstFloat(ww, tags[WINDOW_WIDTH].asString())) + if (ParseFirstFloat(wc, tags[WINDOW_CENTER].asString()) && + ParseFirstFloat(ww, tags[WINDOW_WIDTH].asString())) { parameters.SetWindow(wc, ww); return true;