Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Media / Effects / BitmapEffectDrawing.cs / 2 / BitmapEffectDrawing.cs
using System; using System.Diagnostics; using System.Collections.Generic; using MS.Internal; using MS.Internal.Collections; using MS.Internal.PresentationCore; using MS.Utility; using System.Windows; using System.Windows.Media; using System.Windows.Media.Composition; namespace System.Windows.Media.Effects { ////// This class is used by Bitmap Effects to marshal the world transforms /// and the corresponding realizations (bitmaps) for each world transform /// internal sealed partial class BitmapEffectDrawing : Drawing { #region Constructors ////// Default BitmapEffectDrawing constructor. /// Constructs an object with all properties set to their default values /// internal BitmapEffectDrawing() { } #endregion #region Internal methods ////// BitmapEffectDrawing should never have WalkCurrentValue called /// internal override void WalkCurrentValue(DrawingContextWalker ctx) { Debug.Assert(false); } ////// /// internal override void PrecomputeCore() { } ////// Add the transform if it is a new one and mark it for update /// internal override void UpdateRealizations(RealizationContext realizationContext) { Matrix transform = realizationContext.TransformStack.Peek(); if (realizationContext.BaseTransform.IsIdentity == false) { transform *= realizationContext.BaseTransform; } int index = ContainsTransform(transform); if (index == -1) { WorldTransforms.Add(new MatrixTransform(transform)); index = WorldTransforms.Count - 1; } _transformsToKeep.Add(index); _windowClip.Union(realizationContext.WindowClip); } ////// Given the transform, find the index of the corresponding effect drawing /// If there is none, return -1 /// /// ///internal int ContainsTransform(Matrix transform) { int count = Drawings.Count; TransformCollection worldTransforms = WorldTransforms; for (int i = 0; i < count; i++) { Matrix worldTransform = worldTransforms.Internal_GetItem(i).Value; if (worldTransform == transform) { return i; } } return -1; } /// /// Remove all transforms that are not marked to keep. /// If fRemoveDrawings is true, remove the drawings as well /// internal void UpdateTransformAndDrawingLists(bool fRemoveDrawings) { TransformCollection worldTransforms = WorldTransforms; DrawingCollection drawings = Drawings; for (int i = WorldTransforms.Count - 1; i >= 0; i--) { if (!_transformsToKeep.Contains(i)) { worldTransforms.RemoveAt(i); if (fRemoveDrawings) { drawings.RemoveAt(i); } } } _transformsToKeep.Clear(); } ////// Clear both the Drawings and Transform lists /// internal void Clear(DUCE.Channel channel) { TransformCollection vWorldTransforms = WorldTransforms; DrawingCollection vDrawings = Drawings; for (int j = vWorldTransforms.Count - 1; j >= 0; j--) { vWorldTransforms.Internal_GetItem(j).ReleaseOnChannelCore(channel); vDrawings.Internal_GetItem(j).ReleaseOnChannelCore(channel); } vDrawings._collection.Clear(); vWorldTransforms._collection.Clear(); } #endregion Internal methods #region Internal properties internal bool ScheduleForUpdates { get { return _scheduleForUpdates; } set { _scheduleForUpdates = value; } } ////// Gets the window clip /// internal Rect WindowClip { get { return _windowClip; } set { _windowClip = value; } } internal bool IsOnChannel { get { return _duceResource.IsOnAnyChannel; } } #endregion Internal properties #region Private Fields List_transformsToKeep = new List (); bool _scheduleForUpdates = true; Rect _windowClip = Rect.Empty; #endregion } } // 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
- ScriptReferenceEventArgs.cs
- WindowsSlider.cs
- TextContainerChangeEventArgs.cs
- TextTreeUndoUnit.cs
- ReadOnlyCollectionBuilder.cs
- FileUtil.cs
- SlotInfo.cs
- ElementNotAvailableException.cs
- CompositeKey.cs
- CommandHelper.cs
- HttpCapabilitiesSectionHandler.cs
- SchemaAttDef.cs
- BehaviorEditorPart.cs
- documentation.cs
- LockRecursionException.cs
- ToolbarAUtomationPeer.cs
- MailAddress.cs
- WorkflowServiceHostFactory.cs
- XLinq.cs
- SingleAnimation.cs
- SystemIPInterfaceStatistics.cs
- XmlSortKey.cs
- SqlConnectionPoolProviderInfo.cs
- SqlDeflator.cs
- ChtmlCommandAdapter.cs
- _TransmitFileOverlappedAsyncResult.cs
- PerspectiveCamera.cs
- FaultCallbackWrapper.cs
- CommandExpr.cs
- DataControlPagerLinkButton.cs
- TaskDesigner.cs
- BooleanSwitch.cs
- Calendar.cs
- DesignerCategoryAttribute.cs
- UrlAuthFailedErrorFormatter.cs
- CodeCompileUnit.cs
- GridViewDeletedEventArgs.cs
- ITextView.cs
- InfoCardListRequest.cs
- ObjectDataSourceWizardForm.cs
- CleanUpVirtualizedItemEventArgs.cs
- SafeRegistryHandle.cs
- DecodeHelper.cs
- brushes.cs
- ViewStateException.cs
- QuaternionKeyFrameCollection.cs
- HtmlTextViewAdapter.cs
- ByteStreamMessageEncoder.cs
- UnauthorizedAccessException.cs
- RIPEMD160Managed.cs
- KnownBoxes.cs
- PropertyChangingEventArgs.cs
- GenericRootAutomationPeer.cs
- CounterCreationDataCollection.cs
- MetadataFile.cs
- UiaCoreApi.cs
- RichTextBoxConstants.cs
- RadioButtonDesigner.cs
- VisualBasicSettings.cs
- StructuralCache.cs
- LassoHelper.cs
- WsiProfilesElementCollection.cs
- UnsafeMethods.cs
- ParserExtension.cs
- XmlBinaryReader.cs
- KerberosRequestorSecurityToken.cs
- ObjectListFieldCollection.cs
- glyphs.cs
- XhtmlBasicListAdapter.cs
- RenderingEventArgs.cs
- PrePostDescendentsWalker.cs
- SystemIPInterfaceStatistics.cs
- Shape.cs
- DispatcherOperation.cs
- XhtmlBasicPanelAdapter.cs
- ErrorWrapper.cs
- FigureParaClient.cs
- UnsafeNativeMethods.cs
- SafeLibraryHandle.cs
- Stack.cs
- ListParaClient.cs
- PrinterSettings.cs
- PointCollectionValueSerializer.cs
- UpdateProgress.cs
- ManagedWndProcTracker.cs
- DefaultTextStoreTextComposition.cs
- SoapSchemaMember.cs
- RootContext.cs
- FieldToken.cs
- XmlSecureResolver.cs
- RenamedEventArgs.cs
- Matrix3D.cs
- _ProxyChain.cs
- GridViewDeleteEventArgs.cs
- ProcessModuleCollection.cs
- CodeObjectCreateExpression.cs
- Win32Native.cs
- WsdlParser.cs
- CompilerResults.cs
- X500Name.cs