diff --git a/Modules/IO/ImageIO/include/otbMultiImageFileWriter.h b/Modules/IO/ImageIO/include/otbMultiImageFileWriter.h index 6dac383dcf9d9ddcf795bc39c5736ed38fd57100..0d2a1fc8aff8655f6f07b0af42794fe3516b1541 100644 --- a/Modules/IO/ImageIO/include/otbMultiImageFileWriter.h +++ b/Modules/IO/ImageIO/include/otbMultiImageFileWriter.h @@ -131,6 +131,19 @@ public: this->SetNthInput(size - 1, const_cast<itk::DataObject*>(dynamic_cast<const itk::DataObject*>(inputPtr))); } + /** Add a new ImageFileWriter to the multi-writer. This is an alternative method + * when you already have an instanciated writer. + */ + template <class TWriter> + void AddInputWriter(const TWriter* writer) + { + Sink<typename TWriter::InputImageType > * sink = + new Sink<typename TWriter::InputImageType >(writer); + m_SinkList.push_back(SinkBase::Pointer(sink)); + unsigned int size = m_SinkList.size(); + this->SetNthInput(size - 1, const_cast<itk::DataObject*>(dynamic_cast<const itk::DataObject*>(writer->GetInput()))); + } + virtual void UpdateOutputInformation(); virtual void Update() @@ -242,6 +255,7 @@ private: Sink() {} Sink(typename TImage::ConstPointer inputImage, const std::string & filename); + Sink(typename otb::ImageFileWriter<TImage>::ConstPointer writer); virtual ~Sink() {} diff --git a/Modules/IO/ImageIO/include/otbMultiImageFileWriter.txx b/Modules/IO/ImageIO/include/otbMultiImageFileWriter.txx index 01358fa4ea5cb42730eb25a32a163f0094197c1a..5e6d6304dc52aa3dc95a497b45264ff2cc15d277 100644 --- a/Modules/IO/ImageIO/include/otbMultiImageFileWriter.txx +++ b/Modules/IO/ImageIO/include/otbMultiImageFileWriter.txx @@ -40,6 +40,14 @@ MultiImageFileWriter::Sink<TImage> m_Writer->SetInput(inputImage); } +template <class TImage> +MultiImageFileWriter::Sink<TImage> +::Sink(typename otb::ImageFileWriter<TImage>::ConstPointer writer): + SinkBase(dynamic_cast<const ImageBaseType*>(writer->GetInput()->GetPointer())), + m_Writer(writer), + m_ImageIO(NULL) +{ +} template <class TImage> bool