[CoreImage] Update filters for Xcode 9 (#2974)
- Fixes bug #57350: Review new CoreImage filters added in Xcode 9 (https://bugzilla.xamarin.com/show_bug.cgi?id=57350). - Adds `AVCameraCalibrationData` and `CIBarcodeDescriptor` to `generator-filters`. - Fixes `ApiCoreImageFiltersTest`'s `GenerateBinding` to use valid `[CoreImageFilterProperty]`. - In `CheckManagedFilters` generate code of SuperClass when detected so it's easier to bind.
This commit is contained in:
Родитель
f4fc3d0be0
Коммит
30a057ddc0
|
@ -31,7 +31,7 @@
|
||||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
//
|
//
|
||||||
// Adding new Filters:
|
// Adding new Filters:
|
||||||
// * Create new class with the two constructors
|
// * Create a new class/interface in coreimage.cs
|
||||||
// * Add it to CIFilter.FromName switch
|
// * Add it to CIFilter.FromName switch
|
||||||
// * Implement properties for each parameter
|
// * Implement properties for each parameter
|
||||||
// * Use the documented string in "Parameter" in each section as the key for the get/set methods
|
// * Use the documented string in "Parameter" in each section as the key for the get/set methods
|
||||||
|
@ -86,6 +86,26 @@
|
||||||
// CIPDF417BarcodeGenerator
|
// CIPDF417BarcodeGenerator
|
||||||
// * most of OSX specicic filters are now available on iOS9
|
// * most of OSX specicic filters are now available on iOS9
|
||||||
//
|
//
|
||||||
|
// New filters on Xcode 9
|
||||||
|
// CIAreaMinMaxRed
|
||||||
|
// CIAttributedTextImageGenerator
|
||||||
|
// CIBarcodeGenerator
|
||||||
|
// CIBicubicScaleTransform
|
||||||
|
// CIBokehBlur
|
||||||
|
// CIColorCubesMixedWithMask
|
||||||
|
// CIColorCurves
|
||||||
|
// CIDepthBlurEffect
|
||||||
|
// CIDepthToDisparity
|
||||||
|
// CIDisparityToDepth
|
||||||
|
// CIEdgePreserveUpsampleFilter
|
||||||
|
// CILabDeltaE
|
||||||
|
// CITextImageGenerator
|
||||||
|
// CIMorphologyGradient
|
||||||
|
// CIMorphologyMaximum
|
||||||
|
// CIMorphologyMinimum
|
||||||
|
// CIBlendWithBlueMask
|
||||||
|
// CIBlendWithRedMask
|
||||||
|
//
|
||||||
using System;
|
using System;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using XamCore.Foundation;
|
using XamCore.Foundation;
|
||||||
|
@ -612,6 +632,42 @@ namespace XamCore.CoreImage {
|
||||||
case "CIPDF417BarcodeGenerator":
|
case "CIPDF417BarcodeGenerator":
|
||||||
case "CIPdf417BarcodeGenerator":
|
case "CIPdf417BarcodeGenerator":
|
||||||
return new CIPdf417BarcodeGenerator (handle);
|
return new CIPdf417BarcodeGenerator (handle);
|
||||||
|
case "CIAreaMinMaxRed":
|
||||||
|
return new CIAreaMinMaxRed (handle);
|
||||||
|
case "CIAttributedTextImageGenerator":
|
||||||
|
return new CIAttributedTextImageGenerator (handle);
|
||||||
|
case "CIBarcodeGenerator":
|
||||||
|
return new CIBarcodeGenerator (handle);
|
||||||
|
case "CIBicubicScaleTransform":
|
||||||
|
return new CIBicubicScaleTransform (handle);
|
||||||
|
case "CIBokehBlur":
|
||||||
|
return new CIBokehBlur (handle);
|
||||||
|
case "CIColorCubesMixedWithMask":
|
||||||
|
return new CIColorCubesMixedWithMask (handle);
|
||||||
|
case "CIColorCurves":
|
||||||
|
return new CIColorCurves (handle);
|
||||||
|
case "CIDepthBlurEffect":
|
||||||
|
return new CIDepthBlurEffect (handle);
|
||||||
|
case "CIDepthToDisparity":
|
||||||
|
return new CIDepthToDisparity (handle);
|
||||||
|
case "CIDisparityToDepth":
|
||||||
|
return new CIDisparityToDepth (handle);
|
||||||
|
case "CIEdgePreserveUpsampleFilter":
|
||||||
|
return new CIEdgePreserveUpsampleFilter (handle);
|
||||||
|
case "CILabDeltaE":
|
||||||
|
return new CILabDeltaE (handle);
|
||||||
|
case "CITextImageGenerator":
|
||||||
|
return new CITextImageGenerator (handle);
|
||||||
|
case "CIMorphologyGradient":
|
||||||
|
return new CIMorphologyGradient (handle);
|
||||||
|
case "CIMorphologyMaximum":
|
||||||
|
return new CIMorphologyMaximum (handle);
|
||||||
|
case "CIMorphologyMinimum":
|
||||||
|
return new CIMorphologyMinimum (handle);
|
||||||
|
case "CIBlendWithBlueMask":
|
||||||
|
return new CIBlendWithBlueMask (handle);
|
||||||
|
case "CIBlendWithRedMask":
|
||||||
|
return new CIBlendWithRedMask (handle);
|
||||||
default:
|
default:
|
||||||
throw new NotImplementedException (String.Format ("Unknown filter type returned: `{0}', returning a default CIFilter", filterName));
|
throw new NotImplementedException (String.Format ("Unknown filter type returned: `{0}', returning a default CIFilter", filterName));
|
||||||
}
|
}
|
||||||
|
|
310
src/coreimage.cs
310
src/coreimage.cs
|
@ -2615,7 +2615,7 @@ namespace XamCore.CoreImage {
|
||||||
CIVector Extent { get; set; }
|
CIVector Extent { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter (StringCtorVisibility = MethodAttributes.Public)]
|
||||||
[iOS (9,0)]
|
[iOS (9,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIFilter))]
|
||||||
interface CIAreaMaximum {
|
interface CIAreaMaximum {
|
||||||
|
@ -3723,12 +3723,9 @@ namespace XamCore.CoreImage {
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (8,3)]
|
[iOS (8,3)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CILinearBlur))]
|
||||||
interface CIMotionBlur {
|
interface CIMotionBlur {
|
||||||
|
|
||||||
[CoreImageFilterProperty ("inputRadius")]
|
|
||||||
float Radius { get; set; }
|
|
||||||
|
|
||||||
[CoreImageFilterProperty ("inputAngle")]
|
[CoreImageFilterProperty ("inputAngle")]
|
||||||
float Angle { get; set; }
|
float Angle { get; set; }
|
||||||
}
|
}
|
||||||
|
@ -4696,31 +4693,35 @@ namespace XamCore.CoreImage {
|
||||||
interface CIXRay {
|
interface CIXRay {
|
||||||
}
|
}
|
||||||
|
|
||||||
#if false // Needs review: https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIAreaMaximum))]
|
||||||
interface CIAreaMinMaxRed {
|
interface CIAreaMinMaxRed {
|
||||||
// TODO: Needs review
|
[CoreImageFilterProperty ("inputExtent")]
|
||||||
//[CoreImageProperty ("inputExtent")]
|
CIVector Extent { get; set; }
|
||||||
//CIVector Extent { get; set; }
|
}
|
||||||
|
|
||||||
|
[CoreImageFilter]
|
||||||
|
[Abstract]
|
||||||
|
[iOS (11,0)]
|
||||||
|
[Mac (10,13)]
|
||||||
|
[TV (11,0)]
|
||||||
|
[BaseType (typeof (CIFilter))]
|
||||||
|
interface CIImageGenerator {
|
||||||
|
[CoreImageFilterProperty ("inputScaleFactor")]
|
||||||
|
float ScaleFactor { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIImageGenerator))]
|
||||||
interface CIAttributedTextImageGenerator {
|
interface CIAttributedTextImageGenerator {
|
||||||
// TODO: Needs review
|
[CoreImageFilterProperty ("inputText")]
|
||||||
//[CoreImageProperty ("inputText")]
|
NSAttributedString Text { get; set; }
|
||||||
//NSAttributedString Text { get; set; }
|
|
||||||
|
|
||||||
//[CoreImageProperty ("inputScaleFactor")]
|
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
|
||||||
//float ScaleFactor { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
|
@ -4729,70 +4730,75 @@ namespace XamCore.CoreImage {
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIFilter))]
|
||||||
interface CIBarcodeGenerator {
|
interface CIBarcodeGenerator {
|
||||||
// TODO: Needs review
|
[CoreImageFilterProperty ("inputBarcodeDescriptor")]
|
||||||
//[CoreImageProperty ("inputBarcodeDescriptor")]
|
CIBarcodeDescriptor BarcodeDescriptor { get; set; }
|
||||||
//CIBarcodeDescriptor BarcodeDescriptor { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
|
// Maybe 'typeof (CIScaleTransform)' (shared 'Scale' and 'AspectRatio' property).
|
||||||
|
// It's possible to add ours but it can bite us back in the future if Apple introduce the same with different properties.
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIFilter))]
|
||||||
interface CIBicubicScaleTransform {
|
interface CIBicubicScaleTransform {
|
||||||
// TODO: Needs review
|
[CoreImageFilterProperty ("inputB")]
|
||||||
//[CoreImageProperty ("inputB")]
|
float B { get; set; }
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
|
||||||
//float B { get; set; }
|
[CoreImageFilterProperty ("inputC")]
|
||||||
//[CoreImageProperty ("inputScale")]
|
float C { get; set; }
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
|
||||||
//float Scale { get; set; }
|
[CoreImageFilterProperty ("inputScale")]
|
||||||
//[CoreImageProperty ("inputC")]
|
float Scale { get; set; }
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
|
||||||
//float C { get; set; }
|
[CoreImageFilterProperty ("inputAspectRatio")]
|
||||||
//[CoreImageProperty ("inputAspectRatio")]
|
float AspectRatio { get; set; }
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
}
|
||||||
//float AspectRatio { get; set; }
|
|
||||||
|
[CoreImageFilter]
|
||||||
|
[Abstract]
|
||||||
|
[BaseType (typeof (CIFilter))]
|
||||||
|
interface CILinearBlur {
|
||||||
|
[CoreImageFilterProperty ("inputRadius")]
|
||||||
|
float Radius { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CILinearBlur))]
|
||||||
interface CIBokehBlur {
|
interface CIBokehBlur {
|
||||||
// TODO: Needs review
|
[CoreImageFilterProperty ("inputSoftness")]
|
||||||
//[CoreImageProperty ("inputSoftness")]
|
float Softness { get; set; }
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
|
||||||
//float Softness { get; set; }
|
[CoreImageFilterProperty ("inputRingSize")]
|
||||||
//[CoreImageProperty ("inputRadius")]
|
float RingSize { get; set; }
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
|
||||||
//float Radius { get; set; }
|
[CoreImageFilterProperty ("inputRingAmount")]
|
||||||
//[CoreImageProperty ("inputRingSize")]
|
float RingAmount { get; set; }
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
|
||||||
//float RingSize { get; set; }
|
|
||||||
//[CoreImageProperty ("inputRingAmount")]
|
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
|
||||||
//float RingAmount { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIFilter))] // Could almost be typeof 'CIColorCube' but property is 'inputCube0Data' not 'inputCubeData'
|
||||||
interface CIColorCubesMixedWithMask {
|
interface CIColorCubesMixedWithMask {
|
||||||
// TODO: Needs review
|
[CoreImageFilterProperty ("inputCubeDimension")]
|
||||||
//[CoreImageProperty ("inputCubeDimension")]
|
float CubeDimension { get; set; }
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
|
||||||
//float CubeDimension { get; set; }
|
[CoreImageFilterProperty ("inputMaskImage")]
|
||||||
//[CoreImageProperty ("inputMaskImage")]
|
CIImage MaskImage { get; set; }
|
||||||
//CIImage MaskImage { get; set; }
|
|
||||||
//[CoreImageProperty ("inputCube0Data")]
|
[CoreImageFilterProperty ("inputCube0Data")]
|
||||||
//NSData Cube0Data { get; set; }
|
NSData Cube0Data { get; set; }
|
||||||
//[CoreImageProperty ("inputCube1Data")]
|
|
||||||
//NSData Cube1Data { get; set; }
|
[CoreImageFilterProperty ("inputCube1Data")]
|
||||||
//[CoreImageProperty ("inputColorSpace")]
|
NSData Cube1Data { get; set; }
|
||||||
//NSObject ColorSpace { get; set; }
|
|
||||||
|
[CoreImageFilterProperty ("inputColorSpace")]
|
||||||
|
CGColorSpace ColorSpace { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
|
@ -4801,13 +4807,14 @@ namespace XamCore.CoreImage {
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIFilter))]
|
||||||
interface CIColorCurves {
|
interface CIColorCurves {
|
||||||
// TODO: Needs review
|
[CoreImageFilterProperty ("inputColorSpace")]
|
||||||
//[CoreImageProperty ("inputColorSpace")]
|
CGColorSpace ColorSpace { get; set; }
|
||||||
//NSObject ColorSpace { get; set; }
|
|
||||||
//[CoreImageProperty ("inputCurvesDomain")]
|
[CoreImageFilterProperty ("inputCurvesDomain")]
|
||||||
//CIVector CurvesDomain { get; set; }
|
CIVector CurvesDomain { get; set; }
|
||||||
//[CoreImageProperty ("inputCurvesData")]
|
|
||||||
//NSData CurvesData { get; set; }
|
[CoreImageFilterProperty ("inputCurvesData")]
|
||||||
|
NSData CurvesData { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
|
@ -4816,67 +4823,78 @@ namespace XamCore.CoreImage {
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIFilter))]
|
||||||
interface CIDepthBlurEffect {
|
interface CIDepthBlurEffect {
|
||||||
// TODO: Needs review
|
[CoreImageFilterProperty ("inputAperture")]
|
||||||
//[CoreImageProperty ("inputAperture")]
|
float Aperture { get; set; }
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
|
||||||
//float Aperture { get; set; }
|
[CoreImageFilterProperty ("inputCalibrationData")]
|
||||||
//[CoreImageProperty ("inputCalibrationData")]
|
AVCameraCalibrationData CalibrationData { get; set; }
|
||||||
//AVCameraCalibrationData CalibrationData { get; set; }
|
|
||||||
//[CoreImageProperty ("inputTuningParameters")]
|
// Radar: https://trello.com/c/9eA2BA2o
|
||||||
//NSDictionary TuningParameters { get; set; }
|
// Don't know how to test this as I don't know which keys are valid.
|
||||||
//[CoreImageProperty ("inputNosePositions")]
|
// [CoreImageFilterProperty ("inputTuningParameters")]
|
||||||
//CIVector NosePositions { get; set; }
|
// NSDictionary WeakTuningParameters { get; set; }
|
||||||
//[CoreImageProperty ("inputLumaNoiseScale")]
|
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
[CoreImageFilterProperty ("inputNosePositions")]
|
||||||
//float LumaNoiseScale { get; set; }
|
CIVector NosePositions { get; set; }
|
||||||
//[CoreImageProperty ("inputChinPositions")]
|
|
||||||
//CIVector ChinPositions { get; set; }
|
[CoreImageFilterProperty ("inputLumaNoiseScale")]
|
||||||
//[CoreImageProperty ("inputDisparityImage")]
|
float LumaNoiseScale { get; set; }
|
||||||
//CIImage DisparityImage { get; set; }
|
|
||||||
//[CoreImageProperty ("inputScaleFactor")]
|
[CoreImageFilterProperty ("inputChinPositions")]
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
CIVector ChinPositions { get; set; }
|
||||||
//float ScaleFactor { get; set; }
|
|
||||||
//[CoreImageProperty ("inputRightEyePositions")]
|
[CoreImageFilterProperty ("inputDisparityImage")]
|
||||||
//CIVector RightEyePositions { get; set; }
|
CIImage DisparityImage { get; set; }
|
||||||
//[CoreImageProperty ("inputLeftEyePositions")]
|
|
||||||
//CIVector LeftEyePositions { get; set; }
|
[CoreImageFilterProperty ("inputScaleFactor")]
|
||||||
//[CoreImageProperty ("inputFocusRect")]
|
float ScaleFactor { get; set; }
|
||||||
//CIVector FocusRect { get; set; }
|
|
||||||
|
[CoreImageFilterProperty ("inputRightEyePositions")]
|
||||||
|
CIVector RightEyePositions { get; set; }
|
||||||
|
|
||||||
|
[CoreImageFilterProperty ("inputLeftEyePositions")]
|
||||||
|
CIVector LeftEyePositions { get; set; }
|
||||||
|
|
||||||
|
[CoreImageFilterProperty ("inputFocusRect")]
|
||||||
|
CIVector FocusRect { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[CoreImageFilter]
|
||||||
|
[Abstract]
|
||||||
|
[iOS (11,0)]
|
||||||
|
[Mac (10,13)]
|
||||||
|
[TV (11,0)]
|
||||||
|
[BaseType (typeof (CIFilter))]
|
||||||
|
interface CIDepthDisparityConverter {}
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIDepthDisparityConverter))]
|
||||||
interface CIDepthToDisparity {
|
interface CIDepthToDisparity {}
|
||||||
// TODO: Needs review
|
|
||||||
}
|
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIDepthDisparityConverter))]
|
||||||
interface CIDisparityToDepth {
|
interface CIDisparityToDepth {}
|
||||||
// TODO: Needs review
|
|
||||||
}
|
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[NoMac]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIFilter))]
|
||||||
interface CIEdgePreserveUpsampleFilter {
|
interface CIEdgePreserveUpsampleFilter {
|
||||||
// TODO: Needs review
|
[CoreImageFilterProperty ("inputLumaSigma")]
|
||||||
//[CoreImageProperty ("inputLumaSigma")]
|
float LumaSigma { get; set; }
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
|
||||||
//float LumaSigma { get; set; }
|
[CoreImageFilterProperty ("inputSmallImage")]
|
||||||
//[CoreImageProperty ("inputSmallImage")]
|
CIImage SmallImage { get; set; }
|
||||||
//CIImage SmallImage { get; set; }
|
|
||||||
//[CoreImageProperty ("inputSpatialSigma")]
|
[CoreImageFilterProperty ("inputSpatialSigma")]
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
float SpatialSigma { get; set; }
|
||||||
//float SpatialSigma { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
|
@ -4885,75 +4903,71 @@ namespace XamCore.CoreImage {
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIFilter))]
|
||||||
interface CILabDeltaE {
|
interface CILabDeltaE {
|
||||||
// TODO: Needs review
|
[CoreImageFilterProperty ("inputImage2")]
|
||||||
//[CoreImageProperty ("inputImage2")]
|
CIImage Image2 { get; set; }
|
||||||
//CIImage Image2 { get; set; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIImageGenerator))]
|
||||||
interface CITextImageGenerator {
|
interface CITextImageGenerator {
|
||||||
// TODO: Needs review
|
[CoreImageFilterProperty ("inputText")]
|
||||||
//[CoreImageProperty ("inputText")]
|
string Text { get; set; }
|
||||||
//NSString Text { get; set; }
|
|
||||||
//[CoreImageProperty ("inputFontName")]
|
[CoreImageFilterProperty ("inputFontName")]
|
||||||
//NSString FontName { get; set; }
|
string FontName { get; set; }
|
||||||
//[CoreImageProperty ("inputScaleFactor")]
|
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
[CoreImageFilterProperty ("inputFontSize")]
|
||||||
//float ScaleFactor { get; set; }
|
float FontSize { get; set; }
|
||||||
//[CoreImageProperty ("inputFontSize")]
|
}
|
||||||
//// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate
|
|
||||||
//float FontSize { get; set; }
|
[CoreImageFilter]
|
||||||
|
[Abstract]
|
||||||
|
[iOS (11,0)]
|
||||||
|
[Mac (10,13)]
|
||||||
|
[TV (11,0)]
|
||||||
|
[BaseType (typeof (CIFilter))]
|
||||||
|
interface CIMorphology {
|
||||||
|
[CoreImageFilterProperty ("inputRadius")]
|
||||||
|
float Radius { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIMorphology))]
|
||||||
interface CIMorphologyGradient {
|
interface CIMorphologyGradient {}
|
||||||
// TODO: Needs review: https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
}
|
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIMorphology))]
|
||||||
interface CIMorphologyMaximum {
|
interface CIMorphologyMaximum {}
|
||||||
// TODO: Needs review: https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
}
|
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIMorphology))]
|
||||||
interface CIMorphologyMinimum {
|
interface CIMorphologyMinimum {}
|
||||||
// TODO: Needs review: https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
}
|
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIBlendWithMask))]
|
||||||
interface CIBlendWithBlueMask {
|
interface CIBlendWithBlueMask {}
|
||||||
// TODO: Needs review: https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
}
|
|
||||||
|
|
||||||
[CoreImageFilter]
|
[CoreImageFilter]
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
[TV (11,0)]
|
[TV (11,0)]
|
||||||
[BaseType (typeof (CIFilter))]
|
[BaseType (typeof (CIBlendWithMask))]
|
||||||
interface CIBlendWithRedMask {
|
interface CIBlendWithRedMask {}
|
||||||
// TODO: Needs review: https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
}
|
|
||||||
#endif // false
|
|
||||||
|
|
||||||
[iOS (11,0)]
|
[iOS (11,0)]
|
||||||
[Mac (10,13)]
|
[Mac (10,13)]
|
||||||
|
|
|
@ -172,8 +172,10 @@ public partial class Generator {
|
||||||
indent--;
|
indent--;
|
||||||
print ("return new CGAffineTransform (1, 0, 0, 1, 0, 0);");
|
print ("return new CGAffineTransform (1, 0, 0, 1, 0, 0);");
|
||||||
break;
|
break;
|
||||||
// NSObject should not be added - the only case it's found (right now) is for CGColorSpace
|
// NSObject should not be added
|
||||||
|
case "AVCameraCalibrationData":
|
||||||
case "CGColorSpace":
|
case "CGColorSpace":
|
||||||
|
case "CIBarcodeDescriptor":
|
||||||
print ("return Runtime.GetINativeObject <{0}> (GetHandle (\"{1}\"), true);", propertyType, propertyName);
|
print ("return Runtime.GetINativeObject <{0}> (GetHandle (\"{1}\"), true);", propertyType, propertyName);
|
||||||
break;
|
break;
|
||||||
case "CIColor":
|
case "CIColor":
|
||||||
|
@ -191,11 +193,13 @@ public partial class Generator {
|
||||||
case "int":
|
case "int":
|
||||||
print ("return GetInt (\"{0}\");", propertyName);
|
print ("return GetInt (\"{0}\");", propertyName);
|
||||||
break;
|
break;
|
||||||
|
case "NSAttributedString":
|
||||||
case "NSData":
|
case "NSData":
|
||||||
// NSNumber should not be added - it should be bound as a float (common), int32 or bool
|
// NSNumber should not be added - it should be bound as a float (common), int32 or bool
|
||||||
print ("return ValueForKey (\"{0}\") as {1};", propertyName, propertyType);
|
print ("return ValueForKey (\"{0}\") as {1};", propertyName, propertyType);
|
||||||
break;
|
break;
|
||||||
case "string":
|
case "string":
|
||||||
|
// NSString should not be added - it should be bound as a string
|
||||||
print ("return (string) (ValueForKey (\"{0}\") as NSString);", propertyName);
|
print ("return (string) (ValueForKey (\"{0}\") as NSString);", propertyName);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -224,18 +228,22 @@ public partial class Generator {
|
||||||
case "int":
|
case "int":
|
||||||
print ("SetInt (\"{0}\", value);", propertyName);
|
print ("SetInt (\"{0}\", value);", propertyName);
|
||||||
break;
|
break;
|
||||||
// NSObject should not be added - the only case it's found (right now) is for CGColorSpace
|
// NSObject should not be added
|
||||||
|
case "AVCameraCalibrationData":
|
||||||
case "CGColorSpace":
|
case "CGColorSpace":
|
||||||
|
case "CIBarcodeDescriptor":
|
||||||
print ("SetHandle (\"{0}\", value == null ? IntPtr.Zero : value.Handle);", propertyName);
|
print ("SetHandle (\"{0}\", value == null ? IntPtr.Zero : value.Handle);", propertyName);
|
||||||
break;
|
break;
|
||||||
case "CIColor":
|
case "CIColor":
|
||||||
case "CIImage":
|
case "CIImage":
|
||||||
case "CIVector":
|
case "CIVector":
|
||||||
|
case "NSAttributedString":
|
||||||
case "NSData":
|
case "NSData":
|
||||||
// NSNumber should not be added - it should be bound as a int or a float
|
// NSNumber should not be added - it should be bound as a int or a float
|
||||||
print ("SetValue (\"{0}\", value);", propertyName);
|
print ("SetValue (\"{0}\", value);", propertyName);
|
||||||
break;
|
break;
|
||||||
case "string":
|
case "string":
|
||||||
|
// NSString should not be added - it should be bound as a string
|
||||||
print ("using (var ns = new NSString (value))");
|
print ("using (var ns = new NSString (value))");
|
||||||
indent++;
|
indent++;
|
||||||
print ("SetValue (\"{0}\", ns);", propertyName);
|
print ("SetValue (\"{0}\", ns);", propertyName);
|
||||||
|
|
|
@ -65,26 +65,6 @@ namespace Introspection {
|
||||||
// Both reported in radar #21548819
|
// Both reported in radar #21548819
|
||||||
// NSUnknownKeyException [<CIDepthOfField 0x158586970> valueForUndefinedKey:]: this class is not key value coding-compliant for the key inputPoint2.
|
// NSUnknownKeyException [<CIDepthOfField 0x158586970> valueForUndefinedKey:]: this class is not key value coding-compliant for the key inputPoint2.
|
||||||
case "CIDepthOfField":
|
case "CIDepthOfField":
|
||||||
// NSUnknownKeyException [<CISunbeamsGenerator 0x1586d0810> valueForUndefinedKey:]: this class is not key value coding-compliant for the key inputCropAmount.
|
|
||||||
case "CISunbeamsGenerator":
|
|
||||||
case "CIAreaMinMaxRed": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIAttributedTextImageGenerator": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIBarcodeGenerator": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIBicubicScaleTransform": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIBlendWithBlueMask": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIBlendWithRedMask": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIBokehBlur": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIColorCubesMixedWithMask": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIColorCurves": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIDepthBlurEffect": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIDepthToDisparity": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIDisparityToDepth": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIEdgePreserveUpsampleFilter": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CILabDeltaE": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIMorphologyGradient": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIMorphologyMaximum": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CIMorphologyMinimum": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
case "CITextImageGenerator": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350
|
|
||||||
return true;
|
return true;
|
||||||
// FIXME: Remove if fixed. Doesn't appear to exist in El Capitan. Reported in radar #22099780
|
// FIXME: Remove if fixed. Doesn't appear to exist in El Capitan. Reported in radar #22099780
|
||||||
// case "CIMaskedVariableBlur":
|
// case "CIMaskedVariableBlur":
|
||||||
|
@ -121,6 +101,7 @@ namespace Introspection {
|
||||||
public void CheckManagedFilters ()
|
public void CheckManagedFilters ()
|
||||||
{
|
{
|
||||||
List<string> filters = new List<string> (CIFilter.FilterNamesInCategories (null));
|
List<string> filters = new List<string> (CIFilter.FilterNamesInCategories (null));
|
||||||
|
var superFilters = new List<string> ();
|
||||||
var nspace = CIFilterType.Namespace;
|
var nspace = CIFilterType.Namespace;
|
||||||
var types = CIFilterType.Assembly.GetTypes ();
|
var types = CIFilterType.Assembly.GetTypes ();
|
||||||
foreach (Type t in types) {
|
foreach (Type t in types) {
|
||||||
|
@ -144,8 +125,14 @@ namespace Introspection {
|
||||||
// check base type - we might have our own base type or different names, so it's debug only (not failure)
|
// check base type - we might have our own base type or different names, so it's debug only (not failure)
|
||||||
var super = new Class (obj.Class.SuperClass).Name;
|
var super = new Class (obj.Class.SuperClass).Name;
|
||||||
var bt = t.BaseType.Name;
|
var bt = t.BaseType.Name;
|
||||||
if ((super != bt) && (bt == "CIFilter")) // check if we should (like Apple) use a non-default base type for filters
|
if ((super != bt) && (bt == "CIFilter")) { // check if we should (like Apple) use a non-default base type for filters
|
||||||
Console.WriteLine ("[WARN] {0}.SuperClass == {1} (native) and {2} managed", t.Name, super, bt);
|
Console.WriteLine ("[WARN] {0}.SuperClass == {1} (native) and {2} managed", t.Name, super, bt);
|
||||||
|
if (!superFilters.Contains (super)) {
|
||||||
|
superFilters.Add (super);
|
||||||
|
Console.WriteLine ("[GENERATED] {0}", super);
|
||||||
|
GenerateBinding (CIFilter.FromName (super), Console.Out);
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
int result = filters.RemoveAll (s => StringComparer.OrdinalIgnoreCase.Compare (t.Name, s) == 0);
|
int result = filters.RemoveAll (s => StringComparer.OrdinalIgnoreCase.Compare (t.Name, s) == 0);
|
||||||
Assert.That (result, Is.GreaterThan (0), t.Name);
|
Assert.That (result, Is.GreaterThan (0), t.Name);
|
||||||
|
@ -206,7 +193,7 @@ namespace Introspection {
|
||||||
writer.WriteLine ();
|
writer.WriteLine ();
|
||||||
var dict = attributes [k] as NSDictionary;
|
var dict = attributes [k] as NSDictionary;
|
||||||
var type = dict [(NSString) "CIAttributeClass"];
|
var type = dict [(NSString) "CIAttributeClass"];
|
||||||
writer.WriteLine ("\t[CoreImageProperty (\"{0}\")]", key);
|
writer.WriteLine ("\t[CoreImageFilterProperty (\"{0}\")]", key);
|
||||||
|
|
||||||
// by default we drop the "input" prefix, but keep the "output" prefix to avoid confusion
|
// by default we drop the "input" prefix, but keep the "output" prefix to avoid confusion
|
||||||
if (key.StartsWith ("input", StringComparison.Ordinal))
|
if (key.StartsWith ("input", StringComparison.Ordinal))
|
||||||
|
|
|
@ -14,14 +14,18 @@ using System.IO;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
#if XAMCORE_2_0
|
#if XAMCORE_2_0
|
||||||
|
using AVFoundation;
|
||||||
using CoreGraphics;
|
using CoreGraphics;
|
||||||
using CoreImage;
|
using CoreImage;
|
||||||
|
using CoreText;
|
||||||
using Foundation;
|
using Foundation;
|
||||||
using ObjCRuntime;
|
using ObjCRuntime;
|
||||||
#else
|
#else
|
||||||
using MonoTouch;
|
using MonoTouch;
|
||||||
|
using MonoTouch.AVFoundation;
|
||||||
using MonoTouch.CoreGraphics;
|
using MonoTouch.CoreGraphics;
|
||||||
using MonoTouch.CoreImage;
|
using MonoTouch.CoreImage;
|
||||||
|
using MonoTouch.CoreText;
|
||||||
using MonoTouch.Foundation;
|
using MonoTouch.Foundation;
|
||||||
using MonoTouch.ObjCRuntime;
|
using MonoTouch.ObjCRuntime;
|
||||||
#endif
|
#endif
|
||||||
|
@ -109,6 +113,43 @@ namespace MonoTouchFixtures.CoreImage {
|
||||||
Assert.Null (f.ColorSpace, "ColorSpace/reset-null");
|
Assert.Null (f.ColorSpace, "ColorSpace/reset-null");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void CIBarcodeDescriptorTest ()
|
||||||
|
{
|
||||||
|
TestRuntime.AssertXcodeVersion (9, 0);
|
||||||
|
|
||||||
|
using (var f = new CIBarcodeGenerator ()) {
|
||||||
|
Assert.Null (f.BarcodeDescriptor, "CIBarcodeDescriptor/default");
|
||||||
|
using (var b = new CIQRCodeDescriptor (new NSData (), 1, 0, CIQRCodeErrorCorrectionLevel.Q)) {
|
||||||
|
f.BarcodeDescriptor = b;
|
||||||
|
var rc = CFGetRetainCount (b.Handle);
|
||||||
|
for (int i = 0; i < 5; i++)
|
||||||
|
Assert.NotNull (f.BarcodeDescriptor, i.ToString ());
|
||||||
|
Assert.That (CFGetRetainCount (b.Handle), Is.EqualTo (rc), "RetainCount");
|
||||||
|
f.BarcodeDescriptor = null;
|
||||||
|
}
|
||||||
|
Assert.Null (f.BarcodeDescriptor, "CIBarcodeDescriptor/reset-null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void CIAttributedTextImageGenerator ()
|
||||||
|
{
|
||||||
|
TestRuntime.AssertXcodeVersion (9, 0);
|
||||||
|
|
||||||
|
using (var f = new CIAttributedTextImageGenerator ()) {
|
||||||
|
Assert.Null (f.Text, "NSAttributedString/default");
|
||||||
|
var attr = new CTStringAttributes () {
|
||||||
|
ForegroundColorFromContext = true,
|
||||||
|
Font = new CTFont ("Arial", 24)
|
||||||
|
};
|
||||||
|
using (var s = new NSAttributedString ("testString", attr)) {
|
||||||
|
f.Text = s;
|
||||||
|
Assert.NotNull (f.Text, "NSAttributedString/not-null");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче