X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmFile.h;h=8491fb5297529cbed7b169a95621856092e1790e;hb=c03bc9b5e7d49126a10d49f78682410a5500c412;hp=a69011f8edb61b4b91d0fdf397ef7260e32f0ac2;hpb=88f0914a8dd9327056361ae14d62ead303f2a9ed;p=gdcm.git diff --git a/src/gdcmFile.h b/src/gdcmFile.h index a69011f8..8491fb52 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/01 12:40:57 $ - Version: $Revision: 1.55 $ + Date: $Date: 2004/10/28 03:10:58 $ + Version: $Revision: 1.68 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -21,63 +21,43 @@ #include "gdcmCommon.h" #include "gdcmHeader.h" +#include "gdcmPixelConvert.h" +namespace gdcm +{ //----------------------------------------------------------------------------- /* * In addition to Dicom header exploration, this class is designed * 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; } - - int ComputeDecompressedPixelDataSizeFromHeader(); + Header* GetHeader() { return HeaderInternal; } - 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; }; + size_t GetImageDataSize() { return ImageDataSize; }; /// Accessor to \ref ImageDataSizeRaw - size_t GetImageDataSizeRaw(){ return 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); - // 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: - /// int SetImageDataNoCopy (void* Data, size_t ExpectedSize); - // Write pixels of ONE image on hard drive // No test is made on processor "endianity" // The user must call his reader correctly @@ -86,69 +66,45 @@ 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 int gdcm_read_RLE_fragment(char **areaToRead, long lengthToDecode, - 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 + uint8_t* GetDecompressed(); + int ComputeDecompressedPixelDataSizeFromHeader(); +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) @@ -198,24 +154,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