Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / RenderDataDrawingContext.cs / 1305600 / RenderDataDrawingContext.cs
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation, 2003
//
// File: RenderDataDrawingContext.cs
//
// History:
// [....]: 04/19/2003
// Created it based on the RenderDataDrawingContext used in the AvPhat branch.
// [....]: 07/02/2003
// Renamed to RenderDataDrawingContext, which derives from DrawingContext
// [....]: 07/02/2003
// Renamed to RenderDataDrawingContext, which derives from DrawingContext
// This class no longer understand Visuals, and simply produces RenderData.
//
//-----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Security.Permissions;
using System.Windows;
using System.Windows.Threading;
using System.Windows.Media.Animation;
using System.Windows.Media;
using System.Windows.Media.Composition;
using System.Diagnostics;
using MS.Internal;
using System.Security;
//-----------------------------------------------------------------------------
// This section lists various things that we could improve on the DrawingContxt
// class.
//
// - Remove the isAnimated flag from being propagated everywhere. Rather mark
// the pail when we add an animated argument.
//-----------------------------------------------------------------------------
namespace System.Windows.Media
{
///
/// Drawing context.
///
internal partial class RenderDataDrawingContext : DrawingContext, IDisposable
{
#region Constructors
///
/// Creates a drawing context which is associated with a given Dispatcher
///
internal RenderDataDrawingContext()
{
}
#endregion Constructors
#region Public Methods
internal RenderData GetRenderData()
{
return _renderData;
}
///
/// Closes the DrawingContext and flushes the content.
/// Afterwards the DrawingContext can not be used anymore.
/// This call does not require all Push calls to have been Popped.
///
///
/// This call is illegal if this object has already been closed or disposed.
///
public override void Close()
{
VerifyApiNonstructuralChange();
((IDisposable)this).Dispose();
}
///
/// This is the same as the Close call:
/// Closes the DrawingContext and flushes the content.
/// Afterwards the DrawingContext can not be used anymore.
/// This call does not require all Push calls to have been Popped.
///
///
/// This call is illegal if this object has already been closed or disposed.
///
protected override void DisposeCore()
{
if (!_disposed)
{
EnsureCorrectNesting();
CloseCore(_renderData);
_disposed = true;
}
}
#endregion Public Methods
#region Protected Methods
///
/// CloseCore - Implemented be derivees to Close the context.
/// This will only be called once (if ever) per instance.
///
/// The render data produced by this RenderDataDrawingContext.
protected virtual void CloseCore(RenderData renderData) {}
#endregion Protected Methods
#region Private Methods
///
/// EnsureRenderData - this method ensures that the _renderData variable is initialized.
/// The render data's _buffer will be lazily instantiated via the Draw* methods which all
/// call WriteDataRecord.
///
private void EnsureRenderData()
{
if (_renderData == null)
{
_renderData = new RenderData();
}
}
///
/// This verifies that the API can be called for access which doesn't affect structure.
///
protected override void VerifyApiNonstructuralChange()
{
base.VerifyApiNonstructuralChange();
if (_disposed)
{
throw new ObjectDisposedException("RenderDataDrawingContext");
}
}
///
/// This method checks if there were any Push calls that were not matched by
/// the corresponding Pop. If this is the case, this method adds corresponding
/// number of Pop instructions to the render data.
///
private void EnsureCorrectNesting()
{
if (_renderData != null && _stackDepth > 0)
{
int stackDepth = _stackDepth;
for (int i = 0; i < stackDepth; i++)
{
Pop();
}
}
_stackDepth = 0;
}
#endregion Private Methods
#region Fields
private RenderData _renderData;
private bool _disposed;
private int _stackDepth;
#endregion Fields
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation, 2003
//
// File: RenderDataDrawingContext.cs
//
// History:
// [....]: 04/19/2003
// Created it based on the RenderDataDrawingContext used in the AvPhat branch.
// [....]: 07/02/2003
// Renamed to RenderDataDrawingContext, which derives from DrawingContext
// [....]: 07/02/2003
// Renamed to RenderDataDrawingContext, which derives from DrawingContext
// This class no longer understand Visuals, and simply produces RenderData.
//
//-----------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Security.Permissions;
using System.Windows;
using System.Windows.Threading;
using System.Windows.Media.Animation;
using System.Windows.Media;
using System.Windows.Media.Composition;
using System.Diagnostics;
using MS.Internal;
using System.Security;
//-----------------------------------------------------------------------------
// This section lists various things that we could improve on the DrawingContxt
// class.
//
// - Remove the isAnimated flag from being propagated everywhere. Rather mark
// the pail when we add an animated argument.
//-----------------------------------------------------------------------------
namespace System.Windows.Media
{
///
/// Drawing context.
///
internal partial class RenderDataDrawingContext : DrawingContext, IDisposable
{
#region Constructors
///
/// Creates a drawing context which is associated with a given Dispatcher
///
internal RenderDataDrawingContext()
{
}
#endregion Constructors
#region Public Methods
internal RenderData GetRenderData()
{
return _renderData;
}
///
/// Closes the DrawingContext and flushes the content.
/// Afterwards the DrawingContext can not be used anymore.
/// This call does not require all Push calls to have been Popped.
///
///
/// This call is illegal if this object has already been closed or disposed.
///
public override void Close()
{
VerifyApiNonstructuralChange();
((IDisposable)this).Dispose();
}
///
/// This is the same as the Close call:
/// Closes the DrawingContext and flushes the content.
/// Afterwards the DrawingContext can not be used anymore.
/// This call does not require all Push calls to have been Popped.
///
///
/// This call is illegal if this object has already been closed or disposed.
///
protected override void DisposeCore()
{
if (!_disposed)
{
EnsureCorrectNesting();
CloseCore(_renderData);
_disposed = true;
}
}
#endregion Public Methods
#region Protected Methods
///
/// CloseCore - Implemented be derivees to Close the context.
/// This will only be called once (if ever) per instance.
///
/// The render data produced by this RenderDataDrawingContext.
protected virtual void CloseCore(RenderData renderData) {}
#endregion Protected Methods
#region Private Methods
///
/// EnsureRenderData - this method ensures that the _renderData variable is initialized.
/// The render data's _buffer will be lazily instantiated via the Draw* methods which all
/// call WriteDataRecord.
///
private void EnsureRenderData()
{
if (_renderData == null)
{
_renderData = new RenderData();
}
}
///
/// This verifies that the API can be called for access which doesn't affect structure.
///
protected override void VerifyApiNonstructuralChange()
{
base.VerifyApiNonstructuralChange();
if (_disposed)
{
throw new ObjectDisposedException("RenderDataDrawingContext");
}
}
///
/// This method checks if there were any Push calls that were not matched by
/// the corresponding Pop. If this is the case, this method adds corresponding
/// number of Pop instructions to the render data.
///
private void EnsureCorrectNesting()
{
if (_renderData != null && _stackDepth > 0)
{
int stackDepth = _stackDepth;
for (int i = 0; i < stackDepth; i++)
{
Pop();
}
}
_stackDepth = 0;
}
#endregion Private Methods
#region Fields
private RenderData _renderData;
private bool _disposed;
private int _stackDepth;
#endregion Fields
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SoapSchemaExporter.cs
- SqlTransaction.cs
- ConfigXmlReader.cs
- WindowsListBox.cs
- CurrencyManager.cs
- OdbcConnectionStringbuilder.cs
- EventsTab.cs
- EventItfInfo.cs
- SecureUICommand.cs
- MimeTypeMapper.cs
- Misc.cs
- WorkflowNamespace.cs
- Decorator.cs
- Helpers.cs
- RelationshipManager.cs
- ServicePointManager.cs
- OracleDataReader.cs
- ConfigPathUtility.cs
- DeploymentSectionCache.cs
- SqlDataReaderSmi.cs
- SmiEventSink_DeferedProcessing.cs
- IsolationInterop.cs
- DiagnosticsConfiguration.cs
- ObjectParameter.cs
- EntityExpressionVisitor.cs
- Stylus.cs
- LookupBindingPropertiesAttribute.cs
- WindowsToolbarAsMenu.cs
- Rotation3DAnimationBase.cs
- EdgeProfileValidation.cs
- Pkcs7Recipient.cs
- FixUp.cs
- PauseStoryboard.cs
- followingsibling.cs
- SqlReferenceCollection.cs
- PipelineModuleStepContainer.cs
- PackageFilter.cs
- XmlNodeList.cs
- SqlUtils.cs
- UserControlCodeDomTreeGenerator.cs
- SafeEventLogWriteHandle.cs
- XmlSchemaObjectTable.cs
- QueryAsyncResult.cs
- CursorInteropHelper.cs
- MonthCalendar.cs
- ItemDragEvent.cs
- PropertyTabChangedEvent.cs
- StringValidator.cs
- SQLDateTime.cs
- ContextProperty.cs
- ModifierKeysConverter.cs
- UIElementParagraph.cs
- CollectionsUtil.cs
- WorkflowRuntime.cs
- TypeConstant.cs
- InternalCache.cs
- StateWorkerRequest.cs
- Rectangle.cs
- MouseActionConverter.cs
- ItemsPanelTemplate.cs
- BindingParameterCollection.cs
- Calendar.cs
- FixedFindEngine.cs
- NativeWindow.cs
- cookiecollection.cs
- CodeTypeReference.cs
- SponsorHelper.cs
- AttributeUsageAttribute.cs
- Matrix3DStack.cs
- DBDataPermission.cs
- DesignerActionVerbItem.cs
- UserPreferenceChangingEventArgs.cs
- KeyedHashAlgorithm.cs
- RectValueSerializer.cs
- GradientPanel.cs
- TrustManagerPromptUI.cs
- _TransmitFileOverlappedAsyncResult.cs
- SiteMapPath.cs
- ImageClickEventArgs.cs
- XamlSerializer.cs
- Permission.cs
- TemplatedWizardStep.cs
- CustomCredentialPolicy.cs
- SystemUnicastIPAddressInformation.cs
- Registration.cs
- DataPager.cs
- DynamicILGenerator.cs
- StrongBox.cs
- InfoCardTrace.cs
- BufferedGraphicsContext.cs
- Timer.cs
- RegexCode.cs
- BitmapEffectCollection.cs
- BitmapVisualManager.cs
- ProxyAttribute.cs
- InternalConfigSettingsFactory.cs
- ColumnReorderedEventArgs.cs
- DataIdProcessor.cs
- GridViewItemAutomationPeer.cs
- XmlTextReaderImplHelpers.cs