// // Copyright (c) James Jackson-South and contributors. // Licensed under the Apache License, Version 2.0. // namespace ImageProcessorCore.Samplers { using System.Threading.Tasks; /// /// Provides methods to allow the cropping of an image. /// public class Crop : ImageSampler { /// protected override void Apply(ImageBase target, ImageBase source, Rectangle targetRectangle, Rectangle sourceRectangle, int startY, int endY) { int targetY = targetRectangle.Y; int targetBottom = targetRectangle.Bottom; int startX = targetRectangle.X; int endX = targetRectangle.Right; int sourceX = sourceRectangle.X; int sourceY = sourceRectangle.Y; Parallel.For( startY, endY, y => { if (y >= targetY && y < targetBottom) { for (int x = startX; x < endX; x++) { target[x, y] = source[x + sourceX, y + sourceY]; } this.OnRowProcessed(); } }); } } }