Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / Animation / KeyTimeConverter.cs / 1305600 / KeyTimeConverter.cs
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation, 2001-2003
//
// File: KeyTimeConverter.cs
//-----------------------------------------------------------------------------
using System;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Globalization;
using System.Reflection;
using System.Windows.Media.Animation;
using System.Security;
namespace System.Windows
{
///
///
///
public class KeyTimeConverter : TypeConverter
{
#region Data
private static char[] _percentCharacter = new char[] { '%' };
#endregion
///
/// Returns whether or not this class can convert from a given type
/// to an instance of a KeyTime.
///
public override bool CanConvertFrom(
ITypeDescriptorContext typeDescriptorContext,
Type type)
{
if (type == typeof(string))
{
return true;
}
else
{
return base.CanConvertFrom(
typeDescriptorContext,
type);
}
}
///
/// Returns whether or not this class can convert from an instance of a
/// KeyTime to a given type.
///
public override bool CanConvertTo(
ITypeDescriptorContext typeDescriptorContext,
Type type)
{
if ( type == typeof(InstanceDescriptor)
|| type == typeof(string))
{
return true;
}
else
{
return base.CanConvertTo(
typeDescriptorContext,
type);
}
}
///
///
///
public override object ConvertFrom(
ITypeDescriptorContext typeDescriptorContext,
CultureInfo cultureInfo,
object value)
{
string stringValue = value as string;
if (stringValue != null)
{
stringValue = stringValue.Trim();
if (stringValue == "Uniform")
{
return KeyTime.Uniform;
}
else if (stringValue == "Paced")
{
return KeyTime.Paced;
}
else if (stringValue[stringValue.Length - 1] == _percentCharacter[0])
{
stringValue = stringValue.TrimEnd(_percentCharacter);
double doubleValue = (double)TypeDescriptor.GetConverter(
typeof(double)).ConvertFrom(
typeDescriptorContext,
cultureInfo,
stringValue);
if (doubleValue == 0.0)
{
return KeyTime.FromPercent(0.0);
}
else if (doubleValue == 100.0)
{
return KeyTime.FromPercent(1.0);
}
else
{
return KeyTime.FromPercent(doubleValue / 100.0);
}
}
else
{
TimeSpan timeSpanValue = (TimeSpan)TypeDescriptor.GetConverter(
typeof(TimeSpan)).ConvertFrom(
typeDescriptorContext,
cultureInfo,
stringValue);
return KeyTime.FromTimeSpan(timeSpanValue);
}
}
return base.ConvertFrom(
typeDescriptorContext,
cultureInfo,
value);
}
///
///
///
///
/// Critical: calls InstanceDescriptor ctor which LinkDemands
/// PublicOK: can only make an InstanceDescriptor for KeyTime, not an arbitrary class
///
[SecurityCritical]
public override object ConvertTo(
ITypeDescriptorContext typeDescriptorContext,
CultureInfo cultureInfo,
object value,
Type destinationType)
{
if ( value != null
&& value is KeyTime)
{
KeyTime keyTime = (KeyTime)value;
if (destinationType == typeof(InstanceDescriptor))
{
MemberInfo mi;
switch (keyTime.Type)
{
case KeyTimeType.Percent:
mi = typeof(KeyTime).GetMethod("FromPercent", new Type[] { typeof(double) });
return new InstanceDescriptor(mi, new object[] { keyTime.Percent });
case KeyTimeType.TimeSpan:
mi = typeof(KeyTime).GetMethod("FromTimeSpan", new Type[] { typeof(TimeSpan) });
return new InstanceDescriptor(mi, new object[] { keyTime.TimeSpan });
case KeyTimeType.Uniform:
mi = typeof(KeyTime).GetProperty("Uniform");
return new InstanceDescriptor(mi, null);
case KeyTimeType.Paced:
mi = typeof(KeyTime).GetProperty("Paced");
return new InstanceDescriptor(mi, null);
}
}
else if (destinationType == typeof(String))
{
switch (keyTime.Type)
{
case KeyTimeType.Uniform:
return "Uniform";
case KeyTimeType.Paced:
return "Paced";
case KeyTimeType.Percent:
string returnValue = (string)TypeDescriptor.GetConverter(
typeof(Double)).ConvertTo(
typeDescriptorContext,
cultureInfo,
keyTime.Percent * 100.0,
destinationType);
return returnValue + _percentCharacter[0].ToString();
case KeyTimeType.TimeSpan:
return TypeDescriptor.GetConverter(
typeof(TimeSpan)).ConvertTo(
typeDescriptorContext,
cultureInfo,
keyTime.TimeSpan,
destinationType);
}
}
}
return base.ConvertTo(
typeDescriptorContext,
cultureInfo,
value,
destinationType);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
// Microsoft Avalon
// Copyright (c) Microsoft Corporation, 2001-2003
//
// File: KeyTimeConverter.cs
//-----------------------------------------------------------------------------
using System;
using System.ComponentModel;
using System.ComponentModel.Design.Serialization;
using System.Globalization;
using System.Reflection;
using System.Windows.Media.Animation;
using System.Security;
namespace System.Windows
{
///
///
///
public class KeyTimeConverter : TypeConverter
{
#region Data
private static char[] _percentCharacter = new char[] { '%' };
#endregion
///
/// Returns whether or not this class can convert from a given type
/// to an instance of a KeyTime.
///
public override bool CanConvertFrom(
ITypeDescriptorContext typeDescriptorContext,
Type type)
{
if (type == typeof(string))
{
return true;
}
else
{
return base.CanConvertFrom(
typeDescriptorContext,
type);
}
}
///
/// Returns whether or not this class can convert from an instance of a
/// KeyTime to a given type.
///
public override bool CanConvertTo(
ITypeDescriptorContext typeDescriptorContext,
Type type)
{
if ( type == typeof(InstanceDescriptor)
|| type == typeof(string))
{
return true;
}
else
{
return base.CanConvertTo(
typeDescriptorContext,
type);
}
}
///
///
///
public override object ConvertFrom(
ITypeDescriptorContext typeDescriptorContext,
CultureInfo cultureInfo,
object value)
{
string stringValue = value as string;
if (stringValue != null)
{
stringValue = stringValue.Trim();
if (stringValue == "Uniform")
{
return KeyTime.Uniform;
}
else if (stringValue == "Paced")
{
return KeyTime.Paced;
}
else if (stringValue[stringValue.Length - 1] == _percentCharacter[0])
{
stringValue = stringValue.TrimEnd(_percentCharacter);
double doubleValue = (double)TypeDescriptor.GetConverter(
typeof(double)).ConvertFrom(
typeDescriptorContext,
cultureInfo,
stringValue);
if (doubleValue == 0.0)
{
return KeyTime.FromPercent(0.0);
}
else if (doubleValue == 100.0)
{
return KeyTime.FromPercent(1.0);
}
else
{
return KeyTime.FromPercent(doubleValue / 100.0);
}
}
else
{
TimeSpan timeSpanValue = (TimeSpan)TypeDescriptor.GetConverter(
typeof(TimeSpan)).ConvertFrom(
typeDescriptorContext,
cultureInfo,
stringValue);
return KeyTime.FromTimeSpan(timeSpanValue);
}
}
return base.ConvertFrom(
typeDescriptorContext,
cultureInfo,
value);
}
///
///
///
///
/// Critical: calls InstanceDescriptor ctor which LinkDemands
/// PublicOK: can only make an InstanceDescriptor for KeyTime, not an arbitrary class
///
[SecurityCritical]
public override object ConvertTo(
ITypeDescriptorContext typeDescriptorContext,
CultureInfo cultureInfo,
object value,
Type destinationType)
{
if ( value != null
&& value is KeyTime)
{
KeyTime keyTime = (KeyTime)value;
if (destinationType == typeof(InstanceDescriptor))
{
MemberInfo mi;
switch (keyTime.Type)
{
case KeyTimeType.Percent:
mi = typeof(KeyTime).GetMethod("FromPercent", new Type[] { typeof(double) });
return new InstanceDescriptor(mi, new object[] { keyTime.Percent });
case KeyTimeType.TimeSpan:
mi = typeof(KeyTime).GetMethod("FromTimeSpan", new Type[] { typeof(TimeSpan) });
return new InstanceDescriptor(mi, new object[] { keyTime.TimeSpan });
case KeyTimeType.Uniform:
mi = typeof(KeyTime).GetProperty("Uniform");
return new InstanceDescriptor(mi, null);
case KeyTimeType.Paced:
mi = typeof(KeyTime).GetProperty("Paced");
return new InstanceDescriptor(mi, null);
}
}
else if (destinationType == typeof(String))
{
switch (keyTime.Type)
{
case KeyTimeType.Uniform:
return "Uniform";
case KeyTimeType.Paced:
return "Paced";
case KeyTimeType.Percent:
string returnValue = (string)TypeDescriptor.GetConverter(
typeof(Double)).ConvertTo(
typeDescriptorContext,
cultureInfo,
keyTime.Percent * 100.0,
destinationType);
return returnValue + _percentCharacter[0].ToString();
case KeyTimeType.TimeSpan:
return TypeDescriptor.GetConverter(
typeof(TimeSpan)).ConvertTo(
typeDescriptorContext,
cultureInfo,
keyTime.TimeSpan,
destinationType);
}
}
}
return base.ConvertTo(
typeDescriptorContext,
cultureInfo,
value,
destinationType);
}
}
}
// 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
- DbConnectionPoolGroup.cs
- CopyOnWriteList.cs
- XmlSchemaExternal.cs
- EditorAttribute.cs
- __FastResourceComparer.cs
- WinHttpWebProxyFinder.cs
- GridViewCellAutomationPeer.cs
- PolyBezierSegment.cs
- rsa.cs
- VoiceChangeEventArgs.cs
- PermissionRequestEvidence.cs
- ControlUtil.cs
- PageBreakRecord.cs
- DataGridViewRowsAddedEventArgs.cs
- datacache.cs
- WindowsToolbar.cs
- ToolBarButton.cs
- HwndHost.cs
- GridViewUpdateEventArgs.cs
- MutexSecurity.cs
- OwnerDrawPropertyBag.cs
- FlowDocumentPage.cs
- ConfigViewGenerator.cs
- UrlPath.cs
- WebExceptionStatus.cs
- HashCoreRequest.cs
- TableRow.cs
- DataErrorValidationRule.cs
- WebPartManager.cs
- AtomParser.cs
- ScrollItemPatternIdentifiers.cs
- TraceFilter.cs
- NavigationProgressEventArgs.cs
- XpsDocument.cs
- DataListItemEventArgs.cs
- IntranetCredentialPolicy.cs
- ManagedWndProcTracker.cs
- ContextMenu.cs
- TraceContextEventArgs.cs
- ConnectionsZone.cs
- SoapCodeExporter.cs
- PerfCounters.cs
- versioninfo.cs
- StrokeNodeData.cs
- PackageRelationship.cs
- Executor.cs
- ToolStripDropDownButton.cs
- SystemPens.cs
- LocatorGroup.cs
- SerializerProvider.cs
- ClassHandlersStore.cs
- DbReferenceCollection.cs
- ScaleTransform.cs
- CodeChecksumPragma.cs
- UnsafeNativeMethods.cs
- controlskin.cs
- ChtmlCommandAdapter.cs
- CommandField.cs
- HtmlInputRadioButton.cs
- WindowsGrip.cs
- DataError.cs
- SignatureHelper.cs
- ResourceDisplayNameAttribute.cs
- HttpListenerRequest.cs
- UriExt.cs
- ConstraintStruct.cs
- COSERVERINFO.cs
- DirectoryRedirect.cs
- CustomErrorsSectionWrapper.cs
- ResourcesBuildProvider.cs
- SecurityTokenSerializer.cs
- ImageInfo.cs
- BuildResult.cs
- TableSectionStyle.cs
- WorkItem.cs
- DocumentScope.cs
- WindowsStatic.cs
- Function.cs
- EntityDescriptor.cs
- TransformedBitmap.cs
- ManualResetEvent.cs
- EncoderReplacementFallback.cs
- Fx.cs
- ArrayConverter.cs
- WinEventWrap.cs
- DataChangedEventManager.cs
- TextShapeableCharacters.cs
- VirtualizingPanel.cs
- ResXResourceWriter.cs
- OracleBoolean.cs
- Mappings.cs
- DataTableReader.cs
- EntityFunctions.cs
- __Error.cs
- ToolStripItemTextRenderEventArgs.cs
- TextBlock.cs
- ConfigurationPermission.cs
- VisualTransition.cs
- ShaderEffect.cs
- DbDataSourceEnumerator.cs