X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmFile.h;h=7fd947fb16ea947a2aecfd31b778f4a25d43e91a;hb=5bf7c51796867388334836847a6874640bc83f89;hp=c814acbb6d4aa8b17600b80350b3dfc7660c16bf;hpb=6bbf9cb61993d024630bf9b05b82e4346559c5b2;p=gdcm.git diff --git a/src/gdcmFile.h b/src/gdcmFile.h index c814acbb..7fd947fb 100644 --- a/src/gdcmFile.h +++ b/src/gdcmFile.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmFile.h,v $ Language: C++ - Date: $Date: 2004/10/08 08:56:48 $ - Version: $Revision: 1.56 $ + Date: $Date: 2004/10/20 14:30:40 $ + Version: $Revision: 1.64 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -21,6 +21,10 @@ #include "gdcmCommon.h" #include "gdcmHeader.h" +#include "gdcmPixelConvert.h" + +namespace gdcm +{ //----------------------------------------------------------------------------- /* @@ -28,51 +32,34 @@ * for accessing the image/volume content. One can also use it to * write Dicom/ACR-NEMA/RAW files. */ -class GDCM_EXPORT gdcmFile +class GDCM_EXPORT File { public: - gdcmFile( gdcmHeader *header ); - gdcmFile( std::string const& filename ); + File( Header* header ); + File( std::string const& filename ); - virtual ~gdcmFile(); + virtual ~File(); /// Accessor to \ref Header - gdcmHeader* GetHeader() { return Header; } + Header* GetHeader() { return HeaderInternal; } int ComputeDecompressedPixelDataSizeFromHeader(); - void ConvertRGBPlanesToRGBPixels( uint8_t* source, uint8_t* destination ); - void ConvertYcBcRPlanesToRGBPixels( uint8_t* source, uint8_t* destination ); - void ConvertReArrangeBits( - uint8_t* pixelZone, - size_t imageDataSize, - int numberBitsStored, - int numberBitsAllocated, - int highBitPosition ) throw ( gdcmFormatError ); - void ConvertReorderEndianity( - uint8_t* pixelZone, - size_t imageDataSize, - int numberBitsStored, - int numberBitsAllocated, - bool signedPixel ); - void ConvertDecompress12BitsTo16Bits( - uint8_t* pixelZone, - int sizeX, - int sizeY, - FILE* filePtr) throw ( gdcmFormatError); - /// Accessor to \ref ImageDataSize size_t GetImageDataSize(){ return ImageDataSize; }; /// Accessor to \ref ImageDataSizeRaw size_t GetImageDataSizeRaw(){ return ImageDataSizeRaw; }; + /// Accessor to \ref PixelConverter + PixelConvert* GetPixelConverter(){ return PixelConverter; }; + uint8_t* GetImageData(); size_t GetImageDataIntoVector(void* destination, size_t maxSize); uint8_t* GetImageDataRaw(); - size_t GetImageDataIntoVectorRaw(void* destination, size_t maxSize); + void GetImageDataIntoVectorRaw(void* destination, size_t maxSize); - // see also gdcmHeader::SetImageDataSize ?!? + // see also Header::SetImageDataSize ?!? bool SetImageData (uint8_t* data, size_t expectedSize); /// \todo When the caller is aware we simply point to the data: @@ -86,70 +73,53 @@ public: bool WriteDcmExplVR(std::string const& fileName); bool WriteAcr (std::string const& fileName); - // Don't look any longer for the code : - // It's in file gdcmParsePixels.cxx - bool ParsePixelData(); - virtual bool SetEntryByNumber(std::string const& content, uint16_t group, uint16_t element) { - Header->SetEntryByNumber(content,group,element); + HeaderInternal->SetEntryByNumber(content,group,element); return true; } + uint8_t* GetLutRGBA(); protected: bool WriteBase(std::string const& fileName, FileType type); private: void Initialise(); - void SwapZone(void* im, int swap, int lgr, int nb); - bool ReadPixelData(void* destination); - // For JPEG 8 Bits, body in file gdcmJpeg.cxx - bool gdcm_read_JPEG_file (FILE* fp, void* image_buffer); bool gdcm_write_JPEG_file (FILE* fp, void* image_buffer, int image_width, int image_heigh, int quality); // For JPEG 12 Bits, body in file gdcmJpeg12.cxx - bool gdcm_read_JPEG_file12 (FILE* fp, void* image_buffer); bool gdcm_write_JPEG_file12 (FILE* fp, void* image_buffer, int image_width, int image_height, int quality); - // For JPEG 2000, body in file gdcmJpeg2000.cxx - bool gdcm_read_JPEG2000_file (FILE* fp, void* image_buffer); - - // For Run Length Encoding - bool gdcm_read_RLE_file (FILE* fp, void* image_buffer); -// FIXME : *sure* it's NOT static (C++) -// (would be static in C, or embedded in ADA) -// It's NOT a method, but a not user intended fonction. -// How do we write that in C++ ?) - static bool gdcm_read_RLE_fragment( uint8_t** decodedZone, - long fragmentSize, - long uncompressedSegmentSize, FILE* fp); - - void SaveInitialValues(); // will belong to the future gdcmPixelData class - void RestoreInitialValues(); // will belong to the future gdcmPixelData class - void DeleteInitialValues(); // will belong to the future gdcmPixelData class + void SaveInitialValues(); // will belong to the future PixelData class + void RestoreInitialValues(); // will belong to the future PixelData class + void DeleteInitialValues(); // will belong to the future PixelData class +private: // members variables: - /// \brief Header to use to load the file - gdcmHeader *Header; + /// Header to use to load the file + Header *HeaderInternal; - /// \brief Whether the underlying \ref gdcmHeader was loaded by + /// \brief Whether the underlying \ref Header was loaded by /// the constructor or passed to the constructor. When false /// the destructor is in charge of deletion. bool SelfHeader; - /// wether already parsed + /// Wether already parsed or not bool Parsed; -// -// --------------- Will be moved to a gdcmPixelData class + /// Utility pixel converter + PixelConvert* PixelConverter; + +/// FIXME +// --------------- Will be moved to a PixelData class // /// \brief to hold the Pixels (when read) @@ -199,24 +169,25 @@ private: // We keep a pointer on them for a future use. /// \brief Red Palette Color Lookup Table Descriptor 0028 1101 as read - gdcmDocEntry* InitialRedLUTDescr; + DocEntry* InitialRedLUTDescr; /// \brief Green Palette Color Lookup Table Descriptor 0028 1102 as read - gdcmDocEntry* InitialGreenLUTDescr; + DocEntry* InitialGreenLUTDescr; /// \brief Blue Palette Color Lookup Table Descriptor 0028 1103 as read - gdcmDocEntry* InitialBlueLUTDescr; + DocEntry* InitialBlueLUTDescr; /// \brief Red Palette Color Lookup Table Data 0028 1201 as read - gdcmDocEntry* InitialRedLUTData; + DocEntry* InitialRedLUTData; /// \brief Green Palette Color Lookup Table Data 0028 1202 as read - gdcmDocEntry* InitialGreenLUTData; + DocEntry* InitialGreenLUTData; /// \brief Blue Palette Color Lookup Table Data 0028 1203 as read - gdcmDocEntry* InitialBlueLUTData; + DocEntry* InitialBlueLUTData; // -// --------------- end of future gdcmPixelData class +// --------------- end of future PixelData class // }; +} // end namespace gdcm //----------------------------------------------------------------------------- #endif