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
- SecureUICommand.cs
- SafeEventLogWriteHandle.cs
- AuthStoreRoleProvider.cs
- DataSourceXmlSerializationAttribute.cs
- InlineObject.cs
- SerialPinChanges.cs
- HtmlInputFile.cs
- ReflectEventDescriptor.cs
- LinkedList.cs
- TreeNodeSelectionProcessor.cs
- BamlLocalizableResourceKey.cs
- ThreadLocal.cs
- SqlTransaction.cs
- ValidationEventArgs.cs
- RectangleGeometry.cs
- DesignerForm.cs
- Lease.cs
- TextLine.cs
- KoreanLunisolarCalendar.cs
- ApplicationHost.cs
- LongValidatorAttribute.cs
- BasicCellRelation.cs
- ConfigurationStrings.cs
- _FtpDataStream.cs
- StorageEndPropertyMapping.cs
- CodeRegionDirective.cs
- PartialTrustVisibleAssembliesSection.cs
- TrackPointCollection.cs
- CultureData.cs
- IpcManager.cs
- GeometryHitTestResult.cs
- fixedPageContentExtractor.cs
- BehaviorEditorPart.cs
- invalidudtexception.cs
- FullTextBreakpoint.cs
- SqlDuplicator.cs
- SqlLiftIndependentRowExpressions.cs
- TextReader.cs
- CmsUtils.cs
- DiscardableAttribute.cs
- NotCondition.cs
- Serialization.cs
- CachedPathData.cs
- DataControlButton.cs
- ClientSession.cs
- PriorityChain.cs
- isolationinterop.cs
- activationcontext.cs
- SendAgentStatusRequest.cs
- ToolStripContainer.cs
- MediaSystem.cs
- HierarchicalDataBoundControlAdapter.cs
- ExtractorMetadata.cs
- NumberSubstitution.cs
- WebSysDisplayNameAttribute.cs
- RoleManagerSection.cs
- IncrementalReadDecoders.cs
- SecurityState.cs
- ExtractorMetadata.cs
- DataGridViewCellStyleBuilderDialog.cs
- SafeHandle.cs
- RedirectionProxy.cs
- DependencyPropertyChangedEventArgs.cs
- Content.cs
- RelatedPropertyManager.cs
- ProgressiveCrcCalculatingStream.cs
- XslTransform.cs
- CultureInfo.cs
- StreamingContext.cs
- DataGridColumnCollection.cs
- ColorConvertedBitmap.cs
- StyleBamlRecordReader.cs
- IPHostEntry.cs
- HttpRequest.cs
- XPathNavigatorKeyComparer.cs
- GridViewRowPresenter.cs
- ElementUtil.cs
- BackgroundFormatInfo.cs
- HyperLinkColumn.cs
- _AutoWebProxyScriptWrapper.cs
- ActivationArguments.cs
- PermissionSetTriple.cs
- CommandLineParser.cs
- ChangePassword.cs
- ContainerFilterService.cs
- EndpointAddressMessageFilter.cs
- InstanceCollisionException.cs
- BrowserCapabilitiesFactoryBase.cs
- NamespaceDecl.cs
- Window.cs
- StatusBar.cs
- HybridDictionary.cs
- NotImplementedException.cs
- OleDbTransaction.cs
- ResourcePart.cs
- HtmlInputButton.cs
- ScriptManager.cs
- WebPartEditorCancelVerb.cs
- ListViewItem.cs
- ObjectStateEntry.cs