CustusX  2023.01.05-dev+develop.0da12
An IGT application
cxFilterImpl.h
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 #ifndef CXFILTERIMPL_H
13 #define CXFILTERIMPL_H
14 
15 #include "cxResourceFilterExport.h"
16 
17 #include <vector>
18 #include <QObject>
19 #include "cxFilter.h"
20 #include <QDomElement>
21 #include <boost/shared_ptr.hpp>
22 
23 namespace cx
24 {
25 typedef boost::shared_ptr<class VisServices> VisServicesPtr;
26 
36 class cxResourceFilter_EXPORT FilterImpl : public Filter
37 {
38  Q_OBJECT
39 
40 public:
41  virtual ~FilterImpl() {}
42 
43  virtual QString getUid() const;
44  virtual void initialize(QDomElement root, QString uid = "");
45  virtual std::vector<PropertyPtr> getOptions();
46  virtual std::vector<SelectDataStringPropertyBasePtr> getInputTypes();
47  virtual std::vector<SelectDataStringPropertyBasePtr> getOutputTypes();
48  virtual bool hasPresets() { return false; }
49  virtual PresetsPtr getPresets() { return PresetsPtr(); }
50  virtual QDomElement generatePresetFromCurrentlySetOptions(QString name) { return QDomElement(); }
51  virtual void setActive(bool on);
52  virtual bool preProcess();
53 
54 public slots:
55  virtual void requestSetPresetSlot(QString name) {}
56 
57 protected:
58  explicit FilterImpl(VisServicesPtr services);
59 
62  ImagePtr getCopiedInputImage(int index = 0);
66  void updateThresholdFromImageChange(QString uid, DoublePropertyPtr threshold);
67  void updateThresholdPairFromImageChange(QString uid, DoublePairPropertyPtr threshold);
68 
69  virtual void createOptions() = 0;
70  virtual void createInputTypes() = 0;
71  virtual void createOutputTypes() = 0;
72 
73  std::vector<SelectDataStringPropertyBasePtr> mInputTypes;
74  std::vector<SelectDataStringPropertyBasePtr> mOutputTypes;
75  std::vector<PropertyPtr> mOptionsAdapters;
76  QDomElement mOptions;
77 
78  // data used by execute - copied for thread safety purposes
79  std::vector<DataPtr> mCopiedInput;
80  QDomElement mCopiedOptions;
81  bool mActive;
82  VisServicesPtr mServices;
83  PatientModelServicePtr patientService();
84 
85 private:
86  QString mUid;
87 
88 };
89 
90 } // namespace cx
91 
92 
93 #endif // CXFILTERIMPL_H
std::vector< SelectDataStringPropertyBasePtr > mInputTypes
Definition: cxFilterImpl.h:73
QDomElement mCopiedOptions
Definition: cxFilterImpl.h:80
boost::shared_ptr< class VisServices > VisServicesPtr
Definition: cxMainWindow.h:40
boost::shared_ptr< class Image > ImagePtr
Definition: cxDicomWidget.h:27
std::vector< DataPtr > mCopiedInput
Definition: cxFilterImpl.h:79
std::vector< PropertyPtr > mOptionsAdapters
Definition: cxFilterImpl.h:75
virtual QDomElement generatePresetFromCurrentlySetOptions(QString name)
Definition: cxFilterImpl.h:50
VisServicesPtr mServices
Definition: cxFilterImpl.h:82
virtual void requestSetPresetSlot(QString name)
Definition: cxFilterImpl.h:55
virtual bool hasPresets()
Definition: cxFilterImpl.h:48
boost::shared_ptr< class PatientModelService > PatientModelServicePtr
QDomElement mOptions
Definition: cxFilterImpl.h:76
virtual PresetsPtr getPresets()
Definition: cxFilterImpl.h:49
virtual ~FilterImpl()
Definition: cxFilterImpl.h:41
boost::shared_ptr< class Presets > PresetsPtr
boost::shared_ptr< class DoubleProperty > DoublePropertyPtr
std::vector< SelectDataStringPropertyBasePtr > mOutputTypes
Definition: cxFilterImpl.h:74
boost::shared_ptr< class DoublePairProperty > DoublePairPropertyPtr
Namespace for all CustusX production code.