GDCM  2.2.0
Public Member Functions | Protected Member Functions | Protected Attributes
gdcm::StreamImageWriter Class Reference

StreamImageReader. More...

#include <gdcmStreamImageWriter.h>

Collaboration diagram for gdcm::StreamImageWriter:
[legend]

List of all members.

Public Member Functions

 StreamImageWriter ()
 ~StreamImageWriter ()
bool CanWriteFile () const
void DefinePixelExtent (uint16_t inXMin, uint16_t inXMax, uint16_t inYMin, uint16_t inYMax, uint16_t inZMin=0, uint16_t inZMax=1)
uint32_t DefineProperBufferLength ()
void SetFile (const File &inFile)
void SetFileName (const char *inFileName)
void SetStream (std::ostream &inStream)
bool Write (void *inWriteBuffer, const std::size_t &inBufferLength)
virtual bool WriteImageInformation ()

Protected Member Functions

virtual bool WriteImageSubregionRAW (char *inWriteBuffer, const std::size_t &inBufferLength)
int WriteRawHeader (RAWCodec *inCodec, std::ostream *inStream)

Protected Attributes

int mElementOffsets
int mElementOffsets1
SmartPointer< FilemspFile
Writer mWriter
uint16_t mXMax
uint16_t mXMin
uint16_t mYMax
uint16_t mYMin
uint16_t mZMax
uint16_t mZMin

Detailed Description

StreamImageReader.

Note:
its role is to convert the DICOM DataSet into a gdcm::Image representation via an ITK streaming (ie, multithreaded) interface Image is different from Pixmap has it has a position and a direction in Space. Currently, this class is threadsafe in that it can read a single extent in a single thread. Multiple versions can be used for multiple extents/threads.
See also:
Image
Examples:
Extracting_All_Resolution.cxx, Fake_Image_Using_Stream_Image_Writer.cxx, and StreamImageReaderTest.cxx.

Constructor & Destructor Documentation

gdcm::StreamImageWriter::StreamImageWriter ( )
gdcm::StreamImageWriter::~StreamImageWriter ( )

Member Function Documentation

bool gdcm::StreamImageWriter::CanWriteFile ( ) const

This function determines if a file can even be written using the streaming writer unlike the reader, can be called before WriteImageInformation, but must be called after SetFile.

Examples:
Extracting_All_Resolution.cxx, and Fake_Image_Using_Stream_Image_Writer.cxx.
void gdcm::StreamImageWriter::DefinePixelExtent ( uint16_t  inXMin,
uint16_t  inXMax,
uint16_t  inYMin,
uint16_t  inYMax,
uint16_t  inZMin = 0,
uint16_t  inZMax = 1 
)

Defines an image extent for the Read function. DICOM states that an image can have no more than 2^16 pixels per edge (as of 2009) In this case, the pixel extents ignore the direction cosines entirely, and assumes that the origin of the image is at location 0,0 (regardless of the definition in space per the tags). So, if the first 100 pixels of the first row are to be read in, this function should be called with DefinePixelExtent(0, 100, 0, 1), regardless of pixel size or orientation. 15 nov 2010: added z dimension, defaults to being 1 plane large

Examples:
Extracting_All_Resolution.cxx, Fake_Image_Using_Stream_Image_Writer.cxx, and StreamImageReaderTest.cxx.
uint32_t gdcm::StreamImageWriter::DefineProperBufferLength ( )

Paying attention to the pixel format and so forth, define the proper buffer length for the user. The return amount is in bytes. If the return is 0, then that means that the pixel extent was not defined prior this return is for RAW inputs which are then encoded by the writer, but are used to ensure that the writer gets the proper buffer size

Examples:
Extracting_All_Resolution.cxx, Fake_Image_Using_Stream_Image_Writer.cxx, and StreamImageReaderTest.cxx.
void gdcm::StreamImageWriter::SetFile ( const File inFile)

Set the image information to be written to disk that is everything but the pixel information: (7fe0,0010) PixelData

Examples:
Extracting_All_Resolution.cxx, Fake_Image_Using_Stream_Image_Writer.cxx, and StreamImageReaderTest.cxx.
void gdcm::StreamImageWriter::SetFileName ( const char *  inFileName)

One of either SetFileName or SetStream must be called prior to any other functions. These initialize an internal Reader class to be able to get non-pixel image information.

void gdcm::StreamImageWriter::SetStream ( std::ostream &  inStream)
bool gdcm::StreamImageWriter::Write ( void *  inWriteBuffer,
const std::size_t &  inBufferLength 
)

Read the DICOM image. There are three reasons for failure:

  1. The extent is not set
  2. the conversion from void* to std::ostream (internally) fails
  3. the given buffer isn't large enough to accomodate the desired pixel extent. This method has been implemented to look similar to the metaimageio in itk MUST have an extent defined, or else Read will return false. If no particular extent is required, use ImageReader instead.
Examples:
Extracting_All_Resolution.cxx, Fake_Image_Using_Stream_Image_Writer.cxx, and StreamImageReaderTest.cxx.
virtual bool gdcm::StreamImageWriter::WriteImageInformation ( )
virtual

Write the header information to disk, and a bunch of zeros for the actual pixel information Of course, if we're doing a non-compressed format, that works but if it's compressed, we have to force the ordering of chunks that are written.

Examples:
Extracting_All_Resolution.cxx, Fake_Image_Using_Stream_Image_Writer.cxx, and StreamImageReaderTest.cxx.
virtual bool gdcm::StreamImageWriter::WriteImageSubregionRAW ( char *  inWriteBuffer,
const std::size_t &  inBufferLength 
)
protectedvirtual

Using the min, max, etc set by DefinePixelExtent, this will fill the given buffer Make sure to call DefinePixelExtent and to initialize the buffer with the amount given by DefineProperBufferLength prior to calling this. reads by the RAW codec; other codecs are added once implemented

int gdcm::StreamImageWriter::WriteRawHeader ( RAWCodec inCodec,
std::ostream *  inStream 
)
protected

when writing a raw file, we know the full extent, and can just write the first 12 bytes out (the tag, the VR, and the size) when we do compressed files, we'll do it in chunks, as described in 2009-3, part 5, Annex A, section 4. Pass the raw codec so that in the rare case of a bigendian explicit raw, the first 12 bytes written out should still be kosher. returns -1 if there's any failure, or the complete offset (12 bytes) if it works. Those 12 bytes are then added to the position in order to determine where to write.


Member Data Documentation

int gdcm::StreamImageWriter::mElementOffsets
protected

The result of WriteRawHeader (or another header, when that's implemented) This result is saved so that the first N bytes aren't constantly being rewritten for each chunk that's passed in. For compressed data, the offset table will require rewrites of data.

int gdcm::StreamImageWriter::mElementOffsets1
protected
SmartPointer<File> gdcm::StreamImageWriter::mspFile
protected
Writer gdcm::StreamImageWriter::mWriter
protected
uint16_t gdcm::StreamImageWriter::mXMax
protected
uint16_t gdcm::StreamImageWriter::mXMin
protected
uint16_t gdcm::StreamImageWriter::mYMax
protected
uint16_t gdcm::StreamImageWriter::mYMin
protected
uint16_t gdcm::StreamImageWriter::mZMax
protected
uint16_t gdcm::StreamImageWriter::mZMin
protected

The documentation for this class was generated from the following file:

Generated on Wed Jun 13 2012 20:40:40 for GDCM by doxygen 1.8.1
SourceForge.net Logo