Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Input / ManipulationInertiaStartingEventArgs.cs / 1305600 / ManipulationInertiaStartingEventArgs.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Windows; using System.Windows.Input.Manipulations; using System.Windows.Media; using MS.Internal; namespace System.Windows.Input { ////// Provides information about the start of the inertia phase of the manipulation. /// public sealed class ManipulationInertiaStartingEventArgs : InputEventArgs { ////// Instantiates a new instance of this class. /// internal ManipulationInertiaStartingEventArgs( ManipulationDevice manipulationDevice, int timestamp, IInputElement manipulationContainer, Point origin, ManipulationVelocities initialVelocities, bool isInInertia) : base(manipulationDevice, timestamp) { if (initialVelocities == null) { throw new ArgumentNullException("initialVelocities"); } RoutedEvent = Manipulation.ManipulationInertiaStartingEvent; ManipulationContainer = manipulationContainer; ManipulationOrigin = origin; InitialVelocities = initialVelocities; _isInInertia = isInInertia; } ////// Invokes a handler of this event. /// protected override void InvokeEventHandler(Delegate genericHandler, object genericTarget) { if (genericHandler == null) { throw new ArgumentNullException("genericHandler"); } if (genericTarget == null) { throw new ArgumentNullException("genericTarget"); } if (RoutedEvent == Manipulation.ManipulationInertiaStartingEvent) { ((EventHandler)genericHandler)(genericTarget, this); } else { base.InvokeEventHandler(genericHandler, genericTarget); } } /// /// Defines the coordinate space of the other properties. /// public IInputElement ManipulationContainer { get; private set; } ////// Returns the value of the origin. /// public Point ManipulationOrigin { get; set; } ////// Returns the default, calculated velocities of the current manipulation. /// ////// These values can be used to populate the initial velocity properties in /// the various behaviors that can be set. /// public ManipulationVelocities InitialVelocities { get; private set; } ////// The desired behavior for how position changes due to inertia. /// public InertiaTranslationBehavior TranslationBehavior { get { if (!IsBehaviorSet(Behaviors.Translation)) { _translationBehavior = new InertiaTranslationBehavior(InitialVelocities.LinearVelocity); SetBehavior(Behaviors.Translation); } return _translationBehavior; } set { _translationBehavior = value; } } ////// The desired behavior for how the angle changes due to inertia. /// public InertiaRotationBehavior RotationBehavior { get { if (!IsBehaviorSet(Behaviors.Rotation)) { _rotationBehavior = new InertiaRotationBehavior(InitialVelocities.AngularVelocity); SetBehavior(Behaviors.Rotation); } return _rotationBehavior; } set { _rotationBehavior = value; } } ////// The desired behavior for how the size changes due to inertia. /// public InertiaExpansionBehavior ExpansionBehavior { get { if (!IsBehaviorSet(Behaviors.Expansion)) { _expansionBehavior = new InertiaExpansionBehavior(InitialVelocities.ExpansionVelocity); SetBehavior(Behaviors.Expansion); } return _expansionBehavior; } set { _expansionBehavior = value; } } ////// Method to cancel the Manipulation /// ///A bool indicating the success of Cancel public bool Cancel() { if (!_isInInertia) { RequestedCancel = true; return true; } return false; } ////// A handler Requested to cancel the Manipulation /// internal bool RequestedCancel { get; private set; } ////// The Manipulators for this manipulation. /// public IEnumerableManipulators { get { if (_manipulators == null) { _manipulators = ((ManipulationDevice)Device).GetManipulatorsReadOnly(); } return _manipulators; } } /// /// Supplies additional parameters for calculating the inertia. /// /// The new parameter. [Browsable(false)] public void SetInertiaParameter(InertiaParameters2D parameter) { if (parameter == null) { throw new ArgumentNullException("parameter"); } if (_inertiaParameters == null) { _inertiaParameters = new List(); } _inertiaParameters.Add(parameter); } internal bool CanBeginInertia() { if (_inertiaParameters != null && _inertiaParameters.Count > 0) { return true; } if (_translationBehavior != null && _translationBehavior.CanUseForInertia()) { return true; } if (_rotationBehavior != null && _rotationBehavior.CanUseForInertia()) { return true; } if (_expansionBehavior != null && _expansionBehavior.CanUseForInertia()) { return true; } return false; } internal void ApplyParameters(InertiaProcessor2D processor) { processor.InitialOriginX = (float)ManipulationOrigin.X; processor.InitialOriginY = (float)ManipulationOrigin.Y; ManipulationVelocities velocities = InitialVelocities; InertiaTranslationBehavior.ApplyParameters(_translationBehavior, processor, velocities.LinearVelocity); InertiaRotationBehavior.ApplyParameters(_rotationBehavior, processor, velocities.AngularVelocity); InertiaExpansionBehavior.ApplyParameters(_expansionBehavior, processor, velocities.ExpansionVelocity); if (_inertiaParameters != null) { for (int i = 0, count = _inertiaParameters.Count; i < count; i++) { processor.SetParameters(_inertiaParameters[i]); } } } private bool IsBehaviorSet(Behaviors behavior) { return ((_behaviors & behavior) == behavior); } private void SetBehavior(Behaviors behavior) { _behaviors |= behavior; } private List _inertiaParameters; private InertiaTranslationBehavior _translationBehavior; private InertiaRotationBehavior _rotationBehavior; private InertiaExpansionBehavior _expansionBehavior; private Behaviors _behaviors = Behaviors.None; private bool _isInInertia = false; // This is true when it is a second level inertia (inertia due to inertia). private IEnumerable _manipulators; [Flags] private enum Behaviors { None = 0, Translation = 0x00000001, Rotation = 0x00000002, Expansion = 0x00000004 } } } // 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
- WebPartUtil.cs
- XPathScanner.cs
- Inflater.cs
- HostingPreferredMapPath.cs
- WebBrowserContainer.cs
- HttpResponse.cs
- ReadOnlyObservableCollection.cs
- XmlDocumentViewSchema.cs
- Property.cs
- DateTimeFormatInfo.cs
- ExclusiveTcpListener.cs
- WindowsStatusBar.cs
- InternalTypeHelper.cs
- LocalFileSettingsProvider.cs
- VideoDrawing.cs
- ButtonFlatAdapter.cs
- XmlLinkedNode.cs
- Directory.cs
- ColumnPropertiesGroup.cs
- CommonDialog.cs
- TypedLocationWrapper.cs
- MergablePropertyAttribute.cs
- StateRuntime.cs
- versioninfo.cs
- OdbcTransaction.cs
- RijndaelManaged.cs
- DesignerRegionMouseEventArgs.cs
- DynamicResourceExtensionConverter.cs
- RelationshipType.cs
- EditorAttribute.cs
- DbModificationClause.cs
- ManipulationDeltaEventArgs.cs
- GetMemberBinder.cs
- LoginViewDesigner.cs
- TableLayoutPanelCellPosition.cs
- PtsHost.cs
- VBIdentifierDesigner.xaml.cs
- EntityCommand.cs
- ObjectSet.cs
- Misc.cs
- Type.cs
- FtpCachePolicyElement.cs
- RuleSettingsCollection.cs
- PeerNameRegistration.cs
- ConfigurationSettings.cs
- DataGrid.cs
- TextTreeInsertUndoUnit.cs
- TypeUtil.cs
- BitmapSourceSafeMILHandle.cs
- Odbc32.cs
- NameValueCollection.cs
- SearchForVirtualItemEventArgs.cs
- QuaternionAnimationBase.cs
- XmlLangPropertyAttribute.cs
- HighContrastHelper.cs
- SizeAnimationUsingKeyFrames.cs
- UIElementParaClient.cs
- DiagnosticTraceSource.cs
- ErrorView.xaml.cs
- HtmlInputRadioButton.cs
- FileLevelControlBuilderAttribute.cs
- ConnectionStringSettingsCollection.cs
- HtmlForm.cs
- RegisteredHiddenField.cs
- ReverseInheritProperty.cs
- Message.cs
- UTF32Encoding.cs
- Material.cs
- PrinterSettings.cs
- BindingValueChangedEventArgs.cs
- ConfigurationSection.cs
- SecurityTokenException.cs
- GetLedgerEntryForRecipientRequest.cs
- OdbcUtils.cs
- MessagePropertyVariants.cs
- DesignerEditorPartChrome.cs
- RegexCaptureCollection.cs
- ResourceBinder.cs
- TemplatePagerField.cs
- Comparer.cs
- ScriptManagerProxy.cs
- MimeMapping.cs
- ProcessInfo.cs
- ConsoleEntryPoint.cs
- UnitySerializationHolder.cs
- NavigationCommands.cs
- MemberMaps.cs
- ShellProvider.cs
- XmlDocumentSurrogate.cs
- SiteMapHierarchicalDataSourceView.cs
- Knowncolors.cs
- DrawingCollection.cs
- ConsoleKeyInfo.cs
- XmlSerializerNamespaces.cs
- TypeDependencyAttribute.cs
- UndirectedGraph.cs
- DbLambda.cs
- EastAsianLunisolarCalendar.cs
- DataListCommandEventArgs.cs
- SqlXml.cs