Browse Source

make .FromVector4() destructive

af/merge-core
Anton Firszov 7 years ago
parent
commit
56f00399f5
  1. 1
      ImageSharp.sln.DotSettings
  2. 20
      src/ImageSharp/Common/Helpers/Guard.cs
  3. 4
      src/ImageSharp/PixelFormats/PixelImplementations/Generated/Argb32.PixelOperations.Generated.cs
  4. 4
      src/ImageSharp/PixelFormats/PixelImplementations/Generated/Bgr24.PixelOperations.Generated.cs
  5. 4
      src/ImageSharp/PixelFormats/PixelImplementations/Generated/Bgra32.PixelOperations.Generated.cs
  6. 4
      src/ImageSharp/PixelFormats/PixelImplementations/Generated/Rgb24.PixelOperations.Generated.cs
  7. 4
      src/ImageSharp/PixelFormats/PixelImplementations/Generated/_Common.ttinclude
  8. 4
      src/ImageSharp/PixelFormats/PixelImplementations/Rgba32.PixelOperations.cs
  9. 2
      src/ImageSharp/PixelFormats/PixelImplementations/RgbaVector.PixelOperations.cs
  10. 12
      src/ImageSharp/PixelFormats/PixelOperations{TPixel}.cs

1
ImageSharp.sln.DotSettings

@ -382,6 +382,7 @@
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpRenamePlacementToArrangementMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpUseContinuousIndentInsideBracesMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAlwaysTreatStructAsNotReorderableMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>

20
src/ImageSharp/Common/Helpers/Guard.cs

@ -257,6 +257,26 @@ namespace SixLabors.ImageSharp
}
}
/// <summary>
/// Verifies that the 'destination' span is not shorter than 'source'.
/// </summary>
/// <typeparam name="TSource">The source element type</typeparam>
/// <typeparam name="TDest">The destination element type</typeparam>
/// <param name="source">The source span</param>
/// <param name="destination">The destination span</param>
/// <param name="destinationParamName">The name of the argument for 'destination'</param>
[MethodImpl(InliningOptions.ShortMethod)]
public static void DestinationShouldNotBeTooShort<TSource, TDest>(
Span<TSource> source,
Span<TDest> destination,
string destinationParamName)
{
if (destination.Length < source.Length)
{
ThrowArgumentException($"Destination span is too short!", destinationParamName);
}
}
/// <summary>
/// Verifies, that the `source` span has the length of 'minLength', or longer.
/// </summary>

4
src/ImageSharp/PixelFormats/PixelImplementations/Generated/Argb32.PixelOperations.Generated.cs

@ -42,7 +42,7 @@ namespace SixLabors.ImageSharp.PixelFormats
}
/// <inheritdoc />
internal override void FromVector4(Configuration configuration, ReadOnlySpan<Vector4> sourceVectors, Span<Argb32> destPixels)
internal override void FromVector4(Configuration configuration, Span<Vector4> sourceVectors, Span<Argb32> destPixels)
{
Vector4Converters.RgbaCompatible.FromVector4(configuration, this, sourceVectors, destPixels, false);
}
@ -54,7 +54,7 @@ namespace SixLabors.ImageSharp.PixelFormats
}
/// <inheritdoc />
internal override void FromScaledVector4(Configuration configuration, ReadOnlySpan<Vector4> sourceVectors, Span<Argb32> destPixels)
internal override void FromScaledVector4(Configuration configuration, Span<Vector4> sourceVectors, Span<Argb32> destPixels)
{
Vector4Converters.RgbaCompatible.FromVector4(configuration, this, sourceVectors, destPixels, true);
}

4
src/ImageSharp/PixelFormats/PixelImplementations/Generated/Bgr24.PixelOperations.Generated.cs

@ -42,7 +42,7 @@ namespace SixLabors.ImageSharp.PixelFormats
}
/// <inheritdoc />
internal override void FromVector4(Configuration configuration, ReadOnlySpan<Vector4> sourceVectors, Span<Bgr24> destPixels)
internal override void FromVector4(Configuration configuration, Span<Vector4> sourceVectors, Span<Bgr24> destPixels)
{
Vector4Converters.RgbaCompatible.FromVector4(configuration, this, sourceVectors, destPixels, false);
}
@ -54,7 +54,7 @@ namespace SixLabors.ImageSharp.PixelFormats
}
/// <inheritdoc />
internal override void FromScaledVector4(Configuration configuration, ReadOnlySpan<Vector4> sourceVectors, Span<Bgr24> destPixels)
internal override void FromScaledVector4(Configuration configuration, Span<Vector4> sourceVectors, Span<Bgr24> destPixels)
{
Vector4Converters.RgbaCompatible.FromVector4(configuration, this, sourceVectors, destPixels, true);
}

4
src/ImageSharp/PixelFormats/PixelImplementations/Generated/Bgra32.PixelOperations.Generated.cs

@ -42,7 +42,7 @@ namespace SixLabors.ImageSharp.PixelFormats
}
/// <inheritdoc />
internal override void FromVector4(Configuration configuration, ReadOnlySpan<Vector4> sourceVectors, Span<Bgra32> destPixels)
internal override void FromVector4(Configuration configuration, Span<Vector4> sourceVectors, Span<Bgra32> destPixels)
{
Vector4Converters.RgbaCompatible.FromVector4(configuration, this, sourceVectors, destPixels, false);
}
@ -54,7 +54,7 @@ namespace SixLabors.ImageSharp.PixelFormats
}
/// <inheritdoc />
internal override void FromScaledVector4(Configuration configuration, ReadOnlySpan<Vector4> sourceVectors, Span<Bgra32> destPixels)
internal override void FromScaledVector4(Configuration configuration, Span<Vector4> sourceVectors, Span<Bgra32> destPixels)
{
Vector4Converters.RgbaCompatible.FromVector4(configuration, this, sourceVectors, destPixels, true);
}

