Program: gdcm
Module: $RCSfile: gdcmPixelReadConvert.h,v $
Language: C++
- Date: $Date: 2005/10/20 08:29:50 $
- Version: $Revision: 1.25 $
+ Date: $Date: 2007/09/17 12:18:25 $
+ Version: $Revision: 1.33 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
=========================================================================*/
-#ifndef GDCMPIXELREADCONVERT_H
-#define GDCMPIXELREADCONVERT_H
+#ifndef _GDCMPIXELREADCONVERT_H_
+#define _GDCMPIXELREADCONVERT_H_
#include "gdcmBase.h"
+#include "gdcmFileHelper.h"
#include "gdcmException.h"
+#include "gdcmCommandManager.h"
+
#include <fstream>
-namespace gdcm
+namespace GDCM_NAME_SPACE
{
class File;
class RLEFramesInfo;
/**
* \brief Utility container for gathering the various forms the pixel data
* migth take during the user demanded processes.
- * WARNING : *none* of these functions may be invoked by gdm user
+ * WARNING : *none* of these functions may be invoked by gdcm user
* (internal use only)
*/
class GDCM_EXPORT PixelReadConvert : public Base
{
-public:
+friend class FileHelper;
+
+private:
PixelReadConvert();
virtual ~PixelReadConvert();
void Print( std::ostream &os = std::cout, std::string const &indent = "" );
// Getter accessors:
+ /// \brief returns pixel area holding RGB Pixels, made from Grey level + LUT
uint8_t *GetRGB() { return RGB; }
+ /// \brief returns pixel area length -RGB Pixels, (from Grey level + LUT)-
size_t GetRGBSize() { return RGBSize; }
+ /// \brief returns pixel area holding native RGB Pixels or Grey level
uint8_t *GetRaw() { return Raw; }
+ /// \brief returns pixel area size -native RGB Pixels or Grey level-
size_t GetRawSize() { return RawSize; }
+ /// \brief returns Red Green Blue Alpha LUT
uint8_t *GetLutRGBA() { return LutRGBA; }
+ /// \brief returns Lut Item Number
int GetLutItemNumber() { return LutItemNumber; }
+ /// \brief returns Lut Item Size
int GetLutItemSize() { return LutItemSize; }
// Predicates:
bool IsRawRGB();
// In progress
- void GrabInformationsFromFile( File *file );
+ void GrabInformationsFromFile( File *file, FileHelper *fileHelper );
bool ReadAndDecompressPixelData( std::ifstream *fp );
void Squeeze();
bool BuildRGBImage();
void BuildLUTRGBA();
-
- void SetUserFunction( VOID_FUNCTION_PUINT8_PFILE_POINTER userFunc )
+/// \brief Allow user to pass his own function to modify pixels
+/// (e.g; mirror, upsidedown, ...) just after reading
+ void SetUserFunction( VOID_FUNCTION_PUINT8_PFILE_POINTER userFunc )
{ UserFunction = userFunc; }
-private:
+
// Use the fp:
- void ReadAndDecompress12BitsTo16Bits( std::ifstream *fp )
+ void ReadAndDecompress12BitsTo16Bits( std::ifstream *fp )
throw ( FormatError );
bool ReadAndDecompressJPEGFile( std::ifstream *fp );
void AllocateRGB();
void AllocateRaw();
+ void CallStartMethod();
+ void CallProgressMethod();
+ void CallEndMethod();
+
// Variables
/**
* \brief Pixel data represented as RGB after LUT color interpretation.
/// Size of Decompressed image.
size_t RawSize;
/// \brief Red/Green/Blue/Alpha LookUpTable build out of the
- /// Red/Green/Blue LUT descriptors (see \ref BuildLUTRGBA ).
+ /// Red/Green/Blue LUT descriptors (see BuildLUTRGBA ).
uint8_t *LutRGBA;
int LutItemNumber;
int LutItemSize;
int XSize;
int YSize;
int ZSize;
+ int TSize;
int BitsAllocated;
int BitsStored;
int HighBitPosition;
bool PixelSign;
int SwapCode;
- bool IsRaw;
+ // cache whether this is a strange GE transfer syntax (which has
+ // one transfer syntax for the header and another for the pixel data).
bool IsPrivateGETransferSyntax;
+
+ bool IsRaw;
bool IsJPEG2000;
bool IsJPEGLS;
bool IsJPEGLossless;
File *FileInternal; // must be passed to User Function
VOID_FUNCTION_PUINT8_PFILE_POINTER UserFunction;
+ /// Needed for the progression bar stuff
+ FileHelper *FH;
+ mutable bool Abort;
+ float Progress;
};
} // end namespace gdcm