//------------------------------------------------------------- // // Copyright © Microsoft Corporation. All Rights Reserved. // //------------------------------------------------------------- // @owner=alexgor, deliant //================================================================= // File: MapAreaCoordinatesConverter.cs // // Namespace: System.Web.UI.DataVisualization.Charting // // Classes: MapAreaCoordinatesConverter // // Purpose: Design-time converter for map area coordinates // // Reviewed: AG - August 7, 2002 // //=================================================================== using System.ComponentModel; using System.Globalization; namespace System.Web.UI.DataVisualization.Charting { /// /// Converter for the array of map area coordinates /// internal class MapAreaCoordinatesConverter : ArrayConverter { /// /// Overrides the CanConvertFrom method of TypeConverter. /// The ITypeDescriptorContext interface provides the context for the /// conversion. Typically this interface is used at design time to /// provide information about the design-time container. /// /// Descriptor context. /// Convertion source type. /// Indicates if convertion is possible. public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (sourceType == typeof(string)) { return true; } return base.CanConvertFrom(context, sourceType); } /// /// Overrides the ConvertFrom method of TypeConverter. /// Convert from comma separated values in the string. /// /// Descriptor context. /// Culture information. /// Value to convert from. /// Indicates if convertion is possible. public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { // Can convert from string where each array element is separated by comma string stringValue = value as string; if (stringValue != null) { string[] values = stringValue.Split(new char[] { ',' }); float[] array = new float[values.Length]; for (int index = 0; index < values.Length; index++) { array[index] = float.Parse(values[index], System.Globalization.CultureInfo.CurrentCulture); } return array; } // Call base class return base.ConvertFrom(context, culture, value); } /// /// Overrides the ConvertTo method of TypeConverter. /// Convert coordinates array to comma separated values in string. /// /// Descriptor context. /// Culture information. /// Value to convert. /// Convertion destination type. /// Converted object. public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType) { if (destinationType == typeof(string)) { float[] array = (float[])value; string result = ""; foreach (float d in array) { result += d.ToString(System.Globalization.CultureInfo.CurrentCulture) + ","; } return result.TrimEnd(','); } return base.ConvertTo(context, culture, value, destinationType); } } }