using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
using AIStudio.Wpf.DiagramDesigner.Additionals.Controls;
using AIStudio.Wpf.DiagramDesigner;

namespace AIStudio.Wpf.DiagramDesigner.Additionals.Converters
{
    public class CountShiftConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            if (values != null && values.Length > 2)
            {
                try
                {

                    var diagram = values[0] as FrameworkElement;
                    var zoomValue = (double)values[1];
                    var pageunit = (PageUnit)values[2];
                    var unit = Unit.Cm;
                    if (pageunit > PageUnit.km)
                    {
                        unit = Unit.Inch;
                    }
                    Vector vector = System.Windows.Media.VisualTreeHelper.GetOffset(diagram);

                    if (parameter?.ToString() == "Y")
                    {
                        var value = 0 - (unit == Unit.Cm ? ScreenHelper.WidthToCm(vector.Y - 20) : ScreenHelper.WidthToInch(vector.Y - 20)) / zoomValue;
                        return value;
                    }
                    else
                    {
                        var value = 0 - (unit == Unit.Cm ? ScreenHelper.WidthToCm(vector.X - 20) : ScreenHelper.WidthToInch(vector.X - 20)) / zoomValue;
                        return value;
                    }
                }
                catch { }
            }
            return 0;
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}
