]> git.sesse.net Git - casparcg/commitdiff
[scene] Added floor() function to expression language
authorHelge Norberg <helge.norberg@svt.se>
Tue, 21 Feb 2017 18:16:35 +0000 (19:16 +0100)
committerHelge Norberg <helge.norberg@svt.se>
Tue, 21 Feb 2017 18:16:35 +0000 (19:16 +0100)
core/producer/scene/expression_parser.cpp

index b9bd66e8cc05b5133d6650733529473ad2711930..ae1e89656a84a597600b8e7f280d089a1f3b3ee6 100644 (file)
@@ -158,6 +158,17 @@ boost::any create_abs_function(const std::vector<boost::any>& params, const vari
        return val.transformed([](double v) { return std::abs(v); });
 }
 
+boost::any create_floor_function(const std::vector<boost::any>& params, const variable_repository& var_repo)
+{
+       if (params.size() != 1)
+               CASPAR_THROW_EXCEPTION(user_error()
+                       << msg_info(L"floor() function requires one parameters: value"));
+
+       auto val = require<double>(params.at(0));
+
+       return val.transformed([](double v) { return std::floor(v); });
+}
+
 boost::any parse_function(
                const std::wstring& function_name,
                std::wstring::const_iterator& cursor,
@@ -169,7 +180,8 @@ boost::any parse_function(
                {L"animate",    create_animate_function },
                {L"sin",                create_sin_function },
                {L"cos",                create_cos_function },
-               {L"abs",                create_abs_function }
+               {L"abs",                create_abs_function },
+               {L"floor",              create_floor_function }
        };
 
        auto function = FUNCTIONS.find(function_name);