示例#1
0
        /// <summary>
        /// Creates a clean instance of <see cref="PinnedImageBuffer{T}"/> initializing it's elements with 'default(T)'.
        /// </summary>
        /// <param name="width">The number of elements in a row</param>
        /// <param name="height">The number of rows</param>
        /// <returns>The <see cref="PinnedBuffer{T}"/> instance</returns>
        public static PinnedImageBuffer <T> CreateClean(int width, int height)
        {
            PinnedImageBuffer <T> buffer = new PinnedImageBuffer <T>(width, height);

            buffer.Clear();
            return(buffer);
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="PixelAccessor{TColor}" /> class.
        /// </summary>
        /// <param name="width">The width of the image represented by the pixel buffer.</param>
        /// <param name="height">The height of the image represented by the pixel buffer.</param>
        /// <param name="pixels">The pixel buffer.</param>
        private PixelAccessor(int width, int height, PinnedImageBuffer <TColor> pixels)
        {
            Guard.NotNull(pixels, nameof(pixels));
            Guard.MustBeGreaterThan(width, 0, nameof(width));
            Guard.MustBeGreaterThan(height, 0, nameof(height));

            this.SetPixelBufferUnsafe(width, height, pixels);

            this.ParallelOptions = Configuration.Default.ParallelOptions;
        }
        /// <summary>
        /// Sets the pixel buffer in an unsafe manor this should not be used unless you know what its doing!!!
        /// </summary>
        /// <param name="width">The width.</param>
        /// <param name="height">The height.</param>
        /// <param name="pixels">The pixel buffer</param>
        private void SetPixelBufferUnsafe(int width, int height, PinnedImageBuffer <TColor> pixels)
        {
            this.pixelBuffer = pixels;
            this.pixelsBase  = (byte *)pixels.Pointer;

            this.Width     = width;
            this.Height    = height;
            this.PixelSize = Unsafe.SizeOf <TColor>();
            this.RowStride = this.Width * this.PixelSize;
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="PixelAccessor{TColor}"/> class.
 /// </summary>
 /// <param name="width">The width of the image represented by the pixel buffer.</param>
 /// <param name="height">The height of the image represented by the pixel buffer.</param>
 public PixelAccessor(int width, int height)
     : this(width, height, PinnedImageBuffer <TColor> .CreateClean(width, height))
 {
 }