]> Creatis software - clitk.git/blob - vv/vvToolResample.h
ported the resampler to the new tool framework
[clitk.git] / vv / vvToolResample.h
1 /*=========================================================================
2   Program:   vv                     http://www.creatis.insa-lyon.fr/rio/vv
3
4   Authors belong to: 
5   - University of LYON              http://www.universite-lyon.fr/
6   - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
7   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
8
9   This software is distributed WITHOUT ANY WARRANTY; without even
10   the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
11   PURPOSE.  See the copyright notices for more information.
12
13   It is distributed under dual licence
14
15   - BSD        See included LICENSE.txt file
16   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
17 ======================================================================-====*/
18 #ifndef _vvToolResample_h
19 #define _vvToolResample_h
20 #include "ui_vvToolResample.h"
21 #include "clitkCommon.h"
22 #include "vvImage.h"
23 #include "vvSlicerManager.h"
24 #include "vvToolWidgetBase.h"
25 #include "vvToolBase.h"
26 #include "clitkImageResampleGenericFilter.h"
27
28 #include <QtDesigner/QDesignerExportWidget>
29 #include <QTreeWidget>
30
31 //====================================================================
32 class vvToolResample :  
33     public vvToolWidgetBase,
34     public vvToolBase<vvToolResample>, 
35     private Ui::vvToolResample 
36 {
37
38     Q_OBJECT
39
40 public:
41     // constructor - destructor
42     vvToolResample(vvMainWindowBase * parent=0, Qt::WindowFlags f=0);
43
44     // Get output result
45     vvImage::Pointer GetOutput() {
46         return mOutput;
47     }
48     bool GetDisplayResult() {
49         return display_result->checkState() > 0;
50     }
51     std::string GetOutputFileName();
52     static void Initialize();
53     void apply();
54
55 public slots:
56 //  void SetImagesList(QTreeWidget * tree);
57     void UpdateControlSizeAndSpacing();
58     void ComputeNewSizeFromSpacing();
59     void ComputeNewSizeFromScale();
60     void ComputeNewSizeFromIso();
61     void ComputeNewSpacingFromSize();
62     void ComputeNewSpacingFromScale();
63     void ComputeNewSpacingFromIso();
64     void UpdateInterpolation();
65     void UpdateGaussianFilter();
66     void InputIsSelected(vvSlicerManager* m);
67
68 protected:
69     Ui::vvToolResample ui;
70     vvImage::Pointer mOutput;
71     clitk::ImageResampleGenericFilter::Pointer mFilter;
72
73     vvSlicerManager* mCurrentSlicerManager;
74     vvImage::Pointer mCurrentImage;
75     int mCurrentIndex;
76
77     std::vector<int> mInputOrigin;
78     std::vector<int> mInputSize;
79     std::vector<double> mInputSpacing;
80     std::vector<int> mOutputSize;
81     std::vector<double> mOutputSpacing;
82     int mDimension;
83
84     QString mLastError;
85
86     QString mInputFileName;
87
88     QString mInputFileFormat;
89     QString mPixelType;
90     QString ComponentType;
91
92     QStringList OutputListFormat;
93
94     void UpdateInputInfo();
95     void UpdateOutputInfo();
96     void UpdateOutputFormat();
97     void FillSizeEdit(std::vector<int> size);
98     void FillSpacingEdit(std::vector<double> spacing);
99     void UpdateOutputSizeAndSpacing();
100
101     QString GetSizeInBytes(std::vector<int> & size);
102     QString GetVectorDoubleAsString(std::vector<double> vectorDouble);
103     QString GetVectorIntAsString(std::vector<int> vectorInt);
104
105 }; // end class vvToolResample
106 //====================================================================
107
108 #endif
109