anatomist 6.0.4
3D neuroimaging data viewer
morphomath.h
Go to the documentation of this file.
1/* This software and supporting documentation are distributed by
2 * Institut Federatif de Recherche 49
3 * CEA/NeuroSpin, Batiment 145,
4 * 91191 Gif-sur-Yvette cedex
5 * France
6 *
7 * This software is governed by the CeCILL-B license under
8 * French law and abiding by the rules of distribution of free software.
9 * You can use, modify and/or redistribute the software under the
10 * terms of the CeCILL-B license as circulated by CEA, CNRS
11 * and INRIA at the following URL "http://www.cecill.info".
12 *
13 * As a counterpart to the access to the source code and rights to copy,
14 * modify and redistribute granted by the license, users are provided only
15 * with a limited warranty and the software's author, the holder of the
16 * economic rights, and the successive licensors have only limited
17 * liability.
18 *
19 * In this respect, the user's attention is drawn to the risks associated
20 * with loading, using, modifying and/or developing or reproducing the
21 * software by the user in light of its specific status of free software,
22 * that may mean that it is complicated to manipulate, and that also
23 * therefore means that it is reserved for developers and experienced
24 * professionals having in-depth computer knowledge. Users are therefore
25 * encouraged to load and test the software's suitability as regards their
26 * requirements in conditions enabling the security of their systems and/or
27 * data to be ensured and, more generally, to use and operate it in the
28 * same conditions as regards security.
29 *
30 * The fact that you are presently reading this means that you have had
31 * knowledge of the CeCILL-B license and that you accept its terms.
32 */
33
34#ifndef ROI_MORPHOMATH_ACTION_H
35#define ROI_MORPHOMATH_ACTION_H
36
37
45#include <aims/bucket/bucketMap.h>
46
47#include <QWidget>
48
49
50namespace anatomist
51{
52 class RoiMorphoMathActionView_Private ;
53
54 class RoiMorphoMathAction : public Action, public Observable {
55 public:
64
67
68 virtual std::string name() const ;
69
70 virtual QWidget * actionView( QWidget * ) ;
71 virtual bool viewableAction( ) const { return true ; }
72
73 static Action* creator() ;
74
75 void dilation( bool partOfOpening = false ) ;
76 void erosion() ;
77 void opening() ;
78 void closure() ;
79
85
86 float structuringElementRadius() { return myStructuringElementRadius ; }
87 int distanceMode() { return myDistanceMode ; }
88 int regionMode() { return myRegionMode ; }
89
90 private:
91 carto::VolumeRef<int16_t> regionBinaryMask( AGraphObject * go ) const ;
92
93 DistanceMode myDistanceMode ;
94 RegionMode myRegionMode ;
95 float myStructuringElementRadius ;
96
97 void doingDilation( anatomist::AGraphObject * graphObject,
98 std::list< std::pair< Point3d, ChangesItem> >* changes ) ;
99 void doingErosion( anatomist::AGraphObject * graphObject,
100 std::list< std::pair< Point3d, ChangesItem> >* changes ) ;
101 } ;
102}
103
104class RoiMorphoMathActionView : public QWidget, public anatomist::Observer
105{
106 Q_OBJECT
107
108public:
110 QWidget * parent ) ;
112
113 virtual void update( const anatomist::Observable *, void * ) ;
114
115public slots:
116 void dilation( ) ;
117 void erosion() ;
118 void opening() ;
119 void closure() ;
120/* void default() ; */
121 void structuringElementRadiusChanged( int newStructElRadius ) ;
122 void distanceModeChanged( int newDistanceMode ) ;
123 void regionModeChanged( int newRegionMode ) ;
124
125 private:
126 anatomist::RoiMorphoMathActionView_Private * _private ;
127 bool myChangingFlag ;
128 bool myUpdatingFlag ;
129 bool myRegionMode ;
130
131} ;
132
133#endif
#define slots
void structuringElementRadiusChanged(int newStructElRadius)
virtual ~RoiMorphoMathActionView()
virtual void update(const anatomist::Observable *, void *)
This method is called whenever the observed object is changed.
RoiMorphoMathActionView(anatomist::RoiMorphoMathAction *action, QWidget *parent)
void distanceModeChanged(int newDistanceMode)
void regionModeChanged(int newRegionMode)
Anatomist graph object: a list that manages destruction of its sub-elements.
Definition GraphObject.h:53
This class can be subclassed to represent an object that the programmer wants to have observed.
Definition Observable.h:68
Observable()
Construct an Observable with zero observers.
A class can implement the Observer interface when it wants to be informed of changes in observable ob...
Definition Observer.h:55
virtual bool viewableAction() const
Definition morphomath.h:71
void dilation(bool partOfOpening=false)
void structuringElementRadiusChange(float structuringElementRadius)
virtual std::string name() const
virtual QWidget * actionView(QWidget *)