#include "__PLUGIN_NAME__SourcePluginRImageSource.h"

template<class TRImage>
__PLUGIN_NAME__SourcePluginSource<TRImage>
::__PLUGIN_NAME__SourcePluginSource()
{
}


template<class TRImage>
__PLUGIN_NAME__SourcePluginSource<TRImage>
::~__PLUGIN_NAME__SourcePluginSource()
{
}


//----------------------------------------------------------------------------
template<class TRImage>
void
__PLUGIN_NAME__SourcePluginSource<TRImage>
::GenerateOutputInformation()
{
	// Call the superclass' implementation
	Superclass::GenerateOutputInformation();

	// Set all regions (adjust to your needs)
	RImageType::SizeType ImageSize;
	ImageSize[0] = 42;
	ImageSize[1] = 4711;
	RImageType::IndexType Index;
	Index[0] = 0;
	Index[1] = 0;
	RImageType::RegionType Region;
	Region.SetIndex(Index);
	Region.SetSize(ImageSize);
	this->GetOutput()->SetRegions(Region);

	// Set the parameters (adjust to your needs)
	this->GetOutput()->GetCameraParameters()[ritk::CameraParameters::FX] = 0;
	this->GetOutput()->GetCameraParameters()[ritk::CameraParameters::FY] = 0;
	this->GetOutput()->GetCameraParameters()[ritk::CameraParameters::CX] = 0;
	this->GetOutput()->GetCameraParameters()[ritk::CameraParameters::CY] = 0;
	this->GetOutput()->GetCameraParameters()[ritk::CameraParameters::K1] = 0;
	this->GetOutput()->GetCameraParameters()[ritk::CameraParameters::K2] = 0;
	this->GetOutput()->GetCameraParameters()[ritk::CameraParameters::K3] = 0;
}


//----------------------------------------------------------------------------
template<class TRImage>
void
__PLUGIN_NAME__SourcePluginSource<TRImage>
::GenerateRImage()
{
	// Allocate image (regions and parameters are already set by GenerateOutputInformation() )
	this->GetOutput()->Allocate();

	// ================== //
	// Do your stuff here //
	// ================== //
	//  ...
}
	


