CPF/CPF.ReoGrid/Utility/MeasureToolkit.cs
2024-06-24 10:15:59 +08:00

83 lines
1.6 KiB
C#

using System;
using CPF.ReoGrid.Rendering;
namespace CPF.ReoGrid.Utility
{
internal static class MeasureToolkit
{
public static float InchToPixel(float inch, float dpi)
{
return inch * dpi;
}
public static float PixelToInch(float px, float dpi)
{
return px / dpi;
}
public static float InchToPixel(float inch)
{
return MeasureToolkit.InchToPixel(inch, 96f);
}
public static float PixelToInch(float px)
{
return MeasureToolkit.PixelToInch(px, 96f);
}
public static float InchToCM(float inch)
{
return inch * 2.54f;
}
public static float CMToInch(float cm)
{
return cm / 2.54f;
}
public static float CMToPixel(float cm, float dpi)
{
return cm * dpi / 2.54f;
}
public static float PixelToCM(float px, float dpi)
{
return px * 2.54f / dpi;
}
public static float CMTOPixel(float cm)
{
return MeasureToolkit.CMToPixel(cm, 96f);
}
public static float PixelToCM(float px)
{
return MeasureToolkit.PixelToCM(px, 96f);
}
public static float EMUToPixel(int emu, float dpi)
{
return (float)emu / 914400f * dpi;
}
public static int PixelToEMU(float pixel, float dpi)
{
return (int)(pixel * 914400f / dpi);
}
public static T ScaleByDPI<T>(T val)
{
double num = (double)PlatformUtility.GetDPI();
double num2 = num / 96.0;
double num3 = (double)Convert.ChangeType(val, typeof(double));
return (T)((object)Convert.ChangeType(num3 * num2, typeof(T)));
}
private const float _cm_pre_inch = 2.54f;
private const float _windows_standard_dpi = 96f;
public const int _emi_in_inch = 914400;
}
}