4
src/ImageSharp/PixelFormats/PixelImplementations/Generated/Rgb24.PixelOperations.Generated.cs

@ -42,7 +42,7 @@ namespace SixLabors.ImageSharp.PixelFormats
}
/// <inheritdoc />
internal override void FromVector4(Configuration configuration, ReadOnlySpan<Vector4> sourceVectors, Span<Rgb24> destPixels)
internal override void FromVector4(Configuration configuration, Span<Vector4> sourceVectors, Span<Rgb24> destPixels)
{
Vector4Converters.RgbaCompatible.FromVector4(configuration, this, sourceVectors, destPixels, false);
}
@ -54,7 +54,7 @@ namespace SixLabors.ImageSharp.PixelFormats
}
/// <inheritdoc />
internal override void FromScaledVector4(Configuration configuration, ReadOnlySpan<Vector4> sourceVectors, Span<Rgb24> destPixels)
internal override void FromScaledVector4(Configuration configuration, Span<Vector4> sourceVectors, Span<Rgb24> destPixels)
{
Vector4Converters.RgbaCompatible.FromVector4(configuration, this, sourceVectors, destPixels, true);
}

4
src/ImageSharp/PixelFormats/PixelImplementations/Generated/_Common.ttinclude

@ -111,7 +111,7 @@ using System.Runtime.InteropServices;
{
#>
/// <inheritdoc />
internal override void FromVector4(Configuration configuration, ReadOnlySpan<Vector4> sourceVectors, Span<<#=pixelType#>> destPixels)
internal override void FromVector4(Configuration configuration, Span<Vector4> sourceVectors, Span<<#=pixelType#>> destPixels)
{
Vector4Converters.RgbaCompatible.FromVector4(configuration, this, sourceVectors, destPixels, false);
}
@ -123,7 +123,7 @@ using System.Runtime.InteropServices;
}
/// <inheritdoc />
internal override void FromScaledVector4(Configuration configuration, ReadOnlySpan<Vector4> sourceVectors, Span<<#=pixelType#>> destPixels)
internal override void FromScaledVector4(Configuration configuration, Span<Vector4> sourceVectors, Span<<#=pixelType#>> destPixels)
{
Vector4Converters.RgbaCompatible.FromVector4(configuration, this, sourceVectors, destPixels, true);
}

4
src/ImageSharp/PixelFormats/PixelImplementations/Rgba32.PixelOperations.cs

@ -36,7 +36,7 @@ namespace SixLabors.ImageSharp.PixelFormats
/// <inheritdoc />
internal override void FromVector4(
Configuration configuration,
ReadOnlySpan<Vector4> sourceVectors,
Span<Vector4> sourceVectors,
Span<Rgba32> destPixels)
{
Guard.DestinationShouldNotBeTooShort(sourceVectors, destPixels, nameof(destPixels));
@ -60,7 +60,7 @@ namespace SixLabors.ImageSharp.PixelFormats
/// <inheritdoc />
internal override void FromScaledVector4(
Configuration configuration,
ReadOnlySpan<Vector4> sourceVectors,
Span<Vector4> sourceVectors,
Span<Rgba32> destinationColors)
{
this.FromVector4(configuration, sourceVectors, destinationColors);

2
src/ImageSharp/PixelFormats/PixelImplementations/RgbaVector.PixelOperations.cs

@ -20,7 +20,7 @@ namespace SixLabors.ImageSharp.PixelFormats
/// <inheritdoc />
internal override void FromScaledVector4(
Configuration configuration,
ReadOnlySpan<Vector4> sourceVectors,
Span<Vector4> sourceVectors,
Span<RgbaVector> destinationColors)
{
Guard.DestinationShouldNotBeTooShort(sourceVectors, destinationColors, nameof(destinationColors));

12
src/ImageSharp/PixelFormats/PixelOperations{TPixel}.cs

@ -9,6 +9,14 @@ using System.Runtime.InteropServices;
namespace SixLabors.ImageSharp.PixelFormats
{
internal enum PixelConversionModifiers
{
None = 0,
Scale = 1 << 0,
Premultiply = 1 << 1,
SRgbCompand = 1 << 2,
}
/// <summary>
/// A stateless class implementing Strategy Pattern for batched pixel-data conversion operations
/// for pixel buffers of type <typeparamref name="TPixel"/>.
@ -30,7 +38,7 @@ namespace SixLabors.ImageSharp.PixelFormats
/// <param name="destPixels">The <see cref="Span{T}"/> to the destination colors.</param>
internal virtual void FromVector4(
Configuration configuration,
ReadOnlySpan<Vector4> sourceVectors,
Span<Vector4> sourceVectors,
Span<TPixel> destPixels)
{
Guard.NotNull(configuration, nameof(configuration));
@ -64,7 +72,7 @@ namespace SixLabors.ImageSharp.PixelFormats
/// <param name="destinationColors">The <see cref="Span{T}"/> to the destination colors.</param>
internal virtual void FromScaledVector4(
Configuration configuration,
ReadOnlySpan<Vector4> sourceVectors,
Span<Vector4> sourceVectors,
Span<TPixel> destinationColors)
{
Guard.NotNull(configuration, nameof(configuration));

Loading…
Cancel
Save