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
- ResumeStoryboard.cs
- RewritingSimplifier.cs
- DESCryptoServiceProvider.cs
- BrowserPolicyValidator.cs
- ObjectCache.cs
- DataControlLinkButton.cs
- TextServicesHost.cs
- GradientBrush.cs
- BasePropertyDescriptor.cs
- DesignBindingPropertyDescriptor.cs
- XPathChildIterator.cs
- StylusPointPropertyInfo.cs
- TemplateBindingExpression.cs
- DefaultAsyncDataDispatcher.cs
- RMPermissions.cs
- UrlPath.cs
- IndentedWriter.cs
- CodePageEncoding.cs
- Command.cs
- formatter.cs
- DispatcherObject.cs
- MissingSatelliteAssemblyException.cs
- SortedDictionary.cs
- GorillaCodec.cs
- QilTypeChecker.cs
- DataGridViewDataErrorEventArgs.cs
- ObjectStateManager.cs
- SigningDialog.cs
- RadioButton.cs
- HMACSHA1.cs
- TextRangeEditTables.cs
- MSG.cs
- MdImport.cs
- HttpCookie.cs
- SystemIPGlobalStatistics.cs
- ObjectView.cs
- IconEditor.cs
- SamlAssertion.cs
- EnlistmentState.cs
- ReferencedAssembly.cs
- AutomationProperty.cs
- CompiledQueryCacheKey.cs
- SoapHttpTransportImporter.cs
- VScrollBar.cs
- SinglePageViewer.cs
- BitmapFrame.cs
- LazyTextWriterCreator.cs
- DeploymentExceptionMapper.cs
- ClientConfigurationSystem.cs
- Operators.cs
- InstanceLockQueryResult.cs
- Binding.cs
- HwndSubclass.cs
- AmbiguousMatchException.cs
- FileNameEditor.cs
- OutKeywords.cs
- ButtonBaseAdapter.cs
- RegexCode.cs
- ParameterRetriever.cs
- JobInputBins.cs
- JournalEntryStack.cs
- ImplicitInputBrush.cs
- PageThemeBuildProvider.cs
- TableRow.cs
- XmlExceptionHelper.cs
- DataGridCommandEventArgs.cs
- XmlCharType.cs
- ManipulationDelta.cs
- SoapObjectReader.cs
- DateTimeStorage.cs
- HwndProxyElementProvider.cs
- LeafCellTreeNode.cs
- OleDbRowUpdatingEvent.cs
- PrimaryKeyTypeConverter.cs
- Function.cs
- X509CertificateTrustedIssuerElement.cs
- FileDialogPermission.cs
- WriterOutput.cs
- AstTree.cs
- PriorityQueue.cs
- WorkflowOwnerAsyncResult.cs
- ProfileSection.cs
- DataFormats.cs
- TemplatedControlDesigner.cs
- FontEmbeddingManager.cs
- PropertyDescriptorComparer.cs
- WebPartZone.cs
- TreeNodeEventArgs.cs
- UnsafeNativeMethodsMilCoreApi.cs
- RoutedCommand.cs
- _UriSyntax.cs
- CreateUserWizardStep.cs
- CorrelationManager.cs
- HtmlEncodedRawTextWriter.cs
- FontWeights.cs
- EdmSchemaAttribute.cs
- CustomErrorsSectionWrapper.cs
- WindowsScroll.cs
- CorrelationInitializer.cs
- SiteMapPath.cs