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
}
}