mirror of
https://github.com/BililiveRecorder/BililiveRecorder.git
synced 2024-11-16 11:42:22 +08:00
36 lines
1.2 KiB
C#
36 lines
1.2 KiB
C#
|
using System;
|
||
|
using System.Globalization;
|
||
|
using System.Windows.Data;
|
||
|
|
||
|
namespace BililiveRecorder.WPF.Converters
|
||
|
{
|
||
|
public class ByteUnitsConverter : IValueConverter
|
||
|
{
|
||
|
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||
|
{
|
||
|
const long Bytes = 1;
|
||
|
const long KiB = Bytes * 1024;
|
||
|
const long MiB = KiB * 1024;
|
||
|
const long GiB = MiB * 1024;
|
||
|
const long TiB = GiB * 1024;
|
||
|
const double d_KiB = KiB;
|
||
|
const double d_MiB = MiB;
|
||
|
const double d_GiB = GiB;
|
||
|
const double d_TiB = TiB;
|
||
|
|
||
|
var input = (long)value;
|
||
|
|
||
|
return input switch
|
||
|
{
|
||
|
< KiB => $"{input} {nameof(Bytes)}",
|
||
|
< MiB => $"{input / d_KiB:F2} {nameof(KiB)}",
|
||
|
< GiB => $"{input / d_MiB:F2} {nameof(MiB)}",
|
||
|
< TiB => $"{input / d_GiB:F2} {nameof(GiB)}",
|
||
|
_ => $"{input / d_TiB:F2} {nameof(TiB)}"
|
||
|
};
|
||
|
}
|
||
|
|
||
|
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) => throw new NotImplementedException();
|
||
|
}
|
||
|
}
|