+2004-12-03 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
+ * src/gdcmPixelWriteConvert.[h|cxx] : new class to write datas (and in the
+ future, with convertion)
+ * src/gdcmFile.[h|cxx] : the PixelWriteConverter instance replace Pixel_Data
+ and ImageDataSize values. Remove the method to get the PixelReadConverter
+ from the output of the class
+
2004-12-03 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
* Rename src/gdcmPixelConvert.[h|cxx] to src/gdcmPixelReadConvert.[h|cxx]
-
+
2004-12-02 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
* vtk/vtkGdcmReader.cxx : correct error in vtkDebugMacro, vtkWarningMacro
and vtkErrorMacro use.
Program: gdcm
Module: $RCSfile: PrintFile.cxx,v $
Language: C++
- Date: $Date: 2004/12/03 10:21:53 $
- Version: $Revision: 1.15 $
+ Date: $Date: 2004/12/03 11:55:37 $
+ Version: $Revision: 1.16 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
std::string transferSyntaxName = e1->GetTransfertSyntaxName();
std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]" << std::endl;
- if ( transferSyntaxName != "Implicit VR - Little Endian"
+/* if ( transferSyntaxName != "Implicit VR - Little Endian"
&& transferSyntaxName != "Explicit VR - Little Endian"
&& transferSyntaxName != "Deflated Explicit VR - Little Endian"
&& transferSyntaxName != "Explicit VR - Big Endian"
f1->GetPixelReadConverter()->Print();
std::cout << std::endl << "==========================================="
<< std::endl;
- }
+ }*/
if(e1->IsReadable())
std::cout <<std::endl<<fileName<<" is Readable"<<std::endl;
Program: gdcm
Module: $RCSfile: TestWrite.cxx,v $
Language: C++
- Date: $Date: 2004/12/03 10:21:53 $
- Version: $Revision: 1.10 $
+ Date: $Date: 2004/12/03 11:55:37 $
+ Version: $Revision: 1.11 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
transferSyntaxName = e1->GetTransfertSyntaxName();
std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]" << std::endl;
- if ( transferSyntaxName != "Implicit VR - Little Endian"
+/* if ( transferSyntaxName != "Implicit VR - Little Endian"
&& transferSyntaxName != "Explicit VR - Little Endian"
&& transferSyntaxName != "Deflated Explicit VR - Little Endian"
&& transferSyntaxName != "Explicit VR - Big Endian"
f1->GetPixelReadConverter()->Print();
std::cout << std::endl << "==========================================="
<< std::endl;
- }
+ }*/
imageData= f1->GetImageData();
switch (argv[2][0]) {
Program: gdcm
Module: $RCSfile: Write.cxx,v $
Language: C++
- Date: $Date: 2004/12/03 10:21:53 $
- Version: $Revision: 1.10 $
+ Date: $Date: 2004/12/03 11:55:37 $
+ Version: $Revision: 1.11 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
transferSyntaxName = e1->GetTransfertSyntaxName();
std::cout << " TransferSyntaxName= [" << transferSyntaxName << "]" << std::endl;
- if ( transferSyntaxName != "Implicit VR - Little Endian"
+/* if ( transferSyntaxName != "Implicit VR - Little Endian"
&& transferSyntaxName != "Explicit VR - Little Endian"
&& transferSyntaxName != "Deflated Explicit VR - Little Endian"
&& transferSyntaxName != "Explicit VR - Big Endian"
f1->GetPixelReadConverter()->Print();
std::cout << std::endl << "==========================================="
<< std::endl;
- }
+ }*/
imageData= f1->GetImageData();
(void)imageData; // to avoid warnings
gdcmJpeg16.cxx
gdcmJpeg2000.cxx
gdcmPixelReadConvert.cxx
+ gdcmPixelWriteConvert.cxx
gdcmRLEFrame.cxx
gdcmRLEFramesInfo.cxx
gdcmSeqEntry.cxx
Program: gdcm
Module: $RCSfile: gdcmFile.cxx,v $
Language: C++
- Date: $Date: 2004/12/03 10:21:54 $
- Version: $Revision: 1.168 $
+ Date: $Date: 2004/12/03 11:55:38 $
+ Version: $Revision: 1.169 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
WriteType = WTYPE_IMPL_VR;
PixelReadConverter = new PixelReadConvert;
+ PixelWriteConverter = new PixelWriteConvert;
Archive = new DocEntryArchive( HeaderInternal );
if ( HeaderInternal->IsReadable() )
{
PixelReadConverter->GrabInformationsFromHeader( HeaderInternal );
}
-
- Pixel_Data = 0;
- ImageDataSize = 0;
}
/**
{
delete PixelReadConverter;
}
+ if( PixelWriteConverter )
+ {
+ delete PixelWriteConverter;
+ }
if( Archive )
{
delete Archive;
}
/**
- * \brief Points the internal Pixel_Data pointer to the callers inData
+ * \brief Points the internal pointer to the callers inData
* image representation, BUT WITHOUT COPYING THE DATA.
* 'image' Pixels are presented as C-like 2D arrays : line per line.
* 'volume'Pixels are presented as C-like 3D arrays : plane per plane
*/
bool File::SetImageData(uint8_t* inData, size_t expectedSize)
{
-// FIXME : if already allocated, memory leak !
- Pixel_Data = inData;
- ImageDataSize = expectedSize;
-// FIXME : 7fe0, 0010 IS NOT set ...
+ PixelWriteConverter->SetUserData(inData,expectedSize);
+
return true;
}
dbg.Verbose(2, "Fail to open (write) file:", fileName.c_str());
return false;
}
- fp1.write((char*)Pixel_Data, ImageDataSize);
+
+ if(PixelWriteConverter->GetUserData())
+ fp1.write((char*)PixelWriteConverter->GetUserData(), PixelWriteConverter->GetUserDataSize());
+ else if(PixelReadConverter->GetRGB())
+ fp1.write((char*)PixelReadConverter->GetRGB(), PixelReadConverter->GetRGBSize());
+ else if(PixelReadConverter->GetDecompressed())
+ fp1.write((char*)PixelReadConverter->GetDecompressed(), PixelReadConverter->GetDecompressedSize());
+
fp1.close();
return true;
*/
bool File::CheckWriteIntegrity()
{
- if(Pixel_Data)
+ if(PixelWriteConverter->GetUserData())
{
int numberBitsAllocated = HeaderInternal->GetBitsAllocated();
if ( numberBitsAllocated == 0 || numberBitsAllocated == 12 )
switch(WriteMode)
{
case WMODE_DECOMPRESSED :
- if( decSize!=ImageDataSize )
+ if( decSize!=PixelWriteConverter->GetUserDataSize() )
{
dbg.Verbose(0, "File::CheckWriteIntegrity: Data size is incorrect");
- //std::cerr<<"Dec : "<<decSize<<" | "<<ImageDataSize<<std::endl;
return false;
}
break;
case WMODE_RGB :
- if( rgbSize!=ImageDataSize )
+ if( rgbSize!=PixelWriteConverter->GetUserDataSize() )
{
dbg.Verbose(0, "File::CheckWriteIntegrity: Data size is incorrect");
- //std::cerr<<"RGB : "<<decSize<<" | "<<ImageDataSize<<std::endl;
return false;
}
break;
return true;
}
-/*void File::SetWriteToNative()
-{
- if(Pixel_Data)
- {
- BinEntry* pixel = CopyBinEntry(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel());
- pixel->SetValue(GDCM_BINLOADED);
- pixel->SetBinArea(Pixel_Data,false);
- pixel->SetLength(ImageDataSize);
-
- Archive->Push(pixel);
- }
-}*/
-
void File::SetWriteToDecompressed()
{
if(HeaderInternal->GetNumberOfScalarComponents()==3 && !HeaderInternal->HasLUT())
BinEntry* pixel = CopyBinEntry(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel());
pixel->SetValue(GDCM_BINLOADED);
- if(Pixel_Data)
+ if(PixelWriteConverter->GetUserData())
{
- pixel->SetBinArea(Pixel_Data,false);
- pixel->SetLength(ImageDataSize);
+ pixel->SetBinArea(PixelWriteConverter->GetUserData(),false);
+ pixel->SetLength(PixelWriteConverter->GetUserDataSize());
}
else
{
BinEntry* pixel = CopyBinEntry(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel());
pixel->SetValue(GDCM_BINLOADED);
- if(Pixel_Data)
+ if(PixelWriteConverter->GetUserData())
{
- pixel->SetBinArea(Pixel_Data,false);
- pixel->SetLength(ImageDataSize);
+ pixel->SetBinArea(PixelWriteConverter->GetUserData(),false);
+ pixel->SetLength(PixelWriteConverter->GetUserDataSize());
}
else if(PixelReadConverter->GetRGB())
{
Program: gdcm
Module: $RCSfile: gdcmFile.h,v $
Language: C++
- Date: $Date: 2004/12/03 10:21:54 $
- Version: $Revision: 1.80 $
+ Date: $Date: 2004/12/03 11:55:38 $
+ Version: $Revision: 1.81 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
#include "gdcmCommon.h"
#include "gdcmHeader.h"
#include "gdcmPixelReadConvert.h"
+#include "gdcmPixelWriteConvert.h"
#include "gdcmDocEntryArchive.h"
namespace gdcm
size_t GetImageDataSize();
size_t GetImageDataRawSize();
- /// Accessor to \ref PixelReadConverter
- PixelReadConvert* GetPixelReadConverter() { return PixelReadConverter; };
-
uint8_t* GetImageData();
uint8_t* GetImageDataRaw();
size_t GetImageDataIntoVector(void* destination, size_t maxSize);
/// Utility pixel converter
PixelReadConvert* PixelReadConverter;
+ PixelWriteConvert* PixelWriteConverter;
// Utility header archive
DocEntryArchive *Archive;
// Write variables
unsigned int WriteMode;
unsigned int WriteType;
-
-/// FIXME
-// --------------- Will be moved to a PixelData class
-//
-
- /// \brief to hold the Pixels (when read)
- uint8_t* Pixel_Data; // (was PixelData)
-
- /// \brief Size (in bytes) of requited memory to hold the the pixels
- /// of this image in it's RGB convertion either from:
- /// - Plane R, Plane G, Plane B
- /// - Grey Plane + Palette Color
- /// - YBR Pixels (or from RGB Pixels, as well)
- size_t ImageDataSize;
-
-//
-// --------------- end of future PixelData class
-//
-
};
} // end namespace gdcm
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/03 11:55:38 $
+ Version: $Revision: 1.2 $
Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
l'Image). All rights reserved. See Doc/License.txt or
{
public:
PixelReadConvert();
- ~PixelReadConvert();
+ virtual ~PixelReadConvert();
//// Getter accessors:
uint8_t* GetRGB() { return RGB; }
--- /dev/null
+/*=========================================================================
+
+ Program: gdcm
+ Module: $RCSfile: gdcmPixelWriteConvert.cxx,v $
+ Language: C++
+ Date: $Date: 2004/12/03 11:55:38 $
+ Version: $Revision: 1.1 $
+
+ 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.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*/
+
+////////////////// TEMPORARY NOTE
+// look for "fixMem" and convert that to a member of this class
+// Removing the prefix fixMem and dealing with allocations should do the trick
+//
+// grep PixelWriteConvert everywhere and clean up !
+
+#include "gdcmDebug.h"
+#include "gdcmPixelWriteConvert.h"
+#include <stdio.h>
+
+namespace gdcm
+{
+//-----------------------------------------------------------------------------
+// Constructor / Destructor
+PixelWriteConvert::PixelWriteConvert()
+{
+ ReadData = 0;
+ ReadDataSize = 0;
+
+ UserData = 0;
+ UserDataSize = 0;
+}
+
+PixelWriteConvert::~PixelWriteConvert()
+{
+}
+
+//-----------------------------------------------------------------------------
+// Public
+void PixelWriteConvert::SetReadData(uint8_t* data,size_t size)
+{
+ ReadData = data;
+ ReadDataSize = size;
+}
+
+void PixelWriteConvert::SetUserData(uint8_t* data,size_t size)
+{
+ UserData = data;
+ UserDataSize = size;
+}
+
+//-----------------------------------------------------------------------------
+} // end namespace gdcm
+
+// NOTES on File internal calls
+// User
+// ---> GetImageData
+// ---> GetImageDataIntoVector
+// |---> GetImageDataIntoVectorRaw
+// | lut intervention
+// User
+// ---> GetImageDataRaw
+// ---> GetImageDataIntoVectorRaw
--- /dev/null
+/*=========================================================================
+
+ Program: gdcm
+ Module: $RCSfile: gdcmPixelWriteConvert.h,v $
+ Language: C++
+ Date: $Date: 2004/12/03 11:55:38 $
+ Version: $Revision: 1.1 $
+
+ 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.html for details.
+
+ This software is distributed WITHOUT ANY WARRANTY; without even
+ the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+ PURPOSE. See the above copyright notices for more information.
+
+=========================================================================*/
+
+
+#ifndef GDCMPIXELWRITECONVERT_H
+#define GDCMPIXELWRITECONVERT_H
+
+#include "gdcmCommon.h"
+
+namespace gdcm
+{
+/*
+ * \brief Utility container for gathering the various forms the pixel data
+ * migth take during the user demanded processes.
+ */
+class GDCM_EXPORT PixelWriteConvert
+{
+public:
+ PixelWriteConvert();
+ virtual ~PixelWriteConvert();
+
+ // Set/Get of images and their size
+ void SetReadData(uint8_t* data,size_t size);
+ uint8_t* GetReadData() { return ReadData; }
+ size_t GetReadDataSize() { return ReadDataSize; }
+
+ void SetUserData(uint8_t* data,size_t size);
+ uint8_t* GetUserData() { return UserData; }
+ size_t GetUserDataSize() { return UserDataSize; }
+
+private:
+// Variables
+ /// Pixel data represented as RGB after LUT color interpretation.
+ uint8_t* ReadData;
+ /// Size of \ref RGB image.
+ size_t ReadDataSize;
+
+ /// User pixel data
+ uint8_t* UserData;
+ /// Size of \ref User image.
+ size_t UserDataSize;
+};
+} // end namespace gdcm
+
+//-----------------------------------------------------------------------------
+#endif