public NSData GetPublicKey() { if (handle == IntPtr.Zero) { throw new ObjectDisposedException("SecCertificate"); } IntPtr result; using (var oids = NSArray.FromIntPtrs(new IntPtr[] { SecCertificateOIDs.SubjectPublicKey })) { result = SecCertificateCopyValues(handle, oids.Handle, IntPtr.Zero); if (result == IntPtr.Zero) { throw new ArgumentException("Not a valid certificate"); } } using (var dict = new NSDictionary(result, true)) { var ptr = dict.LowlevelObjectForKey(SecCertificateOIDs.SubjectPublicKey); if (ptr == IntPtr.Zero) { return(null); } var publicKeyDict = new NSDictionary(ptr, false); var dataPtr = publicKeyDict.LowlevelObjectForKey(SecPropertyKey.Value); if (dataPtr == IntPtr.Zero) { return(null); } return(new NSData(dataPtr)); } }
internal unsafe static void WithArray(Guid [] uuids, string argName, Action <NSArray> action) { if (uuids == null) { throw new ArgumentNullException(argName); } var ptrs = new IntPtr [uuids.Length]; for (int i = 0; i < uuids.Length; i++) { var ba = uuids [i].ToByteArray(); ptrs [i] = CFUUID.CFUUIDCreateWithBytes(IntPtr.Zero, ba [0], ba [1], ba [2], ba [3], ba [4], ba [5], ba [6], ba [7], ba [8], ba [9], ba [10], ba [11], ba [12], ba [13], ba [14], ba [15]); } using (var arr = NSArray.FromIntPtrs(ptrs)) action(arr); foreach (var h in ptrs) { if (h == IntPtr.Zero) { continue; } CFObject.CFRelease(h); } }
// +(instancetype _Nonnull)appearanceWhenContainedInInstancesOfClasses:(NSArray<Class<UIAppearanceContainer>> * _Nonnull)containerTypes public static IntPtr GetAppearance(IntPtr class_ptr, params Type [] whenFoundIn) { using (var array = NSArray.FromIntPtrs(TypesToPointers(whenFoundIn))) { return(Messaging.IntPtr_objc_msgSend_IntPtr(class_ptr, Selector.GetHandle(UIAppearance.selAppearanceWhenContainedInInstancesOfClasses), array.Handle)); } }
public void PasteImage(NSObject sender) { // Initialize the pasteboard NSPasteboard pasteboard = NSPasteboard.GeneralPasteboard; NSArray classArray = NSArray.FromObjects(new Class("NSImage")); // TODO: Sending messages directly to the base Objective-C API because of this defect: // https://bugzilla.xamarin.com/show_bug.cgi?id=31760 // Check to see if an image is on the pasteboard bool ok = bool_objc_msgSend_IntPtr_IntPtr(pasteboard.Handle, Selector.GetHandle("canReadObjectForClasses:options:"), classArray.Handle, IntPtr.Zero); if (ok) { // Read the image off of the pasteboard NSObject [] objectsToPaste = NSArray.ArrayFromHandle <Foundation.NSObject>(IntPtr_objc_msgSend_IntPtr_IntPtr(pasteboard.Handle, Selector.GetHandle("readObjectsForClasses:options:"), classArray.Handle, IntPtr.Zero)); NSImage image = (NSImage)objectsToPaste[0]; // Display the new image ImageView.Image = image; } var classArrayPtrs = new [] { Class.GetHandle(typeof(ImageInfo)) }; classArray = NSArray.FromIntPtrs(classArrayPtrs); ok = bool_objc_msgSend_IntPtr_IntPtr(pasteboard.Handle, Selector.GetHandle("canReadObjectForClasses:options:"), classArray.Handle, IntPtr.Zero); if (ok) { // Read the image off of the pasteboard NSObject [] objectsToPaste = NSArray.ArrayFromHandle <Foundation.NSObject>(IntPtr_objc_msgSend_IntPtr_IntPtr(pasteboard.Handle, Selector.GetHandle("readObjectsForClasses:options:"), classArray.Handle, IntPtr.Zero)); Info = (ImageInfo)objectsToPaste[0]; } }
// new in iOS9 but the only option for tvOS public static IntPtr GetAppearance(IntPtr class_ptr, UITraitCollection traits, params Type [] whenFoundIn) { if (traits == null) { throw new ArgumentNullException("traits"); } using (var array = NSArray.FromIntPtrs(TypesToPointers(whenFoundIn))) { return(Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr(class_ptr, Selector.GetHandle(UIAppearance.selAppearanceForTraitCollectionWhenContainedInInstancesOfClasses), traits.Handle, array.Handle)); } }
public static CIImage FromCGImage(CGImage image, CGColorSpace colorSpace) { if (colorSpace == null) { ObjCRuntime.ThrowHelper.ThrowArgumentNullException(nameof(colorSpace)); } using (var arr = NSArray.FromIntPtrs(new [] { colorSpace.Handle })){ using (var keys = NSArray.FromIntPtrs(new [] { CIImageInitializationOptionsKeys.ColorSpaceKey.Handle })){ using (var dict = NSDictionary.FromObjectsAndKeysInternal(arr, keys)){ return(FromCGImage(image, dict)); } } } }
public static CIImage FromCGImage(CGImage image, CGColorSpace colorSpace) { if (colorSpace == null) { throw new ArgumentNullException("colorSpace"); } using (var arr = NSArray.FromIntPtrs(new IntPtr [] { colorSpace.Handle })){ using (var keys = NSArray.FromIntPtrs(new IntPtr [] { CIImageColorSpaceKey.Handle })){ using (var dict = NSDictionary.FromObjectsAndKeysInternal(arr, keys)){ return(FromCGImage(image, dict)); } } } }
NSArray Bundle(SecIdentity identity, IEnumerable <SecCertificate> certificates) { int i = identity == null ? 0 : 1; int n = certificates == null ? 0 : certificates.Count(); var ptrs = new IntPtr [n + i]; if (i == 1) { ptrs [0] = identity.Handle; } foreach (var certificate in certificates) { ptrs [i++] = certificate.Handle; } return(NSArray.FromIntPtrs(ptrs)); }
NSArray Bundle(SecIdentity identity, IEnumerable <SecCertificate> certificates) { if (identity == null) { throw new ArgumentNullException("identity"); } int i = 0; int n = certificates == null ? 0 : certificates.Count(); var ptrs = new IntPtr [n + 1]; ptrs [0] = identity.Handle; foreach (var certificate in certificates) { ptrs [++i] = certificate.Handle; } return(NSArray.FromIntPtrs(ptrs)); }
NSArray Bundle(SecIdentity?identity, IEnumerable <SecCertificate>?certificates) { int i = identity is null ? 0 : 1; int n = certificates is null ? 0 : certificates.Count(); var ptrs = new NativeHandle [n + i]; if (i == 1) { ptrs [0] = identity !.Handle; } if (certificates is not null) { foreach (var certificate in certificates) { ptrs [i++] = certificate.Handle; } } return(NSArray.FromIntPtrs(ptrs)); }
void SetMatchingMultiple(ICollection <IDictionary <string, ValueType> > matchingDictionaries, Action <IOHIDManagerRef, CFDictionaryRef> matchingFunction) { ThrowIfDisposed(); if (matchingDictionaries == null) { throw new ArgumentNullException("matchingDictionaries"); } var dictonaryPtrs = new IntPtr [matchingDictionaries.Count]; var i = 0; foreach (var dict in matchingDictionaries) { dictonaryPtrs [i++] = NSDictionary.FromObjectsAndKeys(dict.Values.ToArray(), dict.Keys.ToArray()).Handle; } var array = NSArray.FromIntPtrs(dictonaryPtrs); matchingFunction(Handle, array.Handle); }
bool ValidateUserInterfaceItem(NSObject anItem) { var canReadSel = new Selector("canReadObjectForClasses:options:"); var pasteSel = new Selector("paste:"); var actionSel = new Selector("action"); var actionSelPtr = intptr_objc_msgSend(anItem.Handle, actionSel.Handle); var objActionSel = new Selector(actionSelPtr); if (objActionSel == pasteSel) { var pasteboard = NSPasteboard.GeneralPasteboard; var classArrayPtrs = new [] { Class.GetHandle(typeof(NSImage)) }; var classArray = NSArray.FromIntPtrs(classArrayPtrs); var options = new NSDictionary(); return(bool_objc_msgSend_intptr_intptr(pasteboard.Handle, canReadSel.Handle, classArray.Handle, options.Handle)); } //base.ValidateUserInterfaceItem (NSObject anItem); return(true); }
public void RetrievePeripherals(CBUUID [] peripheralUuids) { if (peripheralUuids == null) { throw new ArgumentNullException("peripheralUuids"); } var ptrs = new IntPtr [peripheralUuids.Length]; for (int i = 0; i < peripheralUuids.Length; i++) { using (var s = new NSString(peripheralUuids[i].ToString(true))) ptrs [i] = CFUUID.CFUUIDCreateFromString(IntPtr.Zero, s.Handle); } using (var arr = NSArray.FromIntPtrs(ptrs)) RetrievePeripherals(arr); foreach (var p in ptrs) { CFObject.CFRelease(p); } }