examples/qvdesigner0.2/facade/itemfactory.cpp

00001 /*
00002  *      Copyright (C) 2008. PARP Research Group.
00003  *      <http://perception.inf.um.es>
00004  *      University of Murcia, Spain.
00005  *
00006  *      This file is part of the QVision library.
00007  *
00008  *      QVision is free software: you can redistribute it and/or modify
00009  *      it under the terms of the GNU Lesser General Public License as
00010  *      published by the Free Software Foundation, version 3 of the License.
00011  *
00012  *      QVision is distributed in the hope that it will be useful,
00013  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  *      GNU Lesser General Public License for more details.
00016  *
00017  *      You should have received a copy of the GNU Lesser General Public
00018  *      License along with QVision. If not, see <http://www.gnu.org/licenses/>.
00019  */
00020 
00021 
00022 #include "itemfactory.h"
00023 
00024 #include <QVApplication>
00025 #include <QVMPlayerCamera>
00026 #include "qvworkers/qvfilterselectorworker.h"
00027 #include "qvworkers/qvimageretarderworker.h"
00028 #include "qvworkers/qvimagemeans.h"
00029 #include "qvworkers/qvgraphsworker.h"
00030 #include "qvworkers/qvpointworker.h"
00031 #include <QVImageCanvas>
00032 #include <qvgui/qvnumericplot.h>
00033 
00035 ItemFactory::ItemFactory(): QObject()
00036 {
00037         inputItems.append("QVMPlayerCamera");
00038         inputItems.append("QVPointWorker");
00039 
00040         outputItems.append("QVImageCanvas");
00041         outputItems.append("QVNumericPlot");
00042         middleItems.append("QVGraphsWorker");
00043         middleItems.append("QVFilterSelectorWorker<uchar,1>");
00044         middleItems.append("QVFilterSelectorWorker<uchar,3>");
00045         middleItems.append("QVImageRetarderWorker<uchar,3>");
00046         middleItems.append("QVImageRetarderWorker<uchar,1>");
00047         middleItems.append("QVImageMeans<uChar,1>");
00048         middleItems.append("QVImageMeans<uChar,3>");
00049 
00050         // AƱadimos los tipos de las IPP.
00051         foreach(QString qvippWorkerName, getQvippWorkersNames())
00052                 middleItems.append(qvippWorkerName);
00053 
00054         // AƱadimos los tipos creados por el usuario.
00055 /*      foreach(QVPropertyContainer* qvp, qvApp->getQVPropertyContainers()) {
00056                 QVWorker* worker;
00057                 if((worker = dynamic_cast<QVWorker*>(qvp)) != NULL)
00058                         middleItems.append(worker.getName());
00059                 }*/
00060 }
00061 
00062 QList<QString> ItemFactory::getItemTypes() const
00063 {
00064         return inputItems + middleItems + outputItems;
00065 }
00066 
00067 QList<QString> ItemFactory::getInputItemTypes() const
00068 {
00069         return inputItems;
00070 }
00071 
00072 QList<QString> ItemFactory::getMiddleItemTypes() const
00073 {
00074         return middleItems;
00075 }
00076 
00077 QList<QString> ItemFactory::getOutputItemTypes() const
00078 {
00079         return outputItems;
00080 }
00081 
00082 QVPropertyContainer *ItemFactory::createContainer(QString type, QString name) const
00083 {
00084         QVPropertyContainer *qvippWorker = newQvippWorker(type, name);
00085         if (qvippWorker != NULL)
00086                 return qvippWorker;
00087         else if (type == "QVMPlayerCamera") {
00088                 QVMPlayerCamera* mpc = new QVMPlayerCamera(name);
00089                 mpc->setPropertyValue("URL", QString("http://perception.inf.um.es/public_data/videos/misc/penguin.dv"));
00090                 mpc->setPropertyValue("Cols", 320);
00091                 mpc->setPropertyValue("Rows", 240);
00092                 return mpc;
00093         }
00094         else if (type == "QVImageCanvas") return new QVImageCanvas(name);
00095         else if (type == "QVNumericPlot") return new QVNumericPlot(name);
00096         else if (type == "QVGraphsWorker") return new QVGraphsWorker(name);
00097         else if (type == "QVFilterSelectorWorker<uchar,1>") return new QVFilterSelectorWorker<uchar, 1>(name);
00098         else if (type == "QVFilterSelectorWorker<uchar,3>") return new QVFilterSelectorWorker<uchar, 3>(name);
00099         else if (type == "QVImageRetarderWorker<uchar,3>") return new QVImageRetarderWorker<uchar, 3>(name);
00100         else if (type == "QVImageRetarderWorker<uchar,1>") return new QVImageRetarderWorker<uchar, 1>(name);
00101         else if (type == "QVImageMeans<uChar,1>") return new QVImageMeans<uChar, 1>(name);
00102         else if (type == "QVImageMeans<uChar,3>") return new QVImageMeans<uChar, 3>(name);
00103         else if (type == "QVPointWorker") return new QVPointWorker(name);
00104         else return 0;
00105 }
00106 
00107 QString ItemFactory::containerType(QVPropertyContainer *cont) const
00108 {
00109         if(dynamic_cast<QVMPlayerCamera*>(cont) != NULL) return "QVMPlayerCamera";
00110         else if(dynamic_cast<QVWorker*>(cont) != NULL) return "QVWorker";
00111         else if(dynamic_cast<QVImageCanvas*>(cont) != NULL) return "QVImageCanvas";
00112         else if(dynamic_cast<QVPlot*>(cont) != NULL) return "QVPlot";
00113         else return "";
00114 }
00115