]> Creatis software - clitk.git/blobdiff - itk/clitkAddRelativePositionConstraintToLabelImageFilter.h
changes in license header
[clitk.git] / itk / clitkAddRelativePositionConstraintToLabelImageFilter.h
index 249598b17427ec3c1a81726899f0f5e226ca7119..7eb531ee470c5b7c4d5f1ece47751c4c861ca799 100644 (file)
@@ -3,7 +3,7 @@
 
   Authors belong to: 
   - University of LYON              http://www.universite-lyon.fr/
-  - Léon Bérard cancer center       http://oncora1.lyon.fnclcc.fr
+  - Léon Bérard cancer center       http://www.centreleonberard.fr
   - CREATIS CNRS laboratory         http://www.creatis.insa-lyon.fr
 
   This software is distributed WITHOUT ANY WARRANTY; without even
@@ -14,7 +14,7 @@
 
   - BSD        See included LICENSE.txt file
   - CeCILL-B   http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
-  ======================================================================-====*/
+  ===========================================================================**/
 
 #ifndef CLITKADDRELATIVEPOSITIONCONSTRAINTTOLABELIMAGEFILTER_H
 #define CLITKADDRELATIVEPOSITIONCONSTRAINTTOLABELIMAGEFILTER_H
@@ -23,7 +23,7 @@
 #include "clitkFilterBase.h"
 
 // itk
-#include "itkPasteImageFilter.h"
+#include <itkPasteImageFilter.h>
 
 // itk ENST
 #include "RelativePositionPropImageFilter.h"
@@ -70,13 +70,15 @@ namespace clitk {
     typedef typename ImageType::PixelType    PixelType;
     typedef typename ImageType::SpacingType  SpacingType;
     typedef typename ImageType::SizeType     SizeType;
+    typedef typename ImageType::IndexType    IndexType;
+    typedef typename ImageType::PointType    PointType;
     
     /** ImageDimension constants */
     itkStaticConstMacro(ImageDimension, unsigned int, ImageType::ImageDimension);
     typedef itk::Image<float, ImageDimension> FloatImageType;
 
     /** Orientation types */
-    typedef enum { RightTo = 0, LeftTo = 1,
+    typedef enum { AtRightTo = 0, AtLeftTo = 1,
                    AntTo = 2,   PostTo = 3, 
                    InfTo = 4,   SupTo = 5, Angle = 6
     } OrientationTypeEnumeration;
@@ -86,17 +88,17 @@ namespace clitk {
     void SetInputObject(const ImageType * image);
     
     // Options
-    void SetOrientationType(OrientationTypeEnumeration orientation);
-    itkGetConstMacro(OrientationType, OrientationTypeEnumeration);
-
-    void SetAngle1(double a);
-    void SetAngle2(double a);
-    itkGetConstMacro(Angle1, double);
-    itkGetConstMacro(Angle2, double);
-
-    itkGetConstMacro(ResampleBeforeRelativePositionFilter, bool);
-    itkSetMacro(ResampleBeforeRelativePositionFilter, bool);
-    itkBooleanMacro(ResampleBeforeRelativePositionFilter);
+    void AddOrientationType(OrientationTypeEnumeration orientation);
+    void AddOrientationTypeString(std::string s);
+    void ClearOrientationType();
+    void AddAngles(double a, double b);
+    int GetNumberOfAngles();
+    std::string GetOrientationTypeString(int i) { return m_OrientationTypeString[i]; }
+    std::vector<std::string> & GetOrientationTypeString() { return m_OrientationTypeString; }
+
+    itkGetConstMacro(IntermediateSpacingFlag, bool);
+    itkSetMacro(IntermediateSpacingFlag, bool);
+    itkBooleanMacro(IntermediateSpacingFlag);
 
     itkGetConstMacro(IntermediateSpacing, double);
     itkSetMacro(IntermediateSpacing, double);
@@ -110,29 +112,45 @@ namespace clitk {
     itkGetConstMacro(ObjectBackgroundValue, PixelType);
     itkSetMacro(ObjectBackgroundValue, PixelType);
 
-    itkGetConstMacro(AutoCrop, bool);
-    itkSetMacro(AutoCrop, bool);
-    itkBooleanMacro(AutoCrop);
+    itkGetConstMacro(AutoCropFlag, bool);
+    itkSetMacro(AutoCropFlag, bool);
+    itkBooleanMacro(AutoCropFlag);
+
+    itkGetConstMacro(InverseOrientationFlag, bool);
+    itkSetMacro(InverseOrientationFlag, bool);
+    itkBooleanMacro(InverseOrientationFlag);
+
+    itkGetConstMacro(RemoveObjectFlag, bool);
+    itkSetMacro(RemoveObjectFlag, bool);
+    itkBooleanMacro(RemoveObjectFlag);
+
+    itkGetConstMacro(CombineWithOrFlag, bool);
+    itkSetMacro(CombineWithOrFlag, bool);
+    itkBooleanMacro(CombineWithOrFlag);
 
   protected:
     AddRelativePositionConstraintToLabelImageFilter();
     virtual ~AddRelativePositionConstraintToLabelImageFilter() {}
     
-    OrientationTypeEnumeration m_OrientationType;
+    std::vector<OrientationTypeEnumeration> m_OrientationType;
+    std::vector<std::string> m_OrientationTypeString;
     double m_IntermediateSpacing;
     double m_FuzzyThreshold;
     PixelType m_BackgroundValue;
     PixelType m_ObjectBackgroundValue;
-    double m_Angle1;
-    double m_Angle2;
-    bool m_ResampleBeforeRelativePositionFilter;
-    bool m_AutoCrop;
+    std::vector<double> m_Angle1;
+    std::vector<double> m_Angle2;
+    bool m_IntermediateSpacingFlag;
+    bool m_AutoCropFlag;
+    bool m_InverseOrientationFlag;
+    bool m_RemoveObjectFlag;
+    bool m_CombineWithOrFlag;
 
     virtual void GenerateOutputInformation();
     virtual void GenerateInputRequestedRegion();
     virtual void GenerateData();
 
-    typedef itk::PasteImageFilter<ImageType,ImageType> PadFilterType;
+    typedef itk::PasteImageFilter<ImageType,ImageType> PasteFilterType;
     typename ImageType::Pointer working_image;
     typename ImageType::Pointer object_resampled;
     typename FloatImageType::Pointer relPos;