view dstep/quartzcore/CIFilter.d @ 16:19885b43130e

Huge update, the bridge actually works now
author Jacob Carlborg <doob@me.com>
date Sun, 03 Jan 2010 22:06:11 +0100
parents
children b9de51448c6b
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Sep 24, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.quartzcore.CIFilter;

import dstep.foundation.NSArray;
import dstep.foundation.NSCoder;
import dstep.foundation.NSData;
import dstep.foundation.NSDictionary;
import dstep.foundation.NSObject;
import dstep.foundation.NSString;
import dstep.foundation.NSURL;
import dstep.foundation.NSZone;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;
import dstep.quartzcore.CACIFilterAdditions;
import dstep.quartzcore.CIImage;
import dstep.quartzcore.CIKernel;
import dstep.quartzcore.CIRAWFilter;

import bindings = dstep.quartzcore.CIFilter_bindings;

private
{
	NSString kCIAttributeFilterName_;
	NSString kCIAttributeFilterDisplayName_;
	NSString kCIAttributeDescription_;
	NSString kCIAttributeReferenceDocumentation_;
	NSString kCIAttributeFilterCategories_;
	NSString kCIAttributeClass_;
	NSString kCIAttributeType_;
	NSString kCIAttributeMin_;
	NSString kCIAttributeMax_;
	NSString kCIAttributeSliderMin_;
	NSString kCIAttributeSliderMax_;
	NSString kCIAttributeDefault_;
	NSString kCIAttributeIdentity_;
	NSString kCIAttributeName_;
	NSString kCIAttributeDisplayName_;
	NSString kCIUIParameterSet_;
	NSString kCIUISetBasic_;
	NSString kCIUISetIntermediate_;
	NSString kCIUISetAdvanced_;
	NSString kCIUISetDevelopment_;
	NSString kCIAttributeTypeTime_;
	NSString kCIAttributeTypeScalar_;
	NSString kCIAttributeTypeDistance_;
	NSString kCIAttributeTypeAngle_;
	NSString kCIAttributeTypeBoolean_;
	NSString kCIAttributeTypeInteger_;
	NSString kCIAttributeTypeCount_;
	NSString kCIAttributeTypePosition_;
	NSString kCIAttributeTypeOffset_;
	NSString kCIAttributeTypePosition3_;
	NSString kCIAttributeTypeRectangle_;
	NSString kCIAttributeTypeOpaqueColor_;
	NSString kCIAttributeTypeGradient_;
	NSString kCICategoryDistortionEffect_;
	NSString kCICategoryGeometryAdjustment_;
	NSString kCICategoryCompositeOperation_;
	NSString kCICategoryHalftoneEffect_;
	NSString kCICategoryColorAdjustment_;
	NSString kCICategoryColorEffect_;
	NSString kCICategoryTransition_;
	NSString kCICategoryTileEffect_;
	NSString kCICategoryGenerator_;
	NSString kCICategoryReduction_;
	NSString kCICategoryGradient_;
	NSString kCICategoryStylize_;
	NSString kCICategorySharpen_;
	NSString kCICategoryBlur_;
	NSString kCICategoryVideo_;
	NSString kCICategoryStillImage_;
	NSString kCICategoryInterlaced_;
	NSString kCICategoryNonSquarePixels_;
	NSString kCICategoryHighDynamicRange_;
	NSString kCICategoryBuiltIn_;
	NSString kCICategoryFilterGenerator_;
	NSString kCIApplyOptionExtent_;
	NSString kCIApplyOptionDefinition_;
	NSString kCIApplyOptionUserInfo_;
	NSString kCIOutputImageKey_;
	NSString kCIInputBackgroundImageKey_;
	NSString kCIInputImageKey_;
	NSString kCIInputTimeKey_;
	NSString kCIInputTransformKey_;
	NSString kCIInputScaleKey_;
	NSString kCIInputAspectRatioKey_;
	NSString kCIInputCenterKey_;
	NSString kCIInputRadiusKey_;
	NSString kCIInputAngleKey_;
	NSString kCIInputRefractionKey_;
	NSString kCIInputWidthKey_;
	NSString kCIInputSharpnessKey_;
	NSString kCIInputIntensityKey_;
	NSString kCIInputEVKey_;
	NSString kCIInputSaturationKey_;
	NSString kCIInputColorKey_;
	NSString kCIInputBrightnessKey_;
	NSString kCIInputContrastKey_;
	NSString kCIInputGradientImageKey_;
	NSString kCIInputMaskImageKey_;
	NSString kCIInputShadingImageKey_;
	NSString kCIInputTargetImageKey_;
	NSString kCIInputExtentKey_;
}

