using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Terminal.Gui.TextEffects; /// /// Implementation of that uses a color gradient (including /// radial, diagonal etc). /// public class GradientFill : IFill { private Dictionary _map; public GradientFill (Rectangle area, Gradient gradient, Gradient.Direction direction) { _map = gradient.BuildCoordinateColorMapping (area.Height, area.Width, direction) .ToDictionary ( (k) => new Point (k.Key.Column, k.Key.Row), (v) => new Terminal.Gui.Color (v.Value.R, v.Value.G, v.Value.B)); } public Terminal.Gui.Color GetColor (Point point) { if (_map.TryGetValue (point, out var color)) { return color; } return new Terminal.Gui.Color (0, 0, 0); // Default to black if point not found } }