mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-06-02 06:12:41 -06:00
94 lines
3.1 KiB
Text
94 lines
3.1 KiB
Text
/*====================================================================*
|
|
- 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,
|
|
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 32 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.
|
|
*/
|
|
--- 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 ...
|
|
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 ...
|
|
}
|
|
}
|
|
}
|
|
|