22 #ifndef otbImageIOBase_h
23 #define otbImageIOBase_h
26 #include "itkLightProcessObject.h"
27 #include "itkIndent.h"
28 #include "itkImageIORegion.h"
29 #include "vnl/vnl_vector.h"
35 #include "OTBImageBaseExport.h"
69 class OTBImageBase_EXPORT
ImageIOBase :
public itk::LightProcessObject
81 itkSetStringMacro(FileName);
82 itkGetStringMacro(FileName);
122 typedef enum { UNKNOWNCOMPONENTTYPE, UCHAR, CHAR, USHORT, SHORT, UINT, INT, ULONG, LONG, FLOAT, DOUBLE, CSHORT, CINT, CFLOAT, CDOUBLE } IOComponentType;
128 itkGetConstMacro(NumberOfDimensions,
unsigned int);
137 return m_Dimensions[i];
161 virtual void SetDirection(
unsigned int i, std::vector<double>& direction);
162 virtual void SetDirection(
unsigned int i, vnl_vector<double>& direction);
165 return m_Direction[i];
179 itkSetMacro(IORegion, itk::ImageIORegion);
180 itkGetConstReferenceMacro(IORegion, itk::ImageIORegion);
211 itkSetMacro(NumberOfComponents,
unsigned int);
212 itkGetConstReferenceMacro(NumberOfComponents,
unsigned int);
216 itkSetMacro(UseCompression,
bool);
217 itkGetConstMacro(UseCompression,
bool);
218 itkBooleanMacro(UseCompression);
222 itkSetMacro(UseStreamedReading,
bool);
223 itkGetConstMacro(UseStreamedReading,
bool);
224 itkBooleanMacro(UseStreamedReading);
228 itkSetMacro(UseStreamedWriting,
bool);
229 itkGetConstMacro(UseStreamedWriting,
bool);
230 itkBooleanMacro(UseStreamedWriting);
244 typedef enum {
ASCII, Binary, TypeNotApplicable } FileType;
248 typedef enum {
BigEndian, LittleEndian, OrderNotApplicable } ByteOrder;
256 this->SetFileType(ASCII);
260 this->SetFileType(Binary);
279 this->SetByteOrder(BigEndian);
283 this->SetByteOrder(LittleEndian);
356 virtual void Read(
void* buffer) = 0;
382 virtual void Write(
const void* buffer) = 0;
425 const itk::ImageIORegion& largestPossibleRegion);
433 virtual itk::ImageIORegion
GetSplitRegionForWriting(
unsigned int ithPiece,
unsigned int numberOfActualSplits,
const itk::ImageIORegion& pasteRegion,
434 const itk::ImageIORegion& largestPossibleRegion);
456 void DoMapBuffer(
void* buffer,
size_t numberOfPixels, std::vector<unsigned int>& bandList);
459 itkGetConstReferenceMacro(AttachedFileNames, std::vector<std::string>);
468 void PrintSelf(std::ostream& os, itk::Indent indent)
const override;
525 virtual void Reset(
const bool freeDynamic =
true);
528 void Resize(
const unsigned int numDimensions,
const unsigned int* dimensions);
577 const itk::ImageIORegion& pasteRegion)
const;
Abstract superclass defines image IO interface.
virtual bool CanStreamWrite()
static std::string GetByteOrderAsString(ByteOrder)
virtual void SetDimensions(unsigned int i, unsigned int dim)
virtual void Reset(const bool freeDynamic=true)
SizeType GetRowStride() const
void SetFileTypeToBinary()
void AddSupportedWriteExtension(const char *extension)
SizeType GetImageSizeInPixels() const
std::vector< unsigned int > m_BandList
vcl_size_t BufferSizeType
static std::string GetFileTypeAsString(FileType)
SizeType GetImageSizeInComponents() const
static std::string GetPixelTypeAsString(IOPixelType)
virtual bool CanStreamRead()
ImageIOBase(const Self &)=delete
virtual bool CanWriteFile(const char *)=0
virtual bool CanReadFile(const char *)=0
unsigned int m_NumberOfComponents
void WriteBufferAsASCII(std::ostream &os, const void *buffer, IOComponentType ctype, SizeType numberOfBytesToWrite)
void SetFileTypeToASCII()
std::vector< SizeValueType > m_Dimensions
virtual void Read(void *buffer)=0
virtual unsigned int GetActualNumberOfSplitsForWriting(unsigned int numberOfRequestedSplits, const itk::ImageIORegion &pasteRegion, const itk::ImageIORegion &largestPossibleRegion)
virtual void SetDirection(unsigned int i, std::vector< double > &direction)
void SetImageMetadata(ImageMetadata)
SizeType GetSliceStride() const
virtual unsigned int GetDimensions(unsigned int i) const
void Resize(const unsigned int numDimensions, const unsigned int *dimensions)
bool m_UseStreamedWriting
virtual unsigned int GetActualNumberOfSplitsForWritingCanStreamWrite(unsigned int numberOfRequestedSplits, const itk::ImageIORegion &pasteRegion) const
virtual void SetDirection(unsigned int i, vnl_vector< double > &direction)
unsigned int m_NumberOfDimensions
virtual unsigned int GetOverviewsCount()=0
void ReadBufferAsASCII(std::istream &os, void *buffer, IOComponentType ctype, SizeType numberOfBytesToBeRead)
SizeType GetImageSizeInBytes() const
virtual itk::ImageIORegion GetSplitRegionForWriting(unsigned int ithPiece, unsigned int numberOfActualSplits, const itk::ImageIORegion &pasteRegion, const itk::ImageIORegion &largestPossibleRegion)
void operator=(const Self &)=delete
void SetNumberOfDimensions(unsigned int)
IOComponentType m_ComponentType
std::vector< double > m_Spacing
virtual std::vector< std::string > GetOverviewsInfo()=0
virtual double GetOrigin(unsigned int i) const
virtual double GetSpacing(unsigned int i) const
itk::LightProcessObject Superclass
ArrayOfExtensionsType m_SupportedWriteExtensions
virtual std::vector< double > GetDefaultDirection(unsigned int i) const
virtual void SetSpacing(unsigned int i, double spacing)
unsigned long SizeValueType
virtual const std::type_info & GetComponentTypeInfo() const
virtual void SetOutputImagePixelType(bool isComplexInternalPixelType, bool isVectorImage)=0
virtual itk::ImageIORegion GetSplitRegionForWritingCanStreamWrite(unsigned int ithPiece, unsigned int numberOfActualSplits, const itk::ImageIORegion &pasteRegion) const
virtual bool SupportsDimension(unsigned long dim)
const ArrayOfExtensionsType & GetSupportedWriteExtensions() const
std::vector< double > m_Origin
void AddSupportedReadExtension(const char *extension)
void SetByteOrderToBigEndian()
SizeType GetComponentStride() const
bool ReadBufferAsBinary(std::istream &os, void *buffer, SizeType numberOfBytesToBeRead)
bool m_UseStreamedReading
virtual unsigned int GetPixelSize() const
virtual void ReadImageInformation()=0
@ SYMMETRICSECONDRANKTENSOR
itk::ImageIORegion m_IORegion
virtual std::vector< double > GetDirection(unsigned int i) const
void SetByteOrderToLittleEndian()
std::vector< std::string > m_AttachedFileNames
ArrayOfExtensionsType m_SupportedReadExtensions
virtual void Write(const void *buffer)=0
void DoMapBuffer(void *buffer, vcl_size_t numberOfPixels, std::vector< unsigned int > &bandList)
virtual itk::ImageIORegion GenerateStreamableReadRegionFromRequestedRegion(const itk::ImageIORegion &requested) const
virtual bool SetPixelTypeInfo(const std::type_info &ptype)
virtual void WriteImageInformation()=0
itk::SmartPointer< Self > Pointer
virtual void SetOrigin(unsigned int i, double origin)
virtual SizeType GetPixelStride() const
virtual unsigned int GetComponentSize() const
void PrintSelf(std::ostream &os, itk::Indent indent) const override
std::vector< SizeType > m_Strides
std::vector< std::vector< double > > m_Direction
const ArrayOfExtensionsType & GetSupportedReadExtensions() const
std::vector< std::string > ArrayOfExtensionsType
static std::string GetComponentTypeAsString(IOComponentType)
const ImageMetadata & GetImageMetadata() const
The "otb" namespace contains all Orfeo Toolbox (OTB) classes.