Program: gdcm
Module: $RCSfile: gdcmOrientation.h,v $
Language: C++
- Date: $Date: 2005/10/03 16:09:27 $
- Version: $Revision: 1.10 $
+ 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
{
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
* 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:
- Orientation() {}
- ~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,