FontCollection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / CommonUI / System / Drawing / Advanced / FontCollection.cs / 1305376 / FontCollection.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.Drawing.Text { 
 
    using System.Diagnostics;
    using System; 
    using System.Drawing;
    using System.Drawing.Internal;
    using System.Runtime.InteropServices;
    using System.ComponentModel; 
    using Microsoft.Win32;
    using System.Runtime.Versioning; 
 
    /// 
    ///  
    ///    When inherited, enumerates the FontFamily
    ///    objects in a collection of fonts.
    /// 
    public abstract class FontCollection : IDisposable { 

        internal IntPtr nativeFontCollection; 
 

        internal FontCollection() { 
            nativeFontCollection = IntPtr.Zero;
        }

        ///  
        /// 
        ///    Disposes of this  
        ///  
        public void Dispose() {
            Dispose(true); 
            GC.SuppressFinalize(this);
        }

        ///  
        protected virtual void Dispose(bool disposing) {
            // nothing... 
        } 

        ///  
        /// 
        ///    
        ///       Gets the array of 
        ///       objects associated with this . 
        ///    
        ///  
        public FontFamily[] Families { 
            [ResourceExposure(ResourceScope.Process)]
            [ResourceConsumption(ResourceScope.Process)] 
            get {
                int numSought = 0;

                int status = SafeNativeMethods.Gdip.GdipGetFontCollectionFamilyCount(new HandleRef(this, nativeFontCollection), out numSought); 

                if (status != SafeNativeMethods.Gdip.Ok) 
                    throw SafeNativeMethods.Gdip.StatusException(status); 

                IntPtr[] gpfamilies = new IntPtr[numSought]; 

                int numFound = 0;

                status = SafeNativeMethods.Gdip.GdipGetFontCollectionFamilyList(new HandleRef(this, nativeFontCollection), numSought, gpfamilies, 
                                                             out numFound);
 
                if (status != SafeNativeMethods.Gdip.Ok) 
                    throw SafeNativeMethods.Gdip.StatusException(status);
 

                Debug.Assert(numSought == numFound, "GDI+ can't give a straight answer about how many fonts there are");
                FontFamily[] families = new FontFamily[numFound];
                for (int f = 0; f < numFound; f++) { 
                    IntPtr native;
                    SafeNativeMethods.Gdip.GdipCloneFontFamily(new HandleRef(null, (IntPtr)gpfamilies[f]), out native); 
                    families[f] = new FontFamily(native); 
                }
 
                return families;
            }
        }
 
        /**
         * Object cleanup 
         */ 
        /// 
        ///  
        ///    
        ///       Allows an object to free resources before the object is
        ///       reclaimed by the Garbage Collector ().
        ///     
        /// 
        ~FontCollection() { 
            Dispose(false); 
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK