+ else if(_parameters[1] == L"BLEND")\r
+ {\r
+ auto blend_str = _parameters.at(2);\r
+\r
+ auto transform = [=](image_transform transform) -> image_transform\r
+ {\r
+ transform.set_blend_mode(get_blend_mode(blend_str));\r
+ return transform;\r
+ };\r
+ \r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform); \r
+ }\r
+ else if(_parameters[1] == L"ALPHA")\r
+ {\r
+ auto blend_str = _parameters.at(2);\r
+\r
+ auto transform = [=](image_transform transform) -> image_transform\r
+ {\r
+ transform.set_alpha_mode(get_alpha_mode(blend_str));\r
+ return transform;\r
+ };\r
+ \r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform); \r
+ }\r
+ else if(_parameters[1] == L"BRIGHTNESS")\r
+ {\r
+ auto value = boost::lexical_cast<double>(_parameters.at(2));\r
+ int duration = _parameters.size() > 3 ? lexical_cast_or_default(_parameters[3], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 4 ? _parameters[4] : L"linear";\r
+ auto transform = [=](image_transform transform) -> image_transform\r
+ {\r
+ transform.set_brightness(value);\r
+ return transform;\r
+ };\r
+ \r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); \r
+ }\r
+ else if(_parameters[1] == L"SATURATION")\r
+ {\r
+ auto value = boost::lexical_cast<double>(_parameters.at(2));\r
+ int duration = _parameters.size() > 3 ? lexical_cast_or_default(_parameters[3], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 4 ? _parameters[4] : L"linear";\r
+ auto transform = [=](image_transform transform) -> image_transform\r
+ {\r
+ transform.set_saturation(value);\r
+ return transform;\r
+ };\r
+ \r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); \r
+ }\r
+ else if(_parameters[1] == L"CONTRAST")\r
+ {\r
+ auto value = boost::lexical_cast<double>(_parameters.at(2));\r
+ int duration = _parameters.size() > 3 ? lexical_cast_or_default(_parameters[3], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 4 ? _parameters[4] : L"linear";\r
+ auto transform = [=](image_transform transform) -> image_transform\r
+ {\r
+ transform.set_contrast(value);\r
+ return transform;\r
+ };\r
+ \r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); \r
+ }\r
+ else if(_parameters[1] == L"LEVELS")\r
+ {\r
+ image_transform::levels value;\r
+ value.min_input = boost::lexical_cast<double>(_parameters.at(2));\r
+ value.max_input = boost::lexical_cast<double>(_parameters.at(3));\r
+ value.gamma = boost::lexical_cast<double>(_parameters.at(4));\r
+ value.min_output = boost::lexical_cast<double>(_parameters.at(5));\r
+ value.max_output = boost::lexical_cast<double>(_parameters.at(6));\r
+ int duration = _parameters.size() > 7 ? lexical_cast_or_default(_parameters[7], 0) : 0;\r
+ std::wstring tween = _parameters.size() > 8 ? _parameters[8] : L"linear";\r
+\r
+ auto transform = [=](image_transform transform) -> image_transform\r
+ {\r
+ transform.set_levels(value);\r
+ return transform;\r
+ };\r
+ \r
+ int layer = GetLayerIndex();\r
+ GetChannel()->mixer()->apply_image_transform(GetLayerIndex(), transform, duration, tween); \r
+ }\r