Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / Animation / EasingFunctionBase.cs / 1305600 / EasingFunctionBase.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation, 2008
//
// File: EasingFunctionBase.cs
//-----------------------------------------------------------------------------
namespace System.Windows.Media.Animation
{
///
/// This class is the base class for many easing functions.
///
public abstract class EasingFunctionBase : Freezable, IEasingFunction
{
///
/// EasingMode Property
///
public static readonly DependencyProperty EasingModeProperty =
DependencyProperty.Register(
"EasingMode",
typeof(EasingMode),
typeof(EasingFunctionBase),
new PropertyMetadata(EasingMode.EaseOut));
///
/// Specifies the easing behavior.
///
public EasingMode EasingMode
{
get
{
return (EasingMode)GetValue(EasingModeProperty);
}
set
{
SetValueInternal(EasingModeProperty, value);
}
}
///
/// Transforms normalized time to control the pace of an animation.
///
/// normalized time (progress) of the animation
/// transformed progress
/// Uses EasingMode in conjunction with EaseInCore to evaluate the easing function.
public double Ease(double normalizedTime)
{
switch (EasingMode)
{
case EasingMode.EaseIn:
return EaseInCore(normalizedTime);
case EasingMode.EaseOut:
// EaseOut is the same as EaseIn, except time is reversed & the result is flipped.
return 1.0 - EaseInCore(1.0 - normalizedTime);
case EasingMode.EaseInOut:
default:
// EaseInOut is a combination of EaseIn & EaseOut fit to the 0-1, 0-1 range.
return (normalizedTime < 0.5) ?
EaseInCore( normalizedTime * 2.0 ) * 0.5 :
(1.0 - EaseInCore((1.0 - normalizedTime) * 2.0)) * 0.5 + 0.5;
}
}
///
/// Transforms normalized time to control the pace of an animation for the EaseIn EasingMode
///
/// normalized time (progress) of the animation
/// transformed progress
///
/// You only have to specifiy your easing function for the 'EaseIn' case because the implementation
/// of Ease will handle transforming normalizedTime & the result of this method to handle 'EaseOut' & 'EaseInOut'.
///
protected abstract double EaseInCore(double normalizedTime);
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation, 2008
//
// File: EasingFunctionBase.cs
//-----------------------------------------------------------------------------
namespace System.Windows.Media.Animation
{
///
/// This class is the base class for many easing functions.
///
public abstract class EasingFunctionBase : Freezable, IEasingFunction
{
///
/// EasingMode Property
///
public static readonly DependencyProperty EasingModeProperty =
DependencyProperty.Register(
"EasingMode",
typeof(EasingMode),
typeof(EasingFunctionBase),
new PropertyMetadata(EasingMode.EaseOut));
///
/// Specifies the easing behavior.
///
public EasingMode EasingMode
{
get
{
return (EasingMode)GetValue(EasingModeProperty);
}
set
{
SetValueInternal(EasingModeProperty, value);
}
}
///
/// Transforms normalized time to control the pace of an animation.
///
/// normalized time (progress) of the animation
/// transformed progress
/// Uses EasingMode in conjunction with EaseInCore to evaluate the easing function.
public double Ease(double normalizedTime)
{
switch (EasingMode)
{
case EasingMode.EaseIn:
return EaseInCore(normalizedTime);
case EasingMode.EaseOut:
// EaseOut is the same as EaseIn, except time is reversed & the result is flipped.
return 1.0 - EaseInCore(1.0 - normalizedTime);
case EasingMode.EaseInOut:
default:
// EaseInOut is a combination of EaseIn & EaseOut fit to the 0-1, 0-1 range.
return (normalizedTime < 0.5) ?
EaseInCore( normalizedTime * 2.0 ) * 0.5 :
(1.0 - EaseInCore((1.0 - normalizedTime) * 2.0)) * 0.5 + 0.5;
}
}
///
/// Transforms normalized time to control the pace of an animation for the EaseIn EasingMode
///
/// normalized time (progress) of the animation
/// transformed progress
///
/// You only have to specifiy your easing function for the 'EaseIn' case because the implementation
/// of Ease will handle transforming normalizedTime & the result of this method to handle 'EaseOut' & 'EaseInOut'.
///
protected abstract double EaseInCore(double normalizedTime);
}
}
// 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
- ValidationError.cs
- ObservableCollection.cs
- ChangeDirector.cs
- TypedElement.cs
- FormViewPageEventArgs.cs
- TextLineBreak.cs
- ConfigurationManagerInternal.cs
- CodeNamespaceCollection.cs
- NGCSerializationManagerAsync.cs
- ProcessModuleDesigner.cs
- DictionaryBase.cs
- NameNode.cs
- DrawingContextDrawingContextWalker.cs
- ValidationResult.cs
- XmlNode.cs
- MonthChangedEventArgs.cs
- CryptoKeySecurity.cs
- ClosableStream.cs
- DateBoldEvent.cs
- XamlStyleSerializer.cs
- FlowSwitch.cs
- CultureTableRecord.cs
- SystemInfo.cs
- ViewBox.cs
- TypeContext.cs
- DataGridViewCellStyleChangedEventArgs.cs
- PageThemeBuildProvider.cs
- Component.cs
- NavigatingCancelEventArgs.cs
- Publisher.cs
- ObfuscationAttribute.cs
- CfgArc.cs
- SmtpNegotiateAuthenticationModule.cs
- GridViewSortEventArgs.cs
- MinimizableAttributeTypeConverter.cs
- StylusPointDescription.cs
- SHA512CryptoServiceProvider.cs
- ScriptBehaviorDescriptor.cs
- ToolStripPanelCell.cs
- PerfCounters.cs
- ComponentCollection.cs
- ClientCultureInfo.cs
- EntityDataSourceQueryBuilder.cs
- ChangeProcessor.cs
- XmlBinaryReaderSession.cs
- ResolvedKeyFrameEntry.cs
- SchemaMapping.cs
- XmlReaderSettings.cs
- HtmlGenericControl.cs
- InvokerUtil.cs
- NamespaceDecl.cs
- ProtectedProviderSettings.cs
- Pts.cs
- IBuiltInEvidence.cs
- WebServiceAttribute.cs
- GacUtil.cs
- Size.cs
- DictionarySectionHandler.cs
- SimpleBitVector32.cs
- ButtonFieldBase.cs
- FrameworkContentElement.cs
- DataGridLinkButton.cs
- ExpressionDumper.cs
- RTLAwareMessageBox.cs
- DataGridViewComboBoxEditingControl.cs
- XmlSchemaCollection.cs
- Collection.cs
- ForEachAction.cs
- HttpApplicationFactory.cs
- HierarchicalDataSourceDesigner.cs
- SafeLibraryHandle.cs
- Message.cs
- ListBindingConverter.cs
- Figure.cs
- IpcClientChannel.cs
- ClientSponsor.cs
- CodeDomDecompiler.cs
- WebPartTracker.cs
- CustomErrorsSectionWrapper.cs
- QueryStringHandler.cs
- Bezier.cs
- HtmlUtf8RawTextWriter.cs
- RichTextBoxDesigner.cs
- KeyFrames.cs
- SqlMetaData.cs
- XamlSerializerUtil.cs
- IsolatedStoragePermission.cs
- GlyphRunDrawing.cs
- UndoEngine.cs
- BufferedReadStream.cs
- TargetParameterCountException.cs
- EventLog.cs
- MessageBox.cs
- __Filters.cs
- AttributeAction.cs
- PrtCap_Base.cs
- NavigationWindow.cs
- LoginView.cs
- __ConsoleStream.cs
- BaseContextMenu.cs