/*====================================================================*
 -  Copyright (C) 2001 Leptonica.  All rights reserved.
 -  This software is distributed in the hope that it will be
 -  useful, but with NO WARRANTY OF ANY KIND.
 -  No author or distributor accepts responsibility to anyone for the
 -  consequences of using this software, or for whether it serves any
 -  particular purpose or works at all, unless he or she says so in
 -  writing.  Everyone is granted permission to copy, modify and
 -  redistribute this source code, for commercial or non-commercial
 -  purposes, with the following restrictions: (1) the origin of this
 -  source code must not be misrepresented; (2) modified versions must
 -  be plainly marked as such; and (3) this notice may not be removed
 -  or altered from any source or modified source distribution.
 *====================================================================*/

/*
 *     Low-level fast binary morphology with auto-generated sels
 *
 *      Dispatcher:
 *            l_int32   fmorphopgen_low_*()
 *
 *      Static Low-level:
 *            void      fdilate_*_*()
 *            void      ferode_*_*()
 */

#include <stdio.h>
#include "allheaders.h"

---------------   This file is:  morphtemplate2.txt  -------------------

----------------    insert static protos here  -------------------------


/*---------------------------------------------------------------------*
 *                          Fast morph dispatcher                      *
 *---------------------------------------------------------------------*/
/*
 *  fmorphopgen_low_*()
 *
 *       a dispatcher to appropriate low-level code
 */
l_int32
------   fmorphopgen_low_*(l_uint32  *datad,     --------  substitute!
                  l_int32    w,
                  l_int32    h,
                  l_int32    wpld,
                  l_uint32  *datas,
                  l_int32    wpls,
                  l_int32    index)
{

    switch (index)
    {

--------   insert dispatcher code for fdilate* and ferode* routines ------
     
    }

    return 0;
}


/*--------------------------------------------------------------------------*
 *                 Low-level auto-generated static routines                 *
 *--------------------------------------------------------------------------*/
/*
 *  N.B.  in all the low-level routines, the part of the image
 *        that is accessed has been clipped by ADDED_BORDER pixels
 *        on all four sides.  This is done in the higher level
 *        code by redefining w and h smaller and by moving the
 *        start-of-image pointers up to the beginning of this
 *        interior rectangle.
 */

--------  start with header:  static void fdilate_*_*(l_uint32  *datad, ----

            l_int32    w,
            l_int32    h,
            l_int32    wpld,
            l_uint32  *datas,
            l_int32    wpls)
{
l_int32              i;
register l_int32     j, pwpls;
register l_uint32   *sptr, *dptr;

---------  declare wplsN args as necessary ----------------------
---------  define wplsN args as necessary -----------------------

    pwpls = (l_uint32)(w + 31) / 32;  /* proper wpl of src */

    for (i = 0; i < h; i++) {
        sptr = datas + i * wpls;
        dptr = datad + i * wpld;
        for (j = 0; j < pwpls; j++, sptr++, dptr++) {

---------   insert barrel-op code for *dptr here  ----------

        }
    }
}