NSString kCIAttributeFilterName ()
{
	if (kCIAttributeFilterName_)
		return kCIAttributeFilterName_;

	return kCIAttributeFilterName_ = new NSString(bindings.kCIAttributeFilterName);
}

NSString kCIAttributeFilterDisplayName ()
{
	if (kCIAttributeFilterDisplayName_)
		return kCIAttributeFilterDisplayName_;

	return kCIAttributeFilterDisplayName_ = new NSString(bindings.kCIAttributeFilterDisplayName);
}

NSString kCIAttributeDescription ()
{
	if (kCIAttributeDescription_)
		return kCIAttributeDescription_;

	return kCIAttributeDescription_ = new NSString(bindings.kCIAttributeDescription);
}

NSString kCIAttributeReferenceDocumentation ()
{
	if (kCIAttributeReferenceDocumentation_)
		return kCIAttributeReferenceDocumentation_;

	return kCIAttributeReferenceDocumentation_ = new NSString(bindings.kCIAttributeReferenceDocumentation);
}

NSString kCIAttributeFilterCategories ()
{
	if (kCIAttributeFilterCategories_)
		return kCIAttributeFilterCategories_;

	return kCIAttributeFilterCategories_ = new NSString(bindings.kCIAttributeFilterCategories);
}

NSString kCIAttributeClass ()
{
	if (kCIAttributeClass_)
		return kCIAttributeClass_;

	return kCIAttributeClass_ = new NSString(bindings.kCIAttributeClass);
}

NSString kCIAttributeType ()
{
	if (kCIAttributeType_)
		return kCIAttributeType_;

	return kCIAttributeType_ = new NSString(bindings.kCIAttributeType);
}

NSString kCIAttributeMin ()
{
	if (kCIAttributeMin_)
		return kCIAttributeMin_;

	return kCIAttributeMin_ = new NSString(bindings.kCIAttributeMin);
}

NSString kCIAttributeMax ()
{
	if (kCIAttributeMax_)
		return kCIAttributeMax_;

	return kCIAttributeMax_ = new NSString(bindings.kCIAttributeMax);
}

NSString kCIAttributeSliderMin ()
{
	if (kCIAttributeSliderMin_)
		return kCIAttributeSliderMin_;

	return kCIAttributeSliderMin_ = new NSString(bindings.kCIAttributeSliderMin);
}

NSString kCIAttributeSliderMax ()
{
	if (kCIAttributeSliderMax_)
		return kCIAttributeSliderMax_;

	return kCIAttributeSliderMax_ = new NSString(bindings.kCIAttributeSliderMax);
}

NSString kCIAttributeDefault ()
{
	if (kCIAttributeDefault_)
		return kCIAttributeDefault_;

	return kCIAttributeDefault_ = new NSString(bindings.kCIAttributeDefault);
}

NSString kCIAttributeIdentity ()
{
	if (kCIAttributeIdentity_)
		return kCIAttributeIdentity_;

	return kCIAttributeIdentity_ = new NSString(bindings.kCIAttributeIdentity);
}

