]> Creatis software - gdcm.git/blobdiff - src/gdcmPixelReadConvert.h
BUG: Thanks to JP for bug report.
[gdcm.git] / src / gdcmPixelReadConvert.h
index 72bdf526fe1a9ee6d294d2e1adcc1fd44daad5b5..140a285700176c170d3ea587c9232fd815985b03 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmPixelReadConvert.h,v $
   Language:  C++
-  Date:      $Date: 2004/12/03 10:21:55 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2004/12/16 13:46:37 $
+  Version:   $Revision: 1.7 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
 #define GDCMPIXELREADCONVERT_H
 
 #include "gdcmCommon.h"
-#include "gdcmRLEFramesInfo.h"
-#include "gdcmJPEGFragmentsInfo.h"
+#include "gdcmBase.h"
 #include "gdcmException.h"
-#include "gdcmHeader.h"
 
 namespace gdcm
 {
+class Header;
+class RLEFramesInfo;
+class JPEGFragmentsInfo;
 /*
  * \brief Utility container for gathering the various forms the pixel data
  *        migth take during the user demanded processes.
  */
-class GDCM_EXPORT PixelReadConvert
+class GDCM_EXPORT PixelReadConvert : public Base
 {
 public:
    PixelReadConvert();
-   ~PixelReadConvert();
+   virtual ~PixelReadConvert();
 
    //// Getter accessors:
    uint8_t* GetRGB() { return RGB; }
    size_t   GetRGBSize() { return RGBSize; }
-   uint8_t* GetDecompressed() { return Decompressed; }
-   size_t   GetDecompressedSize() { return DecompressedSize; }
+   uint8_t* GetRaw() { return Raw; }
+   size_t   GetRawSize() { return RawSize; }
    uint8_t* GetLutRGBA() { return LutRGBA; }
 
    //// Predicates:
-   bool IsDecompressedRGB();
+   bool IsRawRGB();
 
+   void Print( std::ostream &os = std::cout );
    void Print( std::string indent = "", std::ostream &os = std::cout );
 
 // In progress
@@ -66,6 +68,11 @@ private:
    void ReadAndDecompress12BitsTo16Bits( std::ifstream* fp ) throw ( FormatError );
    bool ReadAndDecompressRLEFile( std::ifstream* fp );
    bool ReadAndDecompressJPEGFile( std::ifstream* fp );
+   bool ReadAndDecompressJPEGFramesFromFile( std::ifstream* fp );
+   bool ReadAndDecompressJPEGSingleFrameFragmentsFromFile( std::ifstream* fp );
+   bool ReadAndDecompressJPEGFragmentedFramesFromFile( std::ifstream* fp );
+
+
    void BuildLUTRGBA( std::ifstream* fp );
 
    // In place (within Decompressed and with no fp access) decompression
@@ -79,9 +86,9 @@ private:
    void ConvertYcBcRPlanesToRGBPixels();
    void ConvertHandleColor();
 
-   void ComputeDecompressedAndRGBSizes();
+   void ComputeRawAndRGBSizes();
    void AllocateRGB();
-   void AllocateDecompressed();
+   void AllocateRaw();
 
 // Variables
    /// Pixel data represented as RGB after LUT color interpretation.
@@ -89,9 +96,9 @@ private:
    /// Size of \ref RGB image.
    size_t   RGBSize;
    /// Pixel data after decompression and bit/byte rearrangement.
-   uint8_t* Decompressed;
+   uint8_t* Raw;
    /// Size of \ref Decompressed image.
-   size_t   DecompressedSize;
+   size_t   RawSize;
    /// \brief Red/Green/Blue/Alpha LookUpTable build out of the
    ///        Red/Green/Blue LUT descriptors (see \ref BuildLUTRGBA ).
    uint8_t* LutRGBA;
@@ -109,7 +116,7 @@ private:
    bool PixelSign;
    int SwapCode;
 
-   bool IsDecompressed;
+   bool IsRaw;
    bool IsJPEG2000;
    bool IsJPEGLossless;
    bool IsRLELossless;