Isis 3.0 Programmer Reference
Back | Home
AbstractFilter.h
1 #ifndef AbstractFilter_H
2 #define AbstractFilter_H
3 
4 #include <QWidget>
5 
6 
7 class QBoxLayout;
8 class QButtonGroup;
9 class QCheckBox;
10 template< typename T > class QFlags;
11 
12 
13 namespace Isis {
14  class ControlPoint;
15  class ControlMeasure;
16  class ControlCubeGraphNode;
17 
18  namespace CnetViz {
19  class AbstractFilterSelector;
20 
34  class AbstractFilter : public QWidget {
35  Q_OBJECT
36 
37  public:
38  enum FilterEffectiveness {
39  Images = 1,
40  Points = 2,
41  Measures = 4
42  };
43  Q_DECLARE_FLAGS(FilterEffectivenessFlag, FilterEffectiveness)
44 
45 
46  public:
47  AbstractFilter(FilterEffectivenessFlag, int minimumForSuccess = -1);
48  AbstractFilter(const AbstractFilter &other);
49  virtual ~AbstractFilter();
50 
51  virtual bool canFilterImages() const;
52  virtual bool canFilterPoints() const;
53  virtual bool canFilterMeasures() const;
54 
55  virtual bool evaluate(const ControlCubeGraphNode *) const = 0;
56  virtual bool evaluate(const ControlPoint *) const = 0;
57  virtual bool evaluate(const ControlMeasure *) const = 0;
58 
59  virtual AbstractFilter *clone() const = 0;
60 
61  virtual QString getImageDescription() const;
62  virtual QString getPointDescription() const;
63  virtual QString getMeasureDescription() const;
64 
65 
66  signals:
67  void filterChanged();
68 
69 
70  protected:
71  bool inclusive() const;
72  int getMinForSuccess() const {
73  return m_minForSuccess;
74  }
75  AbstractFilter::FilterEffectivenessFlag *getEffectivenessFlags() const;
76  QBoxLayout *getMainLayout() const;
77  QBoxLayout *getInclusiveExclusiveLayout() const;
78 
79  bool evaluateImageFromPointFilter(const ControlCubeGraphNode *) const;
80  bool evaluateImageFromMeasureFilter(const ControlCubeGraphNode *) const;
81  bool evaluatePointFromMeasureFilter(const ControlPoint *) const;
82 
83  virtual bool evaluate(const ControlPoint *,
84  bool (ControlPoint:: *)() const) const;
85  virtual bool evaluate(const ControlMeasure *,
86  bool (ControlMeasure:: *)() const) const;
87 
88 
89  private:
90  void createWidget();
91  bool evaluateFromCount(QList< ControlMeasure * >, bool) const;
92  void nullify();
93 
94 
95  private slots:
96  void updateEffectiveness();
97  void updateMinForSuccess(int);
98 
99 
100  private:
101  QCheckBox *createEffectivenessCheckBox(QString);
102 
103 
104  private:
105  QBoxLayout *m_mainLayout;
106  QBoxLayout *m_inclusiveExclusiveLayout;
107  QButtonGroup *m_inclusiveExclusiveGroup;
108  QButtonGroup *m_effectivenessGroup;
109  QWidget *m_minWidget;
110 
111 
112  private:
113  int m_minForSuccess;
114  FilterEffectivenessFlag *m_effectivenessFlags;
115  QFont *m_smallFont;
116  };
117 
118  Q_DECLARE_OPERATORS_FOR_FLAGS(AbstractFilter::FilterEffectivenessFlag)
119  }
120 }
121 
122 #endif
Serial Number with added functionality for Control Networks.
Base class for control net filters.
A single control point.
Definition: ControlPoint.h:339
a control measurement

U.S. Department of the Interior | U.S. Geological Survey
ISIS | Privacy & Disclaimers | Astrogeology Research Program
To contact us, please post comments and questions on the ISIS Support Center
File Modified: 07/12/2023 23:13:35