Browse Source

Fix float clamp accessibility.

af/merge-core
James Jackson-South 6 years ago
parent
commit
c8a2c079e2
  1. 2
      src/ImageSharp.Drawing/Processing/PatternBrush.cs
  2. 12
      src/ImageSharp.Drawing/Processing/TextGraphicsOptions.cs
  3. 29
      src/ImageSharp.Drawing/Utils/NumberUtils.cs

2
src/ImageSharp.Drawing/Processing/PatternBrush.cs

@ -158,7 +158,7 @@ namespace SixLabors.ImageSharp.Processing
for (int i = 0; i < scanline.Length; i++)
{
amountSpan[i] = (scanline[i] * this.Options.BlendPercentage).Clamp(0, 1);
amountSpan[i] = NumberUtils.ClampFloat(scanline[i] * this.Options.BlendPercentage, 0, 1F);
int patternX = (x + i) % this.pattern.Columns;
overlaySpan[i] = this.pattern[patternY, patternX];

12
src/ImageSharp.Drawing/Processing/TextGraphicsOptions.cs

@ -1,4 +1,4 @@
// Copyright (c) Six Labors and contributors.
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using SixLabors.Fonts;
@ -11,13 +11,13 @@ namespace SixLabors.ImageSharp.Processing
/// </summary>
public struct TextGraphicsOptions
{
private const int DefaultTextDpi = 72;
/// <summary>
/// Represents the default <see cref="TextGraphicsOptions"/>.
/// </summary>
public static readonly TextGraphicsOptions Default = new TextGraphicsOptions(true);
private const int DefaultTextDpi = 72;
private float? blendPercentage;
private int? antialiasSubpixelDepth;
@ -51,7 +51,7 @@ namespace SixLabors.ImageSharp.Processing
this.antialiasSubpixelDepth = 16;
this.ColorBlendingMode = PixelColorBlendingMode.Normal;
this.AlphaCompositionMode = PixelAlphaCompositionMode.SrcOver;
this.blendPercentage = 1;
this.blendPercentage = 1F;
this.antialias = enableAntialiasing;
this.dpiX = DefaultTextDpi;
this.dpiY = DefaultTextDpi;
@ -70,7 +70,7 @@ namespace SixLabors.ImageSharp.Processing
/// <summary>
/// Gets or sets a value indicating the blending percentage to apply to the drawing operation
/// </summary>
public float BlendPercentage { get => (this.blendPercentage ?? 1).Clamp(0, 1); set => this.blendPercentage = value; }
public float BlendPercentage { get => this.blendPercentage ?? 1F; set => this.blendPercentage = NumberUtils.ClampFloat(value, 0, 1F); }
// In the future we could expose a PixelBlender<TPixel> directly on here
// or some forms of PixelBlender factory for each pixel type. Will need
@ -160,4 +160,4 @@ namespace SixLabors.ImageSharp.Processing
};
}
}
}
}

29
src/ImageSharp.Drawing/Utils/NumberUtils.cs

@ -0,0 +1,29 @@
// Copyright (c) Six Labors and contributors.
// Licensed under the Apache License, Version 2.0.
using System.Runtime.CompilerServices;
namespace SixLabors.ImageSharp
{
/// <summary>
/// Utility methods for numeric primitives.
/// </summary>
internal static class NumberUtils
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static float ClampFloat(float value, float min, float max)
{
if (value >= max)
{
return max;
}
if (value <= min)
{
return min;
}
return value;
}
}
}
Loading…
Cancel
Save