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
- Expressions.cs
- HTMLTagNameToTypeMapper.cs
- ErrorStyle.cs
- BitmapEffectDrawing.cs
- FusionWrap.cs
- MonitoringDescriptionAttribute.cs
- ElementMarkupObject.cs
- InternalUserCancelledException.cs
- LinqDataSource.cs
- MetadataCacheItem.cs
- DetailsViewInsertEventArgs.cs
- ItemCollection.cs
- CompressStream.cs
- ModuleBuilderData.cs
- Point3DCollection.cs
- PassportAuthenticationModule.cs
- NgenServicingAttributes.cs
- DataGridViewImageColumn.cs
- OrderPreservingPipeliningMergeHelper.cs
- EntityDataSourceWrapper.cs
- ParserStreamGeometryContext.cs
- WebScriptEnablingElement.cs
- XsdDataContractExporter.cs
- Emitter.cs
- CommandCollectionEditor.cs
- XmlSchemaInferenceException.cs
- DiscreteKeyFrames.cs
- EmulateRecognizeCompletedEventArgs.cs
- DbInsertCommandTree.cs
- Geometry.cs
- SubclassTypeValidator.cs
- ProxyDataContractResolver.cs
- Visual3DCollection.cs
- UserInitiatedNavigationPermission.cs
- DispatcherFrame.cs
- COM2IDispatchConverter.cs
- PathNode.cs
- EmissiveMaterial.cs
- TypeReference.cs
- ProgressBarAutomationPeer.cs
- DocumentsTrace.cs
- CompModSwitches.cs
- ByValueEqualityComparer.cs
- PluggableProtocol.cs
- DecimalConstantAttribute.cs
- WindowsFormsLinkLabel.cs
- DataGridViewColumnCollectionDialog.cs
- TreeBuilderXamlTranslator.cs
- SQLUtility.cs
- SuppressMessageAttribute.cs
- ImportRequest.cs
- CodeFieldReferenceExpression.cs
- xmlsaver.cs
- PriorityItem.cs
- PtsContext.cs
- WindowsStartMenu.cs
- CodeObjectCreateExpression.cs
- SystemWebCachingSectionGroup.cs
- TextTreePropertyUndoUnit.cs
- KnowledgeBase.cs
- DiagnosticsConfigurationHandler.cs
- Evidence.cs
- AccessibleObject.cs
- TabControlToolboxItem.cs
- WeakReferenceEnumerator.cs
- PriorityRange.cs
- ResourceExpressionBuilder.cs
- xdrvalidator.cs
- TextControl.cs
- UnSafeCharBuffer.cs
- ListViewInsertEventArgs.cs
- HMACSHA1.cs
- PreloadHost.cs
- HandleCollector.cs
- Expander.cs
- MenuEventArgs.cs
- TrackingValidationObjectDictionary.cs
- XmlDictionaryReader.cs
- TreeSet.cs
- ListViewGroupItemCollection.cs
- DecoderExceptionFallback.cs
- EngineSite.cs
- ImageSourceConverter.cs
- PersonalizationState.cs
- MouseButtonEventArgs.cs
- NonClientArea.cs
- AuthorizationRule.cs
- WebPartVerbsEventArgs.cs
- DataGridViewRowsAddedEventArgs.cs
- _NativeSSPI.cs
- WrappedIUnknown.cs
- StringSource.cs
- SrgsToken.cs
- DrawListViewItemEventArgs.cs
- InkCanvas.cs
- DockProviderWrapper.cs
- TextModifierScope.cs
- PeerObject.cs
- EventRoute.cs
- CardSpaceException.cs