|
|
@ -6,6 +6,7 @@ |
|
|
namespace ImageSharp |
|
|
namespace ImageSharp |
|
|
{ |
|
|
{ |
|
|
using System; |
|
|
using System; |
|
|
|
|
|
using System.Diagnostics; |
|
|
using System.Runtime.CompilerServices; |
|
|
using System.Runtime.CompilerServices; |
|
|
using System.Runtime.InteropServices; |
|
|
using System.Runtime.InteropServices; |
|
|
|
|
|
|
|
|
@ -106,38 +107,33 @@ namespace ImageSharp |
|
|
{ |
|
|
{ |
|
|
get |
|
|
get |
|
|
{ |
|
|
{ |
|
|
#if DEBUG
|
|
|
this.CheckCoordinates(x, y); |
|
|
if (x < 0 || x >= this.Width) |
|
|
|
|
|
{ |
|
|
|
|
|
throw new ArgumentOutOfRangeException(nameof(x), x, $"{x} is outwith the image bounds."); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (y < 0 || y >= this.Height) |
|
|
|
|
|
{ |
|
|
|
|
|
throw new ArgumentOutOfRangeException(nameof(y), y, $"{y} is outwith the image bounds."); |
|
|
|
|
|
} |
|
|
|
|
|
#endif
|
|
|
|
|
|
return Unsafe.Read<TColor>(this.pixelsBase + (((y * this.Width) + x) * Unsafe.SizeOf<TColor>())); |
|
|
return Unsafe.Read<TColor>(this.pixelsBase + (((y * this.Width) + x) * Unsafe.SizeOf<TColor>())); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
set |
|
|
set |
|
|
{ |
|
|
{ |
|
|
#if DEBUG
|
|
|
this.CheckCoordinates(x, y); |
|
|
if (x < 0 || x >= this.Width) |
|
|
|
|
|
{ |
|
|
|
|
|
throw new ArgumentOutOfRangeException(nameof(x), x, $"{x} is outwith the image bounds."); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (y < 0 || y >= this.Height) |
|
|
|
|
|
{ |
|
|
|
|
|
throw new ArgumentOutOfRangeException(nameof(y), y, $"{y} is outwith the image bounds."); |
|
|
|
|
|
} |
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
Unsafe.Write(this.pixelsBase + (((y * this.Width) + x) * Unsafe.SizeOf<TColor>()), value); |
|
|
Unsafe.Write(this.pixelsBase + (((y * this.Width) + x) * Unsafe.SizeOf<TColor>()), value); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
[Conditional("DEBUG")] |
|
|
|
|
|
private void CheckCoordinates(int x, int y) |
|
|
|
|
|
{ |
|
|
|
|
|
if (x < 0 || x >= this.Width) |
|
|
|
|
|
{ |
|
|
|
|
|
throw new ArgumentOutOfRangeException(nameof(x), x, $"{x} is outwith the image bounds."); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (y < 0 || y >= this.Height) |
|
|
|
|
|
{ |
|
|
|
|
|
throw new ArgumentOutOfRangeException(nameof(y), y, $"{y} is outwith the image bounds."); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
/// <summary>
|
|
|
/// Copies a block of pixels at the specified position.
|
|
|
/// Copies a block of pixels at the specified position.
|
|
|
/// </summary>
|
|
|
/// </summary>
|
|
|
|