Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / CommonUI / System / Drawing / Advanced / PrivateFontCollection.cs / 2 / 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
- RepeaterItemCollection.cs
- StateItem.cs
- DateTimeOffsetStorage.cs
- BaseDataBoundControl.cs
- XmlReaderSettings.cs
- PlainXmlWriter.cs
- XmlSchemaSimpleTypeList.cs
- CryptoApi.cs
- OdbcConnectionString.cs
- BrushValueSerializer.cs
- FileDialogPermission.cs
- PropertyFilterAttribute.cs
- CodeVariableDeclarationStatement.cs
- EncodingNLS.cs
- SerialReceived.cs
- XmlDomTextWriter.cs
- TabPanel.cs
- ToolStripItemCollection.cs
- BitmapFrameDecode.cs
- ActivityTypeCodeDomSerializer.cs
- ScrollChrome.cs
- DataRelationCollection.cs
- LayoutExceptionEventArgs.cs
- QilStrConcatenator.cs
- TimerEventSubscription.cs
- GenericNameHandler.cs
- ComplexLine.cs
- SrgsItemList.cs
- AttributeConverter.cs
- UdpTransportSettingsElement.cs
- MarkupObject.cs
- ValueOfAction.cs
- XmlILOptimizerVisitor.cs
- FlatButtonAppearance.cs
- VoiceChangeEventArgs.cs
- References.cs
- FunctionDescription.cs
- Constraint.cs
- HttpListener.cs
- TextChange.cs
- TdsParserStaticMethods.cs
- CodeBinaryOperatorExpression.cs
- CodeCompileUnit.cs
- EntityCodeGenerator.cs
- CodeVariableReferenceExpression.cs
- TextTreeObjectNode.cs
- SQlBooleanStorage.cs
- RootBrowserWindowProxy.cs
- InheritedPropertyChangedEventArgs.cs
- InProcStateClientManager.cs
- VisualStyleElement.cs
- QueryOptionExpression.cs
- WorkflowMessageEventArgs.cs
- ProgressBarRenderer.cs
- StringComparer.cs
- SemanticResolver.cs
- ReadOnlyDictionary.cs
- ConstructorNeedsTagAttribute.cs
- EventlogProvider.cs
- FieldBuilder.cs
- SelectedGridItemChangedEvent.cs
- HostUtils.cs
- ExpandoClass.cs
- XpsFixedDocumentReaderWriter.cs
- XamlWriter.cs
- RuntimeVariablesExpression.cs
- DelegatingHeader.cs
- DataServiceQueryException.cs
- NodeCounter.cs
- RIPEMD160Managed.cs
- SHA1CryptoServiceProvider.cs
- RepeatInfo.cs
- DataGridTableCollection.cs
- BidOverLoads.cs
- SmtpException.cs
- WebBrowserHelper.cs
- ClientType.cs
- OrderToken.cs
- RootAction.cs
- TextParentUndoUnit.cs
- UrlMapping.cs
- Timer.cs
- EndOfStreamException.cs
- BufferBuilder.cs
- WebReferencesBuildProvider.cs
- TypeUtils.cs
- ReadOnlyCollectionBase.cs
- RequestCachePolicyConverter.cs
- SecurityContextSecurityTokenParameters.cs
- ImageIndexConverter.cs
- CacheOutputQuery.cs
- VisualTreeUtils.cs
- MD5.cs
- NonBatchDirectoryCompiler.cs
- ComboBox.cs
- OleDbTransaction.cs
- SourceFileBuildProvider.cs
- CodeConstructor.cs
- TreeViewImageGenerator.cs
- PageWrapper.cs