ImageStatisticsPlugin::ImageStatisticsPlugin( OfxImageEffectHandle handle )
	: ImageEffectGilPlugin( handle )
{
	_clipMask = fetchClip( kClipMask );

	_paramRestrictToRegion = fetchBooleanParam( kParamRestrictToRegion );

	_paramCoordinateSystem = fetchChoiceParam( kParamCoordinateSystem );
	_paramRectCenter       = fetchDouble2DParam( kParamRectCenter );
	_paramRectSize         = fetchDouble2DParam( kParamRectSize );
	_paramChooseOutput     = fetchChoiceParam( kParamChooseOutput );

	_paramOutputNbPixels = fetchIntParam( kParamOutputNbPixels );
	
	_paramOutputAverage       = fetchRGBAParam( kParamOutputAverage );
	_paramOutputVariance      = fetchRGBAParam( kParamOutputVariance );
	_paramOutputChannelMin    = fetchRGBAParam( kParamOutputChannelMin );
	_paramOutputChannelMax    = fetchRGBAParam( kParamOutputChannelMax );
	_paramOutputLuminosityMin = fetchRGBAParam( kParamOutputLuminosityMin );
	_paramOutputLuminosityMax = fetchRGBAParam( kParamOutputLuminosityMax );
	_paramOutputKurtosis      = fetchRGBAParam( kParamOutputKurtosis );
	_paramOutputSkewness      = fetchRGBAParam( kParamOutputSkewness );

	_paramOutputAverageHSL       = fetchDouble3DParam( kParamOutputAverageHSL );
	_paramOutputVarianceHSL      = fetchDouble3DParam( kParamOutputVarianceHSL );
	_paramOutputChannelMinHSL    = fetchDouble3DParam( kParamOutputChannelMinHSL );
	_paramOutputChannelMaxHSL    = fetchDouble3DParam( kParamOutputChannelMaxHSL );
	_paramOutputLuminosityMinHSL = fetchDouble3DParam( kParamOutputLuminosityMinHSL );
	_paramOutputLuminosityMaxHSL = fetchDouble3DParam( kParamOutputLuminosityMaxHSL );
	_paramOutputKurtosisHSL      = fetchDouble3DParam( kParamOutputKurtosisHSL );
	_paramOutputSkewnessHSL      = fetchDouble3DParam( kParamOutputSkewnessHSL );
	
	OFX::InstanceChangedArgs args( this->timeLineGetTime() );
	changedParam( args, kParamRestrictToRegion );
}
ImageStatisticsPlugin::ImageStatisticsPlugin( OfxImageEffectHandle handle )
	: ImageEffectGilPlugin( handle )
{
	_paramCoordinateSystem = fetchChoiceParam( kParamCoordinateSystem );
	_paramRectCenter       = fetchDouble2DParam( kParamRectCenter );
	_paramRectSize         = fetchDouble2DParam( kParamRectSize );
	_paramChooseOutput     = fetchChoiceParam( kParamChooseOutput );

	_paramOutputAverage       = fetchRGBAParam( kParamOutputAverage );
	_paramOutputVariance      = fetchRGBAParam( kParamOutputVariance );
	_paramOutputChannelMin    = fetchRGBAParam( kParamOutputChannelMin );
	_paramOutputChannelMax    = fetchRGBAParam( kParamOutputChannelMax );
	_paramOutputLuminosityMin = fetchRGBAParam( kParamOutputLuminosityMin );
	_paramOutputLuminosityMax = fetchRGBAParam( kParamOutputLuminosityMax );
	_paramOutputKurtosis      = fetchRGBAParam( kParamOutputKurtosis );
	_paramOutputSkewness      = fetchRGBAParam( kParamOutputSkewness );

	_paramOutputAverageHSL       = fetchDouble3DParam( kParamOutputAverageHSL );
	_paramOutputChannelMinHSL    = fetchDouble3DParam( kParamOutputChannelMinHSL );
	_paramOutputChannelMaxHSL    = fetchDouble3DParam( kParamOutputChannelMaxHSL );
	_paramOutputLuminosityMinHSL = fetchDouble3DParam( kParamOutputLuminosityMinHSL );
	_paramOutputLuminosityMaxHSL = fetchDouble3DParam( kParamOutputLuminosityMaxHSL );
	_paramOutputKurtosisHSL      = fetchDouble3DParam( kParamOutputKurtosisHSL );
	_paramOutputSkewnessHSL      = fetchDouble3DParam( kParamOutputSkewnessHSL );
}