]> Creatis software - gdcm.git/blobdiff - src/gdcmOrientation.h
ENH: avoid writing illegal images with a double dots.
[gdcm.git] / src / gdcmOrientation.h
index 360538ecba1a4524ba26816e0e3ab1bdd81506b4..c36b9196207bf0741c8ff8df43a1f2f30ec81e3b 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmOrientation.h,v $
   Language:  C++
-  Date:      $Date: 2005/10/23 15:12:24 $
-  Version:   $Revision: 1.11 $
+  Date:      $Date: 2007/08/22 16:14:04 $
+  Version:   $Revision: 1.20 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
                                                                                 
 =========================================================================*/
 
-#ifndef GDCMORIENTATION_H
-#define GDCMORIENTATION_H
+#ifndef _GDCMORIENTATION_H_
+#define _GDCMORIENTATION_H_
 
-#include "gdcmBase.h"
+#include "gdcmRefCounter.h"
 #include <map>
 
-namespace gdcm 
+namespace GDCM_NAME_SPACE 
 {
 typedef struct
 {
@@ -34,16 +34,34 @@ typedef struct
 typedef std::pair<double, double> Res;
 class File;
 
+typedef enum {
+   NotApplicable = 0,
+   Axial = 1,
+   AxialInvert = -1,
+   Coronal = 2,
+   CoronalInvert = -2,
+   Sagital = 3,
+   SagitalInvert = -3,
+   HeartAxial = 4,
+   HeartAxialInvert = -4,
+   HeartCoronal = 5,
+   HeartCoronalInvert = -5,
+   HeartSagital = 6,
+   HeartSagitalInvert = -6
+} OrientationType;
+
 //-----------------------------------------------------------------------------
 /**
  * \brief Orientation class for dealing with DICOM image orientation
+ *
  * A gentle reminder for non-medical user:
  * PatientPosition (0x0010,0x5100) tells us the way the patient was introduced in the imager
  *  - HFS : Head First Supine
  *  - FFS : Feet First Supine
  *  - HFP : Head First Prone
  *  - FFP : Feet First Prone
- * Note: HFP and FFP are not very common values, since the position must be pretty unconfortable for the Patient -the patient is lying on his belly; but, if he has handcuffs there is no other way ...-
+ * Note: HFP and FFP are not very common values, since the position must
+ *        be pretty unconfortable for the Patient -the patient is lying on his belly; but, if he has handcuffs there is no other way ...-
  *
  * ImageOrientationPatient (0x0020,0x0037) gives 6 cosines (2 for each plane)
  * Patient Orientation (as found in the optional 0x0020,0x0020, or computed by
@@ -76,35 +94,24 @@ class File;
  * You'll probabely have 3 letters for X axis and  Y axis, and the image remains *perfectly* sagital !
  * The values are given within the 'Patient referential', *not* within the 'Organ referential' ...
  */
-typedef enum {
-   NotApplicable = 0,
-   Axial = 1,
-   AxialInvert = -1,
-   Coronal = 2,
-   CoronalInvert = -2,
-   Sagital = 3,
-   SagitalInvert = -3,
-   HeartAxial = 4,
-   HeartAxialInvert = -4,
-   HeartCoronal = 5,
-   HeartCoronalInvert = -5,
-   HeartSagital = 6,
-   HeartSagitalInvert = -6
-} OrientationType;
 
-class GDCM_EXPORT Orientation : public Base
+class GDCM_EXPORT Orientation : public RefCounter
 {
+   gdcmTypeMacro(Orientation);
 public:
-/// \brief Constructor
-  Orientation() {}
-/// \brief Canonical Destructor
-  ~Orientation() {}
+/// \brief Constructs a gdcm::Orientation with a RefCounter
+   static Orientation *New() {return new Orientation();}
 
   OrientationType GetOrientationType( File *file );
   std::string GetOrientation ( File *file );  
   
   static const char* GetOrientationTypeString(OrientationType const o);
 
+protected:
+/// \brief Constructor
+  Orientation() {}
+/// \brief Canonical Destructor
+  ~Orientation() {}
 private:
    Res VerfCriterion(int typeCriterion, double criterionNew, Res const &res);
    double CalculLikelyhood2Vec(vector3D const &refA, vector3D const &refB,