aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Model/Drawing
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Model/Drawing')
-rw-r--r--MediaBrowser.Model/Drawing/DrawingUtils.cs91
-rw-r--r--MediaBrowser.Model/Drawing/ImageFormat.cs30
-rw-r--r--MediaBrowser.Model/Drawing/ImageOrientation.cs15
-rw-r--r--MediaBrowser.Model/Drawing/ImageSize.cs93
4 files changed, 229 insertions, 0 deletions
diff --git a/MediaBrowser.Model/Drawing/DrawingUtils.cs b/MediaBrowser.Model/Drawing/DrawingUtils.cs
new file mode 100644
index 000000000..e6235cb06
--- /dev/null
+++ b/MediaBrowser.Model/Drawing/DrawingUtils.cs
@@ -0,0 +1,91 @@
+namespace MediaBrowser.Model.Drawing
+{
+ /// <summary>
+ /// Class DrawingUtils
+ /// </summary>
+ public static class DrawingUtils
+ {
+ /// <summary>
+ /// Resizes a set of dimensions
+ /// </summary>
+ /// <param name="size">The original size object</param>
+ /// <param name="width">A new fixed width, if desired</param>
+ /// <param name="height">A new fixed height, if desired</param>
+ /// <param name="maxWidth">A max fixed width, if desired</param>
+ /// <param name="maxHeight">A max fixed height, if desired</param>
+ /// <returns>A new size object</returns>
+ public static ImageSize Resize(ImageSize size,
+ double width,
+ double height,
+ double maxWidth,
+ double maxHeight)
+ {
+ double newWidth = size.Width;
+ double newHeight = size.Height;
+
+ if (width > 0 && height > 0)
+ {
+ newWidth = width;
+ newHeight = height;
+ }
+
+ else if (height > 0)
+ {
+ newWidth = GetNewWidth(newHeight, newWidth, height);
+ newHeight = height;
+ }
+
+ else if (width > 0)
+ {
+ newHeight = GetNewHeight(newHeight, newWidth, width);
+ newWidth = width;
+ }
+
+ if (maxHeight > 0 && maxHeight < newHeight)
+ {
+ newWidth = GetNewWidth(newHeight, newWidth, maxHeight);
+ newHeight = maxHeight;
+ }
+
+ if (maxWidth > 0 && maxWidth < newWidth)
+ {
+ newHeight = GetNewHeight(newHeight, newWidth, maxWidth);
+ newWidth = maxWidth;
+ }
+
+ return new ImageSize { Width = newWidth, Height = newHeight };
+ }
+
+ /// <summary>
+ /// Gets the new width.
+ /// </summary>
+ /// <param name="currentHeight">Height of the current.</param>
+ /// <param name="currentWidth">Width of the current.</param>
+ /// <param name="newHeight">The new height.</param>
+ /// <returns>System.Double.</returns>
+ private static double GetNewWidth(double currentHeight, double currentWidth, double newHeight)
+ {
+ double scaleFactor = newHeight;
+ scaleFactor /= currentHeight;
+ scaleFactor *= currentWidth;
+
+ return scaleFactor;
+ }
+
+ /// <summary>
+ /// Gets the new height.
+ /// </summary>
+ /// <param name="currentHeight">Height of the current.</param>
+ /// <param name="currentWidth">Width of the current.</param>
+ /// <param name="newWidth">The new width.</param>
+ /// <returns>System.Double.</returns>
+ private static double GetNewHeight(double currentHeight, double currentWidth, double newWidth)
+ {
+ double scaleFactor = newWidth;
+ scaleFactor /= currentWidth;
+ scaleFactor *= currentHeight;
+
+ return scaleFactor;
+ }
+ }
+}
diff --git a/MediaBrowser.Model/Drawing/ImageFormat.cs b/MediaBrowser.Model/Drawing/ImageFormat.cs
new file mode 100644
index 000000000..0172c9754
--- /dev/null
+++ b/MediaBrowser.Model/Drawing/ImageFormat.cs
@@ -0,0 +1,30 @@
+
+namespace MediaBrowser.Model.Drawing
+{
+ /// <summary>
+ /// Enum ImageOutputFormat
+ /// </summary>
+ public enum ImageFormat
+ {
+ /// <summary>
+ /// The BMP
+ /// </summary>
+ Bmp,
+ /// <summary>
+ /// The GIF
+ /// </summary>
+ Gif,
+ /// <summary>
+ /// The JPG
+ /// </summary>
+ Jpg,
+ /// <summary>
+ /// The PNG
+ /// </summary>
+ Png,
+ /// <summary>
+ /// The webp
+ /// </summary>
+ Webp
+ }
+}
diff --git a/MediaBrowser.Model/Drawing/ImageOrientation.cs b/MediaBrowser.Model/Drawing/ImageOrientation.cs
new file mode 100644
index 000000000..c320a8224
--- /dev/null
+++ b/MediaBrowser.Model/Drawing/ImageOrientation.cs
@@ -0,0 +1,15 @@
+
+namespace MediaBrowser.Model.Drawing
+{
+ public enum ImageOrientation
+ {
+ TopLeft = 1,
+ TopRight = 2,
+ BottomRight = 3,
+ BottomLeft = 4,
+ LeftTop = 5,
+ RightTop = 6,
+ RightBottom = 7,
+ LeftBottom = 8,
+ }
+}
diff --git a/MediaBrowser.Model/Drawing/ImageSize.cs b/MediaBrowser.Model/Drawing/ImageSize.cs
new file mode 100644
index 000000000..c2b0291bd
--- /dev/null
+++ b/MediaBrowser.Model/Drawing/ImageSize.cs
@@ -0,0 +1,93 @@
+using System.Globalization;
+
+namespace MediaBrowser.Model.Drawing
+{
+ /// <summary>
+ /// Struct ImageSize
+ /// </summary>
+ public struct ImageSize
+ {
+ private double _height;
+ private double _width;
+
+ /// <summary>
+ /// Gets or sets the height.
+ /// </summary>
+ /// <value>The height.</value>
+ public double Height
+ {
+ get
+ {
+ return _height;
+ }
+ set
+ {
+ _height = value;
+ }
+ }
+
+ /// <summary>
+ /// Gets or sets the width.
+ /// </summary>
+ /// <value>The width.</value>
+ public double Width
+ {
+ get { return _width; }
+ set { _width = value; }
+ }
+
+ public bool Equals(ImageSize size)
+ {
+ return Width.Equals(size.Width) && Height.Equals(size.Height);
+ }
+
+ public override string ToString()
+ {
+ return string.Format("{0}-{1}", Width, Height);
+ }
+
+ public ImageSize(string value)
+ {
+ _width = 0;
+
+ _height = 0;
+
+ ParseValue(value);
+ }
+
+ public ImageSize(int width, int height)
+ {
+ _width = width;
+ _height = height;
+ }
+
+ public ImageSize(double width, double height)
+ {
+ _width = width;
+ _height = height;
+ }
+
+ private void ParseValue(string value)
+ {
+ if (!string.IsNullOrEmpty(value))
+ {
+ string[] parts = value.Split('-');
+
+ if (parts.Length == 2)
+ {
+ double val;
+
+ if (double.TryParse(parts[0], NumberStyles.Any, CultureInfo.InvariantCulture, out val))
+ {
+ _width = val;
+ }
+
+ if (double.TryParse(parts[1], NumberStyles.Any, CultureInfo.InvariantCulture, out val))
+ {
+ _height = val;
+ }
+ }
+ }
+ }
+ }
+} \ No newline at end of file