anatomist 6.0.4
3D neuroimaging data viewer
selfsliceable.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
35#ifndef ANA_OBJECT_SELFSLICEABLE_H
36#define ANA_OBJECT_SELFSLICEABLE_H
37
38#include <aims/resampling/quaternion.h>
39
40namespace anatomist
41{
42
47 {
48 public:
50 SelfSliceable( const Point3df & pos, const aims::Quaternion & quat );
51 virtual ~SelfSliceable();
52
53 void setOffset( const Point3df & pos );
54 void setQuaternion( const aims::Quaternion & quat );
55 void setSlice( const Point3df & pos, const aims::Quaternion & quat );
57 Point3df offset() const { return _offset; }
59 void setPlane( const Point4df & plane );
61 Point4df plane() const;
63
65 virtual void sliceChanged() {}
66
68 virtual void setOffsetSilent( const Point3df & pos );
70 virtual void setQuaternionSilent( const aims::Quaternion & quat );
72 virtual void setSliceSilent( const Point3df & pos,
73 const aims::Quaternion & quat );
75 void setPlaneSilent( const Point4df & plane );
79
80 protected:
83 };
84
85
86 // inline methods
87
88 inline void SelfSliceable::setOffset( const Point3df & pos )
89 {
90 setOffsetSilent( pos );
92 }
93
95 {
96 if( quat.vector() != Point4df( 0, 0, 0, 0 ) )
97 {
98 setQuaternionSilent( quat );
100 }
101 }
102
103 inline void SelfSliceable::setSlice( const Point3df & pos,
104 const aims::Quaternion & quat )
105 {
106 setSliceSilent( pos, quat );
107 sliceChanged();
108 }
109
111 {
113 sliceChanged();
114 }
115
116}
117
118#endif
const Point4df & vector() const
SelfSliceable(const Point3df &pos, const aims::Quaternion &quat)
void setPlaneSilent(const Point4df &plane)
"silent" functions don't call sliceChanged()
void setSliceProperties(carto::Object options)
void setQuaternion(const aims::Quaternion &quat)
virtual void setSliceSilent(const Point3df &pos, const aims::Quaternion &quat)
"silent" functions don't call sliceChanged()
void makeSliceHeaderOptions(carto::Object options) const
implement a part of AObject::makeHeaderOptions for slice description
Point4df plane() const
another way to get the slice plane
virtual void setOffsetSilent(const Point3df &pos)
"silent" functions don't call sliceChanged()
virtual void sliceChanged()
called when the slice definition has changed
void setSlice(const Point3df &pos, const aims::Quaternion &quat)
void setOffset(const Point3df &pos)
void setPlane(const Point4df &plane)
alternative to setSlice()
aims::Quaternion _quaternion
aims::Quaternion quaternion() const
Point3df offset() const
virtual void setQuaternionSilent(const aims::Quaternion &quat)
"silent" functions don't call sliceChanged()
AimsVector< float, 3 > Point3df
AimsVector< float, 4 > Point4df