예제 #1
0
 public CTFontCollection(CTFontDescriptor[] queryDescriptors, CTFontCollectionOptions options)
 {
     using (var descriptors = queryDescriptors == null
             ? null
             : CFArray.FromNativeObjects (queryDescriptors))
         handle = CTFontCollectionCreateWithFontDescriptors (
                 descriptors == null ? IntPtr.Zero : descriptors.Handle,
                 options == null ? IntPtr.Zero : options.Dictionary.Handle);
     if (handle == IntPtr.Zero)
         throw ConstructorError.Unknown (this);
 }
예제 #2
0
        public static CTFontDescriptor[] GetFonts(NSUrl url)
        {
            if (url == null)
            {
                throw new ArgumentNullException("url");
            }

            var arrayPtr = CTFontManagerCreateFontDescriptorsFromURL(url.Handle);

            if (arrayPtr == IntPtr.Zero)
            {
                return(new CTFontDescriptor [0]);
            }

            using (var unmanageFonts = new CFArray(arrayPtr, true)) {
                var managedFonts = new CTFontDescriptor [unmanageFonts.Count];
                for (int index = 0; index < unmanageFonts.Count; index++)
                {
                    managedFonts [index] = new CTFontDescriptor(unmanageFonts.GetValue(index), false);
                }
                return(managedFonts);
            }
        }
예제 #3
0
 public static CTFontDescriptor GetFontDescriptor(MACaptionAppearanceDomain domain, ref MACaptionAppearanceBehavior behavior, MACaptionAppearanceFontStyle fontStyle)
 {
     nint b = (int) behavior;
     var rv = new CTFontDescriptor (MACaptionAppearanceCopyFontDescriptorForStyle ((int) domain, ref b, (int) fontStyle), owns: true);
     behavior = (MACaptionAppearanceBehavior) (int) b;
     return rv;
 }
예제 #4
0
 public static bool MatchFontDescriptors(CTFontDescriptor[] descriptors, NSSet mandatoryAttributes, Func<CTFontDescriptorMatchingState, IntPtr, bool> progressHandler)
 {
     // FIXME: the P/Invoke used below is wrong, it expects a block, not a function pointer.
     // throwing a NIE instead of crashing until this is implemented properly.
     throw new NotImplementedException ();
     //			var ma = mandatoryAttributes == null ? IntPtr.Zero : mandatoryAttributes.Handle;
     //			// FIXME: SIGSEGV probably due to mandatoryAttributes mismatch
     //			using (var ar = CFArray.FromNativeObjects (descriptors)) {
     //				return CTFontDescriptorMatchFontDescriptorsWithProgressHandler (ar.Handle, ma, progressHandler);
     //			}
 }
예제 #5
0
 public CTFontCollection WithFontDescriptors(CTFontDescriptor[] queryDescriptors, CTFontCollectionOptions options)
 {
     IntPtr h;
     using (var descriptors = queryDescriptors == null
             ? null
             : CFArray.FromNativeObjects (queryDescriptors)) {
         h = CTFontCollectionCreateCopyWithFontDescriptors (
                 handle,
                 descriptors == null ? IntPtr.Zero : descriptors.Handle,
                 options == null ? IntPtr.Zero : options.Dictionary.Handle);
     }
     if (h == IntPtr.Zero)
         return null;
     return new CTFontCollection (h, true);
 }
예제 #6
0
        public static CTFontDescriptor[] GetFonts(NSUrl url)
        {
            if (url == null)
                throw new ArgumentNullException ("url");

            var arrayPtr = CTFontManagerCreateFontDescriptorsFromURL (url.Handle);
            if (arrayPtr == IntPtr.Zero)
                return new CTFontDescriptor [0];

            using (var unmanageFonts = new CFArray (arrayPtr, true)) {
                var managedFonts = new CTFontDescriptor [unmanageFonts.Count];
                for (int index = 0; index < unmanageFonts.Count; index++) {
                    managedFonts [index] = new CTFontDescriptor (unmanageFonts.GetValue (index), false);
                }
                return managedFonts;
            }
        }