Mercurial > hg > svcore
diff transform/ModelTransformerFactory.cpp @ 850:dba8a02b0413 tonioni_multi_transform
Update the rest of the transforms stuff, so now it builds and runs again
author | Chris Cannam |
---|---|
date | Mon, 02 Dec 2013 12:29:09 +0000 |
parents | 418cd2064769 |
children | 13803edd513d |
line wrap: on
line diff
--- a/transform/ModelTransformerFactory.cpp Mon Dec 02 11:17:24 2013 +0000 +++ b/transform/ModelTransformerFactory.cpp Mon Dec 02 12:29:09 2013 +0000 @@ -35,6 +35,8 @@ #include <QRegExp> +using std::vector; + ModelTransformerFactory * ModelTransformerFactory::m_instance = new ModelTransformerFactory; @@ -163,30 +165,30 @@ } ModelTransformer * -ModelTransformerFactory::createTransformer(const Transform &transform, +ModelTransformerFactory::createTransformer(const Transforms &transforms, const ModelTransformer::Input &input) { ModelTransformer *transformer = 0; - QString id = transform.getPluginIdentifier(); + QString id = transforms[0].getPluginIdentifier(); if (FeatureExtractionPluginFactory::instanceFor(id)) { transformer = - new FeatureExtractionModelTransformer(input, transform); + new FeatureExtractionModelTransformer(input, transforms, FeatureExtractionModelTransformer::FlexiNoteOutputModel); //!!! gross } else if (RealTimePluginFactory::instanceFor(id)) { transformer = - new RealTimeEffectModelTransformer(input, transform); + new RealTimeEffectModelTransformer(input, transforms[0]); } else { SVDEBUG << "ModelTransformerFactory::createTransformer: Unknown transform \"" - << transform.getIdentifier() << "\"" << endl; + << transforms[0].getIdentifier() << "\"" << endl; return transformer; } - if (transformer) transformer->setObjectName(transform.getIdentifier()); + if (transformer) transformer->setObjectName(transforms[0].getIdentifier()); return transformer; } @@ -197,37 +199,11 @@ { SVDEBUG << "ModelTransformerFactory::transform: Constructing transformer with input model " << input.getModel() << endl; - ModelTransformer *t = createTransformer(transform, input); - if (!t) return 0; - - connect(t, SIGNAL(finished()), this, SLOT(transformerFinished())); - - m_runningTransformers.insert(t); - - t->start(); - Model *model = t->detachOutputModel(); - - if (model) { - QString imn = input.getModel()->objectName(); - QString trn = - TransformFactory::getInstance()->getTransformFriendlyName - (transform.getIdentifier()); - if (imn != "") { - if (trn != "") { - model->setObjectName(tr("%1: %2").arg(imn).arg(trn)); - } else { - model->setObjectName(imn); - } - } else if (trn != "") { - model->setObjectName(trn); - } - } else { - t->wait(); - } - - message = t->getMessage(); - - return model; + Transforms transforms; + transforms.push_back(transform); + vector<Model *> mm = transformMultiple(transforms, input, message); + if (mm.empty()) return 0; + else return mm[0]; } vector<Model *> @@ -238,28 +214,30 @@ SVDEBUG << "ModelTransformerFactory::transformMultiple: Constructing transformer with input model " << input.getModel() << endl; ModelTransformer *t = createTransformer(transforms, input); - if (!t) return 0; + if (!t) return vector<Model *>(); connect(t, SIGNAL(finished()), this, SLOT(transformerFinished())); m_runningTransformers.insert(t); t->start(); - Model *model = t->detachOutputModel(); + vector<Model *> models = t->detachOutputModels(); - if (model) { + if (!models.empty()) { QString imn = input.getModel()->objectName(); QString trn = TransformFactory::getInstance()->getTransformFriendlyName - (transform.getIdentifier()); - if (imn != "") { - if (trn != "") { - model->setObjectName(tr("%1: %2").arg(imn).arg(trn)); - } else { - model->setObjectName(imn); + (transforms[0].getIdentifier()); + for (int i = 0; i < models.size(); ++i) { + if (imn != "") { + if (trn != "") { + models[i]->setObjectName(tr("%1: %2").arg(imn).arg(trn)); + } else { + models[i]->setObjectName(imn); + } + } else if (trn != "") { + models[i]->setObjectName(trn); } - } else if (trn != "") { - model->setObjectName(trn); } } else { t->wait(); @@ -267,7 +245,7 @@ message = t->getMessage(); - return model; + return models; } void @@ -306,8 +284,13 @@ ModelTransformer *t = *i; - if (t->getInputModel() == m || t->getOutputModel() == m) { + if (t->getInputModel() == m) { affected.insert(t); + } else { + vector<Model *> mm = t->getOutputModels(); + for (int i = 0; i < (int)mm.size(); ++i) { + if (mm[i] == m) affected.insert(t); + } } }