]> Creatis software - gdcm.git/blobdiff - src/gdcmHeader.h
BUG: Remove demangle code this was seg faulting on some linux gcc 3.3.2 machine
[gdcm.git] / src / gdcmHeader.h
index 19326cc9c8b57bd3deecb717ee52f90c2bd653de..13a5d39817ccc3cdc4d03975c684b3d3c93b2d22 100644 (file)
@@ -3,12 +3,12 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmHeader.h,v $
   Language:  C++
-  Date:      $Date: 2004/06/21 08:47:14 $
-  Version:   $Revision: 1.76 $
+  Date:      $Date: 2004/10/28 03:10:58 $
+  Version:   $Revision: 1.92 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
-  http://www.creatis.insa-lyon.fr/Public/Gdcm/License.htm for details.
+  http://www.creatis.insa-lyon.fr/Public/Gdcm/License.html for details.
                                                                                 
      This software is distributed WITHOUT ANY WARRANTY; without even
      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
 
 #include "gdcmCommon.h"
 #include "gdcmDocument.h"
+
+namespace gdcm 
+{
 //-----------------------------------------------------------------------------
 /**
  * \brief
- * The purpose of an instance of gdcmHeader is to act as a container of
+ * The purpose of an instance of Header is to act as a container of
  * all the DICOM elements and their corresponding values (and
  * additionaly the corresponding DICOM dictionary entry) of the header
  * of a DICOM file.
  *
- * The typical usage of instances of class gdcmHeader is to classify a set of
+ * The typical usage of instances of class Header is to classify a set of
  * dicom files according to header information e.g. to create a file hierarchy
  * reflecting the Patient/Study/Serie informations, or extracting a given
  * SerieId. Accessing the content (image[s] or volume[s]) is beyond the
  * functionality of this class and belongs to gdmcFile.
  * \note  The various entries of the explicit value representation (VR) shall
- *        be managed within a dictionary which is shared by all gdcmHeader
+ *        be managed within a dictionary which is shared by all Header
  *        instances.
- * \note  The gdcmHeader::Set*Tag* family members cannot be defined as
+ * \note  The Header::Set*Tag* family members cannot be defined as
  *        protected due to Swig limitations for as Has_a dependency between
- *        gdcmFile and gdcmHeader.
+ *        File and Header.
  */
 
 //-----------------------------------------------------------------------------
@@ -90,33 +93,30 @@ enum ModalityType {
 };
 //-----------------------------------------------------------------------------
 
-class GDCM_EXPORT gdcmHeader : public gdcmDocument
+class GDCM_EXPORT Header : public Document
 {
 protected:
    /// \brief In some cases (e.g. for some ACR-NEMA images) the Header Entry Element
    /// Number of the 'Pixel Element' is *not* found at 0x0010. In order to
    /// make things easier the parser shall store the proper value in
    /// NumPixel to provide a unique access facility. See also the constructor
-   /// \ref gdcmHeader::gdcmHeader
-   guint16 NumPixel;
+   /// \ref Header::Header
+   uint16_t NumPixel;
    /// \brief In some cases (e.g. for some ACR-NEMA images) the header entry for
    /// the group of pixels is *not* found at 0x7fe0. In order to
    /// make things easier the parser shall store the proper value in
    /// GrPixel to provide a unique access facility. See also the constructor
-   /// \ref gdcmHeader::gdcmHeader
-   guint16 GrPixel;
+   /// \ref Header::Header
+   uint16_t GrPixel;
 
 public:
-   explicit gdcmHeader(bool exception_on_error = false);
-   gdcmHeader(std::string const & filename, 
-              bool  exception_on_error = false, 
-              bool  enable_sequences   = false,
-              bool  skip_shadow        = false);
+   Header();
+   Header( std::string const & filename );
  
-   virtual ~gdcmHeader();
+   ~Header();
 
    // Standard values and informations contained in the header
-   virtual bool IsReadable();
+   bool IsReadable();
 
    // Some heuristic based accessors, end user intended 
    int GetBitsStored();
@@ -124,8 +124,12 @@ public:
    int GetSamplesPerPixel();
    int GetPlanarConfiguration();
    int GetPixelSize();
+   int GetHighBitPosition();
+   bool IsSignedPixelData();
+   bool IsMonochrome();
+   bool IsPaletteColor();
+   bool IsYBRFull();
 
-   int GetPixelSizeGetPixelType();
    std::string GetPixelType();
    size_t GetPixelOffset();
    size_t GetPixelAreaLength();
@@ -138,7 +142,6 @@ public:
    float GetXSpacing();
    float GetYSpacing();
    float GetZSpacing();
-   //void GetSpacing(float &x, float &y, float &z);
 
    // Useful for rescaling graylevel:
    float GetRescaleIntercept();
@@ -147,50 +150,37 @@ public:
    int GetNumberOfScalarComponents();
    int GetNumberOfScalarComponentsRaw();
 
-   // This is usefull for strategy of ordering study / series
-   // Marking them as deprecated since I believe this is achieve in the 
-   // gdcmDocument operator< 
-   //std::string GetStudyUID();
-   //std::string GetSeriesUID();
-   //std::string GetClassUID();
-   //std::string GetInstanceUID();
-
    int GetImageNumber();
    ModalityType GetModality();
 
-   /**
-    * change GetXImagePosition -> GetXOrigin in order not to confuse reader
-    * -# GetXOrigin can return default value (=0) if it was not ImagePosition
-    * -# Image Position is different in dicomV3 <> ACR NEMA -> better use generic
-    * name
-    */
    float GetXOrigin();
    float GetYOrigin();
    float GetZOrigin();
-   //void GetOrigin(float &x, float &y, float &z);
 
    bool   HasLUT();
    int    GetLUTNbits();
-   unsigned char * GetLUTRGBA();
 
    std::string GetTransfertSyntaxName();
 
-   /// Accessor to \ref gdcmHeader::GrPixel
-   guint16 GetGrPixel()  {return GrPixel;}
+   /// Accessor to \ref Header::GrPixel
+   uint16_t GetGrPixel()  { return GrPixel; }
    
-   /// Accessor to \ref gdcmHeader::NumPixel
-   guint16 GetNumPixel() {return NumPixel;}
+   /// Accessor to \ref Header::NumPixel
+   uint16_t GetNumPixel() { return NumPixel; }
 
-   /// Read (used in gdcmFile)
+   /// Read (used in File)
    void SetImageDataSize(size_t expectedSize);
 
+   void Write(std::ofstream* fp, FileType filetype);
 protected:
    bool AnonymizeHeader();
-   void GetImageOrientationPatient( float* iop );
+   void GetImageOrientationPatient( float iop[6] );
 
 private:
-  friend class gdcmSerieHeader;
+  friend class SerieHeader;
 };
+} // end namespace gdcm
 
 //-----------------------------------------------------------------------------
 #endif