NorMIT-nav  18.04
An IGT application
cxDummyFilter.cpp
Go to the documentation of this file.
1 /*=========================================================================
2 This file is part of CustusX, an Image Guided Therapy Application.
3 
4 Copyright (c) SINTEF Department of Medical Technology.
5 All rights reserved.
6 
7 CustusX is released under a BSD 3-Clause license.
8 
9 See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details.
10 =========================================================================*/
11 
12 #include "cxDummyFilter.h"
13 #include "cxTypeConversions.h"
15 #include "cxData.h"
16 #include "cxDoubleProperty.h"
17 #include "cxStringProperty.h"
18 #include "cxBoolProperty.h"
19 #include "cxVisServices.h"
20 
21 namespace cx
22 {
23 
24 QString DummyFilter::getName() const
25 {
26  return "Dummy Filter";
27 }
28 
29 QString DummyFilter::getType() const
30 {
31  return "DummyFilter";
32 }
33 
34 QString DummyFilter::getHelp() const
35 {
36  return "A dummy implementation of the cx::Filter class,\n"
37  "intended for concept testing.\n"
38  "Can also be used as a template for new filters.";
39 }
40 
41 StringPropertyBasePtr DummyFilter::getStringOption(QDomElement root)
42 {
43  QStringList list;
44  list << "String0" << "String1";
45  return StringProperty::initialize("String", "", "dummy string option",
46  list[0], list, root);
47 }
48 
49 DoublePropertyBasePtr DummyFilter::getDoubleOption(QDomElement root)
50 {
51  return DoubleProperty::initialize("Value", "",
52  "dummy double value.", 1, DoubleRange(0.1, 10, 0.01), 2,
53  root);
54 }
55 
56 BoolPropertyBasePtr DummyFilter::getBoolOption(QDomElement root)
57 {
58  return BoolProperty::initialize("Bool0", "",
59  "Dummy bool value.", false, root);
60 }
61 
63 {
64  mOptionsAdapters.push_back(this->getStringOption(mOptions));
65  mOptionsAdapters.push_back(this->getDoubleOption(mOptions));
66  mOptionsAdapters.push_back(this->getBoolOption(mOptions));
67 }
68 
70 {
72 
73  temp = StringPropertySelectData::New(mServices->patient());
74  temp->setValueName("Input");
75  temp->setHelp("Dummy data input for a dummy algorithm");
76  mInputTypes.push_back(temp);
77 
78  temp = StringPropertySelectImage::New(mServices->patient());
79  temp->setValueName("Image");
80  temp->setHelp("Dummy image input for a dummy algorithm");
81  mInputTypes.push_back(temp);
82 
83  temp = StringPropertySelectMesh::New(mServices->patient());
84  temp->setValueName("Mesh");
85  temp->setHelp("Dummy mesh input for a dummy algorithm");
86  mInputTypes.push_back(temp);
87 }
88 
90 {
92 
93  temp = StringPropertySelectData::New(mServices->patient());
94  temp->setValueName("Output");
95  temp->setHelp("Dummy output from the dummy algorithm");
96  mOutputTypes.push_back(temp);
97 }
98 
100 {
101  StringPropertyBasePtr stringOption = this->getStringOption(mCopiedOptions);
102  DoublePropertyBasePtr doubleOption = this->getDoubleOption(mCopiedOptions);
103  BoolPropertyBasePtr boolOption = this->getBoolOption(mCopiedOptions);
104 
105  std::cout << "Running dummy algorithm..." << std::endl;
106  std::cout << QString(" String option [%1]: %2").arg(stringOption->getDisplayName()).arg(stringOption->getValue()) << std::endl;
107  std::cout << QString(" Double option [%1]: %2").arg(doubleOption->getDisplayName()).arg(doubleOption->getValue()) << std::endl;
108  std::cout << QString(" Bool option [%1]: %2").arg(boolOption->getDisplayName()).arg(boolOption->getValue()) << std::endl;
109 
110  for (unsigned i=0; i< mCopiedInput.size(); ++i)
111  std::cout << QString(" Input %1: %2").arg(mCopiedInput[i] ? mCopiedInput[i]->getName() : "NULL") << std::endl;
112 
113  std::cout << "Returning input as output." << std::endl;
114 
115  return true;
116 }
117 
119 {
120  //TODO: add stuff such as saving to dataManager here.
121  std::cout << "DummyFilter::postProcess " << mCopiedInput.size() << std::endl;
122 
123  if (mInputTypes.front()->getData())
124  mOutputTypes.front()->setValue(mInputTypes.front()->getData()->getUid());
125 
126  // return mInput;
127  return true;
128 }
129 
130 
131 
132 } // namespace cx
virtual void createOptions()
static BoolPropertyPtr initialize(const QString &uid, QString name, QString help, bool value, QDomNode root=QDomNode())
std::vector< SelectDataStringPropertyBasePtr > mInputTypes
Definition: cxFilterImpl.h:73
QDomElement mCopiedOptions
Definition: cxFilterImpl.h:80
virtual QString getHelp() const
virtual bool postProcess()
static StringPropertySelectDataPtr New(PatientModelServicePtr patientModelService, QString typeRegexp=".*")
Utility class for describing a bounded numeric range.
Definition: cxDoubleRange.h:32
std::vector< DataPtr > mCopiedInput
Definition: cxFilterImpl.h:79
std::vector< PropertyPtr > mOptionsAdapters
Definition: cxFilterImpl.h:75
VisServicesPtr mServices
Definition: cxFilterImpl.h:82
boost::shared_ptr< class SelectDataStringPropertyBase > SelectDataStringPropertyBasePtr
boost::shared_ptr< class StringPropertyBase > StringPropertyBasePtr
boost::shared_ptr< class BoolPropertyBase > BoolPropertyBasePtr
virtual QString getName() const
QDomElement mOptions
Definition: cxFilterImpl.h:76
boost::shared_ptr< class DoublePropertyBase > DoublePropertyBasePtr
virtual bool execute()
static StringPropertyPtr initialize(const QString &uid, QString name, QString help, QString value, QStringList range, QDomNode root=QDomNode())
virtual void createOutputTypes()
std::vector< SelectDataStringPropertyBasePtr > mOutputTypes
Definition: cxFilterImpl.h:74
static DoublePropertyPtr initialize(const QString &uid, QString name, QString help, double value, DoubleRange range, int decimals, QDomNode root=QDomNode())
static StringPropertySelectMeshPtr New(PatientModelServicePtr patientModelService)
static StringPropertySelectImagePtr New(PatientModelServicePtr patientModelService)
virtual void createInputTypes()
virtual QString getType() const
Namespace for all CustusX production code.