\r
#include <common/utility/assert.h>\r
\r
-#include <boost/algorithm/string.hpp>\r
-\r
namespace caspar { namespace core {\r
\r
image_transform::image_transform() \r
, contrast_(1.0)\r
, saturation_(1.0)\r
, is_key_(false)\r
- , blend_mode_(image_transform::blend_mode::normal)\r
{\r
std::fill(fill_translation_.begin(), fill_translation_.end(), 0.0);\r
std::fill(fill_scale_.begin(), fill_scale_.end(), 1.0);\r
return clip_scale_;\r
}\r
\r
-void image_transform::set_blend_mode(image_transform::blend_mode::type value)\r
-{\r
- blend_mode_ = value;\r
-}\r
-\r
-image_transform::blend_mode::type image_transform::get_blend_mode() const\r
-{\r
- return blend_mode_;\r
-}\r
-\r
image_transform& image_transform::operator*=(const image_transform &other)\r
{\r
opacity_ *= other.opacity_; \r
- blend_mode_ = std::max(blend_mode_, other.blend_mode_);\r
brightness_ *= other.brightness_;\r
contrast_ *= other.contrast_;\r
saturation_ *= other.saturation_;\r
};\r
\r
image_transform result; \r
- result.set_blend_mode (std::max(source.get_blend_mode(), dest.get_blend_mode()));\r
result.set_is_key (source.get_is_key() | dest.get_is_key());\r
result.set_brightness (do_tween(time, source.get_brightness(), dest.get_brightness(), duration, tweener));\r
result.set_contrast (do_tween(time, source.get_contrast(), dest.get_contrast(), duration, tweener));\r
return result;\r
}\r
\r
-image_transform::blend_mode::type get_blend_mode(const std::wstring& str)\r
-{\r
- if(boost::iequals(str, L"normal"))\r
- return image_transform::blend_mode::normal;\r
- else if(boost::iequals(str, L"lighten"))\r
- return image_transform::blend_mode::lighten;\r
- else if(boost::iequals(str, L"darken"))\r
- return image_transform::blend_mode::darken;\r
- else if(boost::iequals(str, L"multiply"))\r
- return image_transform::blend_mode::multiply;\r
- else if(boost::iequals(str, L"average"))\r
- return image_transform::blend_mode::average;\r
- else if(boost::iequals(str, L"add"))\r
- return image_transform::blend_mode::add;\r
- else if(boost::iequals(str, L"subtract"))\r
- return image_transform::blend_mode::subtract;\r
- else if(boost::iequals(str, L"difference"))\r
- return image_transform::blend_mode::difference;\r
- else if(boost::iequals(str, L"negation"))\r
- return image_transform::blend_mode::negation;\r
- else if(boost::iequals(str, L"exclusion"))\r
- return image_transform::blend_mode::exclusion;\r
- else if(boost::iequals(str, L"screen"))\r
- return image_transform::blend_mode::screen;\r
- else if(boost::iequals(str, L"overlay"))\r
- return image_transform::blend_mode::overlay;\r
- else if(boost::iequals(str, L"soft_light"))\r
- return image_transform::blend_mode::soft_light;\r
- else if(boost::iequals(str, L"hard_light"))\r
- return image_transform::blend_mode::hard_light;\r
- else if(boost::iequals(str, L"color_dodge"))\r
- return image_transform::blend_mode::color_dodge;\r
- else if(boost::iequals(str, L"color_burn"))\r
- return image_transform::blend_mode::color_burn;\r
- else if(boost::iequals(str, L"linear_dodge"))\r
- return image_transform::blend_mode::linear_dodge;\r
- else if(boost::iequals(str, L"linear_burn"))\r
- return image_transform::blend_mode::linear_burn;\r
- else if(boost::iequals(str, L"linear_light"))\r
- return image_transform::blend_mode::linear_light;\r
- else if(boost::iequals(str, L"vivid_light"))\r
- return image_transform::blend_mode::vivid_light;\r
- else if(boost::iequals(str, L"pin_light"))\r
- return image_transform::blend_mode::pin_light;\r
- else if(boost::iequals(str, L"hard_mix"))\r
- return image_transform::blend_mode::hard_mix;\r
- else if(boost::iequals(str, L"reflect"))\r
- return image_transform::blend_mode::reflect;\r
- else if(boost::iequals(str, L"glow"))\r
- return image_transform::blend_mode::glow;\r
- else if(boost::iequals(str, L"phoenix"))\r
- return image_transform::blend_mode::phoenix;\r
- else if(boost::iequals(str, L"contrast"))\r
- return image_transform::blend_mode::contrast;\r
- else if(boost::iequals(str, L"saturation"))\r
- return image_transform::blend_mode::saturation;\r
- else if(boost::iequals(str, L"color"))\r
- return image_transform::blend_mode::color;\r
- else if(boost::iequals(str, L"luminosity"))\r
- return image_transform::blend_mode::luminosity;\r
- \r
- return image_transform::blend_mode::normal;\r
-}\r
-\r
bool operator<(const image_transform& lhs, const image_transform& rhs)\r
{\r
return memcmp(&lhs, &rhs, sizeof(image_transform)) < 0;\r