Skip to content

Commit c1cb2f1

Browse files
Merge pull request #1436 from SixLabors/js/clamp-utils
Introduce Numerics class and Refactor Clamp Utils
2 parents 275f12f + 8d3cdda commit c1cb2f1

File tree

109 files changed

+2157
-1827
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

109 files changed

+2157
-1827
lines changed

src/ImageSharp/Color/Color.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,19 @@ namespace SixLabors.ImageSharp
2727
private Color(byte r, byte g, byte b, byte a)
2828
{
2929
this.data = new Rgba64(
30-
ImageMaths.UpscaleFrom8BitTo16Bit(r),
31-
ImageMaths.UpscaleFrom8BitTo16Bit(g),
32-
ImageMaths.UpscaleFrom8BitTo16Bit(b),
33-
ImageMaths.UpscaleFrom8BitTo16Bit(a));
30+
ColorNumerics.UpscaleFrom8BitTo16Bit(r),
31+
ColorNumerics.UpscaleFrom8BitTo16Bit(g),
32+
ColorNumerics.UpscaleFrom8BitTo16Bit(b),
33+
ColorNumerics.UpscaleFrom8BitTo16Bit(a));
3434
}
3535

3636
[MethodImpl(InliningOptions.ShortMethod)]
3737
private Color(byte r, byte g, byte b)
3838
{
3939
this.data = new Rgba64(
40-
ImageMaths.UpscaleFrom8BitTo16Bit(r),
41-
ImageMaths.UpscaleFrom8BitTo16Bit(g),
42-
ImageMaths.UpscaleFrom8BitTo16Bit(b),
40+
ColorNumerics.UpscaleFrom8BitTo16Bit(r),
41+
ColorNumerics.UpscaleFrom8BitTo16Bit(g),
42+
ColorNumerics.UpscaleFrom8BitTo16Bit(b),
4343
ushort.MaxValue);
4444
}
4545

src/ImageSharp/ColorSpaces/Cmyk.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public Cmyk(float c, float m, float y, float k)
5959
[MethodImpl(InliningOptions.ShortMethod)]
6060
public Cmyk(Vector4 vector)
6161
{
62-
vector = Vector4Utilities.FastClamp(vector, Min, Max);
62+
vector = Numerics.Clamp(vector, Min, Max);
6363
this.C = vector.X;
6464
this.M = vector.Y;
6565
this.Y = vector.Z;

src/ImageSharp/ColorSpaces/Companding/LCompanding.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public static class LCompanding
2424
/// <returns>The <see cref="float"/> representing the linear channel value.</returns>
2525
[MethodImpl(InliningOptions.ShortMethod)]
2626
public static float Expand(float channel)
27-
=> channel <= 0.08F ? (100F * channel) / CieConstants.Kappa : ImageMaths.Pow3((channel + 0.16F) / 1.16F);
27+
=> channel <= 0.08F ? (100F * channel) / CieConstants.Kappa : Numerics.Pow3((channel + 0.16F) / 1.16F);
2828

2929
/// <summary>
3030
/// Compresses an uncompanded channel (linear) to its nonlinear equivalent.

src/ImageSharp/ColorSpaces/Conversion/Implementation/Converters/CieLabToCieXyzConverter.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@ public CieXyz Convert(in CieLab input)
2525
float fx = (a / 500F) + fy;
2626
float fz = fy - (b / 200F);
2727

28-
float fx3 = ImageMaths.Pow3(fx);
29-
float fz3 = ImageMaths.Pow3(fz);
28+
float fx3 = Numerics.Pow3(fx);
29+
float fz3 = Numerics.Pow3(fz);
3030

3131
float xr = fx3 > CieConstants.Epsilon ? fx3 : ((116F * fx) - 16F) / CieConstants.Kappa;
32-
float yr = l > CieConstants.Kappa * CieConstants.Epsilon ? ImageMaths.Pow3((l + 16F) / 116F) : l / CieConstants.Kappa;
32+
float yr = l > CieConstants.Kappa * CieConstants.Epsilon ? Numerics.Pow3((l + 16F) / 116F) : l / CieConstants.Kappa;
3333
float zr = fz3 > CieConstants.Epsilon ? fz3 : ((116F * fz) - 16F) / CieConstants.Kappa;
3434

3535
var wxyz = new Vector3(input.WhitePoint.X, input.WhitePoint.Y, input.WhitePoint.Z);

src/ImageSharp/ColorSpaces/Conversion/Implementation/Converters/CieLuvToCieXyzConverter.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Copyright (c) Six Labors.
1+
// Copyright (c) Six Labors.
22
// Licensed under the Apache License, Version 2.0.
33

44
using System.Runtime.CompilerServices;
@@ -24,7 +24,7 @@ public CieXyz Convert(in CieLuv input)
2424
float v0 = ComputeV0(input.WhitePoint);
2525

2626
float y = l > CieConstants.Kappa * CieConstants.Epsilon
27-
? ImageMaths.Pow3((l + 16) / 116)
27+
? Numerics.Pow3((l + 16) / 116)
2828
: l / CieConstants.Kappa;
2929

3030
float a = ((52 * l / (u + (13 * l * u0))) - 1) / 3;
@@ -71,4 +71,4 @@ private static float ComputeU0(in CieXyz input)
7171
private static float ComputeV0(in CieXyz input)
7272
=> (9 * input.Y) / (input.X + (15 * input.Y) + (3 * input.Z));
7373
}
74-
}
74+
}

