]> git.sesse.net Git - casparcg/commitdiff
[scene] Moved perspective and crop parameters into their own elements.
authorHelge Norberg <helge.norberg@svt.se>
Tue, 7 Mar 2017 15:41:07 +0000 (16:41 +0100)
committerHelge Norberg <helge.norberg@svt.se>
Tue, 7 Mar 2017 15:41:07 +0000 (16:41 +0100)
core/producer/scene/scene.xsd
core/producer/scene/xml_scene_producer.cpp

index 425006bdf71863436ab0443412cb07a4d94a0926..cc411960891820b7c561a6e498c0060178cdb0aa 100644 (file)
                     <xs:element type="number_expression" name="anchor_x" minOccurs="0" default="0">                         <xs:annotation><xs:documentation>The X anchor within the layer coordinate system where position and rotation are done relative to/around. Can be an expression.</xs:documentation></xs:annotation></xs:element>
                     <xs:element type="number_expression" name="anchor_y" minOccurs="0" default="0">                         <xs:annotation><xs:documentation>The Y anchor within the layer coordinate system where position and rotation are done relative to/around. Can be an expression.</xs:documentation></xs:annotation></xs:element>
                     <xs:element type="number_expression" name="rotation" minOccurs="0" default="0.0">                       <xs:annotation><xs:documentation>The rotation of the layer around anchor_x/anchor_y expressed in degrees. Can be an expression.</xs:documentation></xs:annotation></xs:element>
-                    <xs:element type="number_expression" name="crop_upper_left_x" minOccurs="0" default="0">                <xs:annotation><xs:documentation>The X position within the layer coordinate system to crop the upper left corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
-                    <xs:element type="number_expression" name="crop_upper_left_y" minOccurs="0" default="0">                <xs:annotation><xs:documentation>The Y position within the layer coordinate system to crop the upper left corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
-                    <xs:element type="number_expression" name="crop_lower_right_x" minOccurs="0">                           <xs:annotation><xs:documentation>The X position within the layer coordinate system to crop the lower right corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
-                    <xs:element type="number_expression" name="crop_lower_right_y" minOccurs="0">                           <xs:annotation><xs:documentation>The Y position within the layer coordinate system to crop the lower right corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
-                    <xs:element type="number_expression" name="perspective_upper_left_x" minOccurs="0" default="0">         <xs:annotation><xs:documentation>The X position within the layer coordinate system to corner pin the upper left corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
-                    <xs:element type="number_expression" name="perspective_upper_left_y" minOccurs="0" default="0">         <xs:annotation><xs:documentation>The Y position within the layer coordinate system to corner pin the upper left corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
-                    <xs:element type="number_expression" name="perspective_upper_right_x" minOccurs="0">                    <xs:annotation><xs:documentation>The X position within the layer coordinate system to corner pin the upper right corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
-                    <xs:element type="number_expression" name="perspective_upper_right_y" minOccurs="0" default="0">        <xs:annotation><xs:documentation>The Y position within the layer coordinate system to corner pin the upper right corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
-                    <xs:element type="number_expression" name="perspective_lower_right_x" minOccurs="0">                    <xs:annotation><xs:documentation>The X position within the layer coordinate system to corner pin the lower right corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
-                    <xs:element type="number_expression" name="perspective_lower_right_y" minOccurs="0">                    <xs:annotation><xs:documentation>The Y position within the layer coordinate system to corner pin the lower right corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
-                    <xs:element type="number_expression" name="perspective_lower_left_x" minOccurs="0" default="0">         <xs:annotation><xs:documentation>The X position within the layer coordinate system to corner pin the lower left corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
-                    <xs:element type="number_expression" name="perspective_lower_left_y" minOccurs="0">                     <xs:annotation><xs:documentation>The Y position within the layer coordinate system to corner pin the lower left corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
+                    <xs:element name="crop" minOccurs="0">
+                      <xs:annotation>
+                        <xs:documentation>
+                          Properties for cropping the layer. The coordinates are relative to the layer coordinate system. They are addressable from expressions as layer.[id].crop.[property].
+                        </xs:documentation>
+                      </xs:annotation>
+                      <xs:complexType>
+                        <xs:all>
+                          <xs:element type="number_expression" name="upper_left_x" minOccurs="0" default="0">               <xs:annotation><xs:documentation>The X position within the layer coordinate system to crop the upper left corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
+                          <xs:element type="number_expression" name="upper_left_y" minOccurs="0" default="0">               <xs:annotation><xs:documentation>The Y position within the layer coordinate system to crop the upper left corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
+                          <xs:element type="number_expression" name="lower_right_x" minOccurs="0">                          <xs:annotation><xs:documentation>The X position within the layer coordinate system to crop the lower right corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
+                          <xs:element type="number_expression" name="lower_right_y" minOccurs="0">                          <xs:annotation><xs:documentation>The Y position within the layer coordinate system to crop the lower right corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
+                        </xs:all>
+                      </xs:complexType>
+                    </xs:element>
+                    <xs:element name="perspective" minOccurs="0">
+                      <xs:annotation>
+                        <xs:documentation>
+                          Properties for perspective/corner pin of the layer. The coordinates are relative to the layer coordinate system. They are addressable from expressions as layer.[id].perspective.[property].
+                        </xs:documentation>
+                      </xs:annotation>
+                      <xs:complexType>
+                        <xs:all>
+                          <xs:element type="number_expression" name="upper_left_x" minOccurs="0" default="0">               <xs:annotation><xs:documentation>The X position within the layer coordinate system to corner pin the upper left corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
+                          <xs:element type="number_expression" name="upper_left_y" minOccurs="0" default="0">               <xs:annotation><xs:documentation>The Y position within the layer coordinate system to corner pin the upper left corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
+                          <xs:element type="number_expression" name="upper_right_x" minOccurs="0">                          <xs:annotation><xs:documentation>The X position within the layer coordinate system to corner pin the upper right corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
+                          <xs:element type="number_expression" name="upper_right_y" minOccurs="0" default="0">              <xs:annotation><xs:documentation>The Y position within the layer coordinate system to corner pin the upper right corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
+                          <xs:element type="number_expression" name="lower_right_x" minOccurs="0">                          <xs:annotation><xs:documentation>The X position within the layer coordinate system to corner pin the lower right corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
+                          <xs:element type="number_expression" name="lower_right_y" minOccurs="0">                          <xs:annotation><xs:documentation>The Y position within the layer coordinate system to corner pin the lower right corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
+                          <xs:element type="number_expression" name="lower_left_x" minOccurs="0" default="0">               <xs:annotation><xs:documentation>The X position within the layer coordinate system to corner pin the lower left corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
+                          <xs:element type="number_expression" name="lower_left_y" minOccurs="0">                           <xs:annotation><xs:documentation>The Y position within the layer coordinate system to corner pin the lower left corner. Can be an expression.</xs:documentation></xs:annotation></xs:element>
+                        </xs:all>
+                      </xs:complexType>
+                    </xs:element>
                     <xs:element name="adjustments" minOccurs="0">
                       <xs:annotation>
                         <xs:documentation>
index a13a2b624a0f66675e08319b29b7b1da591f7818..351c24c01cda5fa03a640af490f6c9e38dce64a2 100644 (file)
@@ -171,18 +171,18 @@ spl::shared_ptr<core::frame_producer> create_xml_scene_producer(
                layer.clip.lower_right.x                                        = scene->create_variable<double>(variable_prefix + L"clip.lower_right_x", false, elem.second.get<std::wstring>(L"clip.lower_right_x", L"${scene_width}"));
                layer.clip.lower_right.y                                        = scene->create_variable<double>(variable_prefix + L"clip.lower_right_y", false, elem.second.get<std::wstring>(L"clip.lower_right_y", L"${scene_height}"));
                layer.rotation                                                          = scene->create_variable<double>(variable_prefix + L"rotation", false, elem.second.get<std::wstring>(L"rotation", L"0.0"));
-               layer.crop.upper_left.x                                         = scene->create_variable<double>(variable_prefix + L"crop_upper_left_x", false, elem.second.get<std::wstring>(L"crop_upper_left_x", L"0.0"));
-               layer.crop.upper_left.y                                         = scene->create_variable<double>(variable_prefix + L"crop_upper_left_y", false, elem.second.get<std::wstring>(L"crop_upper_left_y", L"0.0"));
-               layer.crop.lower_right.x                                        = scene->create_variable<double>(variable_prefix + L"crop_lower_right_x", false, elem.second.get<std::wstring>(L"crop_lower_right_x", L"${" + variable_prefix + L"width}"));
-               layer.crop.lower_right.y                                        = scene->create_variable<double>(variable_prefix + L"crop_lower_right_y", false, elem.second.get<std::wstring>(L"crop_lower_right_y", L"${" + variable_prefix + L"height}"));
-               layer.perspective.upper_left.x                          = scene->create_variable<double>(variable_prefix + L"perspective_upper_left_x", false, elem.second.get<std::wstring>(L"perspective_upper_left_x", L"0.0"));
-               layer.perspective.upper_left.y                          = scene->create_variable<double>(variable_prefix + L"perspective_upper_left_y", false, elem.second.get<std::wstring>(L"perspective_upper_left_y", L"0.0"));
-               layer.perspective.upper_right.x                         = scene->create_variable<double>(variable_prefix + L"perspective_upper_right_x", false, elem.second.get<std::wstring>(L"perspective_upper_right_x", L"${" + variable_prefix + L"width}"));
-               layer.perspective.upper_right.y                         = scene->create_variable<double>(variable_prefix + L"perspective_upper_right_y", false, elem.second.get<std::wstring>(L"perspective_upper_right_y", L"0.0"));
-               layer.perspective.lower_right.x                         = scene->create_variable<double>(variable_prefix + L"perspective_lower_right_x", false, elem.second.get<std::wstring>(L"perspective_lower_right_x", L"${" + variable_prefix + L"width}"));
-               layer.perspective.lower_right.y                         = scene->create_variable<double>(variable_prefix + L"perspective_lower_right_y", false, elem.second.get<std::wstring>(L"perspective_lower_right_y", L"${" + variable_prefix + L"height}"));
-               layer.perspective.lower_left.x                          = scene->create_variable<double>(variable_prefix + L"perspective_lower_left_x", false, elem.second.get<std::wstring>(L"perspective_lower_left_x", L"0.0"));
-               layer.perspective.lower_left.y                          = scene->create_variable<double>(variable_prefix + L"perspective_lower_left_y", false, elem.second.get<std::wstring>(L"perspective_lower_left_y", L"${" + variable_prefix + L"height}"));
+               layer.crop.upper_left.x                                         = scene->create_variable<double>(variable_prefix + L"crop.upper_left_x", false, elem.second.get<std::wstring>(L"crop.upper_left_x", L"0.0"));
+               layer.crop.upper_left.y                                         = scene->create_variable<double>(variable_prefix + L"crop.upper_left_y", false, elem.second.get<std::wstring>(L"crop.upper_left_y", L"0.0"));
+               layer.crop.lower_right.x                                        = scene->create_variable<double>(variable_prefix + L"crop.lower_right_x", false, elem.second.get<std::wstring>(L"crop.lower_right_x", L"${" + variable_prefix + L"width}"));
+               layer.crop.lower_right.y                                        = scene->create_variable<double>(variable_prefix + L"crop.lower_right_y", false, elem.second.get<std::wstring>(L"crop.lower_right_y", L"${" + variable_prefix + L"height}"));
+               layer.perspective.upper_left.x                          = scene->create_variable<double>(variable_prefix + L"perspective.upper_left_x", false, elem.second.get<std::wstring>(L"perspective.upper_left_x", L"0.0"));
+               layer.perspective.upper_left.y                          = scene->create_variable<double>(variable_prefix + L"perspective.upper_left_y", false, elem.second.get<std::wstring>(L"perspective.upper_left_y", L"0.0"));
+               layer.perspective.upper_right.x                         = scene->create_variable<double>(variable_prefix + L"perspective.upper_right_x", false, elem.second.get<std::wstring>(L"perspective.upper_right_x", L"${" + variable_prefix + L"width}"));
+               layer.perspective.upper_right.y                         = scene->create_variable<double>(variable_prefix + L"perspective.upper_right_y", false, elem.second.get<std::wstring>(L"perspective.upper_right_y", L"0.0"));
+               layer.perspective.lower_right.x                         = scene->create_variable<double>(variable_prefix + L"perspective.lower_right_x", false, elem.second.get<std::wstring>(L"perspective.lower_right_x", L"${" + variable_prefix + L"width}"));
+               layer.perspective.lower_right.y                         = scene->create_variable<double>(variable_prefix + L"perspective.lower_right_y", false, elem.second.get<std::wstring>(L"perspective.lower_right_y", L"${" + variable_prefix + L"height}"));
+               layer.perspective.lower_left.x                          = scene->create_variable<double>(variable_prefix + L"perspective.lower_left_x", false, elem.second.get<std::wstring>(L"perspective.lower_left_x", L"0.0"));
+               layer.perspective.lower_left.y                          = scene->create_variable<double>(variable_prefix + L"perspective.lower_left_y", false, elem.second.get<std::wstring>(L"perspective.lower_left_y", L"${" + variable_prefix + L"height}"));
 
                layer.adjustments.opacity                                       = scene->create_variable<double>(variable_prefix + L"adjustment.opacity", false, elem.second.get(L"adjustments.opacity", L"1.0"));
                layer.adjustments.contrast                                      = scene->create_variable<double>(variable_prefix + L"adjustment.contrast", false, elem.second.get(L"adjustments.contrast", L"1.0"));