namespace FftSharp
{
public interface IWindow
{
///
/// Generate this window as a new array with the given length.
/// Normalizing will scale the window so the sum of all points is 1.
///
double[] Create(int size, bool normalize = false);
///
/// Return a new array where this window was multiplied by the given signal.
/// Normalizing will scale the window so the sum of all points is 1 prior to multiplication.
///
double[] Apply(double[] input, bool normalize = false);
///
/// Modify the given signal by multiplying it by this window IN PLACE.
/// Normalizing will scale the window so the sum of all points is 1 prior to multiplication.
///
void ApplyInPlace(double[] input, bool normalize = false);
///
/// Single word name for this window
///
string Name { get; }
///
/// A brief description of what makes this window unique and what it is typically used for.
///
string Description { get; }
}
}