00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
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
00051 foreach(QString qvippWorkerName, getQvippWorkersNames())
00052 middleItems.append(qvippWorkerName);
00053
00054
00055
00056
00057
00058
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