public static double GetFitToAreaScalingFactor(SD.Size input, SD.Size max, bool only_scale_down) { if (only_scale_down && input.FitsInside(max)) { return 1.0; } return GetFitToAreaScalingFactor(input.Width, input.Height, max.Width, max.Height); }
public static SD.SizeF ResizeDownToFit(SD.SizeF original, SD.SizeF max) { if (original.FitsInside(max)) { return original; } else { double scale = GetFitToAreaScalingFactor(original, max); return original.MultiplyBy((float) scale); } }