2 * copyright (c) 2010 Sveriges Television AB <info@casparcg.com>
\r
4 * This file is part of CasparCG.
\r
6 * CasparCG is free software: you can redistribute it and/or modify
\r
7 * it under the terms of the GNU General Public License as published by
\r
8 * the Free Software Foundation, either version 3 of the License, or
\r
9 * (at your option) any later version.
\r
11 * CasparCG is distributed in the hope that it will be useful,
\r
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
\r
14 * GNU General Public License for more details.
\r
16 * You should have received a copy of the GNU General Public License
\r
17 * along with CasparCG. If not, see <http://www.gnu.org/licenses/>.
\r
21 #include "..\StdAfx.h"
\r
23 #include "..\Producers\flash\FlashManager.h"
\r
24 #include "..\Producers\flash\FlashProducer.h"
\r
26 #include "..\Application.h"
\r
27 #include "..\transitioninfo.h"
\r
29 #include "FlashCGManager.h"
\r
34 using namespace utils;
\r
36 FlashCGManager::FlashCGManager(caspar::Channel* pChannel) : pChannel_(pChannel), pFlashManager_(new caspar::FlashManager()) {
\r
39 FlashCGManager::~FlashCGManager() {
\r
40 if(pFlashManager_ != 0) {
\r
41 delete pFlashManager_;
\r
46 void FlashCGManager::DisplayActive() {
\r
47 /* if(pChannel_->GetActiveProducer() != activeCGProducer_) {
\r
48 LOG << LogLevel::Debug << TEXT("Had to display active cg-producer");
\r
50 caspar::TransitionInfo transition;
\r
51 if(pChannel_->LoadBackground(activeCGProducer_, transition)){
\r
55 LOG << TEXT("Failed to display active cg-producer");
\r
59 FlashProducerPtr FlashCGManager::CreateNewProducer()
\r
61 #if TEMPLATEHOST_VERSION < 1700
\r
62 return std::tr1::dynamic_pointer_cast<FlashProducer, MediaProducer>(pFlashManager_->CreateProducer(GetApplication()->GetTemplateFolder()+TEXT("CG.fth")));
\r
64 return std::tr1::dynamic_pointer_cast<FlashProducer, MediaProducer>(pFlashManager_->CreateProducer(GetApplication()->GetTemplateFolder()+TEXT("CG.fth.17")));
\r
68 void FlashCGManager::Add(int layer, const tstring& templateName, unsigned int mixInDuration, bool playOnLoad, const tstring& startFromLabel, const tstring& data) {
\r
69 if(activeCGProducer_ == 0 || activeCGProducer_->IsEmpty()) {
\r
70 activeCGProducer_ = CreateNewProducer();
\r
72 LOG << TEXT("Created new flashproducer");
\r
75 if(activeCGProducer_ != 0) {
\r
76 tstringstream flashParam;
\r
77 flashParam << TEXT("<invoke name=\"Add\" returntype=\"xml\"><arguments><number>") << layer << TEXT("</number><string>") << templateName << TEXT("</string><number>") << mixInDuration << TEXT("</number>") << (playOnLoad?TEXT("<true/>"):TEXT("<false/>")) << TEXT("<string>") << startFromLabel << TEXT("</string><string><![CDATA[ ") << data << TEXT(" ]]></string></arguments></invoke>");
\r
79 activeCGProducer_->Param(flashParam.str());
\r
80 LOG << LogLevel::Debug << TEXT("Invoked add-command");
\r
84 void FlashCGManager::Remove(int layer) {
\r
85 if(activeCGProducer_ != 0) {
\r
86 tstringstream flashParam;
\r
87 #if TEMPLATEHOST_VERSION < 1700
\r
88 flashParam << TEXT("<invoke name=\"Delete\" returntype=\"xml\"><arguments><number>") << layer << TEXT("</number></arguments></invoke>");
\r
90 flashParam << TEXT("<invoke name=\"Delete\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>") << layer << TEXT("</number></property></array></arguments></invoke>");
\r
92 activeCGProducer_->Param(flashParam.str());
\r
97 void FlashCGManager::Clear() {
\r
98 activeCGProducer_ = CreateNewProducer();
\r
102 void FlashCGManager::Play(int layer) {
\r
103 if(activeCGProducer_ != 0) {
\r
104 tstringstream flashParam;
\r
105 #if TEMPLATEHOST_VERSION < 1700
\r
106 flashParam << TEXT("<invoke name=\"Play\" returntype=\"xml\"><arguments><number>") << layer << TEXT("</number></arguments></invoke>");
\r
108 flashParam << TEXT("<invoke name=\"Play\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>") << layer << TEXT("</number></property></array></arguments></invoke>");
\r
111 activeCGProducer_->Param(flashParam.str());
\r
112 LOG << LogLevel::Debug << TEXT("Invoked play-command");
\r
117 void FlashCGManager::Stop(int layer, unsigned int mixOutDuration) {
\r
118 if(activeCGProducer_ != 0) {
\r
119 tstringstream flashParam;
\r
120 #if TEMPLATEHOST_VERSION < 1700
\r
121 flashParam << TEXT("<invoke name=\"Stop\" returntype=\"xml\"><arguments><number>") << layer << TEXT("</number><number>") << mixOutDuration << TEXT("</number></arguments></invoke>");
\r
123 flashParam << TEXT("<invoke name=\"Stop\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>") << layer << TEXT("</number></property></array><number>") << mixOutDuration << TEXT("</number></arguments></invoke>");
\r
125 activeCGProducer_->Param(flashParam.str());
\r
126 LOG << LogLevel::Debug << TEXT("Invoked stop-command");
\r
131 void FlashCGManager::Next(int layer) {
\r
132 if(activeCGProducer_ != 0) {
\r
133 tstringstream flashParam;
\r
134 #if TEMPLATEHOST_VERSION < 1700
\r
135 flashParam << TEXT("<invoke name=\"Next\" returntype=\"xml\"><arguments><number>") << layer << TEXT("</number></arguments></invoke>");
\r
137 flashParam << TEXT("<invoke name=\"Next\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>") << layer << TEXT("</number></property></array></arguments></invoke>");
\r
139 activeCGProducer_->Param(flashParam.str());
\r
144 void FlashCGManager::Goto(int layer, const tstring& label) {
\r
145 if(activeCGProducer_ != 0) {
\r
146 tstringstream flashParam;
\r
147 #if TEMPLATEHOST_VERSION < 1700
\r
148 flashParam << TEXT("<invoke name=\"GotoLabel\" returntype=\"xml\"><arguments><number>") << layer << TEXT("</number><string>") << label << TEXT("</string></arguments></invoke>");
\r
150 flashParam << TEXT("<invoke name=\"GotoLabel\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>") << layer << TEXT("</number></property></array><string>") << label << TEXT("</string></arguments></invoke>");
\r
152 activeCGProducer_->Param(flashParam.str());
\r
157 void FlashCGManager::Update(int layer, const tstring& data) {
\r
158 if(activeCGProducer_ != 0) {
\r
159 tstringstream flashParam;
\r
160 #if TEMPLATEHOST_VERSION < 1700
\r
161 flashParam << TEXT("<invoke name=\"SetData\" returntype=\"xml\"><arguments><number>") << layer << TEXT("</number><string><![CDATA[ ") << data << TEXT(" ]]></string></arguments></invoke>");
\r
163 flashParam << TEXT("<invoke name=\"SetData\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>") << layer << TEXT("</number></property></array><string><![CDATA[ ") << data << TEXT(" ]]></string></arguments></invoke>");
\r
165 activeCGProducer_->Param(flashParam.str());
\r
170 void FlashCGManager::Invoke(int layer, const tstring& methodSpec) {
\r
171 if(activeCGProducer_ != 0) {
\r
172 tstringstream flashParam;
\r
173 #if TEMPLATEHOST_VERSION < 1700
\r
174 flashParam << TEXT("<invoke name=\"ExecuteMethod\" returntype=\"xml\"><arguments><number>") << layer << TEXT("</number><string>") << methodSpec << TEXT("</string></arguments></invoke>");
\r
176 flashParam << TEXT("<invoke name=\"ExecuteMethod\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>") << layer << TEXT("</number></property></array><string>") << methodSpec << TEXT("</string></arguments></invoke>");
\r
178 activeCGProducer_->Param(flashParam.str());
\r