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
- PreviewKeyDownEventArgs.cs
- CaseExpr.cs
- FileSystemWatcher.cs
- DesignerActionUIStateChangeEventArgs.cs
- RtfToXamlLexer.cs
- TreeBuilderXamlTranslator.cs
- RectAnimationBase.cs
- UrlAuthFailureHandler.cs
- WebHttpSecurity.cs
- UrlMappingCollection.cs
- CheckBox.cs
- TextSchema.cs
- HScrollProperties.cs
- ConnectionStringsExpressionBuilder.cs
- recordstatescratchpad.cs
- ObjectDataSourceSelectingEventArgs.cs
- AnnotationObservableCollection.cs
- XsltConvert.cs
- TextModifierScope.cs
- ListViewItemEventArgs.cs
- HttpServerChannel.cs
- AddInServer.cs
- PropertyGridView.cs
- SmtpReplyReader.cs
- StaticFileHandler.cs
- WebReference.cs
- DesignerContextDescriptor.cs
- StyleBamlTreeBuilder.cs
- AssociationTypeEmitter.cs
- BamlTreeUpdater.cs
- IntSecurity.cs
- StreamWriter.cs
- BaseParser.cs
- MgmtConfigurationRecord.cs
- InstanceKey.cs
- CreateUserErrorEventArgs.cs
- WindowsNonControl.cs
- ResolvedKeyFrameEntry.cs
- IncomingWebRequestContext.cs
- CookielessHelper.cs
- ServiceOperationListItemList.cs
- XmlUrlResolver.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- PageAsyncTaskManager.cs
- Sql8ConformanceChecker.cs
- RootProfilePropertySettingsCollection.cs
- KeyGestureConverter.cs
- DurableRuntimeValidator.cs
- ClientSettings.cs
- HttpListenerContext.cs
- TextTreeFixupNode.cs
- RemotingSurrogateSelector.cs
- BitmapCache.cs
- WindowsRebar.cs
- sortedlist.cs
- BitmapEffectInput.cs
- DbSource.cs
- ToolStripScrollButton.cs
- BitHelper.cs
- ConfigurationManager.cs
- UpdatePanelTriggerCollection.cs
- HtmlWindowCollection.cs
- AggregateNode.cs
- RecordManager.cs
- MaskPropertyEditor.cs
- StringToken.cs
- JsonReaderDelegator.cs
- Model3DGroup.cs
- LogExtentCollection.cs
- UnmanagedMemoryStream.cs
- CodeNamespaceImport.cs
- AddInStore.cs
- VariableQuery.cs
- IntellisenseTextBox.cs
- XmlReflectionMember.cs
- ConfigurationSectionCollection.cs
- PageSetupDialog.cs
- ObjectDataSourceMethodEventArgs.cs
- PositiveTimeSpanValidator.cs
- BidOverLoads.cs
- CultureInfoConverter.cs
- OledbConnectionStringbuilder.cs
- Literal.cs
- _NtlmClient.cs
- AccessorTable.cs
- MsmqChannelFactoryBase.cs
- FileUtil.cs
- PropertyItemInternal.cs
- CodeDefaultValueExpression.cs
- XmlSchemaDatatype.cs
- _IPv6Address.cs
- PointUtil.cs
- EventWaitHandleSecurity.cs
- StateBag.cs
- LayoutEvent.cs
- SByteConverter.cs
- fixedPageContentExtractor.cs
- XmlEncodedRawTextWriter.cs
- DisplayMemberTemplateSelector.cs
- ConfigurationFileMap.cs