NSString kCIAttributeName ()
{
	if (kCIAttributeName_)
		return kCIAttributeName_;

	return kCIAttributeName_ = new NSString(bindings.kCIAttributeName);
}

NSString kCIAttributeDisplayName ()
{
	if (kCIAttributeDisplayName_)
		return kCIAttributeDisplayName_;

	return kCIAttributeDisplayName_ = new NSString(bindings.kCIAttributeDisplayName);
}

NSString kCIUIParameterSet ()
{
	if (kCIUIParameterSet_)
		return kCIUIParameterSet_;

	return kCIUIParameterSet_ = new NSString(bindings.kCIUIParameterSet);
}

NSString kCIUISetBasic ()
{
	if (kCIUISetBasic_)
		return kCIUISetBasic_;

	return kCIUISetBasic_ = new NSString(bindings.kCIUISetBasic);
}

NSString kCIUISetIntermediate ()
{
	if (kCIUISetIntermediate_)
		return kCIUISetIntermediate_;

	return kCIUISetIntermediate_ = new NSString(bindings.kCIUISetIntermediate);
}

NSString kCIUISetAdvanced ()
{
	if (kCIUISetAdvanced_)
		return kCIUISetAdvanced_;

	return kCIUISetAdvanced_ = new NSString(bindings.kCIUISetAdvanced);
}

NSString kCIUISetDevelopment ()
{
	if (kCIUISetDevelopment_)
		return kCIUISetDevelopment_;

	return kCIUISetDevelopment_ = new NSString(bindings.kCIUISetDevelopment);
}

NSString kCIAttributeTypeTime ()
{
	if (kCIAttributeTypeTime_)
		return kCIAttributeTypeTime_;

	return kCIAttributeTypeTime_ = new NSString(bindings.kCIAttributeTypeTime);
}

NSString kCIAttributeTypeScalar ()
{
	if (kCIAttributeTypeScalar_)
		return kCIAttributeTypeScalar_;

	return kCIAttributeTypeScalar_ = new NSString(bindings.kCIAttributeTypeScalar);
}

NSString kCIAttributeTypeDistance ()
{
	if (kCIAttributeTypeDistance_)
		return kCIAttributeTypeDistance_;

	return kCIAttributeTypeDistance_ = new NSString(bindings.kCIAttributeTypeDistance);
}

NSString kCIAttributeTypeAngle ()
{
	if (kCIAttributeTypeAngle_)
		return kCIAttributeTypeAngle_;

	return kCIAttributeTypeAngle_ = new NSString(bindings.kCIAttributeTypeAngle);
}

NSString kCIAttributeTypeBoolean ()
{
	if (kCIAttributeTypeBoolean_)
		return kCIAttributeTypeBoolean_;

	return kCIAttributeTypeBoolean_ = new NSString(bindings.kCIAttributeTypeBoolean);
}

NSString kCIAttributeTypeInteger ()
{
	if (kCIAttributeTypeInteger_)
		return kCIAttributeTypeInteger_;

	return kCIAttributeTypeInteger_ = new NSString(bindings.kCIAttributeTypeInteger);
}

NSString kCIAttributeTypeCount ()
{
	if (kCIAttributeTypeCount_)
		return kCIAttributeTypeCount_;

	return kCIAttributeTypeCount_ = new NSString(bindings.kCIAttributeTypeCount);
}

NSString kCIAttributeTypePosition ()
{
	if (kCIAttributeTypePosition_)
		return kCIAttributeTypePosition_;

	return kCIAttributeTypePosition_ = new NSString(bindings.kCIAttributeTypePosition);
}

NSString kCIAttributeTypeOffset ()
{
	if (kCIAttributeTypeOffset_)
		return kCIAttributeTypeOffset_;

	return kCIAttributeTypeOffset_ = new NSString(bindings.kCIAttributeTypeOffset);
}

