Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / CommonUI / System / Drawing / Brush.cs / 1305376 / Brush.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Drawing
{
using System.Runtime.InteropServices;
using System.Diagnostics;
using System;
using System.ComponentModel;
using Microsoft.Win32;
using System.Drawing;
using System.Drawing.Internal;
using System.Globalization;
using System.Security;
using System.Security.Permissions;
/**
* Represent a Brush object
*/
///
///
///
/// Classes derrived from this abstract base class define objects used to fill the
/// interiors of graphical shapes such as rectangles, ellipses, pies, polygons, and paths.
///
///
public abstract class Brush : MarshalByRefObject, ICloneable, IDisposable
{
#if FINALIZATION_WATCH
private string allocationSite = Graphics.GetAllocationStack();
#endif
// handle to native GDI+ brush object to be used on demand.
///
private IntPtr nativeBrush;
///
///
/// When overriden in a derived class, creates
/// an exact copy of this .
///
public abstract object Clone();
///
/// Sets the native GDI+ brush reference.
/// Note: This method is intended to be used by derived classes only! (internal protected doesn't work as in C++).
///
protected internal void SetNativeBrush(IntPtr brush)
{
SecurityPermission permission = new SecurityPermission(SecurityPermissionFlag.UnmanagedCode);
permission.Demand();
SetNativeBrushInternal(brush);
}
internal void SetNativeBrushInternal(IntPtr brush)
{
Debug.Assert( brush != IntPtr.Zero, "WARNING: Assigning null to the GDI+ native brush object.");
Debug.Assert( this.nativeBrush == IntPtr.Zero, "WARNING: Initialized GDI+ native brush object being assigned a new value.");
this.nativeBrush = brush;
}
///
/// Gets the GDI+ native object reference. Triggers GDI+ obect initialization.
///
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
internal IntPtr NativeBrush
{
[System.Runtime.TargetedPatchingOptOutAttribute("Performance critical to inline across NGen image boundaries")]
get
{
//Need to comment this line out to allow for checking this.NativePen == IntPtr.Zero.
//Debug.Assert(this.nativeBrush != IntPtr.Zero, "this.nativeBrush == null." );
return this.nativeBrush;
}
}
///
///
///
/// Deletes this .
///
///
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
///
protected virtual void Dispose(bool disposing)
{
#if FINALIZATION_WATCH
if (!disposing && nativeBrush != IntPtr.Zero )
Debug.WriteLine("**********************\nDisposed through finalization:\n" + allocationSite);
#endif
if (this.nativeBrush != IntPtr.Zero) {
try{
#if DEBUG
int status =
#endif
SafeNativeMethods.Gdip.GdipDeleteBrush(new HandleRef(this, this.nativeBrush));
#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{
this.nativeBrush = IntPtr.Zero;
}
}
}
/**
* Object cleanup
*/
///
///
///
/// Releases memory allocated for this .
///
///
~Brush()
{
Dispose(false);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//-----------------------------------------------------------------------------
namespace System.Drawing
{
using System.Runtime.InteropServices;
using System.Diagnostics;
using System;
using System.ComponentModel;
using Microsoft.Win32;
using System.Drawing;
using System.Drawing.Internal;
using System.Globalization;
using System.Security;
using System.Security.Permissions;
/**
* Represent a Brush object
*/
///
///
///
/// Classes derrived from this abstract base class define objects used to fill the
/// interiors of graphical shapes such as rectangles, ellipses, pies, polygons, and paths.
///
///
public abstract class Brush : MarshalByRefObject, ICloneable, IDisposable
{
#if FINALIZATION_WATCH
private string allocationSite = Graphics.GetAllocationStack();
#endif
// handle to native GDI+ brush object to be used on demand.
///
private IntPtr nativeBrush;
///
///
/// When overriden in a derived class, creates
/// an exact copy of this .
///
public abstract object Clone();
///
/// Sets the native GDI+ brush reference.
/// Note: This method is intended to be used by derived classes only! (internal protected doesn't work as in C++).
///
protected internal void SetNativeBrush(IntPtr brush)
{
SecurityPermission permission = new SecurityPermission(SecurityPermissionFlag.UnmanagedCode);
permission.Demand();
SetNativeBrushInternal(brush);
}
internal void SetNativeBrushInternal(IntPtr brush)
{
Debug.Assert( brush != IntPtr.Zero, "WARNING: Assigning null to the GDI+ native brush object.");
Debug.Assert( this.nativeBrush == IntPtr.Zero, "WARNING: Initialized GDI+ native brush object being assigned a new value.");
this.nativeBrush = brush;
}
///
/// Gets the GDI+ native object reference. Triggers GDI+ obect initialization.
///
[Browsable(false), EditorBrowsable(EditorBrowsableState.Never)]
internal IntPtr NativeBrush
{
[System.Runtime.TargetedPatchingOptOutAttribute("Performance critical to inline across NGen image boundaries")]
get
{
//Need to comment this line out to allow for checking this.NativePen == IntPtr.Zero.
//Debug.Assert(this.nativeBrush != IntPtr.Zero, "this.nativeBrush == null." );
return this.nativeBrush;
}
}
///
///
///
/// Deletes this .
///
///
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
///
protected virtual void Dispose(bool disposing)
{
#if FINALIZATION_WATCH
if (!disposing && nativeBrush != IntPtr.Zero )
Debug.WriteLine("**********************\nDisposed through finalization:\n" + allocationSite);
#endif
if (this.nativeBrush != IntPtr.Zero) {
try{
#if DEBUG
int status =
#endif
SafeNativeMethods.Gdip.GdipDeleteBrush(new HandleRef(this, this.nativeBrush));
#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{
this.nativeBrush = IntPtr.Zero;
}
}
}
/**
* Object cleanup
*/
///
///
///
/// Releases memory allocated for this .
///
///
~Brush()
{
Dispose(false);
}
}
}
// 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
- DbConnectionStringBuilder.cs
- HandleValueEditor.cs
- ReachFixedDocumentSerializer.cs
- CheckBoxAutomationPeer.cs
- SemanticBasicElement.cs
- EngineSiteSapi.cs
- SafeRightsManagementSessionHandle.cs
- MultipleViewPattern.cs
- RewritingPass.cs
- DbConnectionPoolGroup.cs
- FloaterParagraph.cs
- DirtyTextRange.cs
- Calendar.cs
- ExpressionConverter.cs
- InfoCardRSAOAEPKeyExchangeFormatter.cs
- AnnotationResource.cs
- ViewService.cs
- HtmlWindowCollection.cs
- SecurityUtils.cs
- SerializationIncompleteException.cs
- MarshalByValueComponent.cs
- SQLDecimal.cs
- MimeWriter.cs
- ping.cs
- PKCS1MaskGenerationMethod.cs
- PopupControlService.cs
- ServiceModelConfigurationSectionGroup.cs
- safelink.cs
- DataGridViewCell.cs
- TdsEnums.cs
- SafeBitVector32.cs
- MatcherBuilder.cs
- SocketPermission.cs
- BitmapData.cs
- QueryReaderSettings.cs
- MarkupObject.cs
- DbModificationClause.cs
- brushes.cs
- ScriptModule.cs
- ReverseInheritProperty.cs
- JoinSymbol.cs
- RawStylusInputCustomData.cs
- GridView.cs
- InstanceDataCollection.cs
- RegisteredArrayDeclaration.cs
- EncryptedReference.cs
- ResourceAssociationType.cs
- ConstructorArgumentAttribute.cs
- HashSet.cs
- GridItemPatternIdentifiers.cs
- WebConfigurationManager.cs
- ObjectDataSourceSelectingEventArgs.cs
- DefaultAuthorizationContext.cs
- LazyTextWriterCreator.cs
- WindowsStatusBar.cs
- LiteralControl.cs
- KnownTypesProvider.cs
- DPAPIProtectedConfigurationProvider.cs
- UrlAuthorizationModule.cs
- ContractAdapter.cs
- DataGridViewRowHeaderCell.cs
- EpmSyndicationContentSerializer.cs
- IERequestCache.cs
- IOException.cs
- XsdDataContractImporter.cs
- KnownTypeDataContractResolver.cs
- ConnectionStringsSection.cs
- WebException.cs
- FillRuleValidation.cs
- DynamicUpdateCommand.cs
- UserPreferenceChangingEventArgs.cs
- KoreanCalendar.cs
- CollectionViewGroupInternal.cs
- AspNetSynchronizationContext.cs
- XpsDigitalSignature.cs
- IInstanceTable.cs
- CLSCompliantAttribute.cs
- TreeView.cs
- StagingAreaInputItem.cs
- ValidatorCompatibilityHelper.cs
- ThreadStaticAttribute.cs
- ReversePositionQuery.cs
- LinkConverter.cs
- Funcletizer.cs
- Span.cs
- UICuesEvent.cs
- EmptyQuery.cs
- TemplateControlBuildProvider.cs
- EntityConnectionStringBuilderItem.cs
- OutputCacheModule.cs
- DictionaryBase.cs
- GCHandleCookieTable.cs
- CompositeScriptReference.cs
- DESCryptoServiceProvider.cs
- DbConnectionInternal.cs
- RuleSet.cs
- DebuggerAttributes.cs
- EventLogEntryCollection.cs
- OdbcCommand.cs
- AnnotationMap.cs