/* ------------------------------------------------------------------------- */
/* Filename     : wavelet.h                                                  */
/* Author       : Daniel Sage                                                */
/* Email        :                                                            */
/* Organization : EPFL/DMT/IOA/BIG                                           */
/* Date         : 15 June 1999                                               */
/* Version      :                                                            */
/* Online Help  :                                                            */
/* Demo File    :                                                            */
/* Doc File     :                                                            */
/* URL          :                                                            */
/* ------------------------------------------------------------------------- */
/* Note         : This file is automatically generated                       */
/* Sat 02 Sep 2000 17:20:08 GMT-07:00                                        */
/* ------------------------------------------------------------------------- */


/* ------------------------------------------------------------------------- */
/* Defines                                                                   */
/* ------------------------------------------------------------------------- */
/* None */

/* ------------------------------------------------------------------------- */
/* Types                                                                     */
/* ------------------------------------------------------------------------- */

/** Wavelet transform job parameters.*/
struct TWaveletStruct
{
    /** Pointer to input data */
    double   *Input;
    /** X size of the input data */
    long    NxInput;
    /** Y size of the input data */
    long    NyInput;
    /** Z size of the input data */
    long    NzInput;
    /** Pointer to output data */
    double   *Output;
    /** X size of the input data */
    long    NxOutput;
    /** Y size of the input data */
    long    NyOutput;
    /** Z size of the input data */
    long    NzOutput;
    /** Valid operations: "Analysis" (DWT) or "Synthesis" (IDWT) */
    const char *Operation;
    /** Valid filters:
        "B-Spline", "Cardinal Spline", "Dual Spline",
        "Orthogonal Spline", "Orthonormal Spline", and
        "Fractional Orthonormal Spline" */
    const char *Filter;
    /** Valid boundaries: "Mirror"  or "Periodic" */
    const char *BoundaryConditions;
    /** For spline wavelets: "0", "1", "3", "5". */
    const char *Order;
    /** For fractional spline wavelets. */
    double  Alpha;
};

/* ------------------------------------------------------------------------- */
/* Functions                                                                 */
/* ------------------------------------------------------------------------- */
extern int WaveletCheck(struct TWaveletStruct *Data);
extern int WaveletSize(struct TWaveletStruct *Data);
/** Do the wavelet tranformation job.
    It can be either forward (DWT="Analysis") or backwards
    (IDWT="Synthesis") */
extern int Wavelet(struct TWaveletStruct *Data);


