FontCollection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / CommonUI / System / Drawing / Advanced / FontCollection.cs / 1 / 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;
 
    ///  
    /// 
    ///    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 { 
            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.
//------------------------------------------------------------------------------ 
// 
//     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;
 
    ///  
    /// 
    ///    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 { 
            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