X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmOrientation.h;h=c36b9196207bf0741c8ff8df43a1f2f30ec81e3b;hb=224876ca6cbe71952f2a1d66d9853eca7745d3a0;hp=360538ecba1a4524ba26816e0e3ab1bdd81506b4;hpb=d5dae056949a25fd7d31e6489e858d031b9312b6;p=gdcm.git diff --git a/src/gdcmOrientation.h b/src/gdcmOrientation.h index 360538ec..c36b9196 100644 --- a/src/gdcmOrientation.h +++ b/src/gdcmOrientation.h @@ -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 @@ -16,13 +16,13 @@ =========================================================================*/ -#ifndef GDCMORIENTATION_H -#define GDCMORIENTATION_H +#ifndef _GDCMORIENTATION_H_ +#define _GDCMORIENTATION_H_ -#include "gdcmBase.h" +#include "gdcmRefCounter.h" #include -namespace gdcm +namespace GDCM_NAME_SPACE { typedef struct { @@ -34,16 +34,34 @@ typedef struct typedef std::pair 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,