Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / CommonUI / System / Drawing / Advanced / PrivateFontCollection.cs / 1 / 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;
///
///
/// Encapsulates a collection of objecs.
///
public sealed class PrivateFontCollection : FontCollection {
///
///
///
/// Initializes a new instance of the class.
///
///
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;
///
///
/// Encapsulates a collection of objecs.
///
public sealed class PrivateFontCollection : FontCollection {
///
///
///
/// Initializes a new instance of the class.
///
///
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

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ExpressionBuilder.cs
- TreeViewItemAutomationPeer.cs
- NavigationFailedEventArgs.cs
- OleTxTransaction.cs
- XMLSchema.cs
- MemberPathMap.cs
- SystemException.cs
- ParallelTimeline.cs
- Panel.cs
- BindingMemberInfo.cs
- PrintingPermission.cs
- DrawingBrush.cs
- SupportsEventValidationAttribute.cs
- DataControlLinkButton.cs
- LinkLabel.cs
- TagMapInfo.cs
- IdnElement.cs
- SecurityException.cs
- safePerfProviderHandle.cs
- UrlMappingsSection.cs
- XmlHierarchicalEnumerable.cs
- FigureParagraph.cs
- RegistryHandle.cs
- DesignOnlyAttribute.cs
- ToolStripHighContrastRenderer.cs
- PrincipalPermission.cs
- oledbmetadatacollectionnames.cs
- BrowserDefinition.cs
- StringSource.cs
- SectionInformation.cs
- RoutedCommand.cs
- XmlValueConverter.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- MetadataArtifactLoaderComposite.cs
- MailAddress.cs
- EndGetFileNameFromUserRequest.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- KeyEvent.cs
- WaitHandle.cs
- Calendar.cs
- SQLMoney.cs
- TypeGeneratedEventArgs.cs
- LeftCellWrapper.cs
- DropDownButton.cs
- HtmlTableRowCollection.cs
- NullExtension.cs
- SystemInfo.cs
- ParserHooks.cs
- TextTreeObjectNode.cs
- SafeHandles.cs
- TdsRecordBufferSetter.cs
- XslAstAnalyzer.cs
- ForEachAction.cs
- ProxyManager.cs
- EntityClientCacheKey.cs
- SpAudioStreamWrapper.cs
- EmptyStringExpandableObjectConverter.cs
- ObjectHelper.cs
- GeometryCombineModeValidation.cs
- RNGCryptoServiceProvider.cs
- MetadataItemSerializer.cs
- BezierSegment.cs
- RenderTargetBitmap.cs
- FileUtil.cs
- DataPointer.cs
- RealProxy.cs
- GenericEnumerator.cs
- AuthenticationManager.cs
- Trace.cs
- ConfigurationManagerInternalFactory.cs
- EventLogEntryCollection.cs
- TableLayoutSettings.cs
- shaperfactoryquerycacheentry.cs
- ListViewCancelEventArgs.cs
- InputMethodStateChangeEventArgs.cs
- URL.cs
- IntegerFacetDescriptionElement.cs
- MdiWindowListStrip.cs
- SimpleBitVector32.cs
- HtmlElementCollection.cs
- DataBoundControlHelper.cs
- XmlWhitespace.cs
- QueryContinueDragEvent.cs
- UtilityExtension.cs
- SoapBinding.cs
- HyperlinkAutomationPeer.cs
- DispatcherExceptionFilterEventArgs.cs
- OLEDB_Enum.cs
- StorageEndPropertyMapping.cs
- SmtpNtlmAuthenticationModule.cs
- RegistryPermission.cs
- CharacterString.cs
- XmlChoiceIdentifierAttribute.cs
- ImageAutomationPeer.cs
- DbUpdateCommandTree.cs
- DateTimeOffset.cs
- FormViewDeletedEventArgs.cs
- Token.cs
- BatchWriter.cs
- DataRowComparer.cs