[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:
Vincent Dondain 2017-11-16 16:38:14 -05:00 коммит произвёл GitHub
Родитель f4fc3d0be0
Коммит 30a057ddc0
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
5 изменённых файлов: 279 добавлений и 173 удалений

Просмотреть файл

@ -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));
} }

Просмотреть файл

@ -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");
}
}
}
} }
} }