]> git.sesse.net Git - casparcg/blobdiff - modules/image/producer/image_scroll_producer.cpp
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / modules / image / producer / image_scroll_producer.cpp
index ccf55b3657733d3d6bc9cd3ad393e9cdbe08e7ae..d839c8fa6fbbd1641b172af0e43689d620f30f32 100644 (file)
@@ -17,6 +17,9 @@
 *    along with CasparCG.  If not, see <http://www.gnu.org/licenses/>.\r
 *\r
 */\r
+// TODO: Refactor.\r
+// TODO: Looping.\r
+\r
 #include "image_scroll_producer.h"\r
 \r
 #include "../util/image_loader.h"\r
@@ -25,7 +28,7 @@
 \r
 #include <core/producer/frame/basic_frame.h>\r
 #include <core/producer/frame/frame_factory.h>\r
-#include <core/producer/frame/image_transform.h>\r
+#include <core/producer/frame/frame_transform.h>\r
 #include <core/mixer/write_frame.h>\r
 \r
 #include <common/env.h>\r
 #include <boost/assign.hpp>\r
 #include <boost/filesystem.hpp>\r
 #include <boost/foreach.hpp>\r
+#include <boost/lexical_cast.hpp>\r
 \r
 #include <algorithm>\r
+#include <array>\r
 \r
 using namespace boost::assign;\r
 \r
@@ -160,7 +165,10 @@ struct image_scroll_producer : public core::frame_producer
                                return core::basic_frame::eof();\r
 \r
                        for(size_t n = 0; n < frames_.size(); ++n)\r
-                               frames_[n]->get_image_transform().set_fill_translation(start_offset_[0], start_offset_[1] -0.5*(n+1) + delta_ * 0.5/static_cast<double>(format_desc_.height));\r
+                       {\r
+                               frames_[n]->get_frame_transform().fill_translation[0] = start_offset_[0];\r
+                               frames_[n]->get_frame_transform().fill_translation[1] = start_offset_[1] - (n+1) + delta_ * static_cast<double>(format_desc_.height);\r
+                       }\r
                }\r
                else\r
                {\r
@@ -168,7 +176,10 @@ struct image_scroll_producer : public core::frame_producer
                                return core::basic_frame::eof();\r
 \r
                        for(size_t n = 0; n < frames_.size(); ++n)\r
-                               frames_[n]->get_image_transform().set_fill_translation(start_offset_[0] -0.5*(n+1) + delta_ * 0.5/static_cast<double>(format_desc_.height), start_offset_[1]);\r
+                       {\r
+                               frames_[n]->get_frame_transform().fill_translation[0] = start_offset_[0] - (n+1) + delta_ * static_cast<double>(format_desc_.width);                            \r
+                               frames_[n]->get_frame_transform().fill_translation[1] = start_offset_[1];\r
+                       }\r
                }\r
 \r
                return last_frame_ = core::basic_frame(frames_);\r
@@ -189,12 +200,12 @@ struct image_scroll_producer : public core::frame_producer
                if(height_ > format_desc_.height)\r
                {\r
                        auto length = (height_ - format_desc_.height);\r
-                       return (length/std::abs(speed_) + length % std::abs(delta_));\r
+                       return length/std::abs(speed_);// + length % std::abs(delta_));\r
                }\r
                else\r
                {\r
                        auto length = (width_ - format_desc_.width);\r
-                       auto result = (length/std::abs(speed_) + length % std::abs(delta_));\r
+                       auto result = length/std::abs(speed_);// + length % std::abs(delta_));\r
                        return result;\r
                }\r
        }\r