NSString kCIAttributeTypePosition3 ()
{
	if (kCIAttributeTypePosition3_)
		return kCIAttributeTypePosition3_;

	return kCIAttributeTypePosition3_ = new NSString(bindings.kCIAttributeTypePosition3);
}

NSString kCIAttributeTypeRectangle ()
{
	if (kCIAttributeTypeRectangle_)
		return kCIAttributeTypeRectangle_;

	return kCIAttributeTypeRectangle_ = new NSString(bindings.kCIAttributeTypeRectangle);
}

NSString kCIAttributeTypeOpaqueColor ()
{
	if (kCIAttributeTypeOpaqueColor_)
		return kCIAttributeTypeOpaqueColor_;

	return kCIAttributeTypeOpaqueColor_ = new NSString(bindings.kCIAttributeTypeOpaqueColor);
}

NSString kCIAttributeTypeGradient ()
{
	if (kCIAttributeTypeGradient_)
		return kCIAttributeTypeGradient_;

	return kCIAttributeTypeGradient_ = new NSString(bindings.kCIAttributeTypeGradient);
}

NSString kCICategoryDistortionEffect ()
{
	if (kCICategoryDistortionEffect_)
		return kCICategoryDistortionEffect_;

	return kCICategoryDistortionEffect_ = new NSString(bindings.kCICategoryDistortionEffect);
}

NSString kCICategoryGeometryAdjustment ()
{
	if (kCICategoryGeometryAdjustment_)
		return kCICategoryGeometryAdjustment_;

	return kCICategoryGeometryAdjustment_ = new NSString(bindings.kCICategoryGeometryAdjustment);
}

NSString kCICategoryCompositeOperation ()
{
	if (kCICategoryCompositeOperation_)
		return kCICategoryCompositeOperation_;

	return kCICategoryCompositeOperation_ = new NSString(bindings.kCICategoryCompositeOperation);
}

NSString kCICategoryHalftoneEffect ()
{
	if (kCICategoryHalftoneEffect_)
		return kCICategoryHalftoneEffect_;

	return kCICategoryHalftoneEffect_ = new NSString(bindings.kCICategoryHalftoneEffect);
}

NSString kCICategoryColorAdjustment ()
{
	if (kCICategoryColorAdjustment_)
		return kCICategoryColorAdjustment_;

	return kCICategoryColorAdjustment_ = new NSString(bindings.kCICategoryColorAdjustment);
}

NSString kCICategoryColorEffect ()
{
	if (kCICategoryColorEffect_)
		return kCICategoryColorEffect_;

	return kCICategoryColorEffect_ = new NSString(bindings.kCICategoryColorEffect);
}

NSString kCICategoryTransition ()
{
	if (kCICategoryTransition_)
		return kCICategoryTransition_;

	return kCICategoryTransition_ = new NSString(bindings.kCICategoryTransition);
}

NSString kCICategoryTileEffect ()
{
	if (kCICategoryTileEffect_)
		return kCICategoryTileEffect_;

	return kCICategoryTileEffect_ = new NSString(bindings.kCICategoryTileEffect);
}

NSString kCICategoryGenerator ()
{
	if (kCICategoryGenerator_)
		return kCICategoryGenerator_;

	return kCICategoryGenerator_ = new NSString(bindings.kCICategoryGenerator);
}

NSString kCICategoryReduction ()
{
	if (kCICategoryReduction_)
		return kCICategoryReduction_;

	return kCICategoryReduction_ = new NSString(bindings.kCICategoryReduction);
}

NSString kCICategoryGradient ()
{
	if (kCICategoryGradient_)
		return kCICategoryGradient_;

	return kCICategoryGradient_ = new NSString(bindings.kCICategoryGradient);
}

NSString kCICategoryStylize ()
{
	if (kCICategoryStylize_)
		return kCICategoryStylize_;

	return kCICategoryStylize_ = new NSString(bindings.kCICategoryStylize);
}

