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 public sealed class PrivateFontCollection : FontCollection { ///objecs. /// /// /// [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); } ////// Initializes a new instance of the ///class. /// /// /// 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); } ////// Cleans up Windows resources for 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. //------------------------------------------------------------------------------ ///// Adds a font from the specified file to /// this ///. /// // 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 public sealed class PrivateFontCollection : FontCollection { ///objecs. /// /// /// [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); } ////// Initializes a new instance of the ///class. /// /// /// 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); } ////// Cleans up Windows resources for 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./// Adds a font from the specified file to /// this ///. ///
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- COM2IManagedPerPropertyBrowsingHandler.cs
- InputMethodStateChangeEventArgs.cs
- NavigationPropertySingletonExpression.cs
- HwndPanningFeedback.cs
- DesignerActionKeyboardBehavior.cs
- log.cs
- Model3DGroup.cs
- EndpointAddressProcessor.cs
- RuleRefElement.cs
- Pens.cs
- DataGridToolTip.cs
- SqlGenericUtil.cs
- InvalidWMPVersionException.cs
- ConstantExpression.cs
- DataGridTablesFactory.cs
- TableAutomationPeer.cs
- WorkflowServiceOperationListItem.cs
- FormViewActionList.cs
- oledbmetadatacollectionnames.cs
- TypeUtils.cs
- SettingsProviderCollection.cs
- AssemblyBuilder.cs
- BreakRecordTable.cs
- ActionMessageFilterTable.cs
- Int32RectConverter.cs
- MobileCategoryAttribute.cs
- Rect.cs
- ScriptServiceAttribute.cs
- EntityDataSourceContextCreatingEventArgs.cs
- AppSettings.cs
- DataBindingsDialog.cs
- TypeLoadException.cs
- AdjustableArrowCap.cs
- ChangeInterceptorAttribute.cs
- ConfigurationSettings.cs
- basenumberconverter.cs
- IteratorAsyncResult.cs
- Menu.cs
- IdentityValidationException.cs
- XmlUtilWriter.cs
- SqlCacheDependencyDatabaseCollection.cs
- SiteMapHierarchicalDataSourceView.cs
- MsmqOutputMessage.cs
- ChangeProcessor.cs
- ConfigurationPropertyAttribute.cs
- WindowsImpersonationContext.cs
- CngAlgorithmGroup.cs
- WebDisplayNameAttribute.cs
- LeaseManager.cs
- UInt32.cs
- ScriptResourceAttribute.cs
- oledbmetadatacolumnnames.cs
- FilteredAttributeCollection.cs
- XmlILConstructAnalyzer.cs
- ClientOptions.cs
- RegexTree.cs
- _OverlappedAsyncResult.cs
- RemoteWebConfigurationHostStream.cs
- SelfIssuedAuthAsymmetricKey.cs
- XamlToRtfWriter.cs
- ConstraintConverter.cs
- DefaultEventAttribute.cs
- CustomErrorsSection.cs
- WebPartConnectionsDisconnectVerb.cs
- DataSourceCacheDurationConverter.cs
- ADConnectionHelper.cs
- wgx_exports.cs
- ConfigXmlText.cs
- AssemblyAssociatedContentFileAttribute.cs
- StorageRoot.cs
- CodeBlockBuilder.cs
- _AutoWebProxyScriptHelper.cs
- TdsParameterSetter.cs
- EdmFunction.cs
- XmlSchemaAnyAttribute.cs
- TypeDescriptionProvider.cs
- HttpConfigurationSystem.cs
- PtsHost.cs
- ThreadPool.cs
- BrowsableAttribute.cs
- InfocardInteractiveChannelInitializer.cs
- PropertyStore.cs
- SmtpNtlmAuthenticationModule.cs
- DateTimePicker.cs
- DbProviderFactories.cs
- BindableAttribute.cs
- OperationInvokerTrace.cs
- JoinQueryOperator.cs
- UpdateTracker.cs
- Message.cs
- ConnectionStringsExpressionBuilder.cs
- TextServicesContext.cs
- QueryContinueDragEventArgs.cs
- ProvidersHelper.cs
- GridSplitterAutomationPeer.cs
- InternalsVisibleToAttribute.cs
- RadioButtonRenderer.cs
- SpellCheck.cs
- StrokeNodeOperations2.cs
- EventLogEntry.cs