#include <grass/gis.h>
#include <grass/raster.h>
#include <grass/rowio.h>
typedef struct
{
    int size;			/* size of filter matrix */
    double **matrix;		/* filter coefficient matrix */
    double **dmatrix;		/* divisor coefficient matrix */
    double divisor;		/* filter scale factor */
    int type;			/* sequential or parallel */
    int start;			/* starting corner */
} FILTER;

#define PARALLEL 1
#define SEQUENTIAL 2
#define UL 1
#define UR 2
#define LL 3
#define LR 4

/* apply.c */
DCELL apply_filter(FILTER *, DCELL **);

/* getfilt.c */
FILTER *get_filter(char *, int *, char *);

/* perform.c */
int perform_filter(const char *, const char *, FILTER *, int, int);

/* execute.c */
int execute_filter(ROWIO *, int *, FILTER *, DCELL **);
