| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Globalization; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using System.Windows.Data; |
| | | |
| | | namespace HMI.Core |
| | | { |
| | | public class CustomFontSizeConverter : IValueConverter |
| | | public class WidthSizeConverter : IValueConverter |
| | | { |
| | | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) |
| | | { |
| | | if (parameter == null) return 15; |
| | | |
| | | string[] ps = parameter.ToString().Split(','); |
| | | double size = double.Parse(ps[0]); |
| | | double baseSize = double.Parse(ps[1]); |
| | | double min = -1, max = -1; |
| | | |
| | | if (ps.Length >= 3) |
| | | { |
| | | min = double.Parse(ps[2]); |
| | | } |
| | | if (ps.Length >= 4) |
| | | { |
| | | max = double.Parse(ps[3]); |
| | | } |
| | | |
| | | if (value is double width) |
| | | { |
| | | double res = CountFontSize(size, width, baseSize); |
| | | res = min > 0 && res < min ? min : res; |
| | | res = max > 0 && res > max ? max : res; |
| | | return res; |
| | | } |
| | | return 15; |
| | | } |
| | | |
| | | public static double CountFontSize(double size, double limit, double baseSize) |
| | | { |
| | | return size * limit / baseSize; |
| | | } |
| | | |
| | | public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) |
| | | { |
| | | throw new NotImplementedException(); |
| | | } |
| | | } |
| | | |
| | | public class HeightSizeConverter : IValueConverter |
| | | { |
| | | public object Convert(object value, Type targetType, object parameter, CultureInfo culture) |
| | | { |
| | |
| | | string[] ps = parameter.ToString().Split(','); |
| | | int size = int.Parse(ps[0]); |
| | | int baseSize = int.Parse(ps[1]); |
| | | if (value is double width) |
| | | double min = -1, max = -1; |
| | | |
| | | if (ps.Length >= 3) |
| | | { |
| | | return CountFontSize(size, width, baseSize); |
| | | min = double.Parse(ps[2]); |
| | | } |
| | | if (ps.Length >= 4) |
| | | { |
| | | max = double.Parse(ps[3]); |
| | | } |
| | | if (value is double height) |
| | | { |
| | | double res = CountFontSize(size, height, baseSize); |
| | | res = min > 0 && res < min ? min : res; |
| | | res = max > 0 && res > max ? max : res; |
| | | return res; |
| | | } |
| | | return 15; |
| | | } |