NSString kCICategorySharpen ()
{
	if (kCICategorySharpen_)
		return kCICategorySharpen_;

	return kCICategorySharpen_ = new NSString(bindings.kCICategorySharpen);
}

NSString kCICategoryBlur ()
{
	if (kCICategoryBlur_)
		return kCICategoryBlur_;

	return kCICategoryBlur_ = new NSString(bindings.kCICategoryBlur);
}

NSString kCICategoryVideo ()
{
	if (kCICategoryVideo_)
		return kCICategoryVideo_;

	return kCICategoryVideo_ = new NSString(bindings.kCICategoryVideo);
}

NSString kCICategoryStillImage ()
{
	if (kCICategoryStillImage_)
		return kCICategoryStillImage_;

	return kCICategoryStillImage_ = new NSString(bindings.kCICategoryStillImage);
}

NSString kCICategoryInterlaced ()
{
	if (kCICategoryInterlaced_)
		return kCICategoryInterlaced_;

	return kCICategoryInterlaced_ = new NSString(bindings.kCICategoryInterlaced);
}

NSString kCICategoryNonSquarePixels ()
{
	if (kCICategoryNonSquarePixels_)
		return kCICategoryNonSquarePixels_;

	return kCICategoryNonSquarePixels_ = new NSString(bindings.kCICategoryNonSquarePixels);
}

NSString kCICategoryHighDynamicRange ()
{
	if (kCICategoryHighDynamicRange_)
		return kCICategoryHighDynamicRange_;

	return kCICategoryHighDynamicRange_ = new NSString(bindings.kCICategoryHighDynamicRange);
}

NSString kCICategoryBuiltIn ()
{
	if (kCICategoryBuiltIn_)
		return kCICategoryBuiltIn_;

	return kCICategoryBuiltIn_ = new NSString(bindings.kCICategoryBuiltIn);
}

NSString kCICategoryFilterGenerator ()
{
	if (kCICategoryFilterGenerator_)
		return kCICategoryFilterGenerator_;

	return kCICategoryFilterGenerator_ = new NSString(bindings.kCICategoryFilterGenerator);
}

NSString kCIApplyOptionExtent ()
{
	if (kCIApplyOptionExtent_)
		return kCIApplyOptionExtent_;

	return kCIApplyOptionExtent_ = new NSString(bindings.kCIApplyOptionExtent);
}

NSString kCIApplyOptionDefinition ()
{
	if (kCIApplyOptionDefinition_)
		return kCIApplyOptionDefinition_;

	return kCIApplyOptionDefinition_ = new NSString(bindings.kCIApplyOptionDefinition);
}

NSString kCIApplyOptionUserInfo ()
{
	if (kCIApplyOptionUserInfo_)
		return kCIApplyOptionUserInfo_;

	return kCIApplyOptionUserInfo_ = new NSString(bindings.kCIApplyOptionUserInfo);
}

NSString kCIOutputImageKey ()
{
	if (kCIOutputImageKey_)
		return kCIOutputImageKey_;

	return kCIOutputImageKey_ = new NSString(bindings.kCIOutputImageKey);
}

NSString kCIInputBackgroundImageKey ()
{
	if (kCIInputBackgroundImageKey_)
		return kCIInputBackgroundImageKey_;

	return kCIInputBackgroundImageKey_ = new NSString(bindings.kCIInputBackgroundImageKey);
}

NSString kCIInputImageKey ()
{
	if (kCIInputImageKey_)
		return kCIInputImageKey_;

	return kCIInputImageKey_ = new NSString(bindings.kCIInputImageKey);
}

NSString kCIInputTimeKey ()
{
	if (kCIInputTimeKey_)
		return kCIInputTimeKey_;

	return kCIInputTimeKey_ = new NSString(bindings.kCIInputTimeKey);
}

NSString kCIInputTransformKey ()
{
	if (kCIInputTransformKey_)
		return kCIInputTransformKey_;

	return kCIInputTransformKey_ = new NSString(bindings.kCIInputTransformKey);
}

NSString kCIInputScaleKey ()
{
	if (kCIInputScaleKey_)
		return kCIInputScaleKey_;

	return kCIInputScaleKey_ = new NSString(bindings.kCIInputScaleKey);
}

NSString kCIInputAspectRatioKey ()
{
	if (kCIInputAspectRatioKey_)
		return kCIInputAspectRatioKey_;

	return kCIInputAspectRatioKey_ = new NSString(bindings.kCIInputAspectRatioKey);
}

NSString kCIInputCenterKey ()
{
	if (kCIInputCenterKey_)
		return kCIInputCenterKey_;

	return kCIInputCenterKey_ = new NSString(bindings.kCIInputCenterKey);
}

NSString kCIInputRadiusKey ()
{
	if (kCIInputRadiusKey_)
		return kCIInputRadiusKey_;

	return kCIInputRadiusKey_ = new NSString(bindings.kCIInputRadiusKey);
}

NSString kCIInputAngleKey ()
{
	if (kCIInputAngleKey_)
		return kCIInputAngleKey_;

	return kCIInputAngleKey_ = new NSString(bindings.kCIInputAngleKey);
}

NSString kCIInputRefractionKey ()
{
	if (kCIInputRefractionKey_)
		return kCIInputRefractionKey_;

	return kCIInputRefractionKey_ = new NSString(bindings.kCIInputRefractionKey);
}

NSString kCIInputWidthKey ()
{
	if (kCIInputWidthKey_)
		return kCIInputWidthKey_;

	return kCIInputWidthKey_ = new NSString(bindings.kCIInputWidthKey);
}

NSString kCIInputSharpnessKey ()
{
	if (kCIInputSharpnessKey_)
		return kCIInputSharpnessKey_;

	return kCIInputSharpnessKey_ = new NSString(bindings.kCIInputSharpnessKey);
}

NSString kCIInputIntensityKey ()
{
	if (kCIInputIntensityKey_)
		return kCIInputIntensityKey_;

	return kCIInputIntensityKey_ = new NSString(bindings.kCIInputIntensityKey);
}

NSString kCIInputEVKey ()
{
	if (kCIInputEVKey_)
		return kCIInputEVKey_;

	return kCIInputEVKey_ = new NSString(bindings.kCIInputEVKey);
}

NSString kCIInputSaturationKey ()
{
	if (kCIInputSaturationKey_)
		return kCIInputSaturationKey_;

	return kCIInputSaturationKey_ = new NSString(bindings.kCIInputSaturationKey);
}

NSString kCIInputColorKey ()
{
	if (kCIInputColorKey_)
		return kCIInputColorKey_;

	return kCIInputColorKey_ = new NSString(bindings.kCIInputColorKey);
}

NSString kCIInputBrightnessKey ()
{
	if (kCIInputBrightnessKey_)
		return kCIInputBrightnessKey_;

	return kCIInputBrightnessKey_ = new NSString(bindings.kCIInputBrightnessKey);
}

NSString kCIInputContrastKey ()
{
	if (kCIInputContrastKey_)
		return kCIInputContrastKey_;

	return kCIInputContrastKey_ = new NSString(bindings.kCIInputContrastKey);
}

NSString kCIInputGradientImageKey ()
{
	if (kCIInputGradientImageKey_)
		return kCIInputGradientImageKey_;

	return kCIInputGradientImageKey_ = new NSString(bindings.kCIInputGradientImageKey);
}

NSString kCIInputMaskImageKey ()
{
	if (kCIInputMaskImageKey_)
		return kCIInputMaskImageKey_;

	return kCIInputMaskImageKey_ = new NSString(bindings.kCIInputMaskImageKey);
}

NSString kCIInputShadingImageKey ()
{
	if (kCIInputShadingImageKey_)
		return kCIInputShadingImageKey_;

	return kCIInputShadingImageKey_ = new NSString(bindings.kCIInputShadingImageKey);
}

NSString kCIInputTargetImageKey ()
{
	if (kCIInputTargetImageKey_)
		return kCIInputTargetImageKey_;

	return kCIInputTargetImageKey_ = new NSString(bindings.kCIInputTargetImageKey);
}

NSString kCIInputExtentKey ()
{
	if (kCIInputExtentKey_)
		return kCIInputExtentKey_;

	return kCIInputExtentKey_ = new NSString(bindings.kCIInputExtentKey);
}

const TCIFilterRegistry = `

	static CIFilter filterWithName (NSString name)
	{
		return invokeObjcSelfClass!(CIFilter, "filterWithName:", NSString)(name);
	}

	static CIFilter filterWithName_keysAndValues (ARGS...) (NSString name, ARGS args)
	{
		return invokeObjcSelfClass!(CIFilter, "filterWithName:keysAndValues:", NSString, ARGS)(name, args);
	}

	static NSArray filterNamesInCategory (NSString category)
	{
		return invokeObjcSelfClass!(NSArray, "filterNamesInCategory:", NSString)(category);
	}

	static NSArray filterNamesInCategories (NSArray categories)
	{
		return invokeObjcSelfClass!(NSArray, "filterNamesInCategories:", NSArray)(categories);
	}

	static void registerFilterName (NSString name, Object anObject, NSDictionary attributes)
	{
		return invokeObjcSelfClass!(void, "registerFilterName:constructor:classAttributes:", NSString, Object, NSDictionary)(name, anObject, attributes);
	}

	static NSString localizedNameForFilterName (NSString filterName)
	{
		return invokeObjcSelfClass!(NSString, "localizedNameForFilterName:", NSString)(filterName);
	}

	static NSString localizedNameForCategory (NSString category)
	{
		return invokeObjcSelfClass!(NSString, "localizedNameForCategory:", NSString)(category);
	}

	static NSString localizedDescriptionForFilterName (NSString filterName)
	{
		return invokeObjcSelfClass!(NSString, "localizedDescriptionForFilterName:", NSString)(filterName);
	}

	static NSURL localizedReferenceDocumentationForFilterName (NSString filterName)
	{
		return invokeObjcSelfClass!(NSURL, "localizedReferenceDocumentationForFilterName:", NSString)(filterName);
	}

	//mixin ObjcBindClassMethod!(filterWithName, "filterWithName:");
	////mixin ObjcBindClassMethod!(filterWithName_keysAndValues, "filterWithName:keysAndValues:");
	//mixin ObjcBindClassMethod!(filterNamesInCategory, "filterNamesInCategory:");
	//mixin ObjcBindClassMethod!(filterNamesInCategories, "filterNamesInCategories:");
	//mixin ObjcBindClassMethod!(registerFilterName, "registerFilterName:constructor:classAttributes:");
	//mixin ObjcBindClassMethod!(localizedNameForFilterName, "localizedNameForFilterName:");
	//mixin ObjcBindClassMethod!(localizedNameForCategory, "localizedNameForCategory:");
	//mixin ObjcBindClassMethod!(localizedDescriptionForFilterName, "localizedDescriptionForFilterName:");
	//mixin ObjcBindClassMethod!(localizedReferenceDocumentationForFilterName, "localizedReferenceDocumentationForFilterName:");

`;


class CIFilter : NSObject, INSCoding, INSCopying
{
	mixin (ObjcWrap);
	
	this (NSCoder aDecoder)
	{
		super(typeof(this).alloc.initWithCoder(aDecoder).objcObject);
	}
	
	void encodeWithCoder (NSCoder aCoder)
	{
		return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
	}
	
	typeof(this) initWithCoder (NSCoder aDecoder)
	{
		return invokeObjcSelf!(typeof(this), "initWithCoder:", NSCoder)(aDecoder);
	}
	
	typeof(this) copyWithZone (NSZone* zone)
	{
		return invokeObjcSelf!(typeof(this), "copyWithZone:", NSZone*)(zone);
	}

	NSArray inputKeys ()
	{
		return invokeObjcSelf!(NSArray, "inputKeys");
	}

	NSArray outputKeys ()
	{
		return invokeObjcSelf!(NSArray, "outputKeys");
	}

	void setDefaults ()
	{
		return invokeObjcSelf!(void, "setDefaults");
	}

	NSDictionary attributes ()
	{
		return invokeObjcSelf!(NSDictionary, "attributes");
	}

	CIImage apply (CIKernel k, NSArray args, NSDictionary dict)
	{
		return invokeObjcSelf!(CIImage, "apply:arguments:options:", CIKernel, NSArray, NSDictionary)(k, args, dict);
	}

	/*CIImage apply (CIKernel apply, ...)
	{
		return invokeObjcSelf!(CIImage, "apply:", CIKernel)(apply);
	}*/
	
	// CIRAWFilter
	static CIFilter filterWithImageURL (NSURL url, NSDictionary options)
	{
		return invokeObjcSelfClass!(CIFilter, "filterWithImageURL:options:", NSURL, NSDictionary)(url, options);
	}

	static CIFilter filterWithImageData (NSData data, NSDictionary options)
	{
		return invokeObjcSelfClass!(CIFilter, "filterWithImageData:options:", NSData, NSDictionary)(data, options);
	}
	
	// CACIFilterAdditions
	NSString name ()
	{
		return invokeObjcSelf!(NSString, "name");
	}
	
	void name (NSString name)
	{
		return invokeObjcSelf!(void, "setName:", NSString)(name);
	}
	
	alias name setName;
	
	bool enabled ()
	{
		return invokeObjcSelf!(bool, "enabled");
	}
	
	void enabled (bool enabled)
	{
		return invokeObjcSelf!(void, "setEnabled:", bool)(enabled);
	}
	
	alias enabled setEnabled;
	
	// CIFilterRegistry
	static CIFilter filterWithName (NSString name)
	{
		return invokeObjcSelfClass!(CIFilter, "filterWithName:", NSString)(name);
	}

	static CIFilter filterWithName_keysAndValues (ARGS...) (NSString name, ARGS args)
	{
		return invokeObjcSelfClass!(CIFilter, "filterWithName:keysAndValues:", NSString, ARGS)(name, args);
	}

	static NSArray filterNamesInCategory (NSString category)
	{
		return invokeObjcSelfClass!(NSArray, "filterNamesInCategory:", NSString)(category);
	}

	static NSArray filterNamesInCategories (NSArray categories)
	{
		return invokeObjcSelfClass!(NSArray, "filterNamesInCategories:", NSArray)(categories);
	}

	static void registerFilterName (NSString name, Object anObject, NSDictionary attributes)
	{
		return invokeObjcSelfClass!(void, "registerFilterName:constructor:classAttributes:", NSString, Object, NSDictionary)(name, anObject, attributes);
	}

	static NSString localizedNameForFilterName (NSString filterName)
	{
		return invokeObjcSelfClass!(NSString, "localizedNameForFilterName:", NSString)(filterName);
	}

	static NSString localizedNameForCategory (NSString category)
	{
		return invokeObjcSelfClass!(NSString, "localizedNameForCategory:", NSString)(category);
	}

	static NSString localizedDescriptionForFilterName (NSString filterName)
	{
		return invokeObjcSelfClass!(NSString, "localizedDescriptionForFilterName:", NSString)(filterName);
	}

	static NSURL localizedReferenceDocumentationForFilterName (NSString filterName)
	{
		return invokeObjcSelfClass!(NSURL, "localizedReferenceDocumentationForFilterName:", NSString)(filterName);
	}
}