/*======================================================================================

	Program:		Range Imaging Toolkit (RITK)
	Module:			ritkCommonInstantiations.cxx
	Version:		$Revision: 3136 $
	Date:			$Date: 2012-04-19 14:42:59 +0200 (Do, 19 Apr 2012) $

	Copyright (c) 2010-2011
	Pattern Recognition Lab, 
    University Erlangen-Nuremberg, Germany
    All rights reserved.

	This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
	See RITKCopyright.txt for more information.

	http://www5.informatik.uni-erlangen.de/research/software/ritk

========================================================================================*/

#include <itkImage.h>
#include <itkVector.h>
#include <itkRGBAPixel.h>

#include "ritkGenericImportImageContainer.txx"
#include "ritkImagePayloadContainer.txx"
#include "ritkRImage.txx"
#include "ritkRGBRImage.txx"
#include "ritkRImageSource.txx"
#include "ritkRImageFileSource.txx"
#include "ritkRImageFilterWrapper.txx"
#include "ritkRImageFileWriter.txx"
#include "ritkRangeImageToWorldCoordImageFilter.txx"
#include "ritkRGBMappingImageFilter.txx"
#include "ritkRImageIOManager.txx"
#include "ritkRImageIOBase.txx"
#include "ritkRImageIO.txx"
#include "ritkRGBRImageIO.txx"

// Need to check
template class COMMON_EXPORT itk::Image<float,2>;

namespace ritk
{

// GenericImportImageContainer
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, unsigned char>;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::Vector<unsigned char,2> >;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::Vector<unsigned char,3> >;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::Vector<unsigned char,4> >;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::RGBAPixel<unsigned char> >;

template class COMMON_EXPORT GenericImportImageContainer<unsigned long, unsigned int>;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::Vector<unsigned int,2> >;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::Vector<unsigned int,3> >;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::Vector<unsigned int,4> >;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::RGBAPixel<unsigned int> >;

template class COMMON_EXPORT GenericImportImageContainer<unsigned long, float>;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::Vector<float,2> >;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::Vector<float,3> >;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::Vector<float,4> >;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::Vector<float,8> >;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::Vector<float,16> >;
template class COMMON_EXPORT GenericImportImageContainer<unsigned long, itk::RGBAPixel<float> >;

// Payload containers
template class COMMON_EXPORT ImagePayloadContainer<itk::Image<float,2> >;
template class COMMON_EXPORT ImagePayloadContainer<itk::Image<char,2> >;
template class COMMON_EXPORT ImagePayloadContainer<itk::Image<unsigned char,2> >;
template class COMMON_EXPORT ImagePayloadContainer<itk::Image<int,2> >;
template class COMMON_EXPORT ImagePayloadContainer<itk::Image<unsigned int,2> >;

template class COMMON_EXPORT ImagePayloadContainer<itk::Image<itk::Vector<float,3>,2> >;
template class COMMON_EXPORT ImagePayloadContainer<itk::Image<itk::Vector<unsigned char,3>,2> >;


// RImage, sources, filters, ...
template class COMMON_EXPORT RImage<float>;
template class COMMON_EXPORT RGBRImage<float, itk::Vector<unsigned char,3> >;
template class COMMON_EXPORT RImageSource<RImage<float> >;
template class COMMON_EXPORT RImageFileSource<RImage<float> >;
template class COMMON_EXPORT RImageFilterWrapper<RImage<float> >;
template class COMMON_EXPORT RImageFileWriter<RImage<float> >;
template class COMMON_EXPORT RImageIOBase<RImage<float> >;
template class COMMON_EXPORT RImageIOManager<RImage<float> >;
template class COMMON_EXPORT RImageIO<RImage<float> >;

// Transformation filter
template class COMMON_EXPORT RangeImageToWorldCoordImageFilter<itk::Image<float,2>, itk::Image<unsigned char,2>, itk::Image<itk::Vector<float,3>,2> >;
template class COMMON_EXPORT RGBMappingImageFilter<itk::Image<itk::Vector<float,3>,2>, itk::Image<itk::Vector<unsigned char,3>,2> >;


} // end namespace ritk
