using System; using System.Drawing; namespace MediaBrowser.Api.Drawing { public static class DrawingUtils { /// /// Resizes a set of dimensions /// public static Size Resize(int currentWidth, int currentHeight, int? width, int? height, int? maxWidth, int? maxHeight) { return Resize(new Size(currentWidth, currentHeight), width, height, maxWidth, maxHeight); } /// /// Resizes a set of dimensions /// /// The original size object /// A new fixed width, if desired /// A new fixed neight, if desired /// A max fixed width, if desired /// A max fixed height, if desired /// A new size object public static Size Resize(Size size, int? width, int? height, int? maxWidth, int? maxHeight) { decimal newWidth = size.Width; decimal newHeight = size.Height; if (width.HasValue && height.HasValue) { newWidth = width.Value; newHeight = height.Value; } else if (height.HasValue) { newWidth = GetNewWidth(newHeight, newWidth, height.Value); newHeight = height.Value; } else if (width.HasValue) { newHeight = GetNewHeight(newHeight, newWidth, width.Value); newWidth = width.Value; } if (maxHeight.HasValue && maxHeight < newHeight) { newWidth = GetNewWidth(newHeight, newWidth, maxHeight.Value); newHeight = maxHeight.Value; } if (maxWidth.HasValue && maxWidth < newWidth) { newHeight = GetNewHeight(newHeight, newWidth, maxWidth.Value); newWidth = maxWidth.Value; } return new Size(Convert.ToInt32(newWidth), Convert.ToInt32(newHeight)); } private static decimal GetNewWidth(decimal currentHeight, decimal currentWidth, int newHeight) { decimal scaleFactor = newHeight; scaleFactor /= currentHeight; scaleFactor *= currentWidth; return scaleFactor; } private static decimal GetNewHeight(decimal currentHeight, decimal currentWidth, int newWidth) { decimal scaleFactor = newWidth; scaleFactor /= currentWidth; scaleFactor *= currentHeight; return scaleFactor; } } }