diff --git a/PCK-Studio/Extensions/ColorExtensions.cs b/PCK-Studio/Extensions/ColorExtensions.cs index 8f971123..a1fa0074 100644 --- a/PCK-Studio/Extensions/ColorExtensions.cs +++ b/PCK-Studio/Extensions/ColorExtensions.cs @@ -15,17 +15,10 @@ namespace PckStudio.Extensions return new Vector4(color.R / 255f, color.G / 255f, color.B / 255f, color.A / 255f); } - internal static T Clamp(T value, T min, T max) where T : IComparable - { - if (value.CompareTo(min) < 0) return min; - if (value.CompareTo(max) > 0) return max; - return value; - } - internal static byte BlendValues(float source, float overlay, BlendMode blendType) { - source = Clamp(source, 0.0f, 1.0f); - overlay = Clamp(overlay, 0.0f, 1.0f); + source = MathExtensions.Clamp(source, 0.0f, 1.0f); + overlay = MathExtensions.Clamp(overlay, 0.0f, 1.0f); float resultValue = blendType switch { BlendMode.Add => source + overlay, @@ -37,18 +30,18 @@ namespace PckStudio.Extensions BlendMode.Screen => 1f - (1f - source) * (1f - overlay), _ => 0.0f }; - return (byte)Clamp(resultValue * 255, 0, 255); + return (byte)MathExtensions.Clamp(resultValue * 255, 0, 255); } internal static byte Mix(double ratio, byte val1, byte val2) { - ratio = Clamp(ratio, 0.0, 1.0); + ratio = MathExtensions.Clamp(ratio, 0.0, 1.0); return (byte)(ratio * val1 + (1.0 - ratio) * val2); } internal static Color Mix(this Color c1, Color c2, double ratio) { - ratio = Clamp(ratio, 0.0, 1.0); + ratio = MathExtensions.Clamp(ratio, 0.0, 1.0); return Color.FromArgb(c1.A, Mix(ratio, c1.R, c2.R), Mix(ratio, c1.G, c2.G), diff --git a/PCK-Studio/Extensions/ImageExtensions.cs b/PCK-Studio/Extensions/ImageExtensions.cs index 9b541402..a1d2fd84 100644 --- a/PCK-Studio/Extensions/ImageExtensions.cs +++ b/PCK-Studio/Extensions/ImageExtensions.cs @@ -210,7 +210,7 @@ namespace PckStudio.Extensions internal static Image Interpolate(this Image image1, Image image2, double delta) { - delta = ColorExtensions.Clamp(delta, 0.0, 1.0); + delta = MathExtensions.Clamp(delta, 0.0, 1.0); if (image1 is not Bitmap baseImage || image2 is not Bitmap overlayImage || image1.Width != image2.Width || image1.Height != image2.Height) return image1; diff --git a/PCK-Studio/Extensions/MathExtensions.cs b/PCK-Studio/Extensions/MathExtensions.cs new file mode 100644 index 00000000..d8f29678 --- /dev/null +++ b/PCK-Studio/Extensions/MathExtensions.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace PckStudio.Extensions +{ + internal class MathExtensions + { + internal static T Clamp(T value, T min, T max) where T : IComparable + { + if (value.CompareTo(min) < 0) return min; + if (value.CompareTo(max) > 0) return max; + return value; + } + } +} diff --git a/PCK-Studio/PckStudio.csproj b/PCK-Studio/PckStudio.csproj index 7e358d9a..d80dc62c 100644 --- a/PCK-Studio/PckStudio.csproj +++ b/PCK-Studio/PckStudio.csproj @@ -180,6 +180,7 @@ + Form