OrthogonalWaveletProvider.java

package com.morphiqlabs.wavelet.api.providers;

import com.morphiqlabs.wavelet.api.*;
import com.morphiqlabs.wavelet.padding.*;import java.util.List;

/**
 * Provider for orthogonal wavelets in the VectorWave library.
 * 
 * <p>This provider registers all standard orthogonal wavelets including:</p>
 * <ul>
 *   <li>Haar wavelet - The simplest orthogonal wavelet</li>
 *   <li>Daubechies wavelets (DB2, DB4) - Compact support with maximum vanishing moments</li>
 *   <li>Symlets (SYM2, SYM3, SYM4) - Near-symmetric modifications of Daubechies wavelets</li>
 *   <li>Coiflets (COIF1, COIF2, COIF3) - Wavelets with vanishing moments for both scaling and wavelet functions</li>
 * </ul>
 * 
 * <p>This provider is automatically discovered by the ServiceLoader mechanism
 * and registered with the WaveletRegistry on application startup.</p>
 * 
 * @see WaveletProvider
 * @see OrthogonalWavelet
 * @see WaveletRegistry
 * @since 1.0.0
 */
public class OrthogonalWaveletProvider implements WaveletProvider {
    /**
     * Creates a provider for orthogonal wavelets.
     */
    public OrthogonalWaveletProvider() {}
    
    @Override
    public List<Wavelet> getWavelets() {
        return List.of(
            new Haar(),
            Daubechies.DB2,
            Daubechies.DB4,
            Symlet.SYM2,
            Symlet.SYM3,
            Symlet.SYM4,
            Coiflet.COIF1,
            Coiflet.COIF2,
            Coiflet.COIF3
        );
    }
}