PrivateFontCollection.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / CommonUI / System / Drawing / Advanced / PrivateFontCollection.cs / 1305376 / PrivateFontCollection.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.Security; 
    using System.Security.Permissions; 
    using System.Globalization;
    using System.Runtime.Versioning; 

    /// 
    /// 
    ///    Encapsulates a collection of  objecs. 
    /// 
    public sealed class PrivateFontCollection : FontCollection { 
 
        /// 
        ///  
        ///    
        ///       Initializes a new instance of the  class.
        ///    
        ///  
        [ResourceExposure(ResourceScope.Process)]
        [ResourceConsumption(ResourceScope.Process)] 
        public PrivateFontCollection() { 
            nativeFontCollection = IntPtr.Zero;
 
            int status = SafeNativeMethods.Gdip.GdipNewPrivateFontCollection(out nativeFontCollection);

            if (status != SafeNativeMethods.Gdip.Ok)
                throw SafeNativeMethods.Gdip.StatusException(status); 
        }
 
        ///  
        /// 
        ///     
        ///       Cleans up Windows resources for this
        ///     .
        ///    
        ///  
        protected override void Dispose(bool disposing) {
            if (nativeFontCollection != IntPtr.Zero) { 
                try{ 
#if DEBUG
                    int status = 
#endif
                    SafeNativeMethods.Gdip.GdipDeletePrivateFontCollection(out nativeFontCollection);
#if DEBUG
                    Debug.Assert(status == SafeNativeMethods.Gdip.Ok, "GDI+ returned an error status: " + status.ToString(CultureInfo.InvariantCulture)); 
#endif
                } 
                catch( Exception ex ){ 
                    if( ClientUtils.IsSecurityOrCriticalException( ex ) ) {
                        throw; 
                    }

                    Debug.Fail( "Exception thrown during Dispose: " + ex.ToString() );
                } 
                finally{
                    nativeFontCollection = IntPtr.Zero; 
                } 
            }
 
            base.Dispose(disposing);
        }

        ///  
        /// 
        ///     
        ///       Adds a font from the specified file to 
        ///       this .
        ///     
        /// 
        public void AddFontFile (string filename) {
            IntSecurity.DemandReadFileIO(filename);
            int status = SafeNativeMethods.Gdip.GdipPrivateAddFontFile(new HandleRef(this, nativeFontCollection), filename); 

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

            // Register private font with GDI as well so pure GDI-based controls (TextBox, Button for instance) can access it. 
            SafeNativeMethods.AddFontFile( filename );
        }

        // 

 
 

 



 
        public void AddMemoryFont (IntPtr memory, int length) {
            IntSecurity.ObjectFromWin32Handle.Demand(); 
 
            int status = SafeNativeMethods.Gdip.GdipPrivateAddMemoryFont(new HandleRef(this, nativeFontCollection), new HandleRef(null, memory), length);
 
            if (status != SafeNativeMethods.Gdip.Ok)
                throw SafeNativeMethods.Gdip.StatusException(status);
        }
    } 
}
 

// 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;
    using System.Security; 
    using System.Security.Permissions; 
    using System.Globalization;
    using System.Runtime.Versioning; 

    /// 
    /// 
    ///    Encapsulates a collection of  objecs. 
    /// 
    public sealed class PrivateFontCollection : FontCollection { 
 
        /// 
        ///  
        ///    
        ///       Initializes a new instance of the  class.
        ///    
        ///  
        [ResourceExposure(ResourceScope.Process)]
        [ResourceConsumption(ResourceScope.Process)] 
        public PrivateFontCollection() { 
            nativeFontCollection = IntPtr.Zero;
 
            int status = SafeNativeMethods.Gdip.GdipNewPrivateFontCollection(out nativeFontCollection);

            if (status != SafeNativeMethods.Gdip.Ok)
                throw SafeNativeMethods.Gdip.StatusException(status); 
        }
 
        ///  
        /// 
        ///     
        ///       Cleans up Windows resources for this
        ///     .
        ///    
        ///  
        protected override void Dispose(bool disposing) {
            if (nativeFontCollection != IntPtr.Zero) { 
                try{ 
#if DEBUG
                    int status = 
#endif
                    SafeNativeMethods.Gdip.GdipDeletePrivateFontCollection(out nativeFontCollection);
#if DEBUG
                    Debug.Assert(status == SafeNativeMethods.Gdip.Ok, "GDI+ returned an error status: " + status.ToString(CultureInfo.InvariantCulture)); 
#endif
                } 
                catch( Exception ex ){ 
                    if( ClientUtils.IsSecurityOrCriticalException( ex ) ) {
                        throw; 
                    }

                    Debug.Fail( "Exception thrown during Dispose: " + ex.ToString() );
                } 
                finally{
                    nativeFontCollection = IntPtr.Zero; 
                } 
            }
 
            base.Dispose(disposing);
        }

        ///  
        /// 
        ///     
        ///       Adds a font from the specified file to 
        ///       this .
        ///     
        /// 
        public void AddFontFile (string filename) {
            IntSecurity.DemandReadFileIO(filename);
            int status = SafeNativeMethods.Gdip.GdipPrivateAddFontFile(new HandleRef(this, nativeFontCollection), filename); 

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

            // Register private font with GDI as well so pure GDI-based controls (TextBox, Button for instance) can access it. 
            SafeNativeMethods.AddFontFile( filename );
        }

        // 

 
 

 



 
        public void AddMemoryFont (IntPtr memory, int length) {
            IntSecurity.ObjectFromWin32Handle.Demand(); 
 
            int status = SafeNativeMethods.Gdip.GdipPrivateAddMemoryFont(new HandleRef(this, nativeFontCollection), new HandleRef(null, memory), length);
 
            if (status != SafeNativeMethods.Gdip.Ok)
                throw SafeNativeMethods.Gdip.StatusException(status);
        }
    } 
}
 

// 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