public override void StartApply(IWriteableGrid <TCell> canvas, IGridBrushArgs args, TPaint paint) { _previousGridPoint = args.GridPoint; _previousWorldPoint = args.WorldPoint; TryApply(canvas, args, paint); }
private void TryApply(IWriteableGrid <TCell> canvas, IGridBrushArgs args, TPaint paint) { var segment = new Segment(args.WorldPoint, _previousWorldPoint); IEnumerable <int[]> indexIntersection = canvas.IndexIntersection(segment); foreach (int[] indexes in indexIntersection) { int x = indexes[1]; int y = indexes[0]; for (int i = 0; i < _brushRange.Lengths[0]; i++) { for (int j = 0; j < _brushRange.Lengths[1]; j++) { Point gridPoint = new Point(x + _brushRange.StartingIndex[1] + j, y + _brushRange.StartingIndex[0] + i); Vector2 worldPoint = canvas.ToWorldPoint(gridPoint); var cellArgs = new GridBrushArgs(gridPoint, worldPoint); if (paint.CanApply(canvas, cellArgs)) { paint.Apply(canvas, cellArgs); } } } } }
public override void UpdateApply(IWriteableGrid <TCell> canvas, IGridBrushArgs args, TPaint paint) { if (_previousGridPoint != args.GridPoint) { TryApply(canvas, args, paint); } _previousGridPoint = args.GridPoint; _previousWorldPoint = args.WorldPoint; }
public override void EndApply(IWriteableGrid <TCell> canvas, IGridBrushArgs args, TPaint paint) { Rectangle rectangle = MathUtils.GetBoundingBox(args.GridPoint, _startPoint).ClampToRectangle(canvas.IndexesBounds()); for (int i = rectangle.Top; i <= rectangle.Bottom; i++) { for (int j = rectangle.Left; j <= rectangle.Right; j++) { var point = new Point(j, i); paint.Apply(canvas, new GridBrushArgs(point, canvas.ToWorldPoint(point))); } } }
public override bool CanEndApply(IWriteableGrid <TCell> canvas, IGridBrushArgs args, TPaint paint) => true;
public override void StartApply(IWriteableGrid <TCell> canvas, IGridBrushArgs args, TPaint paint) { _startPoint = args.GridPoint; }
public override bool CanEndApply(IWriteableGrid <TCell> canvas, IGridBrushArgs args, TPaint paint) { return(paint.CanApply(canvas, args)); }
public override void EndApply(IWriteableGrid <TCell> canvas, IGridBrushArgs args, TPaint paint) { paint.Apply(canvas, args); }