src/ImageSharp/ColorSpaces/Conversion/Implementation/Converters/HunterLabToCieXyzConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public CieXyz Convert(in HunterLab input)
2626
float ka = ComputeKa(input.WhitePoint);
2727
float kb = ComputeKb(input.WhitePoint);
2828

29-
float pow = ImageMaths.Pow2(l / 100F);
29+
float pow = Numerics.Pow2(l / 100F);
3030
float sqrtPow = MathF.Sqrt(pow);
3131
float y = pow * yn;
3232

src/ImageSharp/Common/Extensions/ComparableExtensions.cs

Lines changed: 0 additions & 140 deletions
This file was deleted.

src/ImageSharp/Common/Helpers/Buffer2DUtils.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ public static void Convolve4<TPixel>(
5050

5151
for (int i = 0; i < kernelLength; i++)
5252
{
53-
int offsetY = (row + i - radiusY).Clamp(minRow, maxRow);
54-
int offsetX = sourceOffsetColumnBase.Clamp(minColumn, maxColumn);
53+
int offsetY = Numerics.Clamp(row + i - radiusY, minRow, maxRow);
54+
int offsetX = Numerics.Clamp(sourceOffsetColumnBase, minColumn, maxColumn);
5555
Span<TPixel> sourceRowSpan = sourcePixels.GetRowSpan(offsetY);
5656
var currentColor = sourceRowSpan[offsetX].ToVector4();
5757

@@ -93,13 +93,13 @@ public static void Convolve4AndAccumulatePartials(
9393
int radiusX = kernelLength >> 1;
9494
int sourceOffsetColumnBase = column + minColumn;
9595

96-
int offsetY = row.Clamp(minRow, maxRow);
96+
int offsetY = Numerics.Clamp(row, minRow, maxRow);
9797
ref ComplexVector4 sourceRef = ref MemoryMarshal.GetReference(sourceValues.GetRowSpan(offsetY));
9898
ref Complex64 baseRef = ref MemoryMarshal.GetReference(kernel);
9999

100100
for (int x = 0; x < kernelLength; x++)
101101
{
102-
int offsetX = (sourceOffsetColumnBase + x - radiusX).Clamp(minColumn, maxColumn);
102+
int offsetX = Numerics.Clamp(sourceOffsetColumnBase + x - radiusX, minColumn, maxColumn);
103103
vector.Sum(Unsafe.Add(ref baseRef, x) * Unsafe.Add(ref sourceRef, offsetX));
104104
}
105105

0 commit comments

Comments
 (0)