]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sun, 23 Jan 2011 10:52:27 +0000 (10:52 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sun, 23 Jan 2011 10:52:27 +0000 (10:52 +0000)
protocol/amcp/AMCPCommandsImpl.cpp

index a412e806f6374eeb44a71ebc2a5688502b9f0120..d21d088dd63f3d6c71f1c301165ca97abcb61b76 100644 (file)
@@ -200,8 +200,8 @@ bool MixerCommand::DoExecute()
                                auto transform = GetChannel()->mixer().get_image_transform(GetLayerIndex());\r
                                transform.set_image_translation(x, y);\r
                                transform.set_image_scale(x_s, y_s);\r
-                               transform.set_mask_translation(0.0, 0.0);\r
-                               transform.set_mask_scale(1.0, 1.0);\r
+                               transform.set_mask_translation(x, y);\r
+                               transform.set_mask_scale(x_s, y_s);\r
                                GetChannel()->mixer().set_image_transform(GetLayerIndex(), std::move(transform));\r
                        }\r
                        else if(_parameters[1] == L"CLIP_RECT")\r
@@ -217,6 +217,24 @@ bool MixerCommand::DoExecute()
                                transform.set_mask_scale(x_s, y_s);\r
                                GetChannel()->mixer().set_image_transform(GetLayerIndex(), std::move(transform));\r
                        }\r
+                       else if(_parameters[1] == L"GRID")\r
+                       {\r
+                               int n = boost::lexical_cast<int>(_parameters.at(2));\r
+                               double delta = 1.0/static_cast<double>(n);\r
+                               for(int x = 0; x < n; ++x)\r
+                               {\r
+                                       for(int y = 0; y < n; ++y)\r
+                                       {\r
+                                               int index = x+y*n;\r
+                                               auto transform = GetChannel()->mixer().get_image_transform(index);                                              \r
+                                               transform.set_image_translation(x*delta, y*delta);\r
+                                               transform.set_image_scale(delta, delta);                        \r
+                                               transform.set_mask_translation(x*delta, y*delta);\r
+                                               transform.set_mask_scale(delta, delta);\r
+                                               GetChannel()->mixer().set_image_transform(index, std::move(transform));\r
+                                       }\r
+                               }\r
+                       }\r
                        else if(_parameters[1] == L"RESET")\r
                        {\r
                                GetChannel()->mixer().set_image_transform(GetLayerIndex(), image_